您现在正在浏览:首页 > 职教文章 > 职教论文 > 基于VHDL语言设计的步进电机控制器

基于VHDL语言设计的步进电机控制器

日期: 2010/4/11 浏览: 349 来源: 学海网收集整理 作者: 佚名

基于VHDL语言设计的步进电机控制器

汪俊伟,周鹏飞,石锦俊,徐文武

摘要:提出了一种利用VHDL语言设计步进电机控制器的思路。该控制器能实现速度控制、工作方式选择等多种功能。详细讨论了该控制器的结构、各模块的功能及仿真分析结果。结果表明:该系统具有修改方便、使用灵活、可靠性高、可移植性强等优点。

关键字:VHDL;步进电机;脉冲分配器;仿真。

Abstract: A realization scheme of control circuit based on VHDL for stepper motor is presented.The control can realize functions of speed control and work model selection etc.Then the framework, the function of each module and design optimization,synthesis and simulation about the program are discussed in detail.The system has the features of easy modification,good flexibility,high reliability and powerful transplantable capability.

Key words:VHDL;stepper motor;pulse distributor;simulation.

引言

随着电子技术的发展,现场可编程门阵列FPGA和复杂可编程逻辑器件CPLD的出现,使得电子系统的设计者利用与器件相应的电子设计软件,在实验室里就可以设计自己的专用集成电路ASIC器件。其中电子设计自动化(EDA)的关键技术之一就是可以用硬件描述语言(HDL)来描述硬件电路。VHDL是用来描述从抽象到具体级别硬件的工业标准语言,它是由美国国防部在2O世纪8O年代开发的HDL,现在已成为IEEE承认的标准硬件描述语言。VHDL支持硬件的设计、验证、综合和测试,以及硬件设计数据的交换、维护、修改和硬件的实现,具有描述能力强、生命周期长、支持大规模设计的分解和已有设计的再利用等优点。利用VHDL这些优点和先进的EDA工具,根据具体的实际要求,本文设计了一个步进电机控制器电路。步进电机是一种将电脉冲转化为角位移的执行机构。也就是当步进驱动器接收到一个脉冲信号时,它就驱动步进电机按设定的方向转动一个固定的角度,它的旋转是以固定的角度一步一步运行的。现场可编程门阵列(FPGA)是对步进电机实现一体化控制的理想选择。本文主要介绍了利用VHDL语言设计的三相反应式步进电机驱动电路的设计思路。现场可编程门阵列(FPGA)将接口电路送来的一系列信号转换成步进电机的驱动脉冲,经过功率放大后送给步进电机,以此控制步进电机的转动方向和速度,其电路原理图如图1所示。

步进电机控制器原理

步进电机控制器主要由三个部分组成,其原理图如图2所示。

频率发生器

步进电动机的转动是由脉冲控制的,通过控制脉冲频率即可控制电机转动的速度和加速度,从而达到调速的目的。此处设置了四档调速。CLK是外部输入频率,P2和P1是分频模式选择。P2PI=00:表示外部输入脉冲频率(不分频);P2P1=01:表示对外部输入频率4分频;P2PI=10:表示对外部输入频率8分频;P2PI=I1:表示对外部输入频率16分频。处理过的脉冲信号由CK端送入脉冲分配器。

方向锁存器

步进电机有启动和停止两种状态,启动后又分为正转、反转。故电机的转动控制上设置了三个信号输入端:令z为正转启动脉冲信号、F为反转脉冲信号、T为停止的脉冲信号。通过方向锁存器将输入的脉冲信号转换为电平信号,并且保证信号的唯一一性。根据三相线圈轮流通电方式的不同,三相反应式步进电动机有三相单三拍、三相双三拍、三相六拍等三种通电方式。实际应用中三相单三拍运行方式很少采用,因为这种运行方式每次只有一相绕组通电,容易使转子在平衡位置附近产生摆动,因此稳定性不好,所以此控制器设置了后两种通电方式,M为供电方式的选择信号:M=I为三相六拍通电方式;M=0为三相双三拍通电方式。

脉冲分配器

三相六拍的通电方式为一个循环周期通电相序换接六次,有六种通电状态,故称三相六拍运行式。通电顺序为:A—AB—B—BC—C—CA—A。如果每次都是两相控制绕组同时通电,即按AB—BC—CA—AB?? 的顺序通电,称为三相双三拍。根据M的状态,控制脉冲的输出情况,脉冲分配器设计主要思路是:设置一个6进制的计数器。三相六拍正转为1—6循环,反转为6—1循环;三相双三拍正转为2—4—6循环,反转为6—4—2循环,如图3所示 。

根据需要先用VHDL语言调试和仿真出频率发生器、方向锁存器、脉冲分配器三个部分,按照图4完成顶层文件。完成整个步进电机控制器的设计。

程序如下:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity mc is

port(inclk:in std_logic;

smzfd:in std_logic_vector(3 downto 0);

outputcba:out std_logic_vector(2 downto 0));

end mc;

architecture arch_mc of mc is

signal sa: std_logic_vector(2 downto 0);

begin

process(inclk,smzfd) is

begin

if (rising_edge(inclk)) then

if(smzfd="1100")then

if(sa=6) then

sa<="001";

else

sa<=sa+1;

end if;

elsif(smzfd="1010")then

if(sa=1)then

sa<="110";

else

sa<=sa-1;

end if;

elsif(smzfd="1000")then

sa<="000";

elsif(smzfd="0100")then

if(sa=6)then

sa<="010";

else

sa<=sa+2;

end if;

elsif(smzfd="0010")then

if(sa=2)then

sa<="110";

else

sa<=sa-2;

end if;

elsif(smzfd="0000")then

sa<="000";

end if;

end if;

end process;

with sa select

outputcba<="001"when"001",

"011"when"010",

"010"when"011",

"110"when"100",

"100"when"101",

"101"when"110",

"000"when others;

end arch_mc;

利用QuartusII软件对步进电机驱动的VHDL语言设计的程序进行了编译和仿真,仿真结果如图5和图6所示。其中,图5为三相双三拍正转仿真波形;图6为三相六拍正转仿真波形。根据仿真波形的分析,可以看到基本达到了设计初期的要求,能完成步进电机两种工作模式的选择,实现步进电机正转、反转、停止的要求,能够实现步进电机频率的控制。可见利用EDA软件可以缩短设计周期,是一种快捷方便的电路设计方法。

图5 三相六拍正转仿真波形

图6 三相六拍反转仿真波形

图7 三相双三拍正转仿真波形

图8 三相双三拍反转仿真波形

图9 电机停止转动

图10 电机停止转动

结论

本文介绍了用VHDL语言设计的一种步进电机控制器,根据仿真波形的分析,基本达到了设计初期的要求,能完成步进电机两种工作模式的选择,实现步进电机正转、反转、停止的要求,可以实现步进电机频率的控制。可见利用EDA软件可以缩短设计周期,是一种快捷方便的电路设计方法。

参考文献:

史小波,程梦璋.集成电路设计VHDL教程【M】.北京:清华大学出版社,2005

余少辉.基于FPGA的数字输入式步进电机控制系统设计【J】.现代电子技术,2004

【3】 王春侠.基于CPLD的步进电动机控制【J】.陕西工学院学报,2003


基于VHDL语言设计的步进电机控制器.doc

返回顶部