何少佳,史剑清,王海坤
(桂林电子科技大学 机电工程学院,广西 桂林541004)
随着科技的日益进步,对自动化的要求也越来越高,直流电动机应用领域更加广泛。例如,军事方面的雷达天线、惯性导航、火炮瞄准等控制;工业方面的数控机床、加工生产设备、工业机器人的控制;计算机外围设备及办公设备中各种光盘驱动器、扫描仪、打印机、传真机、复印机等设备的控制。因此,设计一款可控性好、精度高的电机控制系统是非常有意义的[1]。本文介绍了一种以AT89S51单片机为控制核心的直流电机控制系统,实现了通过红外遥控对电机进行转速设定,控制电机转动,对工作状态及转速进行显示的功能。
该系统可以通过红外遥控器控制电机的启动、停止、正转、反转、加速、减速并可以设定转速,通过槽型红外传感器测量电机的实时转速,实时转速和设定转速显示在LCD上。通过设置闭环控制功能,系统可以自动调节电机转速,使电机按设定转速运转。
系统设置有开环、闭环选择功能。按下开环键,电机按占空比50%正向转动,电机工作指示灯亮,正向转动指示灯亮;按下反向键,电机反向转动,电机工作指示灯保持原状,反向指示灯亮,正向指示灯熄灭。在正反转的过程中可以通过红外遥控器控制电机的加减速,转速由槽型红外传感器测量并显示在LCD屏上。
按下闭环按键后,可以设定电机转速、转向,然后按启动键,电机按设定转向运行,LED灯显示工作状态,单片机不断计算实际转速与设定转速差,并根据设定的算法调节转速。LCD屏实时显示设定转速与实际转速。
按下停止键,系统停止,所有工作指示灯熄灭。
本系统采用小功率直流电机,用“H桥驱动电路”驱动电机。通过单片机控制和C语言软件编程控制产生的PWM信号,控制固定电压的直流电源开关频率,从而改变负载两端的电压,进而控制H桥电机驱动电路使之工作在占空比可调的开关状态,实现对电机的平滑调速[2]。
整个系统硬件结构如图1所示。
图1 系统硬件结构图
红外遥控系统由发射、接收两部分构成,采用解/编码专用芯片来进行控制操作。发射部分包括键编码调制、LED红外发送器;接收部分包括光/电转换放大器、解调、解码电路等。
(1)遥控发射器及其编码。遥控器采用基于UPD6121G芯片的发射器。该芯片采用脉宽调制的串行码,以脉宽为0.565 m/s、间隔0.56 m/s、周期1.125 m/s的组合表示二进制的“0”;以脉宽为0.565 m/s、间隔1.685 m/s、周期为2.25 m/s的组合表示二进制的“1”。由“0”和“1”组成的32位二进制码通过红外发射二极管产生红外线向空间发射。
(2)接收器及解码。接收器采用VS1838B一体化红外线接收器。VS1838B集红外线接收、放大于一体,不需要外接任何元件,就能完成从红外线接收到输出的所有工作。红外接收头将接收到的载波信号过虑,得到与发射代码反向的接收代码,传送给单片机经行控制。
显示部分采用的是基于HD44780液晶芯片的LCD1602液晶显示屏,HD44780内置了DDRAM、CGROM和CGRAM存储器,提供了中文字库、ASCII码字库及自定义字形,去除了编制字库的麻烦。
一个完整的显示周期由以下部分组成:首先要对LCD1602初始化,然后指定显示位置。第1行第1列的地址是00H,但是由于写入显示地址时要求最高位DB7恒为高电平1,所以该位置的地址不能写入00H,而是00000000B(00H)+10000000B(80H)=10000000B(80H)。同理,第2行第1列的地址是C0H,而不是理论地址4OH[3]。然后将要显示的数据写入,这时,相应的数据就会在指定的位置显示出来。
本系统采用的是ALONG RF-310微型直流电机,工作电压为6 V,而单片机的输出高电平为5 V,因此电机需要一个驱动电路,采用“H桥驱动电路”来驱动电机[4]。如图2所示。
图2 H桥驱动电路
本系统的测速传感器采用槽型光电传感器ITR8402。其工作原理是:当接收管接收到来自发射管的信号时,接收管就导通,没接到信号时,接收管关断。利用它的这一特性,可以用一编码盘不停的切割光电对管,从而产生一连串的脉冲。
编码盘装在电机上,电机转动后,编码盘就不停的切割光电对管,从而产生一定频率的脉冲,该脉冲信号被单片机的计数管脚P3.3接收,利用定时器设定中断周期,然后处理这一周期内接收到的脉冲次数,通过计算便可得出电机的转速。编码盘有50个孔,编码盘转动一圈能够产生50个脉冲,精度达到0.02 rpm/分,如果想要提高测速的精度,只需改变编码盘上的孔数即可。
系统程序是在Keil uVision3中设计开发的,用高级C语言编写[5]。Keil uVision3是美国Keil公司开发的51系列兼容单片机C语言软件开发系统,可以完成从工程建立到管理、编译、链接、目标代码的生成等完整的开发流程,它支持所有的Keil的工具软件,包括C51编译器、A51汇编器、BL51/LX51链接定位器、Debug调试器和目标文件至Hex格式转换器。因此选择其为程序开发环境[6]。
系统程序由主程序、中断处理子程序、红外处理程序、转速测量程序及显示程序等组成。图3为主程序流程图,图4为闭环控制流程图。
图3 主程序流程图
图4 闭环控制流程图
在初始化时关闭定时中断,P2.3-P2.5口输出高电平,状态指示灯熄灭,P2.6、P2.7口输出高电平电机停止转动,对LCD初始化显示。将所有的初始化功能写成一个子程序,主程序只需调用它即可完成系统初始化。当初始化完成之后,扫描P3.2口,检测是否有信号输入,如有信号,识别信号并跳转到相应子程序,控制电机运动。
该系统利用MC51系列单片机生成PWM波,实现数字式的PWM直流电机调速,相对于传统硬件调速大大降低了成本。经实际运行,可以满足在遥控器操作下对电机的启动、停止、正反转的控制,LED指示灯正确显示工作状态,LCD正常显示转速。本系统可用于多种商业用途,具有较强的实用价值。
[1]张 方.电机及拖动基础[M].北京:中国电力出版社,2008.
[2]谭建成.新编电机控制专用集成电路与应用[M].北京:机械工业出版社,2006.
[3]朱华光.浅议LCD1602的编程技巧[J].电脑知识与技术,2010,6(18):4980-4982.
[4]陈伯时.电力拖动自动控制系统[M].北京:机械工业出版社,2003.
[5]谭浩强.C程序设计[M].北京:清华大学出版社,2005.
[6]王为青,程国钢.单片机keil Cx51应用开发技术[M].北京:人民邮电出版社,2007.