一种基于STM32的PID直流电机控制系统

2022-03-22 09:10龚茂林张凤
电子产品世界 2022年2期

龚茂林 张凤

摘?要:本文是以PID(比例、积分、微分)算法为核心,基于STM32控制芯片的直流电机控制系统研究,硬件模块包括L298N电机驱动模块、编码器测速、PWM(脉冲宽度调制,Pulse Width Modulation)输出等,软件部分以Keil MDK(混合开发工具,Mix Development Kit)为开发环境,实现调速系统各子模块功能,并对结果进行分析。此次研究搭建的系统实现使直流电机的稳态误差始终保持在0.49%以下,直流电机速度精度控制在95%以上。在额定转速时,其稳态误差为0.25%。随着设定电机转速增大,稳态转速的误差率总体呈减小趋势,实物系统有较好的稳态性能和控制精度。

关键词:直流电机调速;PWM;PID;STM32

近年来,随着微机控制技术、电力电子技术等迅速发展,直流电机因为其调速性能好、起动性能好,被广泛应用在高精度、可调速的场合,如航天、工业自动化、数字化控制、工业机器人、医疗设备等。

1 增量式PID算法与位置式PID算法对比

PID控制是指比例、积分、微分控制。将系统的输出经过比例、积分、微分三种运算后,叠加至输入中,达到控制调速目的。由于其原理简单、易于实现等优点,被应用于多种领域。

1.1 位置式PID算法

增量式PID算法的控制量是对应的最近3次的位置误差的增量,只对当前误差积分,运算量较小,没有误差累加。所以增量式PID容易通过加权处理获得比较好的控制效果,相较于位置式PID算法,在程序实现时更简洁有效,运行时更加稳定,运算速度更快。

2 硬件系统整体流程

此系统由单片机STM32F103输出PWM波[1],同时接收编码器计数,经处理达到控制调速目的,独立键盘进行速度的增减,LCD(液晶显示,liquid crystal display)模块进行设定值和实时速度的显示,选择L298N模块作为直流电机驱动给电机供电。所有模块形成一个完整的速度闭环系统,能对直流电机快速精准调速。

2.1 电机驱动模块L298N

本文选用L298N为驱动模块,其电路中包含有两个H桥的高电压大电流双桥式驱动器。在使用中,STM32F103配置的PWM输出引脚直接给该模块提供变占空比的信号,方便控制。

其控制状态表见表1。L298N电机驱动模块可以实现电机的调速与正反转,此次研究只使用其驱动一台二相直流电机构成闭环调速系统,根据表1配置IN1(输入)与IN2,对使能端输出PWM脉冲,即可实现变占空比调速。

2.2 编码器测速模块

编码器为AB相增量式霍尔编码器,输出标准的方波,STM32F103自带的编码器模式可直接读取脉冲信号,AB相编码器的A相、B相互相延迟四分之一周期输出脉冲。如图3为编码器的输出波形,取A相、B相的上升沿和下降沿都作为脉冲,可以取得二倍频或四倍频。四倍频采样可提高系统运算时的精确性。通过每10 ms读取处理一次编码器脉冲,可以测得电机速度和处理控制,此次使用四倍频采样,有提高系统运算精确性的优势。

2.3 PWM

配置脉冲计数器TIMx_CNT为向上计数模式,而重载寄存器TIMx_ARR被配置为ARR(自动重装载寄存器),比较值为CCRx,在t时刻对计数器值与比较值进行比较。如果此时计数器值小于CCRx值,输出低电平;如果此时计数器值大于CCRx值,输出高电平,从而调节占空比。

3 软件整体流程

此次研究以Keil MDK作为编译开发环境,软件部分的重点是PID控制的处理。流程图如图4,主要包括主程序、PID处理、外部中断、定时中断、PWM的输出和编码器的脉冲计数。

3.1 调速系统主程序[3]

