直流电机PID控制例程程序注释
2017-10-16 16:33
316 查看
基本算法
本例采用了增量式PID算法,算式如下: PIDOUT = basicValue + Kp*d_error + Ki*error + Kd*dd_error
其中:
PIDOUT:PID输出控制参数,为PWM宽度的调整量
Kp:比例调节参数
Ki:积分调节参数
Kd:微分调节参数
error:误差量(为期望速度-实际速度,可以为正数或负数)
d_error:本次误差量与上次误差量之差(error-pre_error)
dd_error:上次误差量与上上次误差量之差(pre_error-pre_pre_error)
控制程序
void SpeedAdjust() { long d_error,dd_error,error; //声明变量 error = (int)(speed_ept - now_speed); //计算本次误差(期待速度-当前速度) d_error = error - pre_error; //本次误差与上次误差之差 dd_error = pre_error - pre_pre_error; //上次误差与上上次误差之差 pre_error = error; //将本次误差赋值给上次误差(下次计算用) pre_pre_error = pre_error; //将上次误差赋值给上上次误差(下次计算用) pwm_tmp = pwm_tmp + PID_P*d_error + PID_I*error + PID_D*dd_error; //计算pwm宽度调整量 if(now_speed>22) //如果当前速度大于22 { Set_DCMotor(0,0); //不调整电机 } else //否则 { if(pwm_tmp>=0) //如果pwm宽度调整为正(增加宽度) { Set_DCMotor(pwm_tmp,0); //增加直流电机转速 } else //否则 { Set_DCMotor(pwm_tmp,1); //降低直流电机转速 } } before_speed = now_speed; //讲本次速度赋值给上次速度(下次使用) }
转自:http://blog.csdn.net/lczdk/article/details/54924825
相关文章推荐
- java例程练习(一个BirthDate类 以及简单的测试程序)
- Android应用开发揭秘的第6个程序5_1_ViewDrawRect修改版和高仿版的源码注释
- 自己做的 VS.net 2005 sp1 程序注释使用的宏代码
- 千万要避免的五种程序注释方式
- RedHat9.0 /etc/rc.d/rc 程序注释
- 千万要避免的五种程序注释方式
- USB接口IC读写器oem软件_AB密码完整解决方案/读写卡测试程序及源代码/网页例程
- C程序头文件注释格式
- CSLA.Net 3.0.5 版本 教学程序,代码附教学注释
- 如何为我们的程序编写开发文档——Java文档注释
- 剑指offer 学习笔记 + 程序注释
- DM642学习笔记(程序注释)
- 千万要避免的五种程序注释方式
- 基于STM32-基本定时器3的PWM输出 例程(带中文注释 ) ------------(转)
- 贪吃蛇程序(全文注释)
- Arduino 入门程序示例之直流电机(2015-06-15)
- Android 学习笔记5---程序开发模式&拨号器&短信发送器小例程
- 千万要避免的五种程序注释方式
- c/c++祛注释小程序
- 振奋人心的程序代码注释