STM32
直播中

刘超

7年用户 1405经验值
私信 关注
[问答]

求基于PI控制的直流电机调速控制系统及控制方法

求基于PI控制的直流电机调速控制系统及控制方法

回帖(1)

李微波

2021-11-22 14:27:16
本发明属于传感器技术领域,具体涉及种一种基于PI控制的直流电机调速控制系统及控制方法。
背景技术:
直流电机有广泛的应用。如何控制和调整电机的转速是工程和实验领域要解决的问题之一。通常采用PWM波控制电机的转速,根据PWM波的占空比调整电机的转速,但是在实验和实际应用中,经常会发现,给一个固定占空比的PWM波,电机的转速并不能达到一个稳定的速度。因此,对电机的控制采用经典的PID控制,PID控制中P是比例系数,使得电机速度尽快到达设定值,但P、I、D的参数变化范围很大,很难找到合适的参数。
技术实现要素:
为了克服上述现有技术的不足,本发明的目的是提供一种基于PI控制的直流电机调速控制系统及控制方法,为解决直流电机速度控制问题,采用增量式PI控制方法,设计了无刷直流电机速度控制器。对模拟调节器进行了离散化处理,每隔10ms用编码器测速一次,并进行适当的软件滤波,用计算出速度差作为控制量,用离散的差分方程代替连续的微分方程,用软件实现了PI控制算法。搭建了基于STM32的实验平台,给出了P和I参数整定方法,并通过大量实验得到了合适的P和I的系数,验证了该增量式PI控制方法的正确性。
为了实现上述目的,本发明采用的技术方案是:
一种基于PI控制的直流电机调速控制系统,包括控制中心模块、显示模块,电机驱动模块、带编码器的直流电机模块、按键模块。控制中心模块单向接收按键模块、带编码器的直流电机模块信号,单向传输信号给显示模块、电机驱动模块,电机驱动模块单向传递信号给带编码器的直流电机模块。用按键预制电机的转速,控制中心模块向电机驱动模块发送信号并产生PWM波,电机驱动模块驱动直流电机旋转。编码器测得直流电机的转速并将其反馈给控制中心模块。控制中心将设定速度与测量速度进行比较,得到速度差。根据速度差进行PI控制,改变PWM波的占空比,最终使得测量速度接近与设定速度,实现对直流电机的调试控制。在显示模块上显示PWM波占空比,设定速度、测量速度、当前P和I的系数等信息。
所述的控制中心模块由软件和硬件组成,硬件由STM32F103ZET6微处理器组成,软件包括测速、PI控制、显示等。
所述的带编码器的直流电机模块由带有编码器的小型直流电机组成,用于直流电机旋转并用编码器进行测速。
所述的按键模块由按键检测威廉希尔官方网站 组成。用于设定电机转速和调节P和I的参数。
所述的电机驱动模块由TB6612直流电机驱动模块构成。用于驱动直流电机旋转。
所述的显示模块由TFT1.44寸真彩液晶屏构成,用于显示PWM波占空比,设定速度、测量速度、当前P和I的系数等信息。
一种基于PI控制的直流电机调速的控制方法,包括以下步骤:
1)对中心控制模块STM32F103ZET6的定时器A、定时器B、PWM波、硬件SPI进行初始化,定时器A初始化为10ms中断一次,在中断中主要进行电机测速和PI控制,定时器B初始化为计数方式,每隔10ms读取一次编码器的输出值,得到直流电机的实际转速;用按键模块设置电机的转速;
2)启动电机转动,10ms中断时间到,进定时器A中断,编码器测速,得到实际速度值,用设定值减去测量值,得到速度差e,

式中,e(k)为本次误差,e(k-1)为上次误差,e(k-2)为上上次误差,PWM代表PWM波占空比的增加量。Kp为比例系数P, Ki为积分系数;
3)计算得到PWM的增量,重新修改PWM值,调整电机转速,若测量值小于设定值,则PWM增大,提高电机转速;若测量值大于设定值,则PWM减小,降低电机转速;
4)为了找到合适的P和I的系数Kp和Ki,对于每一个固定的Kp和Ki值,连续测量500次,然后修改Kp或Ki值,自动加1或者减1,在一定的范围内,连续测量多组Kp和Ki的值所对应的速度值,将其导入MATLAB下进行分析,确定最终的Kp和Ki的值。
本发明的有益效果是:
1)本发明能够实现直流电机的恒速旋转。
2)采用按键模块,可设定电机转速并修改PI控制时的P和I的参数。
附图说明
图1为本发明的结构示意图。
图2为本发明的工作流程图。
其中,1为控制中心模块;2为显示模块;3为电机驱动模块;4为带编码器的直流电机模块;5为按键模块。
具体实施方式
以下结合附图对本发明进一步叙述。
如图1所示,基于PI控制的直流电机调速控制系统及方法,包括控制中心模块1、显示模块2、电机驱动模块3、带编码器的直流电机模块4、按键模块5。控制中心模块1单向接收按键模块5、带编码器的直流电机模块4信号,单向传输信号给显示模块2、电机驱动模块3,电机驱动模块3单向传递信号给带编码器的直流电机模块4。用按键预制电机的转速,控制中心模块向电机驱动模块发送信号并产生PWM波,电机驱动模块驱动直流电机旋转。编码器测得直流电机的转速并将其反馈给控制中心模块。控制中心将设定速度与测量速度进行比较,得到速度差。根据速度差进行PI控制,改变PWM波的占空比,最终使得测量速度接近与设定速度,实现对直流电机的调试控制。在显示模块上显示PWM波占空比,设定速度、测量速度、当前P和I的系数等信息。
所述的控制中心模块1由软件和硬件组成,硬件由STM32F103ZET6微处理器组成,软件包括测速、PI控制、显示。
所述的带编码器的直流电机模块4由带有编码器的小型直流电机组成。用于直流电机旋转并用编码器进行测速。
所述的按键模块5由按键检测威廉希尔官方网站 组成。用于设定电机转速和调节P和I的参数。
所述的电机驱动模块3由TB6612直流电机驱动模块构成。用于驱动直流电机旋转。
所述的显示模块2由TFT1.44寸真彩液晶屏构成,用于显示PWM波占空比,设定速度、测量速度、当前P和I的系数等信息。
如图2所示,一种基于PI控制的直流电机调速的控制方法,包括以下步骤:
1)对中心控制模块STM32F103ZET6的定时器A、定时器B、PWM波、硬件SPI进行初始化,定时器A初始化为10ms中断一次,在中断中主要进行电机测速和PI控制,定时器B初始化为计数方式,每隔10ms读取一次编码器的输出值,得到直流电机的实际转速;用按键模块设置电机的转速;
2)启动电机转动,10ms中断时间到,进定时器A中断,编码器测速,得到实际速度值,用设定值减去测量值,得到速度差e,

式中,e(k)为本次误差,e(k-1)为上次误差,e(k-2)为上上次误差,PWM代表PWM波占空比的增加量。Kp为比例系数P, Ki为积分系数;
3)计算得到PWM的增量,重新修改PWM值,调整电机转速,若测量值小于设定值,则PWM增大,提高电机转速;若测量值大于设定值,则PWM减小,降低电机转速;
4)为了找到合适的P和I的系数Kp和Ki,对于每一个固定的Kp和Ki值,连续测量500次,然后修改Kp或Ki值,自动加1或者减1.在一定的范围内,连续测量多组Kp和Ki的值所对应的速度值,将其导入MATLAB下进行分析,确定最终的Kp和Ki的值。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分