xjjiang 发表于 2020-10-8 11:23:35

请教一种温度上升下降时客户不想看到显示抖动的解决方法

本帖最后由 xjjiang 于 2020-10-8 11:25 编辑

做了一个温控器,过程这样的,温度下降过程中由于NTC采集(滤波限幅都加了的)波动,数码管二位显示,例如在76 77间跳动,客户说下降时到了76就不可能还上升,或者加热时77了,再跳到76,我想过四舍五入,或者平均都不能解决,因为边界都存在,请教大家有没有什么好方法呢,谢谢

stevenli 发表于 2020-10-8 11:30:42

客户说下降时到了76就不可能还上升,或者加热时77了,再跳到76

ilawp 发表于 2020-10-8 11:31:10

施密特触发器(或软件实现)

chxzh123 发表于 2020-10-8 11:32:15

可尝试加个回滞区间,当然,区间的具体取值范围还是要根据实测决定

kebaojun305 发表于 2020-10-8 11:35:09

既然是温控器 到温度了直接显示设定温度就行了。下降几度后 在显示实际问题{:lol:}

饭桶 发表于 2020-10-8 11:36:56

NTC加个电容,比你软件滤波要好一些。

jyrpxj 发表于 2020-10-8 11:37:20

检测值与当前温度相隔1度以内且保持连续5秒,则更新显示。

jumpjet 发表于 2020-10-8 11:37:21

达到设定温度,正负3度内不跳数,大于正负3度再慢慢跳。{:lol:}

xjjiang 发表于 2020-10-8 11:49:10

jyrpxj 发表于 2020-10-8 11:37
检测值与当前温度相隔1度以内且保持连续5秒,则更新显示。

哈哈,我搞过3秒,结果升温的时候和外面客户挂的温度计有点不同步,也说不行,有点郁闷了我

xjjiang 发表于 2020-10-8 11:51:43

饭桶 发表于 2020-10-8 11:36
NTC加个电容,比你软件滤波要好一些。

NTC有加电容的,主要是电源本身就是一般的电源,用电源做基准的,试过IC内部基准也是抖动

xjjiang 发表于 2020-10-8 11:52:26

stevenli 发表于 2020-10-8 11:30
客户说下降时到了76就不可能还上升,或者加热时77了,再跳到76

可能我没有表达清楚,就是温度上升或者下降的过程,不能来回跳动

canspider 发表于 2020-10-8 12:03:38

这玩意用滞回比较就行了

你上学做磁滞回线实验的时候肯定是逃课了

LL00 发表于 2020-10-8 13:01:14

xjjiang 发表于 2020-10-8 11:52
可能我没有表达清楚,就是温度上升或者下降的过程,不能来回跳动

软件做个滤波,这样显示上就不会看到来回跳动了

wye11083 发表于 2020-10-8 13:08:01

xjjiang 发表于 2020-10-8 11:52
可能我没有表达清楚,就是温度上升或者下降的过程,不能来回跳动

把4舍5入改成2舍8入中间不变不完了。典型的迟滞滤波,我fpga采样数据都是类似这种的,干扰强烈的场合我甚至用20级滤波器3舍17入。

mtdzok 发表于 2020-10-8 13:12:01

不管你硬件做的多么好,都不可避免这1个字的误差,这是正常的。如果看的不舒服只好软件处理,比如加热时只能更新大于当前值的数,下降过程中只能更新小于当前值的数

黑夜之狼 发表于 2020-10-8 13:28:23

采集间隔延长,每采集一次和shangyici 进行比较,大于某值才刷新数据

MYQQ2018 发表于 2020-10-8 15:11:47

楼主的意思是不是说在加热的过程中不要显示温度下降,在停止加热的过程中不要显示温度上升?

xjjiang 发表于 2020-10-8 15:18:07

MYQQ2018 发表于 2020-10-8 15:11
楼主的意思是不是说在加热的过程中不要显示温度下降,在停止加热的过程中不要显示温度上升? ...

我试过用加热的标志,因为这个系统停止加热后,余温(3KW的)还继续升温,我再看看后面加点时间看能不能解决,谢谢

szxszx 发表于 2020-10-8 15:37:35

本帖最后由 szxszx 于 2020-10-8 15:42 编辑

把ntc并联的滤波电容去掉,让ntc信号与参考电源一起波动试试

byrin219 发表于 2020-10-8 18:02:42

赞成3楼的,软件实现施密特触发器 可以解决楼主位问题。

cumthe 发表于 2020-10-8 19:34:50

软件实现施密特触发器或者迟滞比较器

cnxh 发表于 2020-10-8 20:12:50

我宁愿它在跳动1格,这样至少自动cpu没死机还在采集温度

Wisen 发表于 2020-10-8 20:27:52

显示温度由设置温度与实际温度按一定比例组成,与设定值的差来改变比例大小

mfketggo111 发表于 2020-10-8 20:32:21

100次取平均数显示

hxled123 发表于 2020-10-9 09:23:01

根本办法是提高精度,比如精度0.3度,显示时显示度,肯定不会跳

Dogdays 发表于 2020-10-9 09:57:18

NTC的温度间是有阻值差的,可以做个分度,人为做到0.1度,比如高于76.9才认为是77,低于76.1则认为跳到76

mtdzok 发表于 2020-10-9 10:46:49

显示76-77跳动其实可能是76.99-77.00之间跳动,加大更新间隔会缓解但又滞后。 我觉得显示2位,但内部采样处理都应采用3位,当温度变化量大于一定值(比如0.5度)才更新显示数据,或依此判断上升或下降趋势。

dellric 发表于 2020-10-9 10:48:33

做个2个字的滞回算法,就能解决这个问题。实际上你的误差是不可避免的,无论如何平均如何滤波,误差是绝对存在,就会出现你的问题。所以加上迟滞显示控制才能根本上解决问题。

yerrmin 发表于 2020-10-9 11:04:32

可以对加热和非加热状态进行分别处理,加热时对下降不敏感,非加热时对上升不敏感

ackyee 发表于 2020-10-9 11:05:54

比方说      上升阶段   超过 0.7 才+1   下降阶段   低于0.3 才减一   这样就有了0.3-0.7之间的缓冲区域了 ,这个区域就不会乱跳了 因为不会有临界点

52HLX 发表于 2020-10-9 11:49:27

这样怎么样,把之前数据记录一下,如果在降温过程中,如果当前数据<之前数据,就做为有效数据显示。

youlongam 发表于 2020-10-9 14:00:46

累加求平均值,控制好累加时间间隔

lyl1070 发表于 2020-10-9 15:33:06

if((adc.mux.now<(adc.mux.next+20)) && ((adc.mux.now+20)>adc.mux.next))// 向上或向下变化最少20个AD时,才会处理。
{

xjjiang 发表于 2020-10-9 16:50:58

汇报一下,我现在改成,在加热过程中,如果持续一段时间温度比上一次高,就修改显示,如果在未加热过程中,如果持续一段时间升高,就修改显示。感觉还可以,虽然有时候还跳,只能和客人解释,真的是温度比较大的波动,再不行,把一段时间搞长

小李非刀 发表于 2020-10-11 22:23:50

测量计算时,有一位小数(但不显示),当前测量值跟显示值比较,差别大于0.5度就刷新显示值。
或者用一阶滞后滤波,会滤得很稳的。

wgxold 发表于 2020-10-14 17:59:24

滞回+加权平均适合你
页: [1]
查看完整版本: 请教一种温度上升下降时客户不想看到显示抖动的解决方法