杏彩体育:一种基于STM32的PID直流电机控制系统
来源:杏彩体育APP下载 作者:杏彩体育官网入口:本文是以PID(比例、积分、微分)算法为核心,基于STM32控制芯片的直流电机控制系统研究,硬
热线电话: 0574-62199599
产品视频
产品明细
:本文是以PID(比例、积分、微分)算法为核心,基于STM32控制芯片的直流电机控制系统研究,硬件模块包括L298N电机驱动模块、编码器测速、PWM(脉冲宽度调制,Pulse Width Modulation)输出等,软件部分以Keil MDK(混合开发工具,Mix Development Kit)为开发环境,实现调速系统各子模块功能,并对结果进行分析。此次研究搭建的系统实现使直流电机的稳态误差始终保持在0.49%以下,直流电机速度精度控制在95%以上。在额定转速时,其稳态误差为0.25%。随着设定电机转速
摘 要:本文是以PID(比例、积分、微分)算法[2]为核心,基于STM32控制芯片的直流电机控制系统研究,硬件模块包括L298N电机驱动模块、编码器测速、PWM(脉冲宽度调制,Pulse Width Modulation)输出等,软件部分以Keil MDK(混合开发工具,Mix Development Kit)为开发环境,实现调速系统各子模块功能,并对结果进行分析。此次研究搭建的系统实现使直流电机的稳态误差始终保持在0.49%以下,直流电机速度精度控制在95%以上。在额定转速时,其稳态误差为0.25%。随着设定电机转速增大,稳态转速的误差率总体呈减小趋势,实物系统有较好的稳态性能和控制精度。
近年来,随着微机控制技术、电力电子技术等迅速发展,直流电机因为其调速性能好、起动性能好,被广泛应用在高精度、可调速的场合,如航天、工业自动化、数字化控制、工业机器人、医疗设备等。
PID 控制是指比例、积分、微分控制。将系统的输出经过比例、积分、微分三种运算后,叠加至输入中,达到控制调速目的。由于其原理简单、易于实现等优点,被应用于多种领域。
位置式PID 算法是根据当前实际位置与要达到的预期位置的偏差,进行PID 控制。将每一次的误差进行累加作为积分,其运算量大,每次输出均与过去的状态相关,缺点是可能会引起大幅度超调。
增量式PID 算法的控制量是对应的最近3 次的位置误差的增量,只对当前误差积分,运算量较小,没有误差累加。所以增量式PID 容易通过加权处理获得比较好的控制效果,相较于位置式PID 算法,在程序实现时更简洁有效,运行时更加稳定,运算速度更快。
此系统由单片机STM32F103 输出PWM波[1],同时接收编码器计数,经处理达到控制调速目的,独立键盘进行速度的增减,LCD(液晶显示,liquid crystal display)模块进行设定值和实时速度的显示,选择L298N 模块作为直流电机驱动给电机供电。所有模块形成一个完整的速度闭环系统,能对直流电机快速精准调速。
本文选用L298N 为驱动模块,其电路中包含有两个H 桥的高电压大电流双桥式驱动器。在使用中,STM32F103 配置的PWM 输出引脚直接给该模块提供变占空比的信号,方便控制。
其控制状态表见表1。L298N 电机驱动模块可以实现电机的调速与正反转,此次研究只使用其驱动一台二相直流电机构成闭环调速系统,根据表1 配置IN1(输入)与IN2,对使能端输出PWM 脉冲,即可实现变占空比调速。
编码器为AB 相增量式霍尔编码器,输出标准的方波,STM32F103 自带的编码器模式可直接读取脉冲信号,AB 相编码器的A 相、B 相互相延迟四分之一周期输出脉冲。如图3 为编码器的输出波形,取A 相、B 相的上升沿和下降沿都作为脉冲,可以取得二倍频或四倍频。四倍频采样可提高系统运算时的精确性。通过每10 ms 读取处理一次编码器脉冲,可以测得电机速度和处理控制,此次使用四倍频采样,有提高系统运算精确性的优势。
配置脉冲计数器TIMx_CNT 为向上计数模式,而重载寄存器TIMx_ARR 被配置为ARR(自动重装载寄存器),比较值为CCRx,在t 时刻对计数器值与比较值进行比较。如果此时计数器值小于CCRx 值,输出低电平;如果此时计数器值大于CCRx 值,输出高电平,从而调节占空比。
此次研究以Keil MDK 作为编译开发环境,软件部分的重点是PID 控制的处理。流程图如图4,主要包括主程序、PID 处理、外部中断、定时中断、PWM 的输出和编码器的脉冲计数。
主程序包括对各模块初始化和各常量、变量的声明。包括中断外部函数的初始化、定时中断循环的初始化、独立按键配置、编码器配置初始化、显示模块初始化、PWM 配置初始化。初始化后触发由定时器6 的定时中断的循环,每隔10 ms 对系统进行一次编码器测速与PID 运算和PWM 的控制输出。期间独立按键可以触发外部中断对调速系统的设定速度值进行增加与减少。
定时中断循环实现功能包括:编码器脉冲读取,脉冲数量转化为速度显示在LCD 屏幕,进行PID 运算,更新PWM 占空比。
PID 控制在系统中采用增量式PID 算法,经调试其比例常数为0.5、积分常数为0.0025、微分常数为0。PID 模块根据设定值与得到的编码器脉冲值经公式运算后返回增量值。PWM 的输出由定时器1 实现,指定PA8 作为PWM 输出端子。在连接硬件时,需要连接两个端子才能实现驱动,另一个端子起参考电位的作用。PWM 模块根据得到的增量值更新PWM 占空比,从而实现实时、稳定、精确地控制调速系统。
实物系统主要包括STM32F103 开发板[7]、带AB相霍尔式编码器的直流电机、L298N 驱动模块、STLINK、7.2 V 电源等。其中系统实物搭建图如图5。
由表2 可知,直流电机的稳态误差始终保持在0.49% 以下,其超调性很小。在额定转速时,其稳态误差为0.25% 。随着设定电机转速增大,稳态转速的误差率总体呈减小趋势,实物系统有较好的稳态性能和控制精度。
[1] 焦玉朋.基于51单片机的PWM直流电机调速系统[D].呼和浩特:内蒙古大学,2013.
[5] 王国宇.基于STM32的无刷直流电机控制系统设计及仿真研究[D].桂林:广西师范大学,2016.
[9] 牛丽婕.直流电机的调速方法[J].无线] 阮毅,杨影,陈伯时.电力拖动自动控制—运动控制系统[M].北京:机械工业出版社:2016.
[11] 熊东海.两轮电动车用直流无刷电机调速系统的设计[D].广州:广东工业大学,2018.