步进式电机 - 范文中心

步进式电机

05/28

《FPGA 原理及应用课设》任务书

学生姓名: 专业班级:

指导教师: 陈适 工作单位: 信息工程学院 题目: 步进电机定位控制系统设计 初始条件:

1. 具备电子电路的基础知识及查阅资料和手册的能力; 2. 熟悉ISE 仿真软件的操作与运用; 3. 掌握步进电机的工作原理。

要求完成的主要任务:

1. 设计一个基于FPGA 的4 相步进电机定位控制系统,包括步进电机方向设定 电路模块、步进电机步进移动与定位控制模块和编码输出模块。 2. 撰写符合学校要求的课程设计说明书。

时间安排:

1、2014年6月3日,布置课设具体实施计划与课程设计报告格式的要求说 明。

2、2014年6月4日至2014 年6月16日,设计说明书撰写。 3、2014年6月18日,上交课程设计成果及报告,同时进行答辩。

指导教师签名: 年 月 日 系主任(或责任教师)签名: 年 月 日

目 录

摘 要............................................................... I ABSTRACT........................................................... II 1 绪论.......................................................... - 3 -

1.1选题背景 ......................................................... - 3 -

1.2 国内外研究现状 . .................................................. - 3 - 1.3 发展趋势 . ........................................................ - 4 -

2 系统组成及原理描述............................................ - 5 -

2.1 4相步进电机的8个方向和电流以及电压信号的关系 ................... - 6 - 2.2 FPGA模块图和输入、输出信号说明 .................................. - 7 -

3 模块设计...................................................... - 8 -

3.1 各模块间整体共享的电路内部传递信号 . .............................. - 8 -

3.2电机方向设定电路模块 ............................................. - 8 - 3.3 步进电机步进移动与定位控制模块 . .................................. - 9 - 3.4 编码输出模块 . ....................................... 错误!未定义书签。

4 程序设计与仿真............................................... - 11 -

4.1根据步进电机定位控制器的系统组成框图可以定义输入和输出端口: .... - 11 - 4.2中间变量初始化定义如下: ........................................ - 11 - 4.3 步进电机定位控制器顶层电路的VHDL 程序代码: ................... - 11 - 4.4 仿真结果 . ....................................................... - 14 -

5 总结......................................................... - 17 - 参考文献....................................................... - 18 - 附录........................................................... - 19 -

摘 要

步进电机具有响应速度快、定位精度高、无积累误差、驱动电路及控制方法

简单等优点;FPGA 芯片具有控制精度高而且稳定可靠高,解决了传统定制电路的不足,克服了原有可编程器件门路数有限的缺点,因而步进电机和FPGA 芯片在工业控制领域获得了广泛的应用。

本文详细叙述了基于FPGA 芯片来实现驱动步进电机的定位控制系统设计的过程,设计中心思想是以FPGA 芯片来实现驱动步进电机的脉冲分配,加上必要的数字模拟辅助电路,形成一个四相八步的步进电机定位控制系统。在软件平台Quarter п 7.2上通过硬件描述VHDL 语言来对步进电机的功能进行建模和电路描述,并建立好它的设计顶文件,完成逻辑编译,逻辑综合,和实时仿真测试,得到准确的仿真波形图。使用Cyclone п系列的可编程逻辑控制器FPGA 作为硬件平台,把软件平台上适配好的文件通过编程器向FPGA 下载,进行最后的硬件测试,查找错误,改进设计。 关键字: 步进电机、FPGA 、定位控制

ABSTRACT

Step motor has the response speed, high positioning accuracy, no accumulated

error, drive circuit and control method is simple, etc;The FPGA chip with high control precision and high stable and reliable, to solve the deficiency of the traditional custom circuit, overcome the original programmable device access number limited shortcomings, thus stepping motor and the FPGA chip obtained widespread application in the field of industrial control.

