单片机软件怎么实现迟滞(滞回)比较算法

[复制链接]
6190|13
 楼主| 王栋春 发表于 2025-1-16 21:28 | 显示全部楼层 |阅读模式
3个电压点3.2V,3.5V,3.8V.对应点亮红,黄,绿,.现在想采用滞回算法滤波,我现在的算**在临界点有抖动,led会闪烁。绿灯在大于3.8亮,黄灯在3.5-3.8亮,红灯做3.2-3.5直接亮,要求上电在也要有灯亮,求坛友指点思路。
xianghou 发表于 2025-1-16 22:00 来自手机 | 显示全部楼层
比如绿灯灭的时候,大于3.8点亮,绿灯亮的时候,小于3.7再熄灭不就好了,其他的以此类推
xianghou 发表于 2025-1-16 22:00 来自手机 | 显示全部楼层
比如绿灯灭的时候,大于3.8点亮,绿灯亮的时候,小于3.7再熄灭不就好了,其他的以此类推
xianghou 发表于 2025-1-16 22:00 来自手机 | 显示全部楼层
比如绿灯灭的时候,大于3.8点亮,绿灯亮的时候,小于3.7再熄灭不就好了,其他的以此类推
steelen 发表于 2025-1-17 18:02 | 显示全部楼层
IF ( X>3.8 ) 绿灯亮
IF (X <3.7 ) 绿灯灭
 楼主| 王栋春 发表于 2025-1-18 08:03 | 显示全部楼层
steelen 发表于 2025-1-17 18:02
IF ( X>3.8 ) 绿灯亮
IF (X

谢谢,坛友的意思是直接采用假如……就……,这个能否有个上下浮动的范围?

评论

仔细读  发表于 2025-1-21 10:17
GlenX 发表于 2025-1-18 10:39 | 显示全部楼层
本帖最后由 GlenX 于 2025-1-20 09:30 编辑

确实很多编程的做不好这个程序。
首先要为分类的信号建立自己的“死区”变量,可以是常数。
动作值根据定制直接动作,动作取消必须是动作值加上死去作为RESET值。
无论正向、反向,都需要做这个死区处理,或者叫回滞处理。
这才是正常的“报警”或“保护”的动作程序。

评论

谢谢坛友的指点,非常具有借鉴意义。  发表于 2025-1-18 10:54
tdh03z 发表于 2025-1-18 11:09 来自手机 | 显示全部楼层
5楼的不就可以了吗,在上下限之间的值不处理保持原样,不就是形成了迟滞吗

评论

我只是说具体应该这么做。 事实上大家都知道这回事,但大部分人没有具体这么做,而是简化了。 实际上是个是个需要规范的小标准。  发表于 2025-1-22 14:07
steelen 发表于 2025-1-21 10:17 | 显示全部楼层
tdh03z 发表于 2025-1-18 11:09
5楼的不就可以了吗,在上下限之间的值不处理保持原样,不就是形成了迟滞吗 ...

楼主没有看懂,你懂了
coody 发表于 2025-1-30 11:34 | 显示全部楼层
#define   DELTA   10   /* 迟滞量,最好是偶数 */
#define   VALUE1    100   /* 比较点1 */
#define   VALUE2    200   /* 比较点2 */
#define   VALUE3    300   /* 比较点3 */
if (x > ( VALUE1+DELTA/2))   灯1亮;
if (x < ( VALUE1-DELTA/2))   灯1灭;
if (x > ( VALUE2+DELTA/2))   灯2亮;
if (x < ( VALUE2-DELTA/2))   灯2灭;
if (x > ( VALUE3+DELTA/2))   灯3亮;
if (x < ( VALUE3-DELTA/2))   灯3灭;

 楼主| 王栋春 发表于 2025-1-30 12:54 | 显示全部楼层
coody 发表于 2025-1-30 11:34
#define   DELTA   10   /* 迟滞量,最好是偶数 */
#define   VALUE1    100   /* 比较点1 */
#define   VA ...

谢谢坛友指点,先给你拜个晚年!等开工了我按照你的做一下。
qiyuwang 发表于 2025-2-19 08:42 | 显示全部楼层
比如绿灯灭的时候,大于3.8点亮,绿灯亮的时候,小于3.7再熄灭不就好了,其他的以此类推
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5010

主题

29562

帖子

80

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