打印

软件实现的滞回比较器,各位看对不?

[复制链接]
2841|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
snakeemail|  楼主 | 2009-12-15 23:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 snakeemail 于 2009-12-15 23:23 编辑

1.当电流在0-300,风扇的PWM为0,当电流大于300的时候,风扇的PWM为51.这样当电流在300附件变化时,风扇的PWM也来回变化。现在用软件实现的滞回比较器实现。
2.  a.0-300,PWM=0 ,  b200-1000,PWM=51, C: 900-2000 ,PWM=100 D:电流>1900,PWM=200

void ZhiHui(unsigned int Data)
{
        static unsigned int a = 0;
        static unsigned int b = 300;
        unsigned int OCR0A = 0;
       
        if((Data>a) && (Data <=b))
                return;


        if((Data>0) && (Data<=300))        {
                OCR0A = 0;
                a = 0;
                b = 300;
        }
        else if((Data>200) && (Data<=1000))        {
                OCR0A = 51;
                a = 200;
                b = 1000;
        }
        else if((Data>900) && (Data<=2000))        {
                OCR0A = 100;
                a = 900;
                Data = 2000;
        }
        else{
                OCR0A = 200;
                a = 1900;
                b = 65535;
        }

}

相关帖子

沙发
duojinian| | 2009-12-16 11:55 | 只看该作者
else if 组合没有实现“滞回”
也就是说变量升高路径和降低路径应该不同才对。

使用特权

评论回复
板凳
原野之狼| | 2009-12-16 12:01 | 只看该作者
从程序里没有看见有 去和回 两个方向
所以实现不了的
建议采用状态机的方法来实现

使用特权

评论回复
地板
yixiao2000| | 2009-12-16 15:02 | 只看该作者
应记录上次状态来判断变化方向

使用特权

评论回复
5
snakeemail|  楼主 | 2009-12-16 21:58 | 只看该作者
1.我保留了上次的范围呀?a,和b就是上次的范围呀。程序一进去就检查是否还是上次的范围内,超出了才改范围。

2.用状态机实现的思路是不是这样。
首先判断变化方向,然后把电流放入范围比较一遍,如果电流落入

记录电流变化方向
|
看电流落入哪个范围--------->如果只落入有一个范围,pwm可确定
|
如果落入两个范围,低范围和高范围----->电流向上变化,如果电流大于低范围的上限,电流落入高范围判断
|
电流向下变化,如果电流小于高范围的下限,电流落入低范围判断

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

547

主题

1910

帖子

8

粉丝