找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3321|回复: 8
打印 上一主题 下一主题
收起左侧

单片机C语言PID控制PWM输出程序有波动

[复制链接]
跳转到指定楼层
楼主
ID:480702 发表于 2019-2-26 00:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想用单片机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;}
       }

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:469932 发表于 2019-2-26 01:53 | 只看该作者
ADC本身就是一个不断变动量,如果要显示变动慢就要显示函数度就要延时
回复

使用道具 举报

板凳
ID:213173 发表于 2019-2-26 07:25 | 只看该作者
软件是在硬件的基础上编写的,不知道你的硬件结构,很难提供适合的建议。
回复

使用道具 举报

地板
ID:432823 发表于 2019-2-26 07:45 | 只看该作者
用延时方式调节PWM占空比本身就有不确定的因素,使延时不正确,一般PWM占空比用定时器,ADC采样本身也有波动,一般取多次测量值取平均作为检出值。
回复

使用道具 举报

5#
ID:123289 发表于 2019-2-26 11:41 | 只看该作者
估计楼主不明白PID是怎么回事。先弄通PID控制原理。
回复

使用道具 举报

6#
ID:480702 发表于 2019-2-26 13:43 | 只看该作者

回复

使用道具 举报

7#
ID:480702 发表于 2019-2-26 13:45 | 只看该作者

回复

使用道具 举报

8#
ID:480702 发表于 2019-2-26 13:49 | 只看该作者
我的AD采集是16次的平均值,这个应该是没有问题的
回复

使用道具 举报

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

评分

参与人数 1黑币 +50 收起 理由
admin + 50 很给力!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表