1. 引言

有刷直流电机控制系统是指对有刷电机的启动、加速、运转、减速及停止进行的控制的一种系统。直流电机发展起步于二十世纪七八十年代,MAC无刷直流电机问世,带动了直流电动机控制技术在国际范围内的发展。我国国内也开始对直流电机展开广泛研究,先后推出了方波无刷电机、正弦波直流电机等典型的直流电机[1]。如今不同的电机控制方法开始出现,其中以矢量控制、PID控制、模糊控制和鲁棒控制最为常用。在工业生产生活中,直流电机控制系统主要应用于交通、智能制造、能源开采和尖端控制等领域[2]。PID控制是电机控制中不可获取的一种控制算法,实现简单,控制精度好,稳定性高,经常运用在各种加工机床等生产设备中。使用PID算法对PWM脉宽进行调制是一种很好的有刷直流电机控制的解决方案,在本方案中本文将使用AT89C52平台进行仿真,AT89C52是基于8051框架下构建的单片机芯片;其价格低廉,开发方便,稳定性较好,经常运用于嵌入式电机控制系统中。

2. 有刷直流控制系统的设计

本文所介绍的基于AT89C52单片机的PID直流电机控制系统设计过程主要分为MATLAB建模、Proteus硬件电路的设计以及基于C51语法的单片机程序开发编写。本系统性质为单闭环控制,即通过转速对电机进行调速,控制方框图如图1所示;将采用增量式编码器进行电机转速的测量,并设定PWM波形生成的开关频率为7KHz,速度回路的采样周期为14ms。
图1 单闭环控制框图

2.1 电机选型

在MATLAB建模过程本文将基于MATLAB R2019A进行建模,首先进行电机的数学建模。本文采用的电机参数如图2所示。
图2 采用的电机数据

2.2 电机建模计算

在此可参考博客【学习手记】单闭环直流调速控制系统及Matlab仿真进行建模计算,在此不再过多赘述。

3. Proteus仿真设计

本文使用的电气仿真平台为英国Lab Center Electronics公司出版的EDA工具软件Proteus 8.7 SP3。其中硬件需要使用Atmel AT89C52芯片进行控制,需要进行电路图的绘制。软件部分可利用C51语法对MCU进行控制。整个调速系统所需要具备的功能是将设定转速与实际转速显示出来,需要有按对电机启停、加速、减速、正反转进行控制,需要PID算法对电机进行调速。

3.1 硬件部分

在设计中,需要的硬件有AT89C52单片机、74LS30与门、共阴极四连级数码管、12MHz晶振、74393计数器、74S688数值比较器、D触发器74LS74、74LS245片选芯片、意法半导体驱动芯片L298、电机、电阻电容按键若干。整体电路分为两个部分,分别为主控制器部分,显示电路部分以及PWM产生电路。

主控制器与晶振于XTAL1与XTAL2引脚相连;复位引脚与复位按键相连接,为低电平复位;P0引脚与74LS245片选芯片相连接;P1引脚与74S688的比较口P0-P7相连;P2引脚与两个数码管的数据接口(A-G,DP)相连;P3.0与P3.1口分别连接驱动芯片的方向控制接口IN1与IN2相连;P3.2口作为外部中断接口,与电机的增量式编码器相连;P3.3作为PWM输出控制口与计数器74393的MR口相连;P3.4-P3.7分别作为按键接口接收外部信号,分别代表了启停按键、加速按键、减速按键、正反转按键,如图3.1所示。
图3.1 主控部分电路原理图
控制系统的PWM生成电路如图3.2所示。首先设置信号源的开关频率为7KHz,并与计数器74393A的CLK计数接口相连,并将74393A的高位Q3与74393B的CLK相连接,这样就构造成了一个8位计数器,计数范围为0到255之间。分别让计数器的Q0至Q7与数值比较器的Q0至Q7相连。这样若数值比较器的P0-P7口与Q0-Q7口二进制数相等时,则比较器的PQ口则产生一个高电平脉冲信号传递到D触发器的CLK引脚,这样D触发器Q引脚就会维持一个高电平,直到Q0-Q7到达255最高值时,与门7430就会产生一个高电平信号,使D触发器的Q引脚重置为低电平。计数器会让Q0至Q7的二进制数从小到大,最后有编程最小,依次循环往复,依照计数器、比较器、D触发器的有关性质与原理产生比较准确的PWM波形信号。
图3.2 电机控制电路部分原理图
最终由D触发器产生的PWM波形信号与驱动芯片的ENA使能端相连接,并通过OUT1与OUT2接口来控制直流电机的运转。电机转动时,会带动增量编码器生成脉冲信号,并通过线缆连接主控的外部中断接口P3.2来反馈信号。

