摘要:介绍了以89C2051单片机为核心,针对步进电机在手动和自动控制模式的基础上,设计出能够实现遥控操作的控制器。以四相五线步进电机为研究对象,以集成红外接收器接收遥控器发来的信号作为输入信号,并送单片机进行解码,单片机根据接收的输入信号进行运算处理后,发出控制命令送步进驱动器,驱动步进电机工作。实现了步进电机的手动、自动及遥控方式下的正反转,还实现定时时钟控制以及LCD状态显示等功能。
关键词:步进电机;自动控制;手动;遥控
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载情况下,电机的转速、停止的位置取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。由于这一关系的存在,加上步进电机只有周期性的误差而无累积误差等特点,使得在速度、位置等控制领域用步进电机来控制变的非常的简单,更加方便用户的应用与掌握。
随着信息技术的飞速发展,无线通信技术正在向各个领域渗透,特别是利用红外线进行通信,无论从小型化、轻量化、还是从安全性等方面考虑,其可行性都比较高。本文主要研究步进电机在手动、自动控制模式下,通过增加红外遥控模式以实现步进电机的多功能操作。
1 控制器组成
为了能够实现步进电机的手动、自动及遥控等多功能操作模式,设计出如图1所示的系统组成原理图。由图1知,该系统主要由传感器、A/D转换器、手动输入控制、红外线接收与发送电路、时钟控制电路、显示电路、电机驱动、步进电机及单片机控制器等部分组成。
其中手动输入控制电路主要用来实现系统参数的设置,以便在手动模式下控制电机的正反转;时钟控制电路一方面用来提供时钟信息,另一方面可以实现步进电机的定时启动与停止;传感器及A/D转换电路主要实现自动状态时,根据外部的检测信号,通过软件开发实现不同要求下步进电机的自动运行;红外发送与接收电路主要负责发送外部红外控制信息及接收遥控器发送来的控制信息,并送给单片机控制器进行解码,从而发出控制命令;显示电路主要实现对系统运行过程中的状态信息及工作模式进行显示;单片机控制器是系统的核心部件,完成对输入信号的采集,通过预先设置的算法进行运算、判断及处理,并发出控制命令或输出相应的显示信息。电机驱动电路接收控制器发出的控制命令,驱动步进电机实现正转或反转。
2 硬件电路设计
根据图1所示组成框图,选择89C2051单片机作为控制器,以4×4输入键盘和按钮作为手动输入电路,选用DS1302作为时钟电路,以LCD 1602作为输出显示电路,选择HS0038作为红外接收电路,采用PCF8591作为A/D转换装置,传感器选择了光敏元件。选用ULN2003步进驱动器,对型号为28BYJ48型步进电机进行驱动。下面主要介绍步进电机及步进驱动器,红外接收及时钟电路的设计。
2.1 步进电机及步进驱动器
(1)步进电机
步进电机选用的是28BYJ48型四相八拍电机,电压为DC5V—DC12V。当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。
每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A—B—C—D—A),双(双相绕组通电1四拍(AB—BC—CD—DA—AB),八拍(A—AB—B—BC—C—CD—D—DA—A)。
(2)步进驱动器
步进驱动器采用的是ULN2003驱动器,它是一个单片高电压、高电流的达林顿晶体管阵列集成电路。它是由7对NPN达林顿管组成的,它的高电压输出特性和阴极钳位二极管可以转换感应负载。ULN2003是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。输入5VTTL电平,输出可达500mA/50V。达林顿管并联可以承受更大的电流,ULN2003是高耐压、大电流达林顿陈列。
(3)电机驱动电路
28BYJ48型步进电机是4相5线的步进电机,而且是减速步进电机,减速比为1:64,步进角为5.625/64度。如果需要转一圈,那么需要360/5.625x64=4096个脉冲信号。该步进电机的耗电流为200 mA左右,采用ULN2003进行驱动,驱动端口为P1.0(A),P1.1(B),P1.2(C),P1.3(D)。正转次序:AB组-BC组-CD组-DA组(即一个脉冲,正转5.625度);反转次序:AB组-AD组-CD组-CB组(即一个脉冲,正转5.625度),其接线原理如图2所示。
其中MOT1~MOT4依次接单片机的P1.0~P1.3口。
2.2 红外线接收与发送电路
红外线接收电路选用了型号为HS0038的集成红外接收器,静态时输出端输出高电平,当接收到红外信号后,按红外信号的数据波形输出负脉冲数据信号。HS0038工作频率为38 kHz,能对收到遥控信号进行放大、检波、整形、解调.得到TTL电平的编码信号,再送给单片机,经单片机解码并执行相关控制程序。
红外接收电路的输出接单片机的P3.2,该口对应的第二功能是外部中断0(INT0),利用该口的第二功能,一旦红外线信号到来,P3.2被拉低,单片机中止当前的工作转移到接收、处理红外信号。开启中断功能的目的,既减轻了单片机的工作负担,又保证接收到的红外信号的完整性,单片机进入睡眠后,利用外部中断功能完成对单片机的唤醒,其接线图如图3所示。
红外发送电路可选用昂达播放器的遥控器,也可采用电视遥控器。由于系统简单,采用昂达播放器的遥控器。
2.3 时钟电路
时钟电路采用DS1302集成芯片,其主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用普通32768 Hz晶振,步进电机的启闭时间都保存在DS1302自带的RAM中,不需要单独的EEPROM。
DS1302与CPU的连接仅需要三条线,即SCLK(7)、I/O(6)、RST(5)。
3 系统软件设计
软件系统主要包括主程序、红外中断子程序、A/D转换子程序、显示子程序、时钟控制子程序及步进电机程序。下面主要介绍红外线解码程序。
3.1 红外线解码原理
昂达播放器的遥控器产生的遥控编码是连续的32位二进制码组,其中前16位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰。该芯片的用户识别码同定高8位地址为0BFH,低8位地址为40H;后16位为8位操作码(功能码)及其反码。
遥控器按键按下后,周期性地发出同一种32位二进制码,周期约为108 ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在45~63 ms之间。
当一个键按下超过36 ms,振荡器使芯片激活,将发射一组108 ms的编码脉冲,这108 ms发射代码由一个起始码(9 ms),一个结果码(4.5 ms),低8位地址码(9~18 ms),高8位地址码(9~18 ms),8位数据码(9~18 ms)和这8位数据的反码(9~18 ms)组成。如果键按下超过108 ms仍未松开,接下来发射的代码(连发代码)将仅由起始码(9 ms)和结束码(2.5 ms)组成。
其代码宽度的计算方法为:
16位地址码的最短宽度:1.12×16=18 ms
16位地址码的最长宽度:2.24 msX16=36 ms
已知8位数据代码及其8位反代码的宽度和不变:(1.12 ms+2.24 ms)x8=27 ms。所以得32位代码的宽度为(18 ms+27 ms)~(36 ms+27 ms)。
解码的关键是如何识别“0”和“1”,代码格式以接收代码为准,接收代码与发射代码反向。从位的定义我们可以发现“0”、“1”均以0.56 ms的低电平开始,不同的是高电平的宽度不同,“0”为0.56 ms,“1”为1.68 ms,所以必须根据高电平的宽度区别“0”和“1”。如果从0.56 ms低电平过后,开始延时,0.56 ms以后,若读到的电平为低,说明该位为“0”,反之则为“1”,为了可靠起见,
延时必须比0.56 ms长些,但又不能超过1.12 ms,否则如果该位为“0”,读到的已是下一位的高电平,因此取(1.12 ms+0.56 ms)/2=0.84 ms最为可靠,一般取0.84 ms左右均可;根据码的格式,应该等待9 ms的起始码和4.5 ms的结果码完成后才能读码。
3.2 解码程序设计
根据以上分析,采用89C2051单片机实现红外解解码的思路为:有信号产生中断→EA清零→延时小于9 ms (低电平)→等待高电平的到来→延时小于4.5 ms(高电平)→等待下一次高电平的到来→延时0.84 ms左右→读区P3.2脚电平值→再等待下一次高电平的到来→延时0.84 ms左右→读取P3.2脚电平值,依次取得32位代码,前16位为识别码,后18位既为8位数据码和8位数据反码。解码中断服务程序流程图如图4所示。
4 结束语
通过系统调试及运行结果表明,采用步进电机作为执行元件,89C2051单片机作为控制器,光敏元件传感器作为检测元件,以手动输入按钮作为手动输入信号,以红外遥控装置进行遥控操作,并辅以时钟控制及状态显示的步进电机控制系统,能够方便实现步进电机的手动、自动及遥控多功能操作,操作更加方便可靠。