案例分享:3-2 减速编码电机控制实验
一、实验目的:
(1) 理解PID控制原理。
(2) 学习增量式PID算法的原理。
(3) 掌握PID闭环控制电机的实现。
二、实验原理:
模拟PID控制原理
在过程控制中,按偏差的比例(P)、积分(I)和微分(D)进行控制的PID控制器(亦称PID调节器)是应用最为广泛的一种自动控制器。PID控制器原理简单,易于实现,适用面广,控制参数相互独立,参数的选定比较简单。
模拟PID控制系统的常规原理框图如下图所示。系统由模拟PID控制器和被控对象组成,r(t)是给定值,y(t)是系统的实际输出值,给定值与实际输出值构成控制偏差e(t)。
e(t)=r(t)-y(t)
控制偏差e(t)是PID控制的输入,u(t)是PID控制器的输出和被控对象的输入。模拟PID控制器的控制规律为
控制器的输出与输入误差信号成比例,当仅有比例控制时系统输出存在稳态误差。在模拟PID控制器中,比例控制的作用是对偏差瞬间做出反应。偏差产生后控制器立刻起控制作用,使偏差变小。比例系数Kp决定了控制作用的强弱,Kp越大,控制作用越强,过度越快,偏差也就越小。但是Kp越大,也更加容易产生振荡,破坏系统的稳定性。因此,比例系数Kp必须选择适当,才能使过渡时间变小,偏差小又稳定。
增量式PID算法
数字式PID控制算法可以分为位置式PID和增量式PID控制算法。在本实验中使用的增量式PID算法。增量式PID控制算法只需要计算控制量的增量。
可得控制器在第k-1个采样时刻的输出值为:
如果采用恒定的采样周期T,一旦确定了A、B、C,只要使用前后3次测量值的偏差,就可以求出控制增量。
除此之外,还有另一种算法:
PID算法程序解析
打开光盘资料的"Demo\KingBox\Application\DC_GEAR_MOT\main.c"文件,可查看相关代码。比例常数、积分时间常数、微分时间常数和调控周期如下:
主函数中首先初始化系统控制,配置CPU主频、寄存器和初始化PIE控制等。调用InitMeasureSpeed函数初始化时钟、中断等。InitMeasureSpeed函数如下:
InitMeasureSpeed函数中,cpu_timer0_isr定时器中断函数中定时采集速度,并用于PID算法。freq.freqhz_pr为采集的电机脉冲数,M0_PWM_ON为高电平时间,M0_PWM_ON_NEW为新的高电平时间,PWM_ON_PID是经过PID算法后的高电平时间。cpu_timer0_isr定时器中断函数如下:
三、实验步骤
(1)对实验设备进行硬件部分连接,连接好仿真器和USB串口线(默认为USB to UART串口输出)并上电。
(2)右击计算机图标,点击“设备管理器->通用串行总线控制器”或者“设备->端口(COM和LPT)”,查看是否有对应的仿真器的选项出现,如有说明仿真器驱动已经正常安装,否则请先正确安装CCS。同时查看串口的端口号。
(3)打开串口软件并设置串口调试工具,波特率为115200。
(4)按照工程导入步骤导入光盘资料"Demo\KingBox\Application"路径下的DC_DEAR_MOT工程。
(5)编译工程生成DC_DEAR_MOT.out的可执行程序。
(6)实验箱上电,确认仿真文件(.ccxml 文件)配置,并连接CPU。
(7)加载DC_DEAR_MOT.out可执行程序,并运行程序,本实验的功能是实现PID闭环控制电机。
四、实验现象
运行程序之后,串口显示如下图所示:
同时,数码管显示电机的转速和转向(0是转速,F代表顺时针转),如下:
第一次按下按键1后,减速直流电机开始顺时针(Forward)转动,占空比(DutyCycle)约为12%,转速(Speed)约为60R/min,显示如下图所示:
按下按键3后,电机会停止转动,同时串口打印电机转向为逆时针(Backward),电机转向由顺时针改为逆时针,如下: