推广 热搜: 西门子PLC  危化品安全,爆炸  变送器  培训  PLC  电机  变频器  触摸屏  服务机器人  阀门 

基于CPLD的步进电机控制器设计

   日期:2013-03-23     来源:工控之家网    作者:工控之家    浏览:66    评论:0    
摘要:本文设计了一种基于CPLD的步进电机控制系统。它以CPLD作为核心器件,极大地减少了外围元件的使用。具有系统扩展性能好、可靠性高、抗干扰能力强、结构简单、成本低廉,不占用CPU时间、易于高速控制等优点。

关键词:步进电机,控制器,CPLD

1、前言

    步进电机可在宽广的频率范围内通过改变脉冲频率实现调速、快速起停、正反转控制等,由其组成的开环系统简单、可靠,因此它被广泛的运用于数控机床、自动记录仪、工业机器人、无损检测等系统中,步进电机的性能很大程度上取决于其控制系统[1]。基于CPLD的步进电机控制系统[2]具有I/O端口多,可自由编程定义其功能等特点,大大缩减了电路的体积、提高电路的稳定性。先进的开发工具使整个系统的设计调试周期大大缩短。利用VHDL语言进行软件编程,通过EDA设计软件对程序编译、优化、综合、仿真、适配,可以对步进电机控制实现数字输入。系统外围电路设计相对简单、可靠,且鉴于CPLD和VHDL语言自身的特点,系统具有较好的扩展性,在控制系统中也具有一定的通用性。

2、系统设计方案

    如图1所示。首先输入原始时钟信号,经过分频器得到10ms按键判断周期和频率为2048Hz的时钟信号,2048Hz的信号经过外部硬件分频以后输入芯片,作为电机的转速信号。由按键输入四个控制信号,和电机的转速频率信号一起送入电机控制状态机,由状态机根据不同的输入来选择电机输出控制信号。
 


图1 系统设计框图 

3、系统硬件设计

    CPLD采用Altera公司MAX7000系列的EPM7128SLC84-15。驱动电路原理图如图2所示。
 


图2 驱动电路原理图

    CPLD输出控制信号连接至图上的A、B、C、D四个端口。其控制信号经光电隔离后进入ULN2003A。ULN2003A是一片集成了7个达林顿管的芯片。来自光耦合的5V高电平信号经过ULN2003A以后,输出端与地导通。步进电机的正极接上12V的工作电压,负级接在ULN2003A的输出端,当CPLD的I/O口为低电平时,步进电机的负极与地开路,正负极之间没有压差,电机不运转;当CPLD的I/O口为高电平时,步进电机的负极与地导通,正负极之间形成12V压差,电机运转。

    步进电机的转速是由四个线圈的通电速度决定的,也就是由输入脉冲的频率决定的,因此,步进电机的转速选择其实就是输入脉冲的频率选择。本设计采用双四位二进制计数器74LS393N进行硬件分频。频率源为CPLD的2048Hz的频率,将74LS393N内部的T触发器串联,就能将2048Hz的频率分频得到0.5Hz~1024Hz、等比倍率为2的频率,这些频率通过硬件选择器选择输入至CPLD的I/O口就能进行电机转速的控制了。

