王栋春 发表于 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

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

GlenX 发表于 2025-1-18 10:39

本帖最后由 GlenX 于 2025-1-20 09:30 编辑

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

tdh03z 发表于 2025-1-18 11:09

5楼的不就可以了吗,在上下限之间的值不处理保持原样,不就是形成了迟滞吗

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再熄灭不就好了,其他的以此类推
页: [1]
查看完整版本: 单片机软件怎么实现迟滞(滞回)比较算法