PID直流电机调速讲解1

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

主讲:于涛开始PID智能小车直流电机调速1of26•PID是什么•绕不开的理论公式•实际如何下手•演示•更进一步的深入2of26类比例如一个底部有漏口的水池,如果我们要保持水位,在某一个刻度,需要通过水阀开度的大小来实现。“高于刻度阀门就开小,低于刻度阀门就开大“这本身就是PID里面的一部分:P,即比例控制--只使用了PID的P部分。生活中的例子题外话:使用开环也可以,pwm与转速对应表。PID是什么?为什么使用PID一般的开关控制只能简单的起停。即控制电机的转动与停止。使用PID的效果:实现更精细的控制。1.保持转速恒定。2.快速达到指定的转速。常用单位:转/分钟=RPM。为什么我们不能告诉电机,按照我们要的速度转动?电机的交互方式:PWM,参数整定3of26是什么?PIDControllerMotor要求的速度实际转速(编码器测速)调整PWMerr速度反馈闭环:带有反馈的系统开环:没有反馈的系统PID是什么?P--比例控制部分这个很好理解.比如说,速度传感器发现,当前速度是1200/分.而我们设定的速度值为1000/分,那么差就是200/分,这时,如果我设定P为0.1,而电机速度的控制量是“电压”,就应该是Uo+0.1x200。P的意思就是“倍数”,就是指你要把这个偏差放大多少倍.放大本身就是一个比例.单单一个P控制就足够可以控制电机的速度.5of26单独控制效果:有误差,但是保持不变TimePID是什么?I--积分控制部分它是一个积分运算.有的时候偏差不是很大,可以继续运行下去,但会使系统始终存在一个偏差.如果你使用I运算将这个偏差累加起来,到了一定大小的时候就进行处理.这样就能防止系统的误差累计.其实,在程序中,这个过程就是对一个小偏差的连续累加.5of26是什么?D--微分控制部分所谓的微分就是对变量求导,意思就是一个量的变化率.其微分部分就是能够将变量变化率放入计算中.这个量在编程中其实就是求上次偏差和这次偏差的差.5of26绕不开的理论公式误差:e(t)=给定–测速结果P控制器:5of26控制器:绕不开的理论公式5of26(kT),上次的误差e[(k-1)T],2者的差值除以采样时间就是变化率绕不开的理论公式上面介绍的公式,叫做位置PID,也就是每次都使用整个系统的状态。可以理解为:偏差使用的是所有的全量偏差。还有一种算法是增量式PID。摘录网上的话:“位置式PID算法每次输出与整个过去状态有关,计算式中要用到过去误差的累加值,因此,容易产生较大的累积计算误差。而增量式PID只需计算增量,计算误差或精度不足时对控制量的计算影响较小。”上一次的输出为u(k-1),这次的输出为u(k),变化量为^u(k)5of26实际如何下手硬件准备:1.N20直流电机,配有1:145的金属变速箱。电机必须带测速。2.Aduinonano控制板,主控芯片atmel328p。3.实现电机控制的H桥电路板,带pwm输入。4.供电电池。软件准备:1.ArduinoIDE开发环境。2.串口猎人,用于收集数据,实时绘制可视化图像。5of26实际如何下手要控制就要涉及到三个量:设定值(控制目的)、被调量(控制什么)、输出量(控制结果)。对应到直流电机上就是:设定值:希望(给定)电机输出的转速被调量:PWM占空比输出量:实际电机输出的转速编码器体现速度的数字量是单位时间内的电平改变次数(ticks)。我设置的是引脚变化触发计数,有改变就计数。因此,速度=ticks。对应的量就变为:设定值:希望的单位时间内ticks被调量:PWM占空比输出量:实际单位时间内ticks5of26这个就是我们的控制目标,一般通过上位机命令给出实际如何下手代码实现速度测定:程序可以通过定时器来计数,利用单片机上的引脚变化中断实现。问题是这个采样时间怎么取?这里针对我买的电机,测速是放在转轴上未减速前的,采样周期可以设短为30ms。电机每圈有12个ticks,就设为15ms测速一次,每测2次求平均值,作为当前速度值。有了采样周期,就可以得到:输出量。这样就完全具备了条件:设定值:给定转速ticks,命令给出,看作常数。被调量:PWM占空比,通过带入公式计算得到。(PWM周期)输出量:通过周期内的编码器输出得到。同时以30ms为PID计算周期,计算结果输出给电机。位置式PID代码实现:5of26行就实现了!doubleerror=mySetpoint-inputMeter;errSUM+=error;outputPWM=kp*error+ki*errSUM+kd*(error–errorLast);//arduino的调节范围就是0-255if(outputPWM255)outputPWM=255;if(outputPWM0)outputPWM=0;实际如何下手代码实现5of26:参数整定5of26个数值:Kp,Ki,Kd。调整PID三个参数是不断试验的烦杂过程,需要有图形化界面直观的了解,我采用的是试凑法:(1)确定比例系数Kp确定比例系数Kp时,首先去掉PID的积分项和微分项,可以令Ti=0、Td=0,使之成为纯比例调节。输入设定为系统允许输出最大值的60%~70%,比例系数Kp由0开始逐渐增大,直至系统出现振荡;再反过来,从此时的比例系数Kp逐渐减小,直至系统振荡消失。记录此时的比例系数Kp,设定PID的比例系数Kp为当前值的60%~70%。(2)确定积分时间常数Ti比例系数Kp确定之后,设定一个较大的积分时间常数Ti,然后逐渐减小Ti,直至系统出现振荡,然后再反过来,逐渐增大Ti,直至系统振荡消失。记录此时的Ti,设定PID的积分时间常数Ti为当前值的150%~180%。(3)确定微分时间常数Td微分时间常数Td一般不用设定,为0即可,此时PID调节转换为PI调节。如果需要设定,则与确定Kp的方法相同,取不振荡时其值的30%。(4)系统空载、带载联调对PID参数进行微调,直到满足性能要求。演示5of26小车走直线烦恼:2个电机速度一样也无法直线引入第三个PID角度姿态保持需要陀螺仪,指南针LeftControllerLeftMotorDesiredVelocityActualLeftVelocityerrRightControllerRightMotorerrCoupledControllerActualRightVelocityTurningBias更进一步深入5of26•不完全微分•积分分离•微分先行•高级主题自整定临界比例法临界周期Tu和临界增益PuTHANKYOUContactUs

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功