标题: 求C语言判定一个会有小幅波动的值的处理方式 [打印本页]

作者: 如痴百感生    时间: 2019-9-9 09:55
标题: 求C语言判定一个会有小幅波动的值的处理方式
本帖最后由 如痴百感生 于 2019-9-9 16:49 编辑

图中的判定值c>20是单片机内部AD采集值计算出来的温度,当到达那个20时  会有上下小幅波动的情况,引脚电平也会跟着上下跳动
求如何在这程序中解决这问题其中C值是AD采集计算出来的,当达到20时  这个值会在19.8到20.2之间跳动   LED也就闪烁  我想解决这种情况

作者: jsbjzy    时间: 2019-9-9 11:15
可以在if(c>20)的函数里面加个标志位,表示已经检测到大于20的值,下次再执行到此处时,如果检测值在(20-波动值)以下才认为值下降,否则认为值还是超过20,这样可以去掉小幅波动的值的影响,希望可以帮到你
作者: 如痴百感生    时间: 2019-9-9 11:29
jsbjzy 发表于 2019-9-9 11:15
可以在if(c>20)的函数里面加个标志位,表示已经检测到大于20的值,下次再执行到此处时,如果检测值在(2 ...

具体怎么处理的能帮我写一下吗   非常感谢
作者: 如痴百感生    时间: 2019-9-9 11:40
jsbjzy 发表于 2019-9-9 11:15
可以在if(c>20)的函数里面加个标志位,表示已经检测到大于20的值,下次再执行到此处时,如果检测值在(2 ...

你好  是这样吗
if(c>20&&c==20.2)
作者: imxuheng    时间: 2019-9-9 15:13
temp是什么变量,你截取的程序片段里面看不出是什么。要是只是用c只是变量判断的话,把你图片里面选中的蓝色if判断部分改成
if(c>20)
LED=0;//LED亮起
if(c<20) LED=1;//LED熄灭
作者: 如痴百感生    时间: 2019-9-9 16:35
imxuheng 发表于 2019-9-9 15:13
temp是什么变量,你截取的程序片段里面看不出是什么。要是只是用c只是变量判断的话,把你图片里面选中的蓝 ...

采集计算的值可能会波动  例如采集  计算的值是20 这个值可能会在19.8和20.2之间跳动 那么这个LED就闪烁了   我希望  到这个值就稳定的LED=0;不跳动
作者: lele5211314    时间: 2019-9-10 09:57
判断两边最高点两边的阈值,然后找出最高点
作者: egypt    时间: 2019-9-10 11:21
楼主提及的问题就像 万用电表 测量显示值一样

打个简化的比方:当误差(均方差或者平均值误差之类)低于阈值时,以缓存队列平均值做显示。当高于阈值时,以当前值显示。(相当于误差小,就忽略误差,以平均值显示)

处理手法很多样。简化的做法就先把数据缓存为先进先出队列,求求平均数,看看队列每笔和平均数误差再决定以何种方式显示呗。搜索一下均方差、权重 之类的相关了解一下
作者: 如痴百感生    时间: 2019-9-11 15:37
egypt 发表于 2019-9-10 11:21
楼主提及的问题就像 万用电表 测量显示值一样

打个简化的比方:当误差(均方差或者平均值误差之类)低于 ...

你好  能具体描叙一下吗  不是很懂,或者有没有相关类似的例子可参考一下   非常感谢
作者: 如痴百感生    时间: 2019-9-11 15:41
lele5211314 发表于 2019-9-10 09:57
判断两边最高点两边的阈值,然后找出最高点

我采集的是温度   它是会不断变化的 ,在变化的时候,判定其中一个数值,这个数值会上下波动  因为判定的结果是拉低引脚控制继电器,它波动就会让继电器嗒嗒嗒
作者: yong761228    时间: 2019-9-11 19:09
if((C>19.8)&&(C<20.2)) 这样是否可以,注意定义C的类型。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1