您当前的位置:五五电子网电子知识电子知识资料电动机-发电机采用AT89C51实现步进电机的控制 正文
采用AT89C51实现步进电机的控制

采用AT89C51实现步进电机的控制

点击数:7711 次   录入时间:03-04 11:58:09   整理:http://www.55dianzi.com   电动机-发电机

  步进电动机(StepPINgMotor)又称为脉冲电动机,是将电脉冲信号转换为相应的角位移或直线位移的电磁机械装置,也是一种输出机械位移增量与输入数字脉冲对应的增量驱动器件。随着微电子和计算机技术的发展,步进电机已广泛运用在需要高定位精度、高响应性、信赖性等灵活控制性高的机械系统中,伴随着不同的数字化技术的发展以及步进电机本身技术的提高,步进电机将会在更多的领域得到应用。本设计主要控制步进电机按指定速度正转和反转。
  
  步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,电机就转动一个角度。电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定,因此非常适合于单片机控制。
  
  步进电机的工作就是步进转动,其功用是将脉冲电信号变换为相应的角位移或是直线位移。步进电机的角位移量与脉冲数成正比,它的转速与脉冲频率(f)成正比,如两相步进电机设定为半步的情况下,电机转一圈400个脉冲,n=60f/200(转/分)。给一个电脉冲信号,步进电机转子就转过相应的角度,这个角度就称作该步进电机的步距角。目前常用步进电机的步距角大多为一步1.8°或半步0.9°。以步距角为0.9°的进步电机来说,当我们给步进电机一个电脉冲信号,步进电机就转过0.9°;给两个脉冲信号,步进电机就转过1.8°。以此类推,连续给定脉冲信号,步进电机就可以连续运转。
  
  步进电机必须使用专用的步进电动机驱动器而不能直接接到工频交流或直流电源上工作。常见步进电机的驱动方式:全电压驱动和高低压驱动。全电压驱动是指在电机移步与锁步时都加载额定电压。为了防止电机过流及改善驱动特性,需加限流电阻。由于步进电机锁步时,限流电阻要消耗掉大量的功率,故限流电阻要有较大的功率容量,并且开关管也要有较高的负载能力。
  
  步进电机的另一种驱动方式是高低压驱动,即在电机移步时,加额定或超过额定值的电压,以便在较大的电流驱动下,使电机快速移步;而在锁步时,则加低于额定值的电压,只让电机绕组流过锁步所需的电流值。这样,既可以减少限流电阻的功率消耗,又可以提高电机的运行速度,但这种驱动方式的电路要复杂一些。驱动脉冲的分配可以使用硬件方法,即用脉冲分配器实现。现在,脉冲分配器已经标准化、芯片化,市场上可以买到。
  
  86BYG350F系列步进电机是由杭州日升公司推出的三相步进电机,技术参数如下表所示。

  由于步进电机是数字控制电机,步进电机是否转动是由控制绕组中输入脉冲的有无来控制的,每步转过的角度和方向是由三相控制绕组中的通电方式决定的,也就是说步进电机的控制是要求单片机软件产生按规律变化的时序脉冲,然后通过接口和驱动放大电路来驱动步进电机控制系统绕组工作,我们首先看一下步进电机控制系统的硬件电路设计。

  下图所示是AT89C51对三相步进电机的控制原理图。由于8031的Pl口负载只能驱动3个标准的LSTTL输入门,因此需要通过7406驱动器去驱动达林顿复合功率放大器,使步进电机绕组的静态电流达到2A。单片机的Pl.0控制A相,Pl.l控制B相,P1.2控制C相。
  
  当Pl.0输出高电平时,达林顿复合管导通,A相绕组有电流通过,A相导通;当P1.0输出低电平时,达林顿复合管截止,A相截止。因此Pl.0用于控制A相是否导通,输出1,A相通,输出0,A相截止。同理Pl.l用于控制B相,P1.2用于控制C相。

AT89C51对三相步进电机的控制原理图



www.55dianzi.com

  我们利用延时程序编写三相六拍步进电机的通电方式的控制程序。在三相六拍通电方式下,若按照A相→A相B相→B相→B相C相→C相→C相A相顺序通电,则步进电机正转;若按照A相→A相C相→C相→C相B相→B相→B相A相顺序通电,则步进电机反转。正、反控制模式如下表所示。

  由上图可知,Pl.0控制A相是否导通,输出1,A相通,输出0,A相截止。同理Pl.l用于控制B相,P1.2用于控制C相。从表8.1中看出,正转节拍l是A相导通,B、C相截止,所以Pl.0输出1,Pl.l、P1.2输出0,Pl口输出值为OIH(十六进制)。正转节拍2是A,B相导通,C相截止,所以Pl.0、Pl.l输出1,P1.2输出0,Pl口输出值为03H。读者可自行分析得出正转及反转的其他节拍控制值。在程序设计时,只需将正转或反转节拍控制值存放于数据中,然后按顺序从数组中读取并通过Pl口输出即可控制电机正转或反转。
  
  由于步进电机的转速与节拍频率f成正比,与节拍周期T成反比。因此通过调节两节拍的间隔时间就能控制步进电机的转速。程序通过软件延时控制节拍的周期T。下面介绍程序中用到的主要函数。
  
  1.延时函数DelayMs()
  
  该函数用于控制节拍的周期T,从而控制电机的转速。函数的基本延时时间约为Ims,总的延时时间是dcnt*lms。代码如下:

  2.正转控制函数RotateWise()
  
  该函数用于控制步进电机正转,参数speed控制转速,stepcnt控制转动步数。函数依次从数组roundz[]中取出节拍控制值,通过Pl口输出,同时延时speed指定的时间。当步进电机转动stepcnt指定步数时,程序结束。流程图如下图所示。

正转控制流程图

  代码如下:

  3.反转控制函数ContraRotate()
  
  该函数用于控制步进电机反转,实现原理同RotateWise(),此处不再详述。程序代码如下:

  4.测试程序
  
  下面给出一个测试程序,说明上述函数如何使用。要求步进电机以每秒10步正转10000步,以每秒50步反转10000步。程序代码如下:

  在硬件设计电路过程中,功率放大是整个系统系统设计中最为重要的部分。步进电机在一定转速下的转矩取决于它的动态平均电流而非静态电流,平均电流越大,电机力矩越大。
  
  要达到平均电流,就需要驱动系统尽量克服电机的反电势,不同的场合采取不同的的驱动方式,本设计采用7406驱动器来驱动达林顿复合功率放大器。我们利用软件延时程序,达到了步进电机的正转、反转、启动和停止。
  
  采用软件延时,一般是根据所需的时间常数来设计一个子程序,该程序包含一定的指令,设计者要对这些指令的执行时间进行严密的计算或者精确的测试,以便确定延时时间是否符合要求。每当延时子程序结束后,可以执行下面的操作,也可用输出指令输出一个信号作为定时输出。
  
  采用软件定时,CPU一直被占用,CPU利用率低,因此本设计的不足就是,CPU因执行延时程序而降低了效率。为了提高CPU的控制效率,读者可采用AT89C51内部定时/计数器编制上述程序。单片机不仅可以用来控制步进马达的启停和转向,而且也可以用于变速控制和对多台步进马达进行控制。




本文关键字:步进电机  电动机-发电机电子知识资料 - 电动机-发电机