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

时间:2022-09-19 12:31:13

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

摘要:随着微电子工艺的发展,使在一个芯片中可以集成很大的系统成为可能。另外较大门数的可编程逻辑器件的出现为实现这种系统提供了很方便和经济的途径。该文介绍步进电机的介绍,根据步进电机的工作特点,利用VHDL语言对控制器的设计。实现了两轴步进电机常速控制模式,其参数调整方法简单,为在一个或几个芯片上构造更大数控系统做准备。

关键词:步进电机控制;可编程逻辑门阵列;硬件描述语言

中图分类号:TM301 文献标识码:A 文章编号:1009-3044(2010)04-0978-03

FPGA-based Stepper Motor Controller Design

WEN Kai, MA Yue, HAO Bin

(Tianjin Polytechnic University, Tianjin 300160, China)

Abstract: With the development of microelectronics technology, so that a chip can be integrated in the large system is possible. In addition a larger gate count of the programmable logic device appeared to achieve such a system provides a very convenient and economical way. This article describes the introduction of stepper motors, stepper motor according to work characteristics, using VHDL language on the controller design. Achieved a two-axis stepper motor constant speed control mode, the parameter adjustment method is simple, in one or several chips on the CNC system to prepare for a larger structure.

Key words: stepper motor control; programmable logic gate array; hardware description language

步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件,每改变一次通电状态,步进电机的转子就转动一步,在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角,目前大多数步进电机控制器需要主控制器发送时钟信号,并且要至少一个I/O口来辅助控制和监控步进电机的运行情况。本文介绍步进电机及通过FPGA实现的步进电机控制器,实现对步进电机的控制。

1 步进电机结构

1.1 结构

电机转子分布着很多规律排布的小齿,定子齿有三个励磁绕阻,其几何轴线依次分别与转子齿轴线错开。0、1/3て、2/3て,(相邻两转子齿轴线间的距离为齿距以て表示),即A与齿1相对齐,B与齿2向右错开1/3て,C与齿3向右错开2/3て,A'与齿5相对齐,(A'就是A,齿5就是齿1)图1是定转子的展开图。

1.2 旋转

如A相通电,B,C相不通电时,由于磁场作用,齿1与A对齐,(转子不受任何力以下均同)。

如B相通电,A,C相不通电时,齿2应与B对齐,此时转子向右移过1/3て,此时齿3与C偏移为1/3て,齿4与A偏移(て-1/3て)=2/3て。

如C相通电,A,B相不通电,齿3应与C对齐,此时转子又向右移过1/3て,此时齿4与A偏移为1/3て对齐。

如A相通电,B,C相不通电,齿4与A对齐,转子又向右移过1/3て

这样经过A、B、C、A分别通电状态,齿4(即齿1前一齿)移到A相,电机转子向右转过一个齿距,如果不断地按A,B,C,A……通电,电机就每步(每脉冲)1/3て,向右旋转。如按A,C,B,A……通电,电机就反转。

由此可见:电机的位置和速度由导电次数(脉冲数)和频率成一一对应关系。而方向由导电顺序决定。

不过,出于对功能、用途的考虑。往往采用A-AB-B-BC-C-CA-A这种导电状态,这样将原来每步1/3て改变为1/6て。甚至于通过二相电流不同的组合,使其1/3て变为1/12て,1/24て,这就是电机细分驱动的基本理论依据。

控制器的设计:

控制步进电机方框图如图2。

1)脉冲信号的产生。

脉冲信号一般由FPGA时钟信号产生,一般脉冲信号的占空比为0.3-0.4左右,电机转速越高,占空比则越大。

2)信号分配

电机以二、四相电机为主,二相电机工作方式有二相四拍和二相八拍二种,具体分配如下:二相四拍为,步距角为1.8度;二相八拍为 ,步距角为0.9度。四相电机工作方式也有二种,四相四拍为AB-BC-CD-DA-AB,步距角为1.8度;四相八拍为AB-B-BC-C-CD-D-AB,步距角为0.9度。

2 分频器的设计

分频器是该控制器实现的关键,在这里作为信号的分配模块。系统时钟CLK被分频系数寄存器中值分频后,输出CLKOUT作为相位输出状态机的时钟,每个CLKOUT到来时,步进电机相位产生一次转换,步进电机运行一个步距角。以两项电机为例,其控制程序如下:

library ieee;

use ieee.std_logic_1164.all;

entity steprun is

port(

director:in std_logic;

stop: in std_logic;

nreset,clk:in std_logic;

a,na,b,nb:out std_logic

);

end;

architecture only of steprun is

signal temp:std_logic_vector(0 to 3);

type states is (s0,s1,s2,s3);

signal current_state,next_state:states:=s0;

variablen:interger:=0;

variableN:interger:=6;

begin

a

b

an

bn

process(nreset,clk)

begin

if(nreset='0')then

current_state

elsif(clk='1')and(ckl'event) then

n=n+1;

current_state

if (N=n)

nreset=0;

end if;

end if;

end process;process(current_state)

begin

case(current_state)is

when s0=>

temp

next_state

when s1=>

temp

next_state

when s2=>

temp

next_state

when s3=>

temp

next_state

when others=>

temp('0','0','0','0');

end case;

end process;

end only;

3 功能仿真

使用Altera公司的FPGA开发工具进行功能仿真,结果如图3所示。经分析基本实现了设计所要满足的要求。

4 结束语

本文通过对步进电机的工作原理,设计步进电机控制器。整个控制器为分频数和指令脉冲的分频数即可,使用方法简单,输出的脉冲频率可以动态改变。并且通过对不进电机的介绍,方便读者对步进电机有个相对全面的了解,为以后的步进电机的控制打下基础。

参考文献:

[1] 刘贵杰,巩亚东,王宛山.基于交流异步电机驱动磨床进给位移的自学习控制[J].东北大学学报,2001,22(3):268-270.

[2] 黄智伟.FPGA系统的设计与实践[M].北京:电子工业出版社,2004.

[3] 刘贵杰,巩亚东,王宛山.基于交流异步电机驱动磨床进给位移的自学习控制[J].东北大学学报,2001,22(3):268-270.

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文

上一篇:基于IPv6的交通监控系统的研究分析 下一篇:基于单片机控制的门禁系统的设计与实现