Is described in this paper, based on the FPGA chip to realize the drive stepper motor position control system design process, the design idea is based on the FPGA chip to realize the drive stepper motor pulse distribution, combined with necessary auxiliary circuit digital simulation, forming a four phase eight step stepper motor positioning control system.In software platform Quarter п 7.2 through hardware description on the VHDL language to modeling the function of the step motor and the circuit description, and establish good its design file, compile logic, logic synthesis, and real-time simulation test, the exact simulation waveform figure.Using Cyclone п series FPGA programmable logic controller as a hardware platform, software platform on the adaptation to good download files through a programmer to FPGA, the hardware test, find the error and improve the design. Key words: step motor, the FPGA, positioning control

1 绪论

1.1选题背景

本设计的主题是步进电机定位控制系统,设计任务和要求如下: 设计一个基于FPGA 的4相步进电机定位控制系统。

步进电机已成为出直流电机和交流电机以外的第三类电动机。传统电动机作为机电能量转换装置,在人类的生活和生产进入电气化过程中起着关键的作用。可是在人类社会进入电气化时代的今天,传统电动机已不能满足工业自动化和办公自动化等各种运动控制系统的要求。发展了一系列新的具有控制功能的电动机系统,其中较有自己特点,且应用十分广泛的就是步进电机。

步进电机的发展与计算机工业密切相关。自从步进电机在计算机外围设备上取代小型直流电动机以后,使其设备的性能提高,很快的促进了步进电机的发展。另一方面,微型计算机和数字控制技术的发展,又将作为数控系统执行部件的步进电机推广应用到其他领域,如电加工机床、小功率机械加工机床、测量仪器、光学和医疗仪器以及包装机械等 。

步进电机是一种使用非常广泛且易于精确控制的执行元件,随着微电子技术的发展,其控制方法多种多样。基于FPGA 技术对步进电机的转速进行精确控制,满足了现代工业对步进电机的高要求。

1.2 国内外研究现状

步进电机最早是在1920年由英国人所开发。1950年后期晶体管的发明也逐渐应用在步进电机上,这对于数字化的控制变得更为容易。以后经过不断改良,使得今日步进电机已广泛运用在需要高定位精度、高分解性能、高响应性、信赖性等灵活控制性高的机械系统中。在生产过程中要求自动化、省人力、效率高的机器中,我们很容易发现步进电机的踪迹,尤其以重视速度、位置控制、需要精确操作各项指令动作的灵活控制性场合步进电机用得最多。步进电机作为执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。随着微

电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。

步进电机细分驱动技术是70年代中期发展起来的一种可以显著改善步进电机综合使用性能的驱动控制技术。1975年美国学者T.R. Fredriksen首次在美国增量运动控制系统及器件年会上提出了步进电机步距角细分的控制方法。 在其后的二十多年里,步进电机细分驱动技术得到了很大的发展,从本质上讲是对步进电机的励磁绕组中电流的控制,使步进电机内部的合成磁场为均匀的圆形旋转磁场,从而实现步进电机步距角的细分。 要想实现步距角均匀细分控制,必须合理控制电机绕组中的电流,使步进电机内部合成磁场的幅值恒定,每个进给脉冲所引起的合成磁场的角度变化要均匀。

1.3 发展趋势

传统电动机作为机电能量转换装置,在人类的生产和生活进入电气化过程中起着关键的作用。步进电机作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,适合应用于各种开环控制。今日,步进电机已广泛的运用在需要高定位精度、高分解能、高响应性等灵活控制性高的机械系统中了。

FPGA (Field -Programmable Gate Array),即现场可编程门阵列,它是在PAL 、GAL 、CPLD 等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC )领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。EDA 技术代表了当今电子设计技术的最新发展方向,它彻底改变了数字系统的设计方法和实现手段。随着硬件描述语言VHDL 的普及以及CPLD~FPGA器件的广泛应用,它必将在硬件设计领域发挥更为重要的作用。基于FPGA 技术对步进电机的转速进行精确控制,具有可移植性能优越、可靠性强等优点,具有广泛的应用前景。

2 系统组成及原理描述

步进电机定位控制器的系统组成如图2-1所示:

图2-1系统组成

步进电机是利用数字信号控制的电机装置,步进电机每次接收到一组脉冲数字信号,便旋转一个角度,称为步进角。不同规格的步进电机的步进角不同,与电机内部的线圈数量有关。线圈中的供应电流决定线圈所产生的磁场方向。

