如何让电子秤的数据快速稳定下来?

[复制链接]
4650|46
dirtwillfly 发表于 2020-1-16 11:45 | 显示全部楼层
zjyyl 发表于 2020-1-14 16:30
现在的问题是,同一块主板,别人的就能快速稳定,我的就是很慢。肯定是算法不对头。 ...

这个东西,不光靠主板。还有机械结构等,都会影响稳定的。
质子71 发表于 2020-1-16 16:11 | 显示全部楼层
用变长窗口?如果最近的几个值比较稳,就不要再取更多的值了。
 楼主| zjyyl 发表于 2020-1-16 16:41 | 显示全部楼层
dirtwillfly 发表于 2020-1-16 11:45
这个东西,不光靠主板。还有机械结构等,都会影响稳定的。

现在是抛开机械结构不说,纯粹从软件角度来考虑。
oufuqiang 发表于 2020-1-16 16:58 | 显示全部楼层
你最好能抓个原始波形上来这样才好分析
 楼主| zjyyl 发表于 2020-1-16 21:19 | 显示全部楼层
oufuqiang 发表于 2020-1-16 16:58
你最好能抓个原始波形上来这样才好分析

怎么抓呢?请赐教
21ndt 发表于 2020-1-16 22:49 | 显示全部楼层
每次比较上一次的AD变化值,
可以分两个条件
1.当AD值变化小于X的时候,认为现在是大缓冲的滑动滤波(假设是128次的滑动滤波),这时慢的话,无所谓,因为需要稳定
2.当AD值变化大于等于X的时候,认为现在重量在变化,此时把滑动滤波的次数减小即可(假设4次),则响应就很快了
这样就能做到响应又快又稳了
oufuqiang 发表于 2020-1-17 08:42 | 显示全部楼层
zjyyl 发表于 2020-1-16 21:19
怎么抓呢?请赐教

1.把原始数据串口打印出来
2.示波器抓AD输入脚
感动 发表于 2020-1-17 09:01 | 显示全部楼层
滑动平均的滤波方法不合适,改进算法,应该用数字滤波器
gvim 发表于 2020-1-17 10:02 | 显示全部楼层
你的有多慢?别人的有多快?相对的才能知道大概的问题。
xch 发表于 2020-1-17 15:02 | 显示全部楼层
IIR滤波应该可行。估计电子秤mcu运算能力就只能用它。
最简单的:
Weight (n)= Weight(n-1) *(1-α) + Inp (n)*α;

复杂的:
Weight (n)= Weight(n-1) *( 1 -α -α^2 - ... ) +  Inp (n) * α +Inp (n-1) * α^2 + ....;
内存大,运算速度快就多算几级。

资源够也可以用FIR:

Weight (n)=   Inp (n) * α +Inp (n-1) * α^2 + ....;

切记上述序列系数之和精确 = 1.0。
α 取值等于机械阻尼振荡衰减系数。
 楼主| zjyyl 发表于 2020-1-17 15:41 | 显示全部楼层
gvim 发表于 2020-1-17 10:02
你的有多慢?别人的有多快?相对的才能知道大概的问题。

同样的采样10次,求平均值,别人的不到一秒就稳定下来,我的差不多2倍的时间。所以肯定是软件算法有问题
 楼主| zjyyl 发表于 2020-1-17 15:46 | 显示全部楼层
xch 发表于 2020-1-17 15:02
IIR滤波应该可行。估计电子秤mcu运算能力就只能用它。
最简单的:
Weight (n)= Weight(n-1) *(1-α) +  ...

谢谢,那个最简单的是不是就是一阶滤波·

评论

xch
都是  发表于 2020-1-17 16:49
xch 发表于 2020-1-18 10:57 | 显示全部楼层
zjyyl 发表于 2020-1-17 15:46
谢谢,那个最简单的是不是就是一阶滤波·

α 值会算吧?
12864 发表于 2020-1-18 18:37 | 显示全部楼层
一般称重AD一秒可以输出10~25个数据,其实已经很快的了,那么你如果用32个数据滑动平均,这个时间就长了,你要求这32个数据触发你的稳定条件并锁定结束测试,可能会比别人慢,因为滑动平均周期越长,跟踪真实信号越慢。但,如果你取8个数据做EMA,并判断这8个连续数据是否触发稳定条件,则会快很多,而且数据少跟踪原始波形的速度也快,就像股票的5日均线跟踪股价很紧密。
我感觉吧,称重没必要要求太高,因为一般廉价AD的单点峰值有效位都可以做到17位(RMS有效位可以做到19位以上),已经远超电子秤要求了,你如果采样保留19位,使用8~16个数据做EMA,基本可以保证19位(1LSB跳),想要稳定速度快,取点就少一些,按照EMA算法,100ms采集一个点,采集8个点才800mS,100ms计算一下8个数据的EMA,100ms可以刷新显示一次,遇到这8个数已经触发稳定条件了就可以冻结。
称重对象上秤后稳定的越快,越容易触发稳定判决条件,但如果称重对象是人,那不确定因素就多了,因为人会一直晃动的,这时候你要想快速稳定,取点还是越少越好,如果对几秒的数据进行判决,人晃动的几率会很大。
song9644 发表于 2020-1-21 21:12 来自手机 | 显示全部楼层
可以合作,1625422362qq主要做电子秤的滤波算法部分
song9644 发表于 2020-1-21 21:27 来自手机 | 显示全部楼层
用数据建立数学模型,找到规律,找到算法设计
song9644 发表于 2020-1-24 22:28 来自手机 | 显示全部楼层
建立了一个模型,运算需要高速单片机,在波形稳定前算出重量,误差0.1%
 楼主| zjyyl 发表于 2020-2-24 20:44 | 显示全部楼层

已经实现了,谢谢你的建议。好了很多
 楼主| zjyyl 发表于 2020-2-24 21:07 | 显示全部楼层
song9644 发表于 2020-1-24 22:28
建立了一个模型,运算需要高速单片机,在波形稳定前算出重量,误差0.1%

谢谢,最近没来论坛,才看到,加你了,请多指教
 楼主| zjyyl 发表于 2020-2-24 21:08 | 显示全部楼层
song9644 发表于 2020-1-24 22:28
建立了一个模型,运算需要高速单片机,在波形稳定前算出重量,误差0.1%

谢谢,最近没来论坛,才看到,加你了,请多指教
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部