APP下载

基于MBD的直流减速电机控制器设计*

2023-11-13谷明信罗天洪

机电工程技术 2023年10期
关键词:直流电机编码器控制器

鲁 鹏,付 强,杨 艳,胡 旭,谷明信,罗天洪

(重庆文理学院智能制造工程学院,重庆 402160)

0 引言

随着我国高端制造行业的发展,基于数字控制的电机调速系统在很多领域得到了广泛应用,掌握电机控制系统的原理与应用,已成为智能制造、机器人、无人驾驶、航空航天等行业相关技术人员的迫切需求[1]。

电机控制课程实验是掌握控制理论的重要环节,而现在国内的教学装置有些开放性差,只能修改某些参数或者简单外部接线,学生无法掌握内部的开发流程;另外一类实验设备又过于复杂,如基于C 语言的电机控制开发套件,欲对系统有深入理解需花费大量时间,而且信号检测还需要单独的仪器,中间变量的输出更是难以图形化显示,以上两种方式均不能达到理想教学效果。

近10 年来,基于模型设计(MBD)的V 形开发流程在华为、波音等先进制造业中获得了广泛认同。这种设计思路是在系统开发的不同阶段建立相应的系统模型,利用高层次语言进行设计、仿真和系统实现。如图1 所示,这种思想让理论与实践紧密地联系起来。开发人员在各个环节可以进行硬件在环(Hardware-in-the-Loop,HIL)仿真,从而降低了开发难度,缩短研发时间,真正做到设计更快,质量更高,灵活性更大[2-5]。

图1 基于模型设计的控制策略开发流程

德国dSPACE 公司开发的实时仿真系统以及加拿大的Quanser 系统是目前被广泛使用的MBD 实时硬件在环开发平台[6-8],系统软件平台采用MATLAB∕Simulink,自动化的代码生成∕下载以及快捷的调试环境使得应用开发过程快速易行;性能强劲的专用硬件具有高速计算能力,能够满足控制工程领域的各种相关产品开发。但是以上设备比较昂贵,目前主要用于科研,要作为普通高等院校实验设备还有一定难度,而另一种通用低成本的Arduino 单片机方案能够实现上述产品的替代[9]。为此,本文介绍了基于MATLAB∕Simulink 软件平台,硬件采用Arduino单片机为核心的开源低成本的直流电机控制教学实验装置,并实现了硬件电路设计、系统搭建、模型设计、自动代码生成、系统调试等功能。通过PID 算法在线控制测试,电机速度超调量小,在有外接负载扰动情况下能迅速稳定,达到控制预期效果。

1 设计原理

本文的伺服控制实验装置以Simulink 为软件平台,构建了开放式、图形化的实验设计环境,实现了伺服控制模型设计、仿真和控制程序的自动化生成。控制器的硬件平台采用基于ATmega 2560 单片机的Arduino 电路板作为中央处理器,具有性能高、集成度高、可靠性好、成本低等优点。为实现与伺服电机等被控对象的连接,实验装置扩展了A∕D、D∕A、编码器、通用I∕O 等接口,也提供了彩色液晶显示器、按键、LED、RS-232通信接口等外设,便于实现人机交互和数据采集。该系统用于变负荷情况下,电机的速度控制以及控制量的计算与分析。直流伺服控制实验装置系统框图如图2所示。

图2 直流伺服控制实验装置系统框图

2 系统硬件设计

2.1 主控制简介

Arduino Mega2560 具有54 路数字输入输出接口(其中14 路可作PWM 输出),适合需要大量I∕O 接口的设计。Arduino Mega2560另含16路模拟输入,每个I∕O的电流为40 mA。4路UART接口,一个16 MHz晶体振荡器,一个USB 口,一个电源插座,一个ICSP header 和一个复位按钮,第3版支持I2C接口。闪存为256 kB,其中8 kB由引导加载程序(BootLoader) 使用,SRAM 为8 kB,EEPROM 为4 kB。Arduino Mega2560 也 能 兼 容 为Arduino UNO 设计的扩展板。在不烧录Arduino 固件时,也可以作为普通的单片机使用,通常采用C语言对其开发。

图3 Arduino Mega2560R3 电路板

2.2 直流减速电机

目前,直流减速电机在平衡车、倒立摆以及智能车中应用广泛,为此本文选择带编码器的微形直流减速电机SZCMMOTOR的JGA25-370,具体参数如表1所示。

表1 减速电机参数