图2-2 四相步进电机线圈磁场方向图

4相步进电机有两组线圈 A和 B,如图2-2所示,A 、B 两组垂直摆放线圈的电流方向的排列组合,最多可以产生8种磁场方向,分别是0º、45º、90º、135º、180º、225º、270º、315º。

2.1 4相步进电机的8个方向和电流以及电压信号的关系

表2-1电流以及电压信号的关系

由表2-1可知,假设电动机转子刻度在0º的位置,想让其转180º,可以使端口信号依次按0001→0011→0010→0110→0100变化。但是否有更快的方法,是否一定要经过4个信号过程呢?其实有更快更省电的方式让电动机从0º到达180º的位置。这就是所谓激磁方式的不同。四相电动机可以分为以下3种激磁方式:

(1)1-相激磁法:当目标角度是90º的整数倍时,采用这种方法。例如要从0º转到270º,只要让端口信号的顺序为0000,0001,0010,0100,1000即可。 (2)2-相激磁法:当目标角度是45º,135º,225º,315º时,可采用这种方法。例如要从0º转到225º,只要让端口信号的顺序为0000,0011,0110,1100即可。 (3)1-2相混合激磁法:即完全按照表2-1所列的信号顺序。

3种不同的激磁法所用到的端口信号整理列于表6-9。表6-9所示的激磁顺序是逆时针方向的,若要让电动机顺时针旋转,只要提供给转子的激磁信号序列相反即可。对于其他具有更多相位的步进电机,如基于PWM 原理细分步进电机,其控制的原理是相同的,只要找出所需的端口信号顺序,就可以自由进行实现无级控制。

表2-2不同的激磁法时四相步进电机端口输入信号表(逆时针方向)

2.2 FPGA模块图和输入、输出信号说明

reset:系统内部复位信号, ’1’时有效;

dir :步进电机正反转的方向控制开关,0:逆时针,1:顺时针; clk :由FPGA 内部提供的4MHz 的时钟信号; ini :赋初值的使能开关,‘0’时有效;

manner:激磁方式的选择开关(两位), 00:自动检测角度输入, 决定激磁方式01:1-相激磁;10:2-相激磁;11:1-2-相激磁; angle: 步进角的倍数设定输入键;

baba : 将内部计数器的count[3 downto 0]的数值编码输出。

图2-1 系统模块符号图

3 模块设计

系统主要由步进电机方向设定电路模块、步进电机步进移动与定位控制模块

和编码输出模块构成。

前两个模块完成电机旋转方向设定,激磁方式设定和定位角度的换算等工作,后一 个模块用于对换算后的角度量编码输出。

3.1 各模块间整体共享的电路内部传递信号

count :内部电路计数累加器,用来产生输出所需对应的状态; cntinc :设定累加器所需的累加/减计数值; sntini :设定累加器所需的计数初值; angledncount :设定步进角所需处理的次数; Angledncntdec :设定步进角所需累减计数值;

3.2电机方向设定电路模块

该模块设定了步进电机的旋转方向以及电机在任一方向上所需的初值与累

加/减值。

该模块VHDL 程序见附录步进电机定位控制系统STEP_MOTOR.VHD中STEP_MOTOR_DIRECTION:BLOCK 。

模块输出的各个初值以及累加/减值的设定真值表如下表:

dir为0时,步进电机工作于逆时针旋转模式,累加值为正数。 manner 选择激磁方式 00、01、10、11分别对应默认激磁方式、1-相激磁方式、2-相激磁方式和1-2-相激磁方式。

表3-2各个初值以及累加/减值的设定真值表2(dir=1)

dir 为1时,步进电机工作于顺时针旋转模式,累加值为负数。 manner 选择激磁方式 00、01、10、11分别对应默认激磁方式、1-相激磁方式、2-相激磁方式和1-2-相激磁方式。

3.3 步进电机步进移动与定位控制模块

该模块的主要功能是利用赋初值ini 将数值传到该模块中并配合输入的clk 作为同步控制信号,进行步进电机的步进移动与定位控制。

