请教一种温度上升下降时客户不想看到显示抖动的解决方法
本帖最后由 xjjiang 于 2020-10-8 11:25 编辑做了一个温控器,过程这样的,温度下降过程中由于NTC采集(滤波限幅都加了的)波动,数码管二位显示,例如在76 77间跳动,客户说下降时到了76就不可能还上升,或者加热时77了,再跳到76,我想过四舍五入,或者平均都不能解决,因为边界都存在,请教大家有没有什么好方法呢,谢谢 客户说下降时到了76就不可能还上升,或者加热时77了,再跳到76 施密特触发器(或软件实现) 可尝试加个回滞区间,当然,区间的具体取值范围还是要根据实测决定 既然是温控器 到温度了直接显示设定温度就行了。下降几度后 在显示实际问题{:lol:} NTC加个电容,比你软件滤波要好一些。 检测值与当前温度相隔1度以内且保持连续5秒,则更新显示。 达到设定温度,正负3度内不跳数,大于正负3度再慢慢跳。{:lol:} jyrpxj 发表于 2020-10-8 11:37
检测值与当前温度相隔1度以内且保持连续5秒,则更新显示。
哈哈,我搞过3秒,结果升温的时候和外面客户挂的温度计有点不同步,也说不行,有点郁闷了我 饭桶 发表于 2020-10-8 11:36
NTC加个电容,比你软件滤波要好一些。
NTC有加电容的,主要是电源本身就是一般的电源,用电源做基准的,试过IC内部基准也是抖动 stevenli 发表于 2020-10-8 11:30
客户说下降时到了76就不可能还上升,或者加热时77了,再跳到76
可能我没有表达清楚,就是温度上升或者下降的过程,不能来回跳动 这玩意用滞回比较就行了
你上学做磁滞回线实验的时候肯定是逃课了 xjjiang 发表于 2020-10-8 11:52
可能我没有表达清楚,就是温度上升或者下降的过程,不能来回跳动
软件做个滤波,这样显示上就不会看到来回跳动了 xjjiang 发表于 2020-10-8 11:52
可能我没有表达清楚,就是温度上升或者下降的过程,不能来回跳动
把4舍5入改成2舍8入中间不变不完了。典型的迟滞滤波,我fpga采样数据都是类似这种的,干扰强烈的场合我甚至用20级滤波器3舍17入。 不管你硬件做的多么好,都不可避免这1个字的误差,这是正常的。如果看的不舒服只好软件处理,比如加热时只能更新大于当前值的数,下降过程中只能更新小于当前值的数 采集间隔延长,每采集一次和shangyici 进行比较,大于某值才刷新数据 楼主的意思是不是说在加热的过程中不要显示温度下降,在停止加热的过程中不要显示温度上升? MYQQ2018 发表于 2020-10-8 15:11
楼主的意思是不是说在加热的过程中不要显示温度下降,在停止加热的过程中不要显示温度上升? ...
我试过用加热的标志,因为这个系统停止加热后,余温(3KW的)还继续升温,我再看看后面加点时间看能不能解决,谢谢 本帖最后由 szxszx 于 2020-10-8 15:42 编辑
把ntc并联的滤波电容去掉,让ntc信号与参考电源一起波动试试 赞成3楼的,软件实现施密特触发器 可以解决楼主位问题。 软件实现施密特触发器或者迟滞比较器 我宁愿它在跳动1格,这样至少自动cpu没死机还在采集温度 显示温度由设置温度与实际温度按一定比例组成,与设定值的差来改变比例大小 100次取平均数显示 根本办法是提高精度,比如精度0.3度,显示时显示度,肯定不会跳 NTC的温度间是有阻值差的,可以做个分度,人为做到0.1度,比如高于76.9才认为是77,低于76.1则认为跳到76 显示76-77跳动其实可能是76.99-77.00之间跳动,加大更新间隔会缓解但又滞后。 我觉得显示2位,但内部采样处理都应采用3位,当温度变化量大于一定值(比如0.5度)才更新显示数据,或依此判断上升或下降趋势。 做个2个字的滞回算法,就能解决这个问题。实际上你的误差是不可避免的,无论如何平均如何滤波,误差是绝对存在,就会出现你的问题。所以加上迟滞显示控制才能根本上解决问题。 可以对加热和非加热状态进行分别处理,加热时对下降不敏感,非加热时对上升不敏感 比方说 上升阶段 超过 0.7 才+1 下降阶段 低于0.3 才减一 这样就有了0.3-0.7之间的缓冲区域了 ,这个区域就不会乱跳了 因为不会有临界点 这样怎么样,把之前数据记录一下,如果在降温过程中,如果当前数据<之前数据,就做为有效数据显示。 累加求平均值,控制好累加时间间隔 if((adc.mux.now<(adc.mux.next+20)) && ((adc.mux.now+20)>adc.mux.next))// 向上或向下变化最少20个AD时,才会处理。
{ 汇报一下,我现在改成,在加热过程中,如果持续一段时间温度比上一次高,就修改显示,如果在未加热过程中,如果持续一段时间升高,就修改显示。感觉还可以,虽然有时候还跳,只能和客人解释,真的是温度比较大的波动,再不行,把一段时间搞长 测量计算时,有一位小数(但不显示),当前测量值跟显示值比较,差别大于0.5度就刷新显示值。
或者用一阶滞后滤波,会滤得很稳的。 滞回+加权平均适合你
页:
[1]