PC基自激步进电机控制器
仪器信息网 · 2011-03-24 00:28 · 22604 次点击
步进电机在电子—机械装置中变换电脉冲为不连续的机械运动。一般电机具有一个自由转动轴,加上电源能连续转动。步进电机的转动轴在加电脉冲时以合适的时序不连续的转动。电机轴转动方向与脉冲时序有关。转动速度与输入脉冲间的时间有关,转动的持续时间直接与所加脉冲数有关。
因此,步进电机允许电对机转动轴距离、方向和向量的简单开环控制。若希望的话,也可以用一个编码器加一个闭环反馈,但通常所用的步进电机没有任何反馈环路。
图1驱动单极性步进电机
图2用UCN5804IC控制一个单极性电机
步进电机优缺点
与一般电机相比,步进电机具有如下优点:
用数字输入脉冲和开环模式可以非常精确地控制电机转动轴位置。控制形式不需要昂贵地传感器和控制电路。跟踪所加输入脉冲数可知其位置。
步进电机工作在非常低速是可能地。
步进电机是非常可靠地,这是因为无电刷,这种电机具有很长地工作寿命。
改变所加脉冲地频率,可以容易地控制步进电机速度。
只有绕组被激活,电机在间歇时具有全转矩。
良好地起动和停止响应
但步时电机也有缺点:
成本通常高于一般电机成本。
不容易工作在非常高地速度。
步进电机通常适用于低转矩应用。
表11相全步驱动
控制单极性步进电机
基本上有三类步进电机:可变磁阻,永磁和混合电机。本文描述用PIC微控制单极性步进电机的速度、方向和步大小。本电路的独特性是可以工作在远程模式、编程模式或独立应用模式。任远程模式,从RS-232串行口接收转动命令,这些命令存储在微控制器的非易失性EEPROM中;在独立应用模式,电机跟随EEPROM中的命令在PIC微控制器控制下转动,而不用任何外部脉冲。
单极性电机容易控制,可以用1/n计数器电路产生所需的步进时序。每个绕组可以用一个推动晶体管。最通用的驱动方法之一是1相全步,也称之为“波驱动”,在这种方法中每次激励电机绕组(见表1)。对每个线圈绕组可以用一个MOSFET功率晶体管驱动电机(见图1)。
单极性电机也可以用集成电路(如UCN5804B)控制。UCN5804B工作电压6V~30V,它包含用于时序逻辑的CMOS逻辑部分和直接驱动单极性步进电机的高电压输出部分。如图2所示,电机直按连接到此芯片。脉冲加到此芯片的STEP输入,而芯片产生合适的信号时序来驱动电机。芯片的DIR逻辑输入控制电机方向。
尽管像UCN5804这样的集成电路能简化步进电机控制过程,但有的应用希望产生脉冲来控制独立应用模式中的步进电机。例如,希望顺时针转动电机500步,然后,3秒延迟,逆时钟转动电机2000步,然后,2秒延迟,电机顺时钟转动60步,并停止。实现这样操作的一种方法是用微控制器和UCN5804芯片,可以编程微控制器来产生UCN5804所需的脉冲。
本文所采用的方法是基于采用低成本PIC16F84微控制器和ULN2003A驱动器来控制单极性步进电机的转动。图3示出控制器的框图。
图3控制器框图
图4控制器电路图
控制器工作在3个模式:远程运行模式、编程模式和独立应用运行模式。
在远程运行模式,每一个脉冲到STEP输入,电机转动1步。转动方向由DIR输入控制(类似于UCN5804B控制器的工作)。在编程模式,用RS232接口把所需的转动命令送到微控制器。本电路中用PC把所需的转动命令送到微控制器。所接收的命令存储在微控制器的非易失性EEPROM中。当微控制器处于独立应用运行模式时,电机由存储在微控制器EEPROM中的命令步控制。
控制器电路示于图4。工作在4MHz的PIC16F84微控制器是控制器的心脏。配置口RAO~RA3为输出,用这些口驱动ULN2003A输入。ULN2003A的输出直接驱动步进电机。微控制器的RB2输入配置为串行RS232输入,而晶体管—二极管电路用于输换RS232信号电平到+5V。1个两路DIL开关连接RB3和RB4输入。靠开关选择工作模式(见表2)。S1选择编程或运行模式。在运行模式时,S2选择来自内部EEPROM或外部脉冲的操作。RB0和RB1是STEP和DIRECTION输入。当控制至处于远程运行模式时,每加一个脉冲,电机转动一步。
一个小的LED连接到PORTB的bit7。当控制器处于编程模式和从串行口接收有效命令时,LED每秒闪光一次。此电路设计用于具有高达500mA(在+12V)电流的步进电机。
表2选择模式
软件
软件分两部分:微控制软件(运行在PIC微控制器)和PC软件(用于经PC串行口下载命令到微控制器)。
用Hi-TechPICCLiteCcompiler开发微控制器软件。此编译程序是由Hi-Tech公司开发的,可以用于编程PIC16F84和PIC16F877芯片。用高级语言开发微控制器系统具有容易开发和测试代码以及容易维护代码的优点。程序清单见程序列表。
命令用字符‘S’开始,然后发送步进角和步间延迟。其次,送5个字节来指定所需的转动。前两个字节是转数。然后规定转动方向,其后是命令间所需的延迟。送一个“#”字符来指明数据结束。LED每秒闪烁一次表明已按收的数据无错误。
图5一个典型的运行实例
用VisualBasic开发PC软件。程序用MicrosoftMSCommActiveX子序列送出串行数据。程序由单元格式组成(见图5),每个单元用于输入所需的电机命令。以这种形式,用户输入电机步进角、每个步之间所需的延迟和所用串行口数。然后输入所需的电机控制步(转数)、方向(0或1)和命令之后的延迟(ms)。
9步用于用户输入电机控制命令,但修改程序可以增加此步骤数。
结语
本文给出的控制器可以很容易地通过串行线接收控制命令,并存储在微控制器的EEPROM中。用PIC16F84微控制器,在EEPROM存储器中,可存储多达12个控制命令。较大的PIC芯片,如PIC16F877,在EEPROM中,可存储多达50个控制命令