4、软件设计

    本设计使用Quartus II进行系统的软件设计及仿真。Quartus II是Altera提供的FPGA/CPLD开发集成环境,支持VHDL的硬件描述语言。首先由外部的按键产生RST(复位)、EN(使能)、MODE(模式)、CTRL(转向)四个控制脉冲信号,脉冲信号经过消抖模块进行消抖后送入主控制器。由于EN、MODE、CTRL这三个信号在主控制器内为电平有效,所以在信号送入主控制器之前用T触发器进行电平的锁定。四个控制信号和外部输入的电机转速时钟信号clk_step一同送入主控制器,主控制器经过运算以后得出电机四个相位的通电信号,通电信号经过D触发器消除毛刺以后从芯片I/O口送出。

    主控制器模块有5个输入信号和4个输出信号,其内部主要结构为一个双向的Moore形状态机,其主要代码如下:

    library ieee;
    use ieee.std_logic_1164.all;
    entity zhuangtai is port( en,clk,rst,mode,ctrl: in std_logic; 
        ——EN为使能信号,RST为复位信号,MODE为电机运转模式信号,CTRL为正反转控制信号,这四个信号为电平有效; CLK为电机转速频率。
    a,b,c,d: out std_logic);
        ——A,B,C,D为步进电机四个相位的通电信号。
    end zhuangtai;
    architecture zt1 of zhuangtai is
        type states is(statex,state0,state1,state2,state3,state4,state5,state6,state7);
    ——state0-state7 为步进电机通电的不同状态,statex为不通电状态。
  signal ste:states;
  signal q:std_logic_vector(3 downto 0);
    ——Q为四个相位的输出信号,A,B,C,D分别对应为Q的3,2,1,0位。
步进电机可工作在四拍、八拍通电状态,出于对力矩、平稳、噪音及减少角度等方面考虑。往往采用八拍通电顺序,即A-AB-B-BC-C-CD-DA-A这种导电状态,状态转换顺序如图3所示。


图3 状态转换顺序

    该状态机的工作方式为:当转速时钟clk-step的上升沿到来,且EN为高电平的时候,状态机根据不同的MODE和CTRL的值在statex,state0-state7之间转换,最后根据当前状态ste的值对信号q进行赋值,再将q的高低位分别赋值给电机的线圈通电信号A,B,C,D。

    begin
    moore: process (clk, rst) 
        begin
        if rst=‘1‘ then    ——如果复位信号为高电平,则复位有效
               ste <= statex;
          elsif (clk‘event and clk=‘1‘) then
    if en=‘1‘ then   ——使能为1,既允许工作的时候
                 case ste is
                    when statex =>
    ——判断完当前状态以后,先根据当前正反转的信号进入相应的判断语句,再对当前运转模式信号进行判断,判断完毕以后进入对应的下一个状态。

    if ctrl=‘0‘ then 
                            if mode=‘1‘ then
                               ste <= state0;
    elsif ctrl=‘1‘ then
        if mode=‘1‘ then
                              ste <= state6;    …

5、结论

    系统功能仿真如图4,图5所示。图中各信号定义为:clk:12M时钟信号,clk_step:步进电机转速时钟信号;EN:按键使能信号,RST:按键复位信号,MODE:按键运转模式信号,CTRL:按键运转方向信号。当MODE=1、CTRL=0时,电机工作在正向、八拍导通状态;当MODE=1、CTRL=1时,电机工作在反向、八拍导通状态;也可以控制电机工作在四拍导通方式下,此时MODE=0。A、B、C、D为步进电机四相线圈通电信号。


图4 运转模式功能仿真

图5 正反转控制功能仿真

    本文的创新点:与传统的设计相比,该设计模块综合度高,设计的驱动电路体积小、速度快、功耗低、性能稳定,可以根据不同的场合选择合适的电机控制策略,控制简单方便。凡是使用步进电机的地方都可以使用本驱动器。在实际使用中收到了很好的效果,项目经济效益500多万元。

参考文献:

    [1] 楚荣珍,周向宁等.嵌入式步进电机系统的控制与实现[J].微计算机信息,2007,23-1:53-55。
    [2]马宏伟.高性能步进电机控制系统的研制[M].西安:西安科技大学出版社,2004.
    [3]朱正伟.EDA技术及应用[M].北京:清华大学出版社,2005.25-30

 
打赏
 
更多>同类技术
0相关评论

推荐图文
推荐技术
点击排行
网站首页  |  免责声明  |  联系我们  |  关于我们  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  RSS订阅  |  违规举报  |  鲁ICP备12015736号-1
Powered By DESTOON