主程序包括对各模块初始化和各常量、变量的声明。包括中断外部函数的初始化、定时中断循环的初始化、独立按键配置、编码器配置初始化、显示模块初始化、PWM配置初始化。初始化后触发由定时器6的定时中断的循环,每隔10 ms对系统进行一次编码器测速与PID运算和PWM的控制输出。期间独立按键可以触发外部中断对调速系统的设定速度值进行增加与减少。

定时中断循环实现功能包括:编码器脉冲读取,脉冲数量转化为速度显示在LCD屏幕,进行PID运算,更新PWM占空比。

3.2 PID算法处理与PWM输出

PID控制在系统中采用增量式PID算法,经调试其比例常数为0.5、积分常数为0.0025、微分常数为0。PID模块根据设定值与得到的编码器脉冲值经公式运算后返回增量值。PWM的输出由定时器1实现,指定PA8作为PWM输出端子。在连接硬件时,需要连接两个端子才能实现驱动,另一个端子起参考电位的作用。PWM模塊根据得到的增量值更新PWM占空比,从而实现实时、稳定、精确地控制调速系统。

4 实验数据及分析

实物系统主要包括STM32F103开发板[7]、带AB相霍尔式编码器的直流电机、L298N驱动模块、STLINK、7.2 V电源等。其中系统实物搭建图如图5。

经过调试,在代码调试中,按照先整定Kp再整定Ti的顺序进行调整,最终得出在Kp = 0.5和Ti = 200时,系统的调速响应快,调速的范围可达170 rpm~440 rpm(圈每分钟)。通过基于STM32的PID直流电机控制系统对电机的输出轴分别进行转速设定[13],分别设定了190 rpm、220 rpm、250 rpm、280 rpm、310 rpm、340 rpm、370 rpm、400 rpm、410 rpm、420 rpm、430 rpm,实际测量结果如表2,数据进行了误差计算。

由表2可知,直流电机的稳态误差始终保持在0.49%以下,其超调性很小。在额定转速时,其稳态误差为0.25%。随着设定电机转速增大,稳态转速的误差率总体呈减小趋势,实物系统有较好的稳态性能和控制精度。

参考文献

[1] 焦玉朋.基于51单片机的PWM直流电机调速系统[D].呼和浩特:内蒙古大学,2013.

[2] 雷慧杰.基于STM32的直流电机PID调速系统设计[J].现代电子技术,2016,39(8):165-167,170.

[3] 司开波,黄健,吕林涛.基于STM32的直流电机调速新方法[J].宇航计测技术,2018,38(02):87-91.

[4] 刘松斌,王海星,李硕恒.基于STM32的直流电机PWM调速系统[J].化工自动化及仪表,2016,43(8):834-837.

[5] 王国宇.基于STM32的无刷直流电机控制系统设计及仿真研究[D].桂林:广西师范大学,2016.

[6] 张才勇,王庭有,李驰骎.基于单片机的直流电机调速控制[J].化工自动化及仪表,2019,46(11):885-890,916.

[7] 李勇.直流电动机拖动系统的电气调速方法[J].四川水力发电, 2000(03):90-92.

[8] 李鹏辉.浅谈直流电动机调速[J].生物技术世界,2014(1):174.

[9] 牛丽婕.直流电机的调速方法[J].无线互联科技,2013(3):72.

[10] 阮毅,杨影,陈伯时.电力拖动自动控制—运动控制系统[M].北京:机械工业出版社:2016.

[11] 熊东海.两轮电动车用直流无刷电机调速系统的设计[D].广州:广东工业大学,2018.

[12] 张宏卫,曹志刚.基于Simulink的智能车用微型电机闭环系统的仿真研究[J].电气传动自动化,2011,33(1):30-32.

[13] 王祎晨.增量式PID和位置式PID算法的整定比较与研究[J].工业控制计算机,2018,31(5):123-124.

[14] 朱贵国,汪党.基于STM32单片机的直流电机调速系统设计[J].數字技术与应用,2013(5):2-3.

3643500589291