控制系统的显示部分如图3.3所示,其主要由两个共阴极四连级数码管与8个电阻构成,其中数码管得1-4口为片选信号,主要控制单个数码块显示。
图3.3 显示部分电路原理图

3.2 软件部分

软件部分需要完成的功能是控制PWM占空比数值的输出,晶体数码管的显示控制,电机转速的计算以及设定电机转动状态方向和PID控制算法的实现。本文选择Keil μVision5进行C51代码的编写与编译,程序源代码如附录所示。

(1) 初始化函数:初始化函数为系统运行时所必需的,首先它规定了时钟的类型,计时器的时间,中断的使用以及电机的初始状态。其中单片机的时钟类型设定寄存器为TMOD,它是一个8位寄存器,分管两个时钟的设置,寄存器如图3.4所示。
图3.4 TMOD寄存器控制
其中GATE等于0时,仅由TR0,TR1置位分别启动定时器T0、T1;GATE等于1时由外部中断引脚INT0、INT1来启动定时器T0、T1;C/T为0时为定时器;C/T为1时为计数器;M1/M0用来控制时钟的类型与工作特点。

分别用TH0与TL0设定计时器0的计时时间,可通过计算公式得到。我们用$CF$来表示单片机的晶振频率;用$Tsm$表示一个指令周期;设定延时的时间用$Td$表示。因为设定的是16位定时器,所以计数范围为0至65536,又因为AT89C52的一个指令周期为12个机器周期,所以:

Tsm=12/CF M=Td/Tsm
由此可以得到单片机的计数数值$Bs$为:
在此我设置2ms的计时器,通过公式计算出$Bs$为63536,转换为16进制为F830,并让TH0等于0xF8,TL0等于0x30。设置中断打开,电机IN1与IN2都为低电平后完成初始化。

(2) 按键控制函数:分别定义全局变量CPLs、SpeedSet,他们分别代表了正反转标识和电机转动速度档位。用sbit设置P3.4-P3.7分别为按键输入口,分别代表电机启停(ON_OFF)、电机加速(UP)、电机减速(DOWN)、电机正反转(CPL);设置P3.3端口为电机PWM波输出控制口(PWM_CL)。

检测到ON_OFF被按下,首先检测PWM_CL的高低电平状态,如果PWM_CL为高电平状态,则将PWM_CL置为低电平,并且控制电机起转;若PWM_CL为低电平,则控制IN1与IN2同时输出高电平让电机急停,并将PWM_CL置为高电平。检测到UP被按下,则增加SpeedSet的转速档位。检测到DOWN被按下,则减小SpeedSet的转速档位。若检测到CPL按键被按下,若IN1为高电平,IN2为低电平,则进行反转,反之亦然。

(3)晶体管显示函数:定义Num_Buffer为一个8位整数型数组,用于储存设定转速值与真实转速值。将SpeedSet设定值分别除1000至10,并进行取余计算则可以得到每个位的数值。

(4)计数脉冲中断:主要由外部中断完成,每次接收到外部中断,也就是电机测速传来的脉冲信号,则该中断会让全局变量Inpluse加1。

(5)PID算法函数:输入电设定转速值和电机的真实的转速值,利用目标值减去实际值得到误差值,积分误差则是将前一个积分误差与误差值相加,微分误差为误差值减去上一个误差值;随后分别用误差值、积分误差和微分误差乘与比例系数、积分系数和微分系数,并将这些值加和,得到输出的PID控制数值。

