标题: 单片机C语言PID控制PWM输出程序有波动 [打印本页]

作者: ZXH79    时间: 2019-2-26 00:44
标题: 单片机C语言PID控制PWM输出程序有波动
我想用单片机AD检测电流通过调节PWM占空比来实现电路恒流,希望有高手能提供一个完整的C语言程序。我自己写的程序调试的时候老是有波动,不能恒流。 if(I>=160)//Iw位AD采集的电流信号       {
    //  adc();
        zk+=1;  //zk是占空比
         if( zk>=119){ zk=60;}
       }
     if (I<159)
       {
    // adc();
     // delay_10us();
       zk-=1;  
     if(zk<=60){zk=60;}
       }


作者: Sawardeakar    时间: 2019-2-26 01:53
ADC本身就是一个不断变动量,如果要显示变动慢就要显示函数度就要延时
作者: wulin    时间: 2019-2-26 07:25
软件是在硬件的基础上编写的,不知道你的硬件结构,很难提供适合的建议。
作者: yaoji123    时间: 2019-2-26 07:45
用延时方式调节PWM占空比本身就有不确定的因素,使延时不正确,一般PWM占空比用定时器,ADC采样本身也有波动,一般取多次测量值取平均作为检出值。
作者: yzwzfyz    时间: 2019-2-26 11:41
估计楼主不明白PID是怎么回事。先弄通PID控制原理。
作者: ZXH79    时间: 2019-2-26 13:43


作者: ZXH79    时间: 2019-2-26 13:45


作者: ZXH79    时间: 2019-2-26 13:49
我的AD采集是16次的平均值,这个应该是没有问题的

作者: Y_G_G    时间: 2019-2-26 14:40
看起来一个单片机的时钟是0.几u秒,好像是可以控制的
但是,实际上,用单片机来做恒流恒压源的调节部分,效果直的不好,还是用三极管或者运放吧
如果是一定要用到单片机的话,我推荐的方法是用单片机来控制一个DAC,再由DAC来控制运放用以控制恒流输出,再反馈给运放
这样一来,单片机只用来控制参考电压的大小而已,并不在反馈环节中




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1