基于Proteus的直流电动机闭环调速系统设计
2018-01-29朱奥辞
朱奥辞, 赵 钢
(天津理工大学 天津市复杂控制理论与应用重点实验室,天津 300384)
0 引 言
随着计算机仿真软件功能不断完善,处理速度快速提升,仿真在自动控制系统和产品设计中的发挥着举足轻重的作用,当原型硬件电路和嵌入式代码主要部分实现后,就可以在仿真软件中将硬件电路和软件结合起来并开始测试工作,从而可以测试算法的可靠性,即提出的一种类RCP的实验设计方法。所谓类RCP实验设计方法是我们不需要在系统硬件搭建完成后才能对算法进行验证,而是通过在Proteus仿真软件中搭建硬件电路图,算法通过keil软件编译下载到仿真电路图中进行仿真验证。本文利用Proteus仿真软件设计了以AT89C52单片机为核心的算法验证直流电动机闭环调速系统,完成了硬件电路模型的设计和PID算法程序的调试,实现了闭环PID控制策略,验证了PID控制算法,为实际系统的设计打下了理论与技术基础。
1 系统总体设计方案
1.1 系统总体设计框图
本方案利用Proteus仿真软件设计了以AT89C52单片机为核心的直流电机闭环调速系统,快速的完成了硬件电路模型的设计和PID算法程序的调试,从而实现闭环PID控制策略[1]。将单片机产生的脉宽调制控制信号加在电机驱动模块L293D芯片上驱动直流电机实现正反转和加减速运动的控制,4个独立按键分别控制电机的速度增加、减小、停止、和正反转等功能,用带有测速装置的电机模块获得实际转速。通过控制系统输出的脉冲宽度实现电机速度的精确控制,运用偏差纠正偏差的闭环控制以及软硬件相结合的实时仿真可以直观地观测到直流电机的给定速度和实际转速,实现单片机对直流电动机的闭环调速控制,系统结构图如图1所示。
图1 系统结构图
1.2 PWM调压调速原理
脉冲宽度调制(PWM),简称脉宽调制,是通过调节脉冲宽度来调节电压,最终实现对电机转速的控制[2]。PWM是利用微处理器的数字输出来对模拟硬件电路进行控制的一种非常有效的技术,简单的讲就是对输出的脉冲宽度进行控制[3]。PWM 有 3 个参数,分别是频率、占空比、周期。
对于电动机的转速调整采用脉宽调制(PWM)办法,控制电动机的时候,电源并非连续地向电机供电,而是在一个特定的频率下以方波脉冲的形式提供电能。不同占空比的方波信号能对电机起到调速作用,这是因为电机实际上是一个大电感,它有抑制输入电流突变的能力,因此脉冲输入信号被平均分配到作用时间上,通过改变在始能端EN1 和EN2 上输入方波的占空比就能改变加在电机两端的电压大小,从而改变了转速[4-5]。如图2所示,占空比就是在输出的PWM中,高电平持续的时间和该 PWM 信号的周期持续的时间之比。控制电机转速时,占空比越大,速度越快,如果全为高电平,占空比为100%时,速度达到最快。
图2 PWM信号的占空比
2 系统硬件设计
2.1 控制系统核心
主控制器采用AT89C52单片机,AT89C52芯片是8位的CPU,片内有振荡器和时钟电路,工作频率为1~12 MHz,片内有256 byte RAM,片内26个特殊功能寄存器,4个8位的并行I/O口,1个全双工串行口,2个16位定时器,可处理6个中断源,两级中断优先级。通常单片机的引脚分为3类:电源和时钟引脚、编程控制引脚、I/O口引脚。单片机模块主要由 AT89C52 单片机及外围滤波、电源管理、晶振和复位电路组成,CPU总是按一定的时钟节拍与时序工作[6]。
2.2 键盘及显示模块
控制系统使用基于两个I/O口的独立按键实现电机的加速和减速,直接在驱动模块设计两个双向开关按键用于电机的正反转和启动停止。直流电机运行的实际速度状态和给定的速度分别通过两块4位LED组成的显示模块显示。
键盘模块的特点在于采用独立式键盘结构,使用AT89C52的P3.6和P3.7两个引脚控制两个独立按键。按键在闭合和断开会存在抖动现象,通常通过键盘软件消抖的方法。单片机检测按键是否按下的依据是检测该键对应的I/O口是否为低电平。两块四位LED通过锁存端74LS245接在单片机P2.0~P2.7口上,分别显示给定电机转速和反馈转速。
2.3 驱动模块
2.3.1L293D芯片介绍
L293D内部等效电路图如图3所示,是双H桥直流电机驱动芯片,L293D提供双向驱动电流高达600 mA,电压4.5~36 V,可以方便驱动两个直流电动机,兼容所有的TTL电平输入。每个输出都是推拉式驱动电路,当高电平送入使能端,与之对应的驱动电路被启用,驱动器的输出为活跃状态,当使能端输入为低电平,驱动器输出被禁用关闭,处于高阻抗状态。用合适的电平输入,驱动电路形成一个完整的H桥可逆驱动器即可用于驱动电机。
图3 L293D内部等效电路图
2.3.2驱动电路设计
用单片机控制直流电机时,需要加驱动电路,为直流电机提供足够大的驱动电流,通常有三极管电流放大驱动电路、电机专用驱动模块(L293D)和达林顿驱动器等等。本设计采用电机驱动模块L293D,AT89C52单片机通过P1.0口产生PWM波信号接在L293D的使能端,通过IN1和IN2端口控制电机正反转,通过一个非门实现。对应的OUT1和OUT2输出接在直流电机两端,驱动电路如图4所示。
图4 驱动电路设计图
2.4 直流电机位置编码器
本设计选用Proteus元件库中的直流电机位置编码器装置(DC POSITION ENCODER MOTOR),MOTOR-encoder中间的是编码器,电机每转一周,编码器检测出一次高电平,根据这个原理可以测出转速,检测左右两边可以看出电机的正反转。MOTOR-encoder的编码输出与本系统所要求的增量式旋转编码器具有同等功能,可提供两路具有90°相位差的编码脉冲,根据编码器输出的两路具有90°相位差的编码脉冲,反馈给单片机计数器T0后计数,既可以测速又可以判断方向[7]。利用其中任何一个可实现对转速的检测。本系统对MOTOR-encoder设置参数为如下图5所示。
图5 MOTOR-encoder参数设置
3 系统软件设计
软件由主程序、中断子程序、PID子程序组成。
3.1 主程序
当系统启动后,单片机进行初始化设置,主程序是一个循环程序。其主要思路是,先在程序中设定好速度的给定值,这个给定值与MOTOR-encoder测速电机送来的速度相比较得到一个误差值,然后用PID算法输出控制参数给PWM发生电路,从而改变波形的占空比,进而控制电机的转速[8]。单片机检测是否有按键按下,通过对按键的判断改变电机给定速度,从而改变系统输出占空比。系统的主程序流程图如图6所示。
图6 主程序流程图
3.2 定时器0中断服务子程序
定时器0中断程序先初始化清软件计数器,然后判断T0是否进入定时状态,如果进入定时状态则对光电编码盘发出有脉冲进行计数,在固定周期内计算转速和PID计算,同时定时器0具有对数码管显示送入段选和位选。流程图如图7所示。
图7 定时器流程图
3.3 PID控制子程序
比例环节的作用是对系统偏差瞬息进行判断,比例系数越大,控制作用越强,但比例系数如果过大会导致系统振荡不稳定;积分环节虽然可以消除静态误差,但过大的积分作用会增加系统的超调量,响应速度变慢,出现等幅振荡等;微分环节的作用是可以起到超前作用,阻止偏差变化,能够减小超调量,使系统更稳定,但鲁棒性差[9]。该程序主要是把设定的转速现当前测量得到的转速来计算偏差,从而用PWM输出方式来确定输出脉冲的宽度。
常规的模拟PID控制系统原理框图如图8所示。该系统由模拟PID控制器和被控对象组成。图中,r(t)是给定值,y(t)是系统的实际输出值,给定值与实际输出值构成控制偏差[10]。
e(t)=r(t)-y(t)
(1)
式中:e(t)为PID控制的输入;u(t)为PID控制器的输出和被控对象的输入。所以模拟PID控制器的控制规律为:
(2)
式中:Kp为控制器的比例系数;Ti为控制器的积分时间,也称积分系数;Td为控制器的微分时间,也称微分系数[11]。
图8 模拟PID控制系统原理图
对式(2)进行适当的变换,即可以进行数字PID控制。数字PID控制算法可以分为位置式PID和增量式PID控制算法。
位置式PID表达式为:
(3)
增量式PID控制算法公式:
Δuk=uk-uk-1=
Aek+Bek-1+Cek-2
(4)
由式(4)可以看出,如果单片机控制系统采用恒定的采样周期T,一旦确定A、B、C,只要使用前后3次测量的偏差值,就可以由式(4)求出控制量。增量式PID控制算法与位置式PID控制算法相比,计算量小得多,因此本次设计中采用的PID算法是增量式的[12-13]。图9所示为软件实现PID算法流程图。
图9 增量式PID控制程序流程图
4 单片机控制系统综合仿真调试
4.1 系统仿真联调
本次设计采用Keil软件和Proteus仿真软件对直流电机闭环调速的PID算法进行调试、验证、仿真。首先在Keil中对电机调速程序进行编写和调试,编译生产“.HEX”的目标代码文件,时钟频率设置为12MHz。然后下载到Proteus中组建完成的硬件系统中进行软硬件联调仿真。最终仿真效果如图10所示[14-15]。
图10 系统仿真效果图
4.2 仿真结果
为了更直观的观察仿真结果,从虚拟仪器模式中选取示波器模块分别对电机驱动模块的使能端信号进行检测,利用图表模式对编码器的两路信号和单片机产生的PWM波信号进行电压信号分析。
当系统仿真开始运行时,程序设定初始给定速度为240 r/min,电机实际转速开始慢慢加速,最终稳定在给定转速。当点击加速按键或是减速按键时,电机转速会出现短暂的超调或滞后,最终会稳定在给定设置速度。通过连接示波器可以直观的观察到电机的实际转速和当前速度PWM的波形图,通过图表模式,添加激励源探针,可以观察到编码器的电压信号。示波器测量不同转速波形如图11所示。图表测得波形如图12所示。
图11 电机加速前后的速度和PWM信号波形
图12 编码器电压信号和PWM电压信号
5 结 语
从图11中可以看出,加速后系统的占空比增大,编码器转速的波形图抖动频率变大,电机速度变快,给定速度和电机实际速度相吻合,所以符合设计要求。采用PID闭环调速算法有效地抑制转速的超调,调速精确,效率高。运用Proteus和Keil对直流电机闭环调速进行了软硬件的设计,有效地验证了PID算法,起到了本文提出的类快速控制原型的效果。
[1] 宛 铮,王庆泉. 基于Proteus的无刷直流电机控制器仿真设计[J].科技信息,2012(15):15-16.
[2] 王 玲,王中训,王 恒.基于 MSP430 单片机的多路无线温度检测系统[J].现代电子技术,2011,34(1):125-127.
[3] 李玲玲.一种智能电风扇的设计[J].遵义师范学院学报,2016.08,18(4):105-106.
[4] 邓春林.基于PWM调速技术的智能温控风扇系统[J].电子制作,2015.07,(108):88-89.
[5] 卢 莹.基于BCI的假肢控制方法研究[D].秦皇岛:燕山大学,2011(3):37-39.
[6] 何 冲,王淑红,侯胜伟,等.基于AT89C52单片机的步进电机控制系统研究[J].电气技术,2012(4):5-6.
[7] 童东兵,张莉萍,张 颖,等.基于任务驱动的《微机控制系统课程设计》教学与实践[J].上海工程技术大学教育研究,2016(1):32-35.
[8] 杨 靖.单片机控制的直流电机调速系统[J].机床电器,2008(1):45-47.
[9] 谢世杰,陈生潭,楼顺天.数字PID算法在无刷直流电机控制器中的应用[J].现代电子技术,2004(2):59-61.
[10] 张大钊.基于开关变压器式的电机软起动器研究[D].西安:西安科技大学,2010:24-25.
[11] 刘佳佳.大型强力数控旋压机液压伺服系统研究[D].北京:北京工业大学,2014:20-21.
[12] 周 越.半自主足球机器人控制系统研究与开发[D].北京:华北电力大学,2003:37-38.
[13] 孟凡兵.基于ARM的智能调节器研究与实现[D].大连:大连工业大学,2011:48-50.
[14] 张毅刚.基于Proteus的单片机课程的基础实验与课程设计[M].北京:人民邮电出版社,2012.
[15] 袁占军.基于proteus的直流电机PWM调速系统研究[J].电子设计工程,2013,21(15):115-116.