查看: 1135|回复: 0
打印 上一主题 下一主题

PWM模拟DAC电压输出-PID仿真贴

[复制链接]
跳转到指定楼层
沙发
发表于 2015-10-15 08:31:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

为了学习PID是怎么回事,特别做了此仿真,呵呵, 也可以说是<如何让PID的值转换成PWM的占空比>!

本人之前对PID一点都不懂,此贴主要是和大家分享学习经验!呵呵, 菜鸟贴, 不对的地方请大家拍砖!

此仿真采用的是PIC单片机, 由P1A引脚输出PWM,经过RC滤波后输出电压,AN0  ADC采样


先贴图吧!
PID算法是用的AVR: AVR221: Discrete PID controller 中的源码
//VFER = 2.048v, 10位分辨率(1024),设定稳压电压是1.024v


在此做几点说明:
1、设置P 、 I 、D

/*! \brief P, I and D parameter values
*
* The K_P, K_I and K_D values (P, I and D gains)
* need to be modified to adapt to the application at hand
*/
//! \xrefitem todo "Todo" "Todo list"
#define K_P     9.00
//! \xrefitem todo "Todo" "Todo list"
#define K_I     0.1
//! \xrefitem todo "Todo" "Todo list"
#define K_D     0.02



2、PID 方法调用

            //512-设定值
            GL(pid_Controller(512, adc_vlue, &pidData)); //VFER = 2.048v, 10位分辨率(1024),设定稳压电压是1.024v

3、ADC采样周期及PID控制周期

ADC 每100us采样一样,采用中位值滤波法
PID每1ms转换一次



最后........
上源码:
转载

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

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