龙源期刊网 http://www.qikan.com.cn
利用单片机AT89C51控制步进电机
作者:李有兵 苗晓培 林书句 谢元成 来源:《科学与财富》2012年第03期
摘要:本文利用单片机AT89C51来控制四相步进电机,并通过LCD1602来显示其运行状态。通过软件设计实现让步进电机启动/停止、正/反转、调速以及设置运行的步数等功能。且电路简单、控制方便成本低,适用范围广和实用价值高。 关键词:AT89C51;步进电机;LCD1602;正/反转
步进电机是机电控制中一种常用的元件,它是将电脉冲转化为角位移或者线位移。在非超载运行的情况下,电机的运行速度、停止的位置仅仅取决于脉冲信号的频率和脉冲数。通俗的说,给步进电机驱动器加一个脉冲信号,步进电机就按照设定的方向转一个固定的步距角。由于步进电机具有结构简单、维护方便、精确度高、启动灵敏、停车准确,误差较小且无累计误差等特点使得步进电机在工业生产中应用相当的广泛。而利用单片机控制步进电机系统具有成本低、设计简单、操作方便的特点,在数控机床、工业自动控制等领域被广泛的应用。 1、步进电机的控制 1.1步进电机的驱动系统
步进电机必须由脉冲产生器发出脉冲信号以及脉冲指令,然后步进电机驱动器依据脉冲指令提供电流驱动步进电机运行。 1.2 步进电机的励磁方式
步进电机有2相、4相、5相电机。本文运用的为4相电机,但是励磁方式有1相(单相)励磁、2相(双相)励磁和1-2相(单-双相)励磁。步进电机严格的按照励磁的方式运行。例如:4相步进电机在1-2相励磁的顺序为:A—AB—B—BC—C—CD—D—DA。如果要求步进电机反转运行只要将步进电机的励磁方式改为:DA—D—CD—C—BC—B—BA—A就可以让步进电机反转运行。利用AT89C51单片机的P1.0~P1.3这四条I/O控制线,通过步进电机驱动器向4相步进电机传送控制信号,让其励磁方式为1-2相励磁,则步进电机在顺时针运行情况下单片机I/O端口的状态如表1所示。 1.3 步进电机的速度和位置控制
当给步进电机发送一个脉冲,它就会转一步,给它再发送一个脉冲,它会再转一步。由此可知两个脉冲的时间间隔越小,步进电机运转的越快。也就是步进电机的运转速度与脉冲速度(频率)成正比。因此可以通过控制脉冲频率来控制步进电机的运转速度。其中步进电机的运
龙源期刊网 http://www.qikan.com.cn
转速度与脉冲速度之间的关系为:电机的运转速度(rpm)=脉冲速度(pps或Hz)×60÷步进电机分割数/圈。
步进电机的位置控制是指步进电机在脉冲信号的控制下从一个位置精确的移动到另一个位置。步进电机移动移动量的大小是由步进电机的分辨率和与输入脉冲数来决定的。脉冲数与移动量的关系为:位置移动量(0)=步进电机分辨率(0)×输入脉冲数。例如:假设二相全步距角为1.80,当输入1000个脉冲,这时移动量是18000,刚好是5圈。因此我们可以根据实际需要来设置步进电机移动的步数,步进电机每移动一步,步数减少一,如果没有失步的存在,当执行机构移动到目标位置时,步数刚好减为0。 2、步进电机控制方案 2.1 步进电机控制硬件结构
本系统的主要硬件如图2。硬件主要利用单片机AT89C51的I/O口控制步进电机。考虑到单片机I/O口提供的电流无法驱动步进电机。因此要驱动步进电机需要选择合适的驱动元件。本设计选用的驱动芯片为ULN2003,因为ULN2003是一款电机脉冲分配芯片,其结构简单,价格低廉,而且无需外接功率放大电路。其由7组达林顿晶体管阵列和相应的电阻网络以及钳位二极管网络构成,具有同时驱动7组负载的能力,为单片双极型大功率高速集成电路。ULN2003芯片工作电压高,工作电流大,灌电流可达500mA,并且能够在关态(有低电平输入时,输出为高电平)时承受50V的电压,输出还可以在高负载电流并行运行。有时为了抗干扰或避免万一驱动电路发生故障, 功放中的高电平进入单片机系统而烧坏元件, 往往在驱动器与单片机之间加一级光电隔离器。
我们利用LCD1602来显示步进电机的运行状态。LCD1602是字符型显示器模块是2行×16个字符LCD显示器。该器件由32个字符点陈块组成,可以显示ASCII码中的所有字符。LCD1602字符型显示器的外形和引角分布、名称如图2所示。其具体使用方法请参照该产品的使用说明书。由于我们是利用P0口来控制LCD1602的显示,所以要连接八个上拉电阻。 为了方便对步进电机的控制在控制电路中我们设置了4个输入按钮,分别用来控制步进电机的启动(P2.0)、正/反转(P2.1)、转速控制(P2.2)以及运行的步数设置(P2.6)。以及在每个按钮态运行的时候有响应的LED发光进行提示。其结构如图2中的按钮控制部分。 2.2 控制系统的软件设计
本控制系统的控制程序里用C语言设计。C语言相对汇编语言具有其优点。该程序设计的关键在以下三个部分。(1)步进电机的励磁方式控制。对于步进电机的励磁方式(脉冲信号的分配)我们采用数组的形式。设置一个长度为8的,无符号字符型数组,在正转的情况按照数组下标从小到大依次送入每一个数组元素的值,当数组下表等于8的时候,重新重复输入。当反转按钮按下时,改变输入数值的方式,使数组元素按照下标由大到小输入,当下标小于0
龙源期刊网 http://www.qikan.com.cn
时,重新由大到小重复输入。这样步进电机就能反向运行。(2)LCD1602的显示控制。 LCD1602的控制包括测忙函数(void test_LCD1602busy())、写命令函数(void
write_LCD1602Command(uchar co))、写数据函数(void write_LCD1602Date(uchar Date))、初始化函数(void init_LCD1602(void))以及显示函数(void dispaly_LCD1602(uchar
*DData,X,Y))。通过这些函数LCD1602就可以运行起来,并根据我们的需要来显示。例如图2中LCD1602显示了STA:Z、SPD:1和RUN:ON分别表示步进电机的运行状态为正转、速度档位为1和步进电机正在运行中等情况。(3)延迟函数的应用。由于步进电机的数度是由脉冲信号的频率来控制的,也就是脉冲速率越快,步进电机运行的越快。为了不影响其他的功能的实现,在本控制系统
中我们采用了定时的方式来实现。我们采用的是11.0592MHz的晶振,因此可以根据定时的时间算出定时的初值TH1和TL1。在设计时我们发现,设计的定时器的时间,有时候与理论值具有微秒级的误差。要使步进电机高速运行,定时器的时间应该越短,我们可以通过转速按钮开实现,先让步进电机在频率较低的启动,然后不断的提高输入的频率,从而让步进电机从低速上升到高速。 3、总结
该系统通过利用单片机AT89C51来控制步进电机,设计了键盘输入模块、步进电机驱动模块以及液晶显示模块,并通过软件设计实现让步进电机启动/停止、正/反转、调速以及设置运行的步数等功能。且电路简单、控制方便成本低,适用范围广和实用价值高。■ 参考文献
[1] 赵建领. 51系列单片机开发宝典[M]. 电子工业出版社,2007.
[2] 蒋辉平等. 基于Proteus的单片机系统设计与仿真实例[M]. 机械工业出版社,2009. [3] 任艳君. 电机与拖动[M]. 机械工业出版社,2011
[4] 李明等. 单片机原理及应用[M]. 北京航空大学出版社出版发,2007.