(6)计时器0代码:分别进行晶体数码管的巡回显示,并且计算电机转速和输出电机的控制占空比数值。

(7)主函数:先进行系统的初始化,随后进入一个死循环,不断的执行按键设定函数与屏幕刷新函数的执行。

4. 仿真结果

经过Proteus的仿真,我们可以得到转速为150、270、330、450时的模拟情况,它们都是动态稳定的。设定的PID参数值分别为7、14、1。转速为150时的模拟图像如图4.1所示。
图4.1 转速为150时仿真图像
转速为270的模拟图像如图4.2所示。
图4.2 转速为270时的仿真图像
转速为330的模拟图像如图4.3所示。
图4.3 转速为330时的仿真图像
转速为450的模拟图像如图4.4所示。
图4.4 转速为450时的仿真图像

5. 总结与展望

本文设计了一种基于AT89C52单片机的PID有刷直流电机控制系统,主要介绍了控制系统从电机选型、电机建模到MATLAB仿真再到Proteus电路仿真的过程。比较系统的梳理了从理论研究到硬件软件开发的过程。

通过MATLAB我们可以实现对电机系统的初步探究,并且测试其可行性,可以将电机与控制系统进行模型的简化方便计算。通过Proteus可以进行具体的数字电路仿真,有着非常强的实践性,可以更加深入的进行可行性的探究,错误的纠正,偏差的调校,可以极大的减少制板与电路的错误率,可以在生产生活中帮助人们减轻成本,节约时间,增加开发的效率。

单片机技术在控制领域不可或缺,拥有着极大的发展前景,随着科技的发展,现代MCU的引脚功能越来越多,例如新发展的勘智K210边缘芯片的算力已达到1Tops,且功耗只有300mW,它可以进行人工智能领域的开发。如今新的处理器框架例如RISC-V精简指令集可以大大节约处理器计算性能,增大MCU的计算效率等。

随着新技术不断创新,随着电子计算机技术在我国的不断发展,直流电机控制系统也必将不断发展,并迎来新的突破,效率在不断提升的同时,运行成本会逐渐下降。如今科学技术不断进步,新材料、新技术也在不断提出、创新与应用,在未来,现代电机控制技术也必然会与材料、技术领域密切融合,取得更好发展。

参考文献

[1] 肖华锋,王晓标,张兴,王政,花为,程明.非隔离光伏并网逆变技术的现状与展望[J].中国电机工程学报,2020,40(04):1038-1054+1397.

[2] 赵靖,曾灵飞.现代电机控制技术的发展现状及展望[J].时代汽车,2020(07):22-23.

[3] 胡寿松.自动控制原理(第5版)[M].科学出版社,2007.

[4] 范影乐,杨胜天,李轶.MATLAB仿真应用详解[M].人民邮电出版社,2001.

[5] 张崇巍,李汉强.运动控制系统[M].武汉理工大学出版社,2002.1.

[6] 刘陆.基于MATLAB直流电动机控制系统的建模与仿真[J].兰州工业学院学报,2014,21(01):14-17.

[7] 熊颖,乌泽.应用于直流电机控制的PID算法设计[J].电子世界,2020(06):109.

[8] 牛慧敏,常青,王耀力.永磁无刷直流电机调速系统优化控制[J].计算机仿真,2018,35(12):185-190.

[9] Science - Measurement and Control Sciences; Researchers’ Work from Changsha University of Science and Technology Focuses on Measurement and Control Sciences (Determination of Modeling Parameters for a Brushless Dc Motor That Satisfies the Power Performance of an Electric Vehicle)[J]. Electronics Newsweekly,2020.

[10] 张东力.直流拖动控制系统[M],机械工业出版社,2015.


附录

相关程序以及Proteus仿真电路文件已上传至个人Github,可点击下面连接查看:
https://github.com/JimmyLiang-lzm/Simulation-of-PID-DC-Motor