该模块VHDL 程序见附录步进电机定位控制系统STEP_MOTOR.VHD文件STEP ­_MOVING。

步进电机定位功能通过一个减法器实现:在每个clk 脉冲上升缘,设定步进角倍数angledncount 减去不同激磁方式下设定的累减记数值angledncntdec ,判断差值小于设定的累减记数时,步进电机旋转到预定角度停止输出驱动端口信号,实现步进电机的定位功能。 驱动端口信号利用累加器实现。

假设resel=1,则将count 和angleDnCount 设置成0。

假设reset=O,clk 为上升沿触发且ini=0 时,就将设定的初值(cntini 与angle) 赋给count 和angleDn —Count 两个信号端,也就(count

假设reset=O,clk 为上升沿触发且ini=1 时,则将count 与cntini 相 加,再将结果存为count 。然后判断angleDnCount 的值是否大于angleDnCntDec 。如果大于,则用angleDnCount 减angleDnCntDec ,将结果存为angleDnCount ;否则,将angleDnCount 设为0(因为此时angleDnCount 的值小于angleDnCntDec ,

表示电机已经到达设定位置,故不需要继续转动了) 。

BaBA[3..O]是将count 与angleDnCount 产生的数值经过编码后输出到四相步进电机的端口的。

3.4 编码输出模块

该模块的功能是将count 与angledncount 产生的数值经过编码,并通过baba[3downto0]输出到步进电机。四相步进电机端口信号由计数器编码而来,详细的编码方式列于表3-3

4 程序设计与仿真

4.1根据步进电机定位控制器的系统组成框图可以定义输入和输出端口:

entity step_motor is

port (reset:in STD_LOGIC; --系统复位信号 dir: in STD_LOGIC; --方向控制信号 clk: in STD_LOGIC; --系统时钟信号 ini: in STD_LOGIC; --初始化使能信号

manner: in STD_LOGIC_VECTOR (1 downto 0); --激磁方式的选择开关 angle: in INTEGER range 255 downto 0; --步进角的倍数设定输入 baBA: out STD_LOGIC_VECTOR (3 downto 0)); --步进电机状态输出 end step_motor;

4.2中间变量初始化定义如下:

architecture stepmotor_arch of step_motor is signal count: INTEGER range 0 to 7; --计数器

signal cntInc: INTEGER range -2 to 2; --设定累加器所需的累(加/减)计 数值

signal cc : integer range 0 to 3;

signal cntIni: INTEGER range -1 to 0; --设定累加器所需的计数初值 signal angleDnCount: INTEGER range 255 downto 0; --计算已经转过的步 进角

signal angleDnCntDec: INTEGER range 2 downto 1;--设定步进角所需累减计数值

4.3 步进电机定位控制器顶层电路的VHDL 程序代码:

在下面的程序中只考虑逆时针操作模式即(dir=0)。 (1)步进电机方向设定电路模块 begin

step motor direction:block- -步进电机方向设定电路模块

begin

process(dir,manner,angle) begin

- -if ini=′1′then

cc

when 1= > - -一相激励 count - -二相激励 count - -一-二相激励 count - -manner="00"autodetect if(angle rem 2)=1 then- -二相激励 count

end process;

(2)步进电机步进移动与定位控制模块 step motor moving:block

- -步进电机步进移动与定位控制模块

counting reset:process(reset,ini,angle,clk) begin

if reset=′1′then

count

count

countangleDnCntDec then

angleDnCount

angleDnCount

end process;

(3)编码输出模块

table mapping:block- -编码输出模块 baBA =7; end stepmotor arch;

4.4 仿真结果

程序运行后的状态如下图所示,表明程序运行成功,无错误,可进一步进行系统仿真。

图4-1程序运行状态

源程序中,逆时针操作模式(dir=0),则累加值为正数,顺时针操作模式

(dir=1),则累加值为负数。不失一般性,下面给出逆时针操作模式的计数规则和仿真输出(ini=0赋初值,ini=1时开始记数):

(1)如果manner=01电路使用1-相激磁法,则count 的初始值为000(cntini

图4-2方向设定电路模块仿真输出(1-相激磁法)

(2)如果manner=10电路使用2-相激磁法,则count 的初始值为111(cntini

图4-3方向设定电路模块仿真输出(2-相激磁法)

(3)如果manner=00,进行自动判断,若angle 步进角为偶数(角度设定可以被90整除),使用1-相激磁法,count 的初始值000(cntini

图4-4 方向设定电路模块仿真输出(自动判断)

系统仿真整体结果如下图所示,

图4-5系统仿真整体结果

系统仿真局部结果如下图所示,

图4-6 系统仿真局部结果

分析angle 连线信号的波形可以发现,angle 的计数值总是向下递减2,故angledncntdec 的值为2。当angledncount 的值为1时,表示angledncount 的值已经小于angledncntdec ,此时angle 被设为0,即电动机已到达设定位置,故不需要再继续转动了(因为无论count 的数值是多少,输出baba 的状态永远维持0000)。

编码输出模块, 该模块的主要功能是将count 与angledncount 产生的数值经过编码,并通过baba[3..0]输出到步进电机,四相步进电机端口信号由计数器编码而来,详细的编码方式列于表4-1。

5 总结

步进电机作为一种数字伺服执行元件, 具有结构简单, 运行可靠, 控制方便, 控制性能好等优点, 但现实中步进电机的控制比较复杂。这里设计的步进电机控制器方法简单, 支持四相步进电机的三种励磁方式、正反转运行, 这种基于FPGA 的设计方法, 可以加速同类型产品的开发速度, 节约投资。并且可以根据步进电机的不同, 改变分层模块的VHDL 程序的参数, 实现不同型号步进电机的控制, 在实际应用中有利于步进电机的广泛应用。

在本次课程设计中,我们遇到了许多问题,而正是在解决一个个问题的过程中,我们对VHDL 语言的理解和认识也不断加深。这个课程设计也让我们懂得,理论知识真的很重要,而实践能够加深对理论知识的理解,将理论和实践结合起来,才能设计出优秀的作品。

参考文献

[1]汪厚新. 采用FPGA 的步进电机控制系统研究. 西南交通大学硕士论文,2006(6):1~10

[2] 王宝忠等. 基于FPGA 的新型步进电机驱动系统[J].微计算机息,2009(25):212~214

[3]黄智伟, 王彦.FPGA 系统设计与实践[M].北京:电子工业出版社,2007(6):11~12.

[4]王紫婷. 基于FPGA 控制的步进电机驱动设计[J].电子测量技术,2008(6):184~187

附录

步进电机定位控制系统VHDL 程序

library IEEE;

use IEEE.std_logic_1164.all;

use IEEE.std_logic_arith.all;

use IEEE.std_logic_unsigned.all;

entity step_motor is

port (reset:in STD_LOGIC; --系统复位信号

dir: in STD_LOGIC; --方向控制信号

clk: in STD_LOGIC; --系统时钟信号

ini: in STD_LOGIC; --初始化使能信号

manner: in STD_LOGIC_VECTOR (1 downto 0); --激磁方式的选择开关 angle: in INTEGER range 255 downto 0; --步进角的倍数设定输入

baBA: out STD_LOGIC_VECTOR (3 downto 0)); --步进电机状态输出 end step_motor;

architecture stepmotor_arch of step_motor is

signal count: INTEGER range 0 to 7; --计数器

signal cntInc: INTEGER range -2 to 2; --设定累加器所需的累(加/减)计数值 signal cc : integer range 0 to 3;

signal cntIni: INTEGER range -1 to 0; --设定累加器所需的计数初值

signal angleDnCount: INTEGER range 255 downto 0; --计算已经转过的步进角 signal angleDnCntDec: INTEGER range 2 downto 1;

begin

process(dir, manner, angle)--, ini)

begin

--if ini='1' then

cc

if dir='0' then

case cc is

when 1 => -- 1-

--count

cntIni

cntInc

angleDnCntDec

when 2 => -- 2-

--count

cntIni

cntInc

angleDnCntDec

when 3 => -- 1-2

--count

cntIni

cntInc

angleDnCntDec

when 0 => --manner="00" autodetect if (angle rem 2) =1 then -- 2-

--count

cntIni

cntInc

angleDnCntDec

else -- 1- --count

cntIni

cntInc

angleDnCntDec

end if; --angle

end case; --manner

else -- if dir='1'

case cc is

when 1 => -- 1-

--count

cntIni

cntInc

angleDnCntDec

when 2 => -- 2-

--count

cntIni

cntInc

angleDnCntDec

when 3 => -- 1-2

--count

cntIni

cntInc

angleDnCntDec

when 0 => --manner="00" autodetect if (angle rem 2) = 1 then -- 2-

cntIni

cntInc

angleDnCntDec

else -- 1- cntIni

cntInc

angleDnCntDec

end if; --angle

end case; --manner

end if; -- else dir=0

--end if; -- ini

end process;

counting_reset: process(reset,ini, angle, clk)

begin

if reset='1' then

count

angleDnCount

elsif clk'event and clk='1' then

if ini='0' then

count

angleDnCount

else

count

if angleDnCount > angleDnCntDec then

angleDnCount

angleDnCount

end if;

end if;

end if;

end process;

baBA

"0001" when count=0 else

"0011" when count=1 else

"0010" when count=2 else

"0110" when count=3 else

"0100" when count=4 else

"1100" when count=5 else

"1000" when count=6 else

"1001";-- when count>=7;

end stepmotor_arch;


相关内容

  • 步进电机常见问题解答
    步进电机常见问题解答 发布日期:2007-09-11 信息来源:技术支持部 点击次数:2541 1.什么是步进电机? 步进电机是一种将电脉冲转化为角位移的执行机构.当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角 ...
  • 步进电机的工作原理及其原理图
    步进电机的工作原理及其原理图 一.前言 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件.在非超载的情况下,电机的转速.停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角.这 ...
  • 关于单片机的毕业论文
    分 类 号: 单位代码: 临沂大学 业论文(设计) 基于单片机的步进电机控制系统设计 姓 名 ******* 学 号 ************** 年 级 ***** 专 业 ************* 系 (院) ******* 指导教师 ...
  • 步进电机的单片机控制外文翻译
    附录2:英文资料及其中文翻译 Stepper motor is an electrical pulse will be converted into angular displacement of the implementing agen ...
  • 数控伺服系统简介
    目录 目录................................................................................................................... ...
  • 步进电机功率放大电路的分析
    在实时控制领域,16位单片机由于其运算速度和精度已得到广泛的应用,尤其在工业过程控制及仪表中,16位单片机对于步进电机的精确控制具有特别重要的意义.在对某型船用燃油机的油门控制器的研制过程中,步进电机作为执行元件,如何提高步进电机的运动平稳 ...
  • 长安福特招聘试题
    关键词: 变频器.控制方式.工作原理 近年来,随着电力电子技术.微电子技术及大规模集成电路的发展,生产工艺的改进及功率半导体器件价格的降低,变频调速越来越被工业上所采用.如何选择性能好的变频其应用到工业控制中,是我们专业技术人员共同追求的目 ...
  • 交流伺服电机
    交流伺服电机 交流伺服电机 伺服电机内部的转子是永磁铁,驱动器控制的U/V/W三相电形成电磁场, 转子在此磁场的作用下转动,同时电机自带的编码器反馈信号给驱动器,驱动器根据反馈值与目标值进行比较,调整转子转动的角度.伺服电机的精度决定于编码 ...
  • 步进电机的接法
    其实很简单了! 六根线一般是两组的,这两组没有互通的,所以测试起来就方便多了! 你先用万用表表笔接其中一个线,然后依次点其他的线,凡是不通的都是另外一个组的,剩下的两个是跟你接的这个是一组的,一组里面的三个线,其中一个是中心抽头,你用表笔反 ...
  • 微特电机及系统实验指导书
    目 录 1.永磁式直流测速发电机实验---------------1 2.交流测速发电机实验------------------3 3.旋转编码器实验--------------------6 4.力矩式自整角机实验------------ ...