直流电机闭环控制系统设计
2020-10-27刘旭辉张远方丁志娟
刘旭辉 简 震 张远方 丁志娟
(上海应用技术大学机械工程学院)
LabVIEW以简单易用的图形开发环境、强大的底层硬件驱动和较好的图形显示能力在工业控制、数据采集、图像处理及机器视觉等领域应用颇为广泛[1,2]。 随着电磁技术的不断发展,交流电机因结构简单、运行可靠及维护方便等优势得到了广泛的应用。 然而在一些大功率冶金行业、新能源汽车行业和大型家电行业里,直流电机以其良好的启停性能和无极调速性能仍具有无可替代的作用, 并且从闭环反馈控制角度分析,直流电机控制是交流电机控制的基础,因此直流电机仍有一定的理论意义和广阔的应用前景[3]。 笔者基于STM32和LabVIEW搭建了直流电机闭环控制实验测试平台,依据脉宽调制(PWM)调速原理和PID控制理论,对直流电机进行闭环控制实验。
1 系统设计方案
笔者设计的闭环控制系统可分为硬件部分和软件部分。硬件部分包括STM32控制器、直流电机、驱动器和编码器。 软件部分包括LabVIEW上位机软件和基于HAL库编写的STM32控制程序。STM32控制器采用STM32F407IG6驱动芯片,该芯片采用Cortex-CM4内核处理器。 直流电机采用25GA370大功率碳金刷直流减速电机, 减速比为1∶30, 内置11线光电编码器。 电机驱动器采用L298N驱动芯片,内置双H桥驱动电路。 上位机软件通过串口与STM32进行通信, 传递指令码给STM32控制器, 控制器根据通信协议对指令码进行解析后输出相应占空比的PWM脉冲信号给驱动器, 驱动器根据脉冲信号控制H桥桥臂的开断状态,进而控制直流电机的转速与方向。STM32控制器通过编码器接口获取电机转速,并通过波形图表显示模块对电机转速进行实时显示。 该控制系统的结构如图1所示。
图1 控制系统结构
2 硬件环境设计
2.1 电机驱动电路
驱动器是控制器与电机之间的桥梁,本系统采用STM32控制器的GPIO口的输出电压是3.3V,而25GA370直流电机的额定电压是12V, 不能用控制器直接驱动电机, 因此选用L298N芯片驱动电机,L298N芯片内含双H桥全桥式电机驱动电路,每个H桥由4个大功率三极管构成,为确保H桥电路不会同侧导通,在原H桥电路基础上增加4个与门和2个非门逻辑电路,可确保H桥单侧只有一个三极管导通, 起到保护芯片的作用。 通过STM32控制器高级定时器输出互补PWM脉冲,控制桥臂交替导通和截止, 实现电机正反转控制,通过调整PWM脉冲的占空比控制驱动器输出电压实现电机调速[4]。 此外,利用4个光耦隔离器将STM32控制器与驱动电路进行隔离, 确保电路安全可靠。 电机驱动电路如图2所示。
图2 电机驱动电路
2.2 电机转速采集电路
为实现对电机的闭环控制,系统需要对电机的转速进行采集。 25GA370直流电机上集成了一个编码器测速装置, 由2个霍尔传感器和铁氧体磁环组成,2个霍尔传感器成90°安装,即编码器A相和B相。 电机转子转动时带动铁氧体磁环旋转,当磁环的一个磁极靠近霍尔传感器时输出低电平信号,磁环的另一个磁极靠近即上个磁极远离时输出高电平信号[5]。 通过定时器输入捕获功能计算捕获的高电平或低电平的次数,从而得到电机的旋转圈数。 笔者采用的编码器分辨率为11线,即电机转子旋转一圈编码器可产生11个脉冲信号,考虑到电机减速比为1∶30,实际输出轴旋转一圈编码器可产生330个脉冲信号。 通常编码器测速有两种方法——T法和M法,T法即计算一定脉冲数量所用的时间,M法即计算一定时间内的脉冲数量[6],笔者采用M法测速。 YS-F4Pro控制板上集成了专用的编码器接口,最多可同时双相采集两路编码器脉冲信号,其电路如图3所示。
3 软件设计
3.1 PID算法
笔者采用离散型增量式PID算法实现对直流
图3 编码器接口电路
电机的闭环控制,表达式如下:
式中 ek——第k次采样偏差;
k——采样序号;
Kd——微分系数;
Ki——积分系数;
Kp——比例系数;
T——采样周期;
Δuk——第k次采样输出控制量的增量。
系统的PID算法通过Keil软件采用C语言编程实现。 STM32通过对编码器脉冲信号进行计数得到电机的实际转速, 然后将当前电机转速传给PID控制函数, 得到控制量增量用以调节占空比输出相应的PWM脉冲信号给驱动器,从而实现对直流电机转速的PID控制,控制流程如图4所示。
图4 增量式PID控制算法流程
3.2 上位机软件的编写
为实现上位机与下位机之间的通信,笔者基于LabVIEW编写了上位机软件,主要包括串口通信模块、数据发送模块和图形显示模块。
3.2.1 串口通信模块
VISA函数是LabVIEW中常用的串口通信模块,VISA函数编程简单, 但生成安装文件时,需额外安装约250MB的函数驱动程序, 导致程序运行较慢,数据传输时可能造成丢失。 笔者采用动态链接库库函数PCOMM.dll来实现串口通信功能。通过PCOMM.dll库函数可直接调用PC机底层的WINAPI开发接口,与VISA相比运行速度提高近两倍[7]。 图5为PCOMM.dll库函数串口通信程序。
图5 PCOMM.dll库函数串口通信程序
3.2.2 数据发送模块
数据发送模块包括PID参数整定、 目标位置发送和电机启停。 采用字符串形式通过串口向下位机发送相关指令数据,指令码格式见表1。
表1 LabVIEW串口通信指令码格式
以PID参数整定为例对该模块进行说明。 常见PID参数整定法有理论计算法、试凑法、临界比例法及衰减曲线法等,这些方法均需多次调整才能得到合适的PID参数,较为耗时[8]。为此设计PID参数整定模块。 PID参数设置的指令码为“AA 07 P(XX XX XX XX) I(XX XX XX XX) D(XX XX XX XX) CS 2F”,其中AA为帧头,07为功能码,P、I、D为32位整型(以4个8位整型XX表示),CS为校验码,2F为结束符(“/”),共16字节,均以十六进制表示。STM32收到数据后对功能码进行判断,若为“07” 则截取PID参数字符串来修改STM32程序的PID参数,达到参数整定的目的。 程序如图6所示。
图6 PID参数发送程序
3.2.3 图形显示模块
为实现对电机运转状态的实时监测,设计了图形显示模块(图7)。 为简化运算,控制器SysTick定时器中断回调函数每隔0.1s通过串口向上位机以指令码形式发送一次电机转速信息。 上位机接收到指令码,先对指令码帧头、帧尾、校验和进行验证,然后以条件结构判断功能码,最后通过索引字符串功能截取转速信息并以波形图表显示。
图7 图形显示模块程序
4 实验测试
完成上述硬件设计和软件编写之后,搭建了直流电机闭环控制实验测试平台(图8),主要包括YS-F4Pro控制板、驱动器、直流电机、编码器和LabVIEW上位机软件。
图8 直流电机闭环控制实验测试平台
经过多次PID参数的实时整定,得出P=5.5、I=1.5、D=0时,系统具有良好的动态性能,在此基础上进行直流电机的闭环控制实验,验证该闭环系统的稳定性和响应速度。 如图9所示,设定目标转速为150r/s, 在28.5s时启动电机, 实际转速约在30s处与目标曲线重合,整个调整时间约为1.5s,没有出现较大超调量。 为了验证该闭环系统的稳定性,在65s处给电机输出轴施加反向负载,电机在149~152r/s范围内出现抖动现象, 与目标转速差值在2r/s之内,属于允许误差范围。 为进一步验证系统的响应速度,在112s处,将目标转速调整为50r/s, 实际转速约在113s处与目标转速曲线重合,调整时间约为1s,电机响应十分迅速。 由此可见PID参数是合理的, 该闭环系统具有良好的稳定性和调速性能。
图9 目标转速与实际转速关系曲线
5 结束语
介绍了基于STM32和LabVIEW的直流电机闭环控制系统的设计过程, 并基于PID理论搭建了直流电机闭环控制实验测试平台。 实验表明,在该系统下直流电机具有良好的稳定性和调速性能。 此外,通过上位机软件波形图表显示功能进行PID参数实时整定, 与传统参数整定方法相比更加直观和快捷, 这种全新的参数整定模式,在工程上具有一定的应用价值和借鉴意义。