找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

求C语言判定一个会有小幅波动的值的处理方式

查看数: 2985 | 评论数: 10 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-9-9 09:55

正文摘要:

本帖最后由 如痴百感生 于 2019-9-9 16:49 编辑 图中的判定值c>20是单片机内部AD采集值计算出来的温度,当到达那个20时  会有上下小幅波动的情况,引脚电平也会跟着上下跳动 求如何在这程序中解决这 ...

回复

ID:405193 发表于 2019-9-11 19:09
if((C>19.8)&&(C<20.2)) 这样是否可以,注意定义C的类型。
ID:586438 发表于 2019-9-11 15:41
lele5211314 发表于 2019-9-10 09:57
判断两边最高点两边的阈值,然后找出最高点

我采集的是温度   它是会不断变化的 ,在变化的时候,判定其中一个数值,这个数值会上下波动  因为判定的结果是拉低引脚控制继电器,它波动就会让继电器嗒嗒嗒
ID:586438 发表于 2019-9-11 15:37
egypt 发表于 2019-9-10 11:21
楼主提及的问题就像 万用电表 测量显示值一样

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

你好  能具体描叙一下吗  不是很懂,或者有没有相关类似的例子可参考一下   非常感谢
ID:565305 发表于 2019-9-10 11:21
楼主提及的问题就像 万用电表 测量显示值一样

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

处理手法很多样。简化的做法就先把数据缓存为先进先出队列,求求平均数,看看队列每笔和平均数误差再决定以何种方式显示呗。搜索一下均方差、权重 之类的相关了解一下
ID:93224 发表于 2019-9-10 09:57
判断两边最高点两边的阈值,然后找出最高点
ID:586438 发表于 2019-9-9 16:35
imxuheng 发表于 2019-9-9 15:13
temp是什么变量,你截取的程序片段里面看不出是什么。要是只是用c只是变量判断的话,把你图片里面选中的蓝 ...

采集计算的值可能会波动  例如采集  计算的值是20 这个值可能会在19.8和20.2之间跳动 那么这个LED就闪烁了   我希望  到这个值就稳定的LED=0;不跳动
ID:151348 发表于 2019-9-9 15:13
temp是什么变量,你截取的程序片段里面看不出是什么。要是只是用c只是变量判断的话,把你图片里面选中的蓝色if判断部分改成
if(c>20)
LED=0;//LED亮起
if(c<20) LED=1;//LED熄灭
ID:586438 发表于 2019-9-9 11:40
jsbjzy 发表于 2019-9-9 11:15
可以在if(c>20)的函数里面加个标志位,表示已经检测到大于20的值,下次再执行到此处时,如果检测值在(2 ...

你好  是这样吗
if(c>20&&c==20.2)
ID:586438 发表于 2019-9-9 11:29
jsbjzy 发表于 2019-9-9 11:15
可以在if(c>20)的函数里面加个标志位,表示已经检测到大于20的值,下次再执行到此处时,如果检测值在(2 ...

具体怎么处理的能帮我写一下吗   非常感谢
ID:609414 发表于 2019-9-9 11:15
可以在if(c>20)的函数里面加个标志位,表示已经检测到大于20的值,下次再执行到此处时,如果检测值在(20-波动值)以下才认为值下降,否则认为值还是超过20,这样可以去掉小幅波动的值的影响,希望可以帮到你

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表