单片机软件怎么实现迟滞(滞回)比较算法
3个电压点3.2V,3.5V,3.8V.对应点亮红,黄,绿,.现在想采用滞回算法滤波,我现在的算**在临界点有抖动,led会闪烁。绿灯在大于3.8亮,黄灯在3.5-3.8亮,红灯做3.2-3.5直接亮,要求上电在也要有灯亮,求坛友指点思路。比如绿灯灭的时候,大于3.8点亮,绿灯亮的时候,小于3.7再熄灭不就好了,其他的以此类推 比如绿灯灭的时候,大于3.8点亮,绿灯亮的时候,小于3.7再熄灭不就好了,其他的以此类推 比如绿灯灭的时候,大于3.8点亮,绿灯亮的时候,小于3.7再熄灭不就好了,其他的以此类推 IF ( X>3.8 ) 绿灯亮
IF (X <3.7 ) 绿灯灭 steelen 发表于 2025-1-17 18:02
IF ( X>3.8 ) 绿灯亮
IF (X
谢谢,坛友的意思是直接采用假如……就……,这个能否有个上下浮动的范围? 本帖最后由 GlenX 于 2025-1-20 09:30 编辑
确实很多编程的做不好这个程序。
首先要为分类的信号建立自己的“死区”变量,可以是常数。
动作值根据定制直接动作,动作取消必须是动作值加上死去作为RESET值。
无论正向、反向,都需要做这个死区处理,或者叫回滞处理。
这才是正常的“报警”或“保护”的动作程序。 5楼的不就可以了吗,在上下限之间的值不处理保持原样,不就是形成了迟滞吗 tdh03z 发表于 2025-1-18 11:09
5楼的不就可以了吗,在上下限之间的值不处理保持原样,不就是形成了迟滞吗 ...
楼主没有看懂,你懂了 #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灭;
coody 发表于 2025-1-30 11:34
#define DELTA 10 /* 迟滞量,最好是偶数 */
#define VALUE1 100 /* 比较点1 */
#define VA ...
谢谢坛友指点,先给你拜个晚年!等开工了我按照你的做一下。 比如绿灯灭的时候,大于3.8点亮,绿灯亮的时候,小于3.7再熄灭不就好了,其他的以此类推
页:
[1]