如图4 所示,直流电机由电刷、换向器、电枢绕组、主磁极构成。通过给电机的外部接入直流电,换向器根据电枢的位置切换,由法拉第电磁定律,带电的绕组在主磁极中会受到洛伦兹力的作用从而旋转。由电机学知识可知,电机速度如公式(1)所示,可以看出,要改变速度n有3 种方法:改变磁通ϕ、电枢电压U或电枢回路电阻Ra。最为通用的电子调速器都是改变电枢电压来改变转速,本文也是采用控制电枢电压的方式实现调速,具体由Arduino 2560 根据控制量的大小从而输出不同占空比的PWM 波形到驱动电路板TB6612FNG,驱动电路板核心为H 形全桥电路,通过控制桥臂的功率管导通时间从而改变输出电压有效值的大小与方向,达到控制直流电机速度与方向的目的。

图4 直流电机原理

对于减速直流电机而言,电机的输出轴连接到了减速器,而电机的尾部直接安装了霍尔编码器。如图5 所示,电机的正负电源线为红色与白色,调换可以控制电机正反转;其他4 种颜色为编码器的电源线与信号线,其中黑色为编码器电源负极,蓝色为编码器的电源正极(3~5.5 V),黄色线与绿色线分别是电机反馈信号线(电机转1圈可以产生11个脉冲信号),用于控制器测速。减速器的减速比为4.4。

图5 直流减速电机实物

2.3 驱动电路

由于单片机输出的电流达不到电机工作所需的电流,所以需要设计驱动电路。常用的驱动电路可以通过继电器、功率晶体管、可控硅或功率型的MOS 场效应管来实现,不过以上都是分离元件实现方式,实现方式较为繁琐。本文选择了一种成熟的驱动芯片来实现,型号为TB6612FNG,其体积小,在当前的电子设计中应用广泛,性能超过以前常用的L298N。

TB6612FNG 是东芝半导体公司生产的一款直流电机驱动器件,它具有大电流MOSFET-H 桥结构,双通道电路输出,可同时驱动2个直流电机。它无需外加散热片,外围电路简单,只需外接电源滤波电容就可以直接驱动电机,利于减小系统尺寸。对于PWM 信号输入频率范围,高达100 kHz 的频率更是足以满足大部分的需求,其最大输入电压为15 V,最大输出电流为1.2 A,内置过热保护和低压检测电路。

如图6 所示,TB6612 的端口分为两组,分别控制电机A 与电机B,以电机A 端口为例,单片机输出的电机速度控制PWM 信号接入PWMA 端口;STBY 为整个驱动芯片的使能信号,当将低电平输入到该引脚,则其所驱动的电机全部停止;方向控制信号端为AIN1、AIN2,具体控制真值表如表2 所示,其中布尔量“0”表示低电平,“1”表示高电平。系统硬件实物如图7所示。

图6 TB6612驱动模块电路

表2 电机方向控制真值

图7 系统硬件实物

3 系统算法与软件实现

3.1 限幅增量式PID原理

PID 控制,即比例-积分-微分控制,是自动控制原理中定义的一种控制方法,在现代工业控制中占有举足轻重的作用。PID 控制主要是对系统输出偏差进行比例、积分、微分3 种操作的组合而形成输出控制量,以减小系统误差,提高系统响应速度和响应效果[10-13]。图8 所示为限幅PID算法示意。

图8 限幅PID算法示意

PID 控制可以分为模拟PID 控制与数字PID 控制,在数字PID控制中,其控制量计算式为:

式中:u(n)为控制器的输出;e(n)为控制器的输入,即系统的期望值r(n)与实际测量值y(n)之差;数字PID 采用n代替连续PID中的t。

由于式(2)在实现时会将所有的误差值累加,计算量较大,所以出现了增量式算法。增量式PID 控制是数字PID 控制算法的一种基本形式,是通过对控制量的增量(本次控制量和上次控制量的差值)进行PID 控制的一种控制算法。控制系统输出为控制量的变化量。由于控制量刚开始时会非常大,常常会超过系统存储器的最大值,本系统采用的控制量大小为8 位,所以最后限幅为255。

3.2 算法软件实现

本文软件开发环境:WIN10 操作系统、MATLAB2015a 以及相匹配Simulink 关于Arduino 的硬件支持包。Simulink 具有强大的图形化建模、仿真能力,以及完整的信号处理与算法工具箱,并且可以与MATLAB 无缝集成,是控制系统工程师的常用软件,也是高校工程类专业师生熟悉的编程系统。本文的电机控制实验装置以Simulink 为软件平台,构建了开放式、图形化的实验设计环境,实现了电机控制系统模型设计、仿真和控制程序的自动化生成。

由于PID 是一种反馈型的控制方法,第一步就是通过编码器获得电机的实际转速。如图9 所示,本文采用Simulink 中的soEncoder 模块对电机编码器脉冲进行计数,该模块采用四倍频技术对编码器脉冲进行绝对计数。从上电开始该模块输出0,即以电机当前位置为初始点,当电机转动时对编码器的脉冲进行计数,y值为32 位有符号整型,正负代表不同的旋转方向。速度的获取的方法是采用延时环节计算两个时刻soEncoder模块输出的数据差值,再用差值除以两个时刻之间的时间隔。由于受电机编码器本身存在的干扰以及电机自身运行过程中不稳定等因素的影响,获取的转速数据会有很大的噪声波动,直接使用会导致信息检测不准,所以还需要进行滤波处理。图9 中Data type conversion 模块后面采用一阶数字低通滤波器对速度信号进行滤波。

式中:Xn为当次采样值;Yn-1为前次滤波输出值;a为滤波系数,远小于1;Yn为当前滤波输出值。

图9 编码器读取子模块

图10 所示为直流电机速度控制Simulink 主程序图,其中电机转速和滤波器模块即为图9 所描述的,最终得到一个速度信号。图中常数15 为设置的电机主轴(经减速器后)转速,下方滤波器输出为电机的实际转速,由于电机动力输出经过减速器才到达主轴,主轴的转速需要电机编码器的测量速度除以一个减速比,所以下方编码器输出与常数项K相乘。设定值与实际值相减得到误差error,即电机转速PID 控制器的输入,系统输出为电机驱动器的PWM控制量,其正负符号与绝对值大小决定电机的方向与速度。

图10 电机速度控制的Simulink主程序

图10 中上半部分Switch 模块的作用是当输入速度值不等于0 时,直接送入“1”高电平到电机模块,作为电机驱动器的使能信号;当输入速度值为0 时,将送入“0”低电平到电机模块,电机停止转动。电机模块详见图11,其中In1 是电机驱动器的使能信号输入,In2 为PWM 控制量输入,这个量在程序里面被取绝对值并限幅。本文用到了Simulink 的Arduino 硬件包里的PWM 输出模块,即输入255 到此模块,则模块自动输出占空比100%的PWM 波形;而当输入127 时则产生50%占空比的PWM 波形。该模块为图中的PWMA,对应于Arduino电路板的4号引脚。

图11 电机模块程序

图12所示为电机转速PID 控制器程序图,是图10中PID控制器的子程序。根据经验调试方法[14],设置PID对应的控制参数为[5,0.1,2],控制器的输出是PWM 控制量,其正负号将决定电机的正反转,绝对值大小确定电机转速,最后连接到图10中的In2。

4 实验结果分析

本小节将对系统进行控制测试。系统控制采样率为50 ms,程序下载方式为“外部运行模式”[15],即HIL控制模式。

图12 Simulink中PID控制器程序

如图13 所示,一共采样了700 步,可以看出在不到5 步的时间(250 ms),电机输出达到设定值,系统基本无超调。在500 步时,电机主轴输入一个随机负载,系统在50步内恢复到设定值。图中子图为局部放大图。

图13 有外部干扰下的系统速度控制阶跃响应

为了进一步研究系统的内部控制原理,本文测试了PID 模块的输出。如图14 所示,可以看出系统开始时的速度差值最大,从而PID 模块输出值达到80,不过其仍然没有达到系统255 的阈值,所以系统的设定速度仍然可以增加。由局部放大图可看出,系统速度受外部负载干扰时导致速度降低,PID 控制器的输出会立即增大,从而实现直流电机的速度实时控制。

图14 PID模块输出的PWM控制量

5 结束语

本文构建了基于Simulink 与Arduino 等低成本硬件的电机速度控制平台,详细分析了编码器速度采集、PID控制模块、电机控制模块等软件程序的实现过程。经过试验验证,系统跟踪能力强、超调小、抗扰能力好,控制效果达到要求。

本实验平台最大特点是低成本、开放性好、控制过程信息可视化。在此平台基础上,硬件可以继续增加陀螺仪、蓝牙、物联网通信等模块;进而验证多环PID、自抗扰控制、模糊控制、滑模控制、深度强化学习等诸多控制算法[16-20]。利用本实验平台,有利于将复杂的控制算法快速地向学生展示,提高了教学效率;另一方面实验平台采用MBD设计理念,有助于培养学生的系统设计与研发能力。

猜你喜欢

直流电机编码器控制器
基于模糊PID的无刷直流电机速度控制系统的设计与仿真
基于FPGA的同步机轴角编码器
基于FPGA的双绕组无刷直流电机软件设计
基于PRBS检测的8B/IOB编码器设计
JESD204B接口协议中的8B10B编码器设计
基于模糊神经网络PID的无刷直流电机控制系统研究
一种改进的无刷直流电机控制方法
多总线式光电编码器的设计与应用
模糊PID控制器设计及MATLAB仿真
MOXA RTU控制器ioPAC 5542系列