| 为了学习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转换一次
 
 
 
 最后........
 上源码:
 转载
 
 
 |