PID电机调速PWM_第1页
PID电机调速PWM_第2页
PID电机调速PWM_第3页
PID电机调速PWM_第4页
PID电机调速PWM_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选文档所谓PID指的是Proportion-Integral-Differential。翻译成中文是比例-积分-微分。记住两句话:1、PID是经典控制(使用年代久远) 2、PID是误差控制()对直流电机速度进行定速控制:1、L293作为电机驱动;2、光电传感器-作为输出反馈;3、PWM做为输入控制。 PID怎么对误差控制,听我细细道来:所谓“误差”就是命令与输出的差值。比如你希望控制转速为4转/s(PWM波占空比=80%),而事实上控制转速只有3.5转/s,则误差: e=0.5转,如果实际转速为4.5转,则误差e=-0.5转(注意正负号)。该误差值送到PID控制器,作为PID控制器的输入。P

2、ID控制器的输出为:误差乘比例系数Kp+Ki*误差积分+Kd*误差微分。Kp*e + Ki*edt + Kd*(de/dt) (式中的t为时间,即对时间积分、微分) 上式为三项求和(希望你能看懂),PID结果后送入电机驱动器。 从上式看出,如果没有误差,即e=0,则Kp*e=0;Kd*(de/dt)=0;而Ki*edt 不一定为0。三项之和不一定为0。总之,如果“误差”存在,PID就会对电机驱动作调整,直到误差=0。 评价一个控制系统是否优越,有三个指标:快、稳、准。所谓快,就是要使压力能快速地达到“命令值”(不知道你的系统要求多少时间) 所谓稳,就是要压力稳定不波动或波动量小(不知道你的系统

3、允许多大波动) 所谓准,就是要求“命令值”与“输出值”之间的误差e小(不知道你的系统允许多大误差)对于你的系统来说,要求“快”的话,可以增大Kp、Ki值 要求“准”的话,可以增大Ki值要求“稳”的话,可以增大Kd值,可以减少压力波动 仔细分析可以得知:这三个指标是相互矛盾的。 如果太“快”,可能导致不“稳”; 如果太“稳”,可能导致不“快”;只要系统稳定且存在积分Ki,该系统在静态是没有误差的(会存在动态误差); 所谓动态误差,指当“命令值”不为恒值时,“输出值”跟不上“命令值”而存在的误差。不管是谁设计的、再好的系统都存在动态误差,动态误差体现的是系统的跟踪特性,比如说,有的音响功放对高频声

4、音不敏感,就说明功放跟踪性能不好。 调整PID参数有两种方法:1、仿真法;2、“试凑法” 仿真法我想你是不会的,介绍一下“试凑法” “试凑法”设置PID参数的建议步骤:1、把Ki与Kd设为0,不要积分与微分;2、把Kp值从0开始慢慢增大,观察压力的反应速度是否在你的要求内; 3、当压力的反应速度达到你的要求,停止增大Kp值; 4、在该Kp值的基础上减少10%; 5、把Ki值从0开始慢慢增大;6、当压力开始波动,停止增大Ki值;7、在该Ki值的基础上减少10%;8、把Kd值从0开始慢慢增大,观察压力的反应速度是否在你的要求内P、I、D参数整定口诀: 参数整定找最佳,从小到大顺序查;先是

5、比例后积分,最后再把微分加;曲线振荡很频繁,比例度盘要放大;曲线漂浮绕大湾,比例度盘往小扳;曲线偏离回复慢,积分时间往下降;曲线波动周期长,积分时间再加长;曲线振荡频率快,先把微分降下来;动差大来波动慢,微分时间应加长。这是我在STM32F103RB上做速度PID的PID函数,当然也可以利用ST公司自带的DSP库,/=/Adjust these three factor ,to achieve the best control effect/P:110之间 I:0-5之间 D:0.11float P_Coefficient=4.75;float I_Coefficient=0.55;float

6、 D_Coefficient=0.2;#define Diff_Order 4 /* Differential order*/int Temp,DestTemp,HeatPower;int Set_Distant;long int Integral=5; / Points accumulatedfloat Prev_Error10; / Record ten times before the errorfloat P,I,D;float Ek,E;unsigned char FirstFlag=1;/* Funtion name:PID Control* Time:2013/3/5* Auth

7、or:zhuhao*/float PID_Control(float Error)int i;float Output;float Ture;if(FirstFlag)/The first executionFirstFlag=0;for(i=0;i<10;i+)Prev_Error=Error;for(i=0;i<10;i+)Prev_Errori+1=Prev_Error;/ Buffer queuePrev_Error0=Error;/Ek=Error-Prev_ErrorDiff_Order;/E=0.8+Ek*0.2;/IIRP=P_Coefficient*Error;/

8、 Calculate the proportional componentI=I_Coefficient*Integral;/ Calculate the integral componentD=D_Coefficient*E;/Calculate the derivative componentOutput=(P+I+D);if(Output>0)Ture=Output;if(Output>=100|Output<=0|Error<-40|Error>40)/Saturated or large deviation integralif(Integral>0&&Error<0)Integral+=Error;if(Integral<0&&Error>0)Integral+=Error;elseIntegral+=Error;if(Integral<-10) Integral=-10;if(Integral>10) Integral=10;if (Output

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论