搜档网
当前位置:搜档网 › 基于FPGA的步进电机的PWM控制__细分驱动的实现

基于FPGA的步进电机的PWM控制__细分驱动的实现

基于FPGA的步进电机的PWM控制__细分驱动的实现
基于FPGA的步进电机的PWM控制__细分驱动的实现

姓名___ _ _ _

学号201016050136

院系电气信息工程学院

专业电子信息工程

班级___信息10-1______ __

目录

目录 (2)

摘要 (3)

关键词 (3)

Abstract (3)

Keywords (3)

一、引言 (4)

二、步进电机细分驱动的基本原理 (4)

三、Quartus II概述 (5)

四、课题设计 (5)

(一)总体设计 (5)

(二)细分电流的实现 (6)

(三)细分驱动性能的改善 (6)

(四)程序设计 (6)

六、仿真与测试结果分析 (10)

七、结论 (12)

参考文献 (12)

注释 (13)

附录 (14)

心得体会 (20)

摘要

在对步进电机细分驱动原理进行分析研究的基础上,提出一种基于FPGA 控制的步进电机细分驱动器。利用FPGA中的嵌入式EAB构成LPM-ROM,存放步进电机各相细分电流所需的PWM控制波形数据表,并通过FPGA设计的数字比较器,同时产生多路PWM电流波形,实现对步进电机转角进行均匀细分控制。实验证明,所研制的步进电机驱动器不仅体积小,简化了系统的设计,减少了延迟,改善了低频特性,有良好的适应性和自保护能力,提高了驱动器的稳定性和可靠性。

关键词

步进电机;细分驱动;脉宽调制;FPGA

Abstract

In this paper, a divided driving circuit for stepping motor controlled by FPGA is put forward, based on the analysis of the principle of stepping motor divided driving. Using embedded EAB in FPGA to compose LPM-ROM, store PWM control wave form data which stepping motor each phase subdivided driving current is needed.The magnitude comparator designed with FPGA generates several PWM current waveform synchronously, to realize the step angles even division control for three–phase stepping motor.Experimments have proved that the developed subdivision driver is not only smaller,sampler in system, can shorten the delay time,improve the stability in low frequency ,but has good self-adaptation and self-protection ability,and its stability and relibility are higher.

Keywords

stepping motor; divided driving;PWM; FPGA

B 相

A 相 C 相

一、引言

步进电机是把脉冲信号转换成角位移或直线位移的执行元件,是一种输出与输入数字脉冲相对应的增量驱动元件。具有定位精度高、惯性小、无积累误差、启动性能好、易于控制、价格低廉及与计算机接口方便等优点,被广泛应用于数控系统中。但由于脉冲的不连续性又使步进电机的运行存在许多的不足之处,如低频震荡,噪声大,分辨率不高及驱动系统的可靠性差等,严重制约了其应用范围。步进电机的细分控制有效的解决了这一问题,步进电机细分驱动技术可以减小步进电机的步距角,提高电机运行的平稳性,增加控制的灵活性等。但是传统的步进电机驱动大多数采用的是用单片机作为控制芯片,外加分立的数字逻辑电路和模拟电路构成。受单片机工作频率的限制,细分数不是很高,因此控制器的精度较低,控制性能不是很理想。近年来随着可编程逻辑器件的飞速发展,似的可编程逻辑器件功能越来越强大从而促使高集成化高精度的驱动器的出现。本系统是以FPGA 为核心的控制器件,将驱动逻辑功能模块和控制器成功地集成在FPGA 上。利用FPGA 中的嵌入式EAB 可以构成存放电机各相电流所需的控制波形表,再利用数字比较器同步产生多路FPGA 电流波形,对多相步进电机进行控制。若改变控制波形表的数据、增加计数器和比较器的位数,提高计数精度,就可以提高PWM 波形的细分精度,进而对步进电机的步进转角进行任意级细分,实现转角的精确控制。

二、步进电机细分驱动的基本原理

步进电机的驱动是靠给步进电机的各相励磁绕组轮流通以电流,实现步进电机内部磁场合成方向的变化来使步进电机转动的。设矢量Ta 、Tb 、Tc 、Td 为步进电机A 、B 、C 、D 四项励磁绕组分别通电时产生的磁场矢量;Tab 、Tbc 、Tcd 、Tda 为步进电机中

AB,BC,CD,DA 两相同时通电产生的合成磁场矢量。当步进电机的A 、B 、C 、D 四相轮流通电时,步进电机内部磁场从TA →TB →TC →TD,即磁场产生了旋转。一般的,当步进电机的内部磁场变化一周时,电机的转子转过一个齿距,即改变一次通电状态,转子转过一个步距角。该步距角的计算公式为:

其中:α代表接入绕组的线路状态数,m 代表电动机的相数,Z x 代表转子齿数。由此可见,步进电机一旦制造出来,其相数与转子齿数将为定值,要想减小步距角,以达到细分的目的,用户能改变的只有α。

图1所示为四相步进电机八细分时各相电流波形,各相电流均以最大电流值的1/4上升和下降。与单四拍方式相比,α值从2增加到8,步距角θb 为单四拍运行方式时的1/8。所以步进电机细分驱动的关键在于控制电机各相励磁绕组中的电流大小及其稳定性。

X

b mZ αθ

360=

C相

图 1 三相步进电机八细分各相电流状态图

改变步进电机相电流通常采用电流矢量恒幅均匀旋转的细分方法来实现,即同时改变两相电流iA和iB的大小,使电流合成矢量等幅均匀旋转。iA和iB的变化曲线可描述为:

iA = Imcosx

iB = Imsinx

三相步进电机八细分时的各相电流是以1/4的步距上升或下降的,在两相稳定的中间状态,原来一步所转过的角度将由八步完成,实现了步距角的八细分。

三、Quartus II概述

Quartus II 是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL 以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。

Quartus II支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三放EDA工具。

此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。

Maxplus II 作为Altera的上一代PLD设计软件,由于其出色的易用性而得到了广泛的应用。目前Altera已经停止了对Maxplus II 的更新支持,Quartus II 与之相比不仅仅是支持器件类型的丰富和图形界面的改变。Altera在Quartus II 中包含了许多诸如SignalTap II、Chip Editor和RTL Viewer的设计辅助工具,集成了SOPC和HardCopy 设计流程,并且继承了Maxplus II 友好的图形界面及简便的使用方法。

四、课题设计

(一)总体设计

从图1中可以看出,一般情况下总有二相绕组同时通电。一相电流逐渐增大,另一相逐渐减小。对应于一个步距角,电流可以变化N个台阶,也就是电机位置可以细分为N 个小角度,这就是电机的一个步距角被N细分的工作原理。也可以说,步距角的细分就是电机绕组电流的细分,从而可驱动步进电机平滑运行。

图2为步进电机细分驱动系统结构图。步距细分电路是由PWM计数器、ROM地址发生

器、PWM波形存储器、比较器、功放电路所组成。其中,PWM计数器在时钟脉冲作用下递增计数,产生阶梯形上升的周期性锯齿波,同时加载到四相步进电机各相数字比较器的一端;波形ROM输出的数据q[15..12],q[11..8]、q[7..4]、q[3..0]分别加载到比较器的另一端。当PWM计数器的计数值小于波形ROM输出数值时,比较器输出高电平;而当大于波形ROM输出值时,比较器输出低电平。由此可输出周期性的PWM波形。根据图1步进电机八细分电流波形的要求,将各个时刻细分电流波形所对应的数值存放于波形ROM 中,波形ROM的地址由地址计数器产生,地址计数器有3个控制端,可用于改变步进电机的旋转方向、转动速度、工作/停止状态。FPGA以产生的PWM信号控制驱动电路的导通和关断。PWM信号随ROM数据而变化,改变ROM中的数据就可以改变输出信号的占空比,实现限流及细分控制,最终使电机绕组电流呈现阶梯形变化,从而达到步距细分的目的。

图2 步进电机细分驱动系统结构图

(二)细分电流的实现

从LPM_ROM输出的数据加在比较器的A端,PWM计数器的计数值加在比较器的B端,当计数值小于ROM数据时,比较器输出低电平;当计数值大于ROM数据时,比较器输出高电平。如果改变ROM中的数据,就可以改变一个技术周期中高低电平的比例。

(三)细分驱动性能的改善

在线性电流的驱动下,步进电机的微步进是不均匀的,呈现出明显的周期性波动。磁场的边界条件按齿槽情况呈周期性重复是导致微步距周期性变化的原因。同时,不可避免的摩擦负载(摩擦力矩是不恒定的,或者说在一定范围内也是不确定的)以及其他负载力矩的波动导致失调角出现不规则的小变动或小跳跃,也使微步距角曲线在周期性波动上出现不光滑的小锯齿形。

步进电机的电流矩角特性并非线性函数,而是近似于正弦函数。若电流呈线性上升或者下降,必然会造成每一细分步的步距角不均匀,从而影响步距精度。为此,要在设计中提高LPM_ROM的数据精度,将数据提高到16位,使输出的步进细分电流近似为正弦电流,这样不仅提高了步距精度,而且可以改善低频震荡。

(四)程序设计

图3为步进电机PWM控制电路。CNT8是十六进制计数器,构成PWM计数器,将整个PWM周期分成4等份,产生阶梯形上升的周期性锯齿波,同时加载到四相步进电机各相数字比较器的一端;CNT32是三十二进制计数器构成ROM地址发生器,计数器的u_d为方向控制,EN为使能控制,clk_d为速度控制,可以通过u_d、EN和clk_d控制步进电机的

旋转方向、工作/停止和旋转速度;s为模式选择控制,可以选择正常运转模式或者是细分驱动模式。ROM是宽度为16位,深度为32位的存储器,存放了各个时刻细分电流波形所对应的数值;CMP为数字比较器,用于ROM输出的数据和PWM计数器计数值的比较。

输出细分电流信号采用FPGA中ROM查表法,它是通过在不同地址单元内写入不同的PWM数据,用地址选择来实现不同通电方式下的可变步距细分。从ROM输出的数据加在比较器的“a”端,PWM计数器的计数值加在比较器的“b”端,当计数值小于ROM数据时,比较器输出高电平;当计数值大于ROM数据时,比较器则输出低电平。如果改变ROM中的数据,就可以改变一个计数周期中高低电平的比例。

(五)实习要求及指标

步进电机细分控制器设计

电气指标:

1、电压:AC220V,DC5V

2、功耗:小于10W

3、隔离电压:1500V

4、工作温度:

5、工作湿度:

6、工作高度:

技术指标:

1、细分范围:32 - 128

2、驱动电流:1A

图3 步进电机PWM控制电路

下面具体来阐述一下各个元件的设计:

图5为十六进制计数器的RTL图,通过不断输出十六进制数与ROM中的数据作比较。计数器的VHDL语言程序见附录2.

图4 十六进制计数器

图6为三十二进制计数器RTL图,可以输出五位二进制的地址,以便可以查询ROM表。程序见附录3。

图5 三十二进制计数器

图六为四个比较器的RTL图,当计数值小于ROM数据时,比较器输出高电平;当计数值大于ROM数据时,比较器则输出低电平。比较器的输出为步进的四相输入端提供PWM波形,从而达到PWM控制。程序见附录4

图6 比较器

图7为多路选择器,利用s端可以选择控制步进电机的运转方式,s=0时,步进电机为PWM控制,s=1是步进电机的普通运转方式。程序见附录5.

图7 多路选择器

图9的功能是从三十二进制计数器的输出端引入数据并把它转化成步进电机的普通四相驱动方式。程序见附录6

图8 计数转换器

PWM波形ROM表是通过Quartus II中的宏功能模块定制而成,利用FPGA中的嵌入式EAB构成LPM-ROM,存放步进电机各相细分电流所需的PWM控制波形数据表。ROM 数据和程序见附录7和附录8.

六、仿真与测试结果分析

图9是四相步进电机PWM仿真波形图,图中展示了FPGA控制步进电机的情况。ROM 输出的16位数据q[15..0],作为步进电机各相电流的参考值,每4位二进制(l位八进制)数值控制一个相,分别用于控制步进电机A、B、C,D四相的工作电流。对于每一相来说,当输出数据为0时,该相电流为0;输出数据为1时,脉宽高电平占一个PWM周期的1 / 4;当输出数据为2时,脉宽高电平占一个PWM周期的2/4;当输出数据为4时,整个PWM周期均输出高电平。PWM输出电流的平均值与旋转角度成正比。

图9中也给出了步进电机从A->AB->B->BC->C->CD->D->DA四相八拍工作过程的仿真波形。首先,步进电机A相导通,B、C、D相截止,q[15..0]输出数据为F000;A相的数据为F,其他相的数据为0。然后逐渐过度到AB相导通,q[16..0]输出数据为

F600->F900->FC00->FF00, B相的数据逐渐增大,从1增大到4。电机中的磁场经过4拍,从A相转到了AB相。再经过4拍,从AB相转到B相;q[15..0]输出数据为

CF00->9F00->6F00->0F00, A相的数据逐渐减小,从4变为0。从A到AB到B共经过了8拍,实现了步距角的8级细分。此外由于步进电机是电感性负载,对输出的PWM电流具有平滑滤波作用,对电机线圈起作用的是PWM的平均电流,因此在效果上将图中的细小毛刺电流滤除。

图9 仿真波形1

图10是在clk_d的频率比较高的情况下的仿真图。和图9比较可以看出,clk_d的频率越大,PWM波形比较密集,步进电机的转速越高,即clk_d是速度控制信号。

图10 仿真波形2

图11和图9对比,可以看出,当u_d为高电平时,ROM表中输出的数据和图9顺序相反,输出的PWM波形也和图9相反。因此,步进电机的内部磁场从D→DC→C→BC→B→AB→A →DA,电机反转。

图11 仿真波形3

图12是在s为高电平时的仿真图,当s=1时,步进电机为单四拍常规运转方式,内部磁场从AB→BC→CD→DA。

实测结果表明,要是步进电机细分后获得均匀的步进转角,其PWM驱动电流应近似于正弦电流,而非线性递增的电流,因此ROM文件中的数据进行适当选择,使每一步的电流增加量近似正弦波,并根据实际转角做了适当调整。由于PWM的输入时钟频率较高,因此可以获得均匀的平均电流,并且每一步的时间间隔相等,转角近似均匀。

七、结论

通过利用FPGA中嵌入式EAB构成的LPM-ROM存放电机转角细分电流所需的数据表,由数字比较器同步产生多路PWM电流波形,对多相步进电机的转角进行均匀细分,有效地控制步进电机。若提高波形表数据的位数,增加计数器和比较器的位数,就可以提高PWM 波形的细分精度,对步进电机的步进转角进行任意细分,实现步进转角的精确控制。此实现方法比目前单片机加D/A的控制方案更加高效。试验证明,此系统功能满足设计要求,控制灵活,集成度高。驱动器在减少体积、降低开发成本的同时,又增加了稳定性和可靠性,具有较好的动态和静态驱动特性,有效地提高步进电机的运行效果。

参考文献

[1] 李华德等,交流调速控制系统.北京:电子工业出版社,2003.3:22-27

[2] 潘松等,EDA技术实用教程[M].北京: 科学出版社2005

[3] 雷凯等,步进电机细分驱动中绕组电流的修正[J].苏州大学学报2003.1:38-40

[4] 杨忠宝,林海波,基于80C196MC的步进电机斩波恒流均匀细分电路的实现[J].微计算机信息2003.7:51-52

[5] 袁丽肖,王健等,直接转矩控制系统的自适应模糊控制方法的研究[J].微电机2006.33(9):26-29

[6] 翁良科,伊仕.基于Verilog HDL描述的多用途步进电机控制芯片的设计[J].电子技术应用,2002

[7]程浩.三相混合步进电机细分驱动的研制[D].浙江:浙江大学.2001

[8]李恩光.机电伺服控制技术.东华大学出版社,2003

注释

PWM技术:

脉宽调制(PWM:(Pulse Width Modulation)是利用微处理器的数字输出来对模拟电

路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。

简而言之,PWM是一种对模拟信号电平进行数字编码的方法。通过高分辨率计数器的使用,方波的占空比被调制用来对一个具体模拟信号的电平进行编码。PWM信号仍然是数字的,因为在给定的任何时刻,满幅值的直流供电要么完全有(ON),要么完全无(OFF)。电压或电流源是以一种通(ON)或断(OFF)的重复脉冲序列被加到模拟负载上去的。通的时候即是直流供电被加到负载上的时候,断的时候即是供电被断开的时候。只要带宽足够,任何模拟值都可以使用PWM进行编码。

PWM的一个优点是从处理器到被控系统信号都是数字形式的,无需进行数模转换。让信号保持为数字形式可将噪声影响降到最小。噪声只有在强到足以将逻辑1改变为逻辑0或将逻辑0改变为逻辑1时,也才能对数字信号产生影响。

对噪声抵抗能力的增强是PWM相对于模拟控制的另外一个优点,而且这也是在某些时候将PWM用于通信的主要原因。从模拟信号转向PWM可以极大地延长通信距离。在接收端,通过适当的RC或LC网络可以滤除调制高频方波并将信号还原为模拟形式。

附录

附录1:顶层程序

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity djxf is

port(clk,clk_d,u_d,s,en:in std_logic;

y:out std_logic_vector(3 downto 0));

end entity djxf;

architecture behav of djxf is

component cnt8

port(clk:in std_logic;

cq:out std_logic_vector(3 downto 0));

end component;

component dec2

port(clk: in std_logic;

a: in std_logic_vector(1 downto 0);

d: out std_logic_vector(3 downto 0));

end component;

component cnt32

port(clk,en,u_d:in std_logic;

cq:out std_logic_vector(4 downto 0));

end component;

component pwm_rom

PORT

(

address : IN STD_LOGIC_VECTOR (4 DOWNTO 0);

inclock : IN STD_LOGIC ;

q : OUT STD_LOGIC_VECTOR (15 DOWNTO 0) );

end component;

component cmp

port (a,b:in std_logic_vector(3 downto 0);

agb:out std_logic);

end component;

component mux

port(a,b: in std_logic_vector(3 downto 0);

s: in std_logic;

y:out std_logic_vector(3 downto 0));

end component;

signal sgn1:std_logic_vector(3 downto 0);

signal sgn2:std_logic_vector(4 downto 0);

signal sgn3:std_logic_vector(15 downto 0);

signal sgn4,f:std_logic_vector(3 downto 0);

begin

u1:cnt8 port map(clk=>clk,cq=>sgn1);

u2:cnt32 port map(clk=>clk_d,en=>en,u_d=>u_d,cq=>sgn2);

u3:pwm_rom port map(inclock=>clk_d,address=>sgn2,q=>sgn3);

cmp1:cmp port map(a=>sgn3(15 downto 12),b=>sgn1,agb=>f(3));

cmp2:cmp port map(a=>sgn3(11 downto 8),b=>sgn1,agb=>f(2));

cmp3:cmp port map(a=>sgn3(7 downto 4),b=>sgn1,agb=>f(1));

cmp4:cmp port map(a=>sgn3(3 downto 0),b=>sgn1,agb=>f(0));

u4:dec2 port map(clk=>clk,a=>sgn2(1 downto 0),d=>sgn4);

m:mux port map(a=>f,b=>sgn4,s=>s,y=>y);

end architecture behav;

附录2:十六进制计数器

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity cnt8 is

port(clk:in std_logic;

cq:out std_logic_vector(3 downto 0));

end cnt8;

architecture behav of cnt8 is

signal cqi:std_logic_vector(4 downto 0);

begin

process(clk)

begin

if clk'event and clk='1' then cqi<=cqi+1;end if;

end process;

cq<=cqi(4 downto 1);

end behav;

附录3:三十二进制计数器

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity cnt32 is

port(clk,en,u_d:in std_logic;

cq:out std_logic_vector(4 downto 0));

end cnt32;

architecture behav of cnt32 is

signal cqi:std_logic_vector(4 downto 0);

begin

process(clk,en,u_d)

begin

if en='1' then cqi<=cqi;

elsif clk'event and clk='1' then

if u_d='1' then cqi<=cqi+1;

else cqi<=cqi-1;end if;

end if;

end process;

cq(4 downto 0)<=cqi;

end behav;

附录4:比较器

library ieee;

use ieee.std_logic_1164.all;

entity cmp is

port (a,b:in std_logic_vector(3 downto 0);

agb:out std_logic);

end ;

architecture one of cmp is

begin

process(a,b)

begin

if a>b then agb<='1';

else agb<='0';

end if;

end process;

end;

附录5:多路选择器

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity mux is

port(a,b: in std_logic_vector(3 downto 0);

s: in std_logic;

y:out std_logic_vector(3 downto 0));

end entity mux;

architecture one of mux is

begin

process(a,b,s)

begin

if s='0' then

y<=a; else

y<=b;

end if;

end process;

end architecture one;

附录6:转换器

library ieee;

use ieee.std_logic_1164.all;

entity dec2 is

port(clk: in std_logic;

a: in std_logic_vector(1 downto 0);

d: out std_logic_vector(3 downto 0));

end;

architecture one of dec2 is

signal cq:std_logic_vector(1 downto 0);

begin

process(cq)

begin

case cq is

when "00"=> d<="1001";

when "01"=> d<="1100";

when "10"=> d<="0110";

when "11"=> d<="0011";

when others=> null;

end case;

end process;

process(clk)

begin

if clk'event and clk='1' then cq<=a;end if;

end process;

end;

附录7:PWM_ROM表数据

width=16;

depth=32;

address_radix=hex;

data_radix=hex;

content begin

0:f000;1:f600;2:f900;3:fc00;4:ff00;5:cf00;6:9f00;7:6f00;8:0f00;9:0f60;a: 0f90;b:0fc0;c:0ff0;d:0cf0;e:09f0;f:06f0;10:00f0;11:00f6;12:00f9;13:00fc;14:0 0ff;15:00cf;16:009f;17:006f;18:000f;19:600f;1a:900f;1b:c00f;1c:f00f;1d:f00c; 1e:f009;1f:f006;

end;

附录8:ROM定制程序

LIBRARY ieee;

USE ieee.std_logic_1164.all;

LIBRARY altera_mf;

USE altera_mf.altera_mf_components.all;

ENTITY pwm_rom IS

PORT

(

address : IN STD_LOGIC_VECTOR (4 DOWNTO 0);

inclock : IN STD_LOGIC ;

q : OUT STD_LOGIC_VECTOR (15 DOWNTO 0)

);

END pwm_rom;

ARCHITECTURE SYN OF pwm_rom IS

SIGNAL sub_wire0 : STD_LOGIC_VECTOR (15 DOWNTO 0);

COMPONENT altsyncram

GENERIC (

intended_device_family : STRING;

width_a : NATURAL;

widthad_a : NATURAL;

numwords_a : NATURAL;

operation_mode : STRING;

outdata_reg_a : STRING;

address_aclr_a : STRING;

outdata_aclr_a : STRING;

width_byteena_a : NATURAL;

init_file : STRING;

lpm_hint : STRING;

lpm_type : STRING

);

PORT (

clock0 : IN STD_LOGIC ;

address_a : IN STD_LOGIC_VECTOR (4 DOWNTO 0);

q_a : OUT STD_LOGIC_VECTOR (15 DOWNTO 0)

);

END COMPONENT;

BEGIN

q <= sub_wire0(15 DOWNTO 0);

altsyncram_component : altsyncram

GENERIC MAP (

intended_device_family => "Cyclone",

width_a => 16,

widthad_a => 5,

numwords_a => 32,

operation_mode => "ROM",

outdata_reg_a => "UNREGISTERED",

address_aclr_a => "NONE",

outdata_aclr_a => "NONE",

width_byteena_a => 1,

init_file => "G:/qin/pwm_rom/pwm_rom.mif",

lpm_hint => "ENABLE_RUNTIME_MOD=YES, INSTANCE_NAME=ROM",

lpm_type => "altsyncram"

)

PORT MAP (

clock0 => inclock,

address_a => address,

q_a => sub_wire0

);

END SYN;

心得体会

一周的EDA实习很快就过去了,这一周的实习中,我了解到了EDA技术及其应用技术的神秘之处。刚开始并不怎么了解这些技术,对EDA基础的程序设计也不太熟练,经过这一周的实训,在老师和同学的帮助以及组长的带领下,我的EDA基础得到了巩固,实践经验也得到了增长。

我们组的实习题目为步进电机,刚开始我并不明白步进电机的用途,通过实习我知道了步进电机是将电脉冲信号转变为角位移或线位移的开环控制元步进电机件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。

步进电机驱动器的主要细分作用

步进电机是一种开环伺服运动系统执行元件,以脉冲方式进行控制,输出角位移。与交流伺服电机及直流伺服电机相比,其突出优点就是价格低廉,并且无积累误差。但是,步进电机运行存在许多不足之处,如低频振荡、噪声大、分辨率不高等,又严重制约了步进电机的应用范围。 通过细分步进电机驱动方式不仅可以减小步进电机的步距角,提高分辨率,而且可以减少或消除低频振动,使电机运行更加平稳均匀。 步进电机驱动器细分的主要作用是提高步进电机的精确率。 国内有一些驱动器采用“平滑”来取代细分,有的亦称为细分,但这不是真正的细分,这两者之间的本质是不同的: 一、 “平滑”并不精确控制电机的相电流,只是把电流的变化率变缓一些,所以“平滑”并不产生微步,而细分的微步是可以用来精确定位的。 二、 步电机系统解决方案

电机的相电流被平滑后,会引起电机力矩的下降,而细分控制不 但不会引起电机力矩的下降,相反,力矩会有所增加。 驱动器细分后的主要优点为:完全消除了电机的低频振荡。低频振荡是步进电机(尤其是反应式电机)的固有特性,而细分是消除它的唯一途径,如果您的步进电机有时要在共振区工作(如走圆弧),选择细分驱动器是唯一的选择。提高了电机的输出转矩。尤其是对三相反应式电机,其力矩比不细分时提高约30-40% 。提高了电机的分辨率。由于减小了步距角、提高了步距的均匀度,‘提高电机的分辨率‘是不言而喻的。 很多用户误以为步进电机驱动器的细分越高,步进电机的精度就越高,其实这是一种错误的观念,比如步进电机驱动器细分较高的可以达到60000个脉冲一转,而步进电机实际是无法分辨这个精度的,当驱动器设置为60000个脉冲/转的时候,步进电机驱动器接受好几个脉冲,步进电机才走一步,这样并不能提高步进电机的精度。 步进电机的细分技术实质上是一种电子阻尼技术,其主要目的是 减弱或消除步进电机的低频振动,提高电机的运转精度只是细分技术 步电机系统解决方案

4、基于FPGA的步进电机细分驱动控制设计

南京工程学院 自动化学院 大作业(论文) 题目:基于FPGA的步进电机细分驱动 控制设计 专业:测控技术与仪器 班级:学号: 学生姓名: 任课教师:郭婧 成绩:

基于FPGA的步进电机细分驱动控制设计 一、基本要求: 在理解步进电机的工作原理以及细分原理的基础上,利用FPGA实现四相步进电机的8细分驱动控制。 二、评分标准: 1、设计方案介绍(共15分) 要求:详细叙述利用FPGA实现对四相步进电机进行8细分控制的设计方案。 评分标准: 13-15分:方案叙述详细,正确; 10-12分:方案叙述较详细,基本正确; 9分以下:酌情给分 0分:抄袭别人 2、VHDL设计部分(60分) 要求:给出详细的VHDL设计过程,提供详细的程序代码,如果设计中用到LPM模块,则给出生成LPM模块的每一步操作流程的截图,并加以文字描述。 评分标准: 54-60分:代码详细,截图完整,书写规范, 48-53分:代码较详细,截图较完整,书写较规范; 47以下:酌情给分 0分:抄袭别人 3、模拟调试部分(20分) 要求:给出详细的仿真过程,对软件编译、仿真分析、仿真波形进行截图。并给出8细分情况下的仿真测试结果,给出详细的实验结果分析。 评分标准: 18-20分:调试过程详细,正确,截图完整; 15-17分:调试过程较详细,基本正确,有截图; 14分以下:酌情给分 0分:抄袭别人

4、提高部分(5分) 要求:利用FPGA实验箱上的步进电机,实现细分控制。 评分标准:根据完成的程度给分。 0分:抄袭别人

参考:实验十八 FPGA步进电机细分驱动控制设计 示例程序和实验指导课件位置:\EDA_BOOK3_FOR_C35\chpt3\EXP18_MOTO\工程:step_a 一、实验目的 学习用FPGA实现步进电机的驱动和细分控制。 二、实验设备 PC机一台 GW48-PK4试验系统一台 连接线若干 三、实验内容 1、建立工程。完成以图18-1为原理图的工程设计,并保存工程名为step_a。 2、编译仿真。对以上工程进行编译,成功后进行方针测试。 3、引脚锁定。引脚锁定参考图18-2. 图18-1 步进电机PWM细分控制控制电路图 图18-2 引脚锁定图 4、下载测试 参考\EDA_BOOK3_FOR_C35\Chpt3\ALl.PPT\实验17.PPT 选择模式5,短路冒接clock0.根据第一章注释分别“38“和”42“或”“7”连接(见GW48主

本教程介绍步进电机驱动和细分的工作原理

本教程介绍步进电机驱动和细分的工作原理,以及stm32103为主控芯片制作的一套自平衡的两轮车系统,附带原理图pcb图和源代码,有兴趣的同学一起来吧.本系统还有一些小问题,不当之处希望得到大家的指正. 一.混合式步进电机的结构和驱动原理 电机原理这部分不想讲的太复杂了,拆开一台电机看看就明白了。 电机的转子是一个永磁体,它的上面有若干个磁极SN组成,这些磁极固定的摆放成一定角度。电机的定子是几个串联的线圈构成的磁体。出线一般是四条线标记为A+,A-,B+,B-。A相与B相是不通的,用万用表很容易区分出来,至于各相的+-出线实际是不用考虑的,任意一相正负对调电机将反转。另外一种出线是六条线的只是在A相和B相的中间点做两条引出线别的没什么差别,六出线的电机通过中间出线到A+或A-的电流来模拟正向或负向的电流,可以在没有负相电流控制的电路中实现电机驱动,从而简化驱动电路,但是这种做法任意时刻只有半相有电流,对电机的力矩是有损失的。步进电机的转动也是电磁极与永磁极作用力的结果,只不过电磁极的极性是由驱动电路控制实现的。 我们做这样的一个实验就可以让步进电机转动起来。1找一节电池正负随意接入到A相两端;然后断开;(记为A正向)2再将电池接入到B相两端; 然后断开;(记为B正向)3电池正负对调再次接入A相; 然后断开;(记为A负向)4保持正负对调接入B相;然后断开;(记为B负向)…如此循环你会看到步进电机在缓慢转动。注意电机的相电阻是很小的接

通时近乎短路。我们将相电流的方向记录下来应该为:A+B+A-B-A+…, 如果我们更换接线顺序使得相电流顺序为A+B-A-B+A+…这时我们会看 到电机向反方向运动。这里每切换一次相电流电机都会转动一个很小的角度,这个角度就是电机的步距角。步距角是步进电机的一个固有参数,一般两相电机步距角为1.8度即切换200次可以让电机转动一圈。这里我们比较正反转的电流顺序可以看出A+和A-;B+和B-的交换后的顺序 和正反顺序是一致的,也就是前面所说的”任意一相正负对调电机将反转”。以上为四排工作方式,为了使相电流更加平滑另外可以使用八排的工作方式即: A+;A+B+;B+;B+A-;A-;A-B-;B-;B-A+;从前往后循环正转,从后往前循环反转。 为了用单片机实现相电流的正负流向控制必须要有一个H桥的驱动电路,这种带H桥的驱动模块还是很多的,比较便宜的是晶体管H桥比如L298N,晶体管开关速度比较慢,无法驱动电机高速运动。有些模块将细分控制电路也包含在内,我们也不用这种,因为我们的细分由软件控制。实际应用中使用ST的mos管两桥驱动芯片L6205一片即可驱 动一台步进电机。有了H桥通过PWM就可以控制相电流大小,改变输入极IN1、IN2的状态(参看手册第8页)可以控制相电流的方向。 二.细分的原理和输出控制 从这里开始重点了,别的地方看不到哦。 一个理想的步进电机电流曲线应该是相位相差90度的正弦曲线如

步进电机驱动方式(细分)概述

步进电机驱动方式(细分)概述 众所周知,步进电机的驱动方式有整步,半步,细分驱动。三者即有区别又有联系,目前,市面上很多驱动器支持细分驱动方式。本文主要描述这三种驱动的概述。 如下图是两相步进电机的内部定子示意图,为了使电机的转子能够连续、平稳地转动,定子必须产生一个连续、平均的磁场。因为从宏观上看,电机转子始终跟随电机定子合成的磁场方向。如果定子合成的磁场变化太快,转子跟随不上,这时步进电机就出现失步现象。 既然电机转子是跟随电机定子磁场转动,而电机定子磁场的强度和方向是由定子合成电流决定且成正比。即只要控制电机的定子电流,则可以达到驱动电机的目的。下图是两相步进电机的电流合成示意图。其中Ia是由A-A`相产生,Ib是由B-B`相产生,它们两个合成后产生的电流I就是电机定子的合成电流,它可以代表电机定子产生磁场的大小和方向。 有了以上的步进电机背景描述后,对于步进电机的整步、半步、细分的三种驱动方式,都会是同一种方法,只是电流把一个圆(360°)分割的粗细程序不同。 整步驱动 对于整步驱动方式,电机是走一个整步,如对于一个步进角是3.6°的步进电机,整步驱动是每走一步是走3.6°。

下图是整步驱动方式中,电机定子的电流次序示意图: 由上图可知,整步驱动每一时刻只有一个相通电,所以这种驱动方式的驱动电路可以是很简单,程序代码也是相对容易实现,且由上图可以得到电机整步驱动相序如下: BB’→A’A→B’B→A A’→B B’ 下图是这种驱动方式的电流矢量分割图: 可见,整步驱动方式的电流矢量把一个圆平均分割成四份。 下图是整步驱动方式的A、B相的电流I vs T图: 可以看出,整步驱动描出的正弦波是粗糙的。使用这种方式驱动步进电机,低速时电机会抖动,噪声会比较大。但是,这种驱动方式无论在硬件或软件上都是相对简单,从而驱

步进电机的细分

步进电机的细分 步进电机是一种将离散的电脉冲信号转化成相应的角位移或线位移的电磁机械装置,它具有转矩大、惯性小、响应频率高等优点,已经在当今工业上得到广泛的应用,但其步矩角较大,一般为1.5o~3o,往往满足不了某些高精密定位、精密加工等方面的要求。实现细分驱动是减小步距角、提高步进分辨率、增加电机运行平稳性的一种行之有效的方法。本文在选择了合理的电流波形的基础上,提出了基于Intel 80C196MC 单片机控制的步进电机恒转矩细分驱动方案,其运行功耗小,可靠性高,通用性好,具有很强的实用性。 细分电流波形的选择及量化 步进电机的细分控制,从本质上讲是通过对步进电机的励磁绕组中电流的控制,使步进电机内部的合成磁场为均匀的圆形旋转磁场,从而实现步进电机步距角的细分。一般情况下,合成磁场矢量的幅值决定了步进电机旋转力矩的大小,相邻两合成磁场矢量之间的夹角大小决定了步距角的大小。因此,要想实现对步进电机的恒转矩均匀细分控制,必须合理控制电机绕组中的电流,使步进电机内部合成磁场的幅值恒定,而且每个进给脉冲所引起的合成磁场的角度变化也要均匀。我们知道在空间彼此相差2p/m的m相绕组,分别通以相位上相差2p/m而幅值相同的正弦电流,合成的电流矢量便在空间作旋转运动,且幅值保持不变。这—点对于反应式步进电机来说比较困难,因为反应式步进电机的旋转磁场只与绕组电流的绝对值有关,而与电流的正反流向无关。以比较经济合理的方式对三相反应式步进电机实现步距角的任意细分,绕组电流波形宜采用如图1所示的形式。 图中,a为电机转子偏离参考点的角度。ib滞后于ia,ic超前于ia。此时,合成电流矢量在所有区间b=Ime-ja,从而保证合成磁场幅值恒定,实现电机的恒转矩运行。且步进电机在这种情况下也最为平稳。将绕组电流根据细分倍数均匀量化后,所得细分步距角也是均匀的。为了进一步得到更加均匀的细分步距角,可通过实验测取一组在通入量化电流波形时的步进电机细分步距的数据,然后对其误差进行差值补偿,求得实际的补偿电流曲线。这些工作大部分由计算机来完成。 步进电机是一种将离散的电脉冲信号转化成相应的角位移或线位移的电磁机械装置,它具有转矩大、惯性小、响应频率高等优点,已经在当今工业上得到广泛的应用,但其步矩角较大,一般为1.5o~3o,往往满足不了某些高精密定位、精密加工等方面的要求。实现细分驱动是减小步距角、提高步进分辨率、增加电机运行平稳性的一种行之有效的方法。本文在选择了合理的电流波形的基础上,提出了基于Intel 80C196MC单片机控制的步进电机恒转矩细分驱动方案,其运行功耗小,可靠性高,通用性好,具有很强的实用性。

步进电机细分驱动电路设计

前言 随着社会的进步和人民生活水平的不断提高及全球经济一体化势不可挡的浪潮,我国微特电机工业在最近10年得到了快速的发展。快速发展的显着标志是使用领域不断拓宽,用量大增,特别是在日用消费市场和工业自动化装置及系统的表现最为明显。与此同时,随着电力电子技术、微电子技术和计算机技术、新材料以及控制理论和电机本体技术的不断发展进步,用户对电机控制的速度、精度和实时性提出了更高的要求,因此作为微特电机重要分枝的控制电机也得到了空前的发展。步进电动机又称为脉冲电动机,是数字控制系统中的一种执行组件。其功用是将脉冲电信号变换为相应的角位移或直线位移,即给一个脉冲电信号,电动机就转动一个角度或前进一步。步进电机和普通电动机不同之处是步进电机接受脉冲信号的控制。现在比较常用的步进电机包括反应式步进电机、永磁式步进电机、混合式步进电机和单相式步进电机等。其中反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩。现阶段,反应式步进电机获得最多的应用。步进电机和普通电机的区别主要在于其脉冲驱动的形式,正是这个特点,步进电机可以和现代的数字控制技术相结合。不过步进电机在控制的精度、速度变化范围、低速性能方面都不如传统的闭环控制的直流伺服电动机。在精度不是需要特别高的场合就可以使用步进电机,步进电机可以发挥其结构简单、可靠性高和成本低的特点。使用恰当的时候,甚至可以和直流伺服电动机性能相媲美。步进电机被广泛应用于数字控制各个领域:机器人方面,机器人的的关节驱动及行进的精确控制,需要步进电机;数控机床方面,如数控电火花切割机床要求刀具精确走步,减小加工件表面的粗糙度的同时提高效率,需要步进电机;办公自动化方面,如电脑磁盘驱动器中的磁盘进行读盘操作的精确位置控制,需要步进电机,在打印机、传真机中也需要步进电机对设备进行位置控制。步进电动机是经济型数控系统经常采用的电机驱动系统。这类电机驱动系统的特点是控制简单,适合计算机系统控制要求。步进电动机的细分驱动系统较以往的电机系统,消除了低频震荡问题,控制分辨率更高,使其应用领域更加广泛。

步进电机细分控制(英文)

1/17 AN1495 APPLICATION NOTE 1INTRODUCTION Microstepping a stepper motor may be used to achieve one or both of two objectives; 1) increase the position resolution or 2) achieve smoother operation of the motor. In either case the basic the-ory of operation is the same. The simplified model of a stepper motor is a permanent magnet rotor and two coils on the stator separated by 90 degrees, as shown in Figure 1. In classical full step operation an equal current is delivered to each of the coils and the rotor will align itself with the resulting magnetic vector along one of the 45 degree axis. To step the motor, the current in one of the two coils is reversed and the rotor will rotate 90 degrees. The complete full step sequence is shown in figure 2. Half step drive,where the current in the coil is turned off for one step period before being turned on in the opposite direction, has been used to double the step resolution of a motor. In either full and half step drive,the motor can be positioned only at one of the 4 (8 for half step) defined positions.[4][5] Therefore,the number of steps per electrical revolution and the number of poles on the motor determine the resolution of the motor. Typical motors are designed for 1.8 degree steps (200 steps per revolution)or 7.5 degree steps (48 steps per revolution). The resolution may be doubled to 0.9 or 3.75 degrees by driving the motor in half step. Further increasing the resolution requires positioning the rotor at positions between the full step and half step positions. Figure 1. Model of stepper motor MICROSTEPPING STEPPER MOTOR DRIVE USING PEAK DETECTING CURRENT CONTROL Stepper motors are very well suited for positioning applications since they can achieve very good positional accuracy without complicated feedback loops associated with servo sys-tems. However their resolution, when driven in the conventional full or half step modes of operation, is limited by the configuration of the motor. Many designers today are seeking alternatives to increase the resolution of the stepper motor drives. This application note will discuss implementation of microstepping drives using peak detecting current control where the sense resistor is connected between the bottom of the bridge and ground. Examples show the implementation of microstepping drives with several currently available chips and chip sets. REV . 2AN1495/0604

步进电机细分驱动方式的研究

步进电机作为电磁机械装置,其进给的分辨率取决于细分驱动技术。采用软件细分驱动方式,由于编程的灵活性、通用性,使得步进细分驱动的成本低、效率高,要修改方案也易办到。同时,还可解决步进电机在低速时易出现的低频振动和运行中的噪声等。但单一的软件细分驱动在精度与速度兼顾上会有矛盾,细分的步数越多,精度越高,但步进电机的转动速度却降低;要提高转动速度,细分的步数就得减少。为此,设计了多级细分驱动系统,通过不同的细分档位设定,实现不同步数的细分,同时保证了不同的转动速度。 1 细分驱动原理 步进电机控制中已蕴含了细分的机理。如三相步进电机按A→B→C……的顺序轮流通电,步进电机为整步工作。而按A→AC→C→CB→B→BA→A……的顺序通电,则步进电机为半步工作。以A→B为例,若将各相电流看作是向量,则从整步到半步的变换,就是在IA与IB之间插入过渡向量IAB,因为电流向量的合成方向决定了步进电机合成磁势的方向,而合成磁势的转动角度本身就是步进电机的步进角度。显然,IAB的插入改变了合成磁势的转动大小,使得步进电机的步进角度由θb 变为0.5θb,从而也就实现了2步细分。由此可见,步进电机的细分原理就是通过等角度有规律的插入电流合成向量,从而减小合成磁势转动角度,达到步进电机细分控制的目的。 在三相步进电机的A相与B相之间插入合成向量AB,则实现了2步细分。要再实现4步细分,只需在A与AB之间插入3个向量I1、I2、I3,使得合成磁势的转动角度θ1=θ2=θ3=θ4,就实现了4步细分。但4步细分与2步细分是不同的,由于I1、I2、I33个向量的插入是对电流向量IB的分解,故控制脉冲已变成了阶梯波。细分程度越高,阶梯波越复杂。 在三相步进电机整步工作时,实现2步细分合成磁势转动过程为 IA→IAB→IB;实现4步细分转动过程为IA→I2→IAB……;而实现8步细分则转

研控步进电机YKD3422MA细分驱动器说明书

YKD3422MA 数字式细分驱动器 特点木工雕刻机 数控机床 包装设备 纺织设备 水钻设备 激光切割机 YKD3422MA是一款基于高性能DSP控制的三相步进电机驱动器,硬件设计上采用DSP+IPM模块进行高集成度简约化设计,数字式PWM控制方式,软件上采用矢量控制技术及微细分自适应控制技术,即使在低细分条件下也可以使电机低速运行平稳,几乎没有震动和噪音,电机在高速时力矩大大高于两相和五相混合式步进电机。驱动电压为交流110V-240V,适配电流在4.2A以下的各种型号三相混合式步进电机。此款驱动最适宜控制高电压小电流电机。定位精度最高可达10000步/转.细分设置更改需要断电重启后才生效,运行电流及抱轴电流设定支持不断电在线设置。 电流设定驱动器接线示意图 典型应用概述1. STOP/Im为保持状态(或抱轴状态)输出电流设置电位器,可设置为 正常输出电流的20%-80%(顺时针增大,逆时针减小),支持在线调整。 2. RUN/Im为正常工作输出电流设置开关(详见下表),支持在线调整。 PU DR MF DIP开关设定输入信号波形时序图安装尺寸(单位:mm)◆◆◆◆◆◆◆◆◆◆◆◆ 采用矢量控制及微细分控制技术,在运行平稳性、噪音、震动、发热等方面 较传统驱动器均有较大的提升; 衰减模式及衰减时间自适应控制,开关管运行在最少开关模式,运行时发热 大大降低,电流波形失真度较小; 设有16档等角度恒力矩细分,最高分辨率10000步/转; 最高响应频率可达200Kpps; 加减速曲线配置合适的情况下电机最高空载速度可达50R/S(or 3000RPM); 步进脉冲停止超过100ms时,线圈电流自动减为20%-80%(由STOP/Im设定) 光电隔离信号输入/输出 驱动电流从0.6A/相到4.2A/相分16档可调 单电源输入,电压范围:交流AC110-220V 出错保护:过热保护/过流、电压过低保护 YKD3422MA体积为178x108.5x68(),净重量为:0.93kg 相位记忆功能(注:输入脉冲停止超过5秒后,驱动器自动记忆当时电机相位, 重新上电或MF信号由有效变为无效时,驱动器自动恢复电机相位)。 3mm 注意!信号端DB15塑料壳 需保留45mm的安装空间。

步进电机驱动器及细分控制原理

步进电机驱动器及细分控制原理 步进电机驱动器原理: 步进电机必须有驱动器和控制器才能正常工作。驱动器的作用是对控制脉冲进行环形分配、功率放大,使步进电机绕组按一定顺序通电。 以两相步进电机为例,当给驱动器一个脉冲信号和一个正方向信号时,驱动器经过环形分配器和功率放大后,给电机绕组通电的顺序为AA BB A A B B ,其四个状态周而复始 进行变化,电机顺时针转动;若方向信号变为负时,通电时序就变为 AA B B A A BB ,电机就逆时针转动。 随着电子技术的发展,功率放大电路由单电压电路、高低压电路发展到现在的斩波电路。其基本原理是:在电机绕组回路中,串联一个电流检测回路,当绕组电流降低到某一下限值时,电流检测回路发出信号,控制高压开关管导通,让高压再次作用在绕组上,使绕组电流重新上升;当电流回升到上限值时,高压电源又自动断开。重复上述过程,使绕组电流的平均值恒定,电流波形的波顶维持在预定数值上,解决了高低压电路在低频段工作时电流下凹的问题,使电机在低频段力矩增大。 步进电机一定时,供给驱动器的电压值对电机性能影响较大,电压越高,步进电机转速越高、加速度越大;在驱动器上一般设有相电流调节开关,相电流设的越大,步进电机转速越高、力距越大。 细分控制原理: 在步进电机步距角不能满足使用要求时,可采用细分驱动器来驱动步进电机。细分驱动器的原理是通过改变A,B相电流的大小,以改变合成磁场的夹角,从而可将一个步距角细分为多步。

定子 A 转子 S N B B B S N A A (a)(b) A S N B B N S B S N A (c)(d) 图3.2步进电机细分原理 图 仍以二相步进电机为例,当A、B相绕组同时通电时,转子将停在A、B相磁极中间,如图3.2。 若通电方向顺序按AA AA BB BB BB AA AA AA BB BB BB AA,8个状态周而 复 始进行变化,电机顺时针转动;电机每转动一步,为45度,8个脉冲电机转一周。与图2.1相比,它的步距角小了一半。 驱动器一般都具有细分功能,常见的细分倍数有:1/2,1/4,1/8,1/16,1/32,1/64;或:1/5,1/10,1/20。 细分后步进电机步距角按下列方法计算:步距角=电机固有步距角/细分数 例如:一台1.8°电机设定为4细分,其步距角为 1.8°/4=0.45°。当细分 等级大于1/4后,电机的定位精度并不能提高,只是电机转动更平稳。

基于FPGA的步进电机的PWM控制__细分驱动的实现

姓名___ _ _ _ 学号201016050136 院系电气信息工程学院 专业电子信息工程 班级___信息10-1______ __

目录 目录 (2) 摘要 (3) 关键词 (3) Abstract (3) Keywords (3) 一、引言 (4) 二、步进电机细分驱动的基本原理 (4) 三、Quartus II概述 (5) 四、课题设计 (5) (一)总体设计 (5) (二)细分电流的实现 (6) (三)细分驱动性能的改善 (6) (四)程序设计 (6) 六、仿真与测试结果分析 (10) 七、结论 (12) 参考文献 (12) 注释 (13) 附录 (14) 心得体会 (20)

摘要 在对步进电机细分驱动原理进行分析研究的基础上,提出一种基于FPGA 控制的步进电机细分驱动器。利用FPGA中的嵌入式EAB构成LPM-ROM,存放步进电机各相细分电流所需的PWM控制波形数据表,并通过FPGA设计的数字比较器,同时产生多路PWM电流波形,实现对步进电机转角进行均匀细分控制。实验证明,所研制的步进电机驱动器不仅体积小,简化了系统的设计,减少了延迟,改善了低频特性,有良好的适应性和自保护能力,提高了驱动器的稳定性和可靠性。 关键词 步进电机;细分驱动;脉宽调制;FPGA Abstract In this paper, a divided driving circuit for stepping motor controlled by FPGA is put forward, based on the analysis of the principle of stepping motor divided driving. Using embedded EAB in FPGA to compose LPM-ROM, store PWM control wave form data which stepping motor each phase subdivided driving current is needed.The magnitude comparator designed with FPGA generates several PWM current waveform synchronously, to realize the step angles even division control for three–phase stepping motor.Experimments have proved that the developed subdivision driver is not only smaller,sampler in system, can shorten the delay time,improve the stability in low frequency ,but has good self-adaptation and self-protection ability,and its stability and relibility are higher. Keywords stepping motor; divided driving;PWM; FPGA

步进电机的原理,分类,细分原理

步进电机原理及使用说明 一、前言 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。 虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。 步进电机是将电脉冲信号转变为角位移或线位移的一种开环线性执行元件,具有无累积误差、成本低、控制简单特点。产品从相数上分有二、三、四、五相,从步距角上分有0.9°/1.8°、0.36°/0.72°,从规格上分有口42~φ130,从静力矩上分有0.1N?M~40N?M。 签于上述情况,我们决定以广泛的感应子式步进电机为例。叙述其基本工作原理。望能对广大用户在选型、使用、及整机改进时有所帮助。 二、感应子式步进电机工作原理 (一)反应式步进电机原理 由于反应式步进电机工作原理比较简单。下面先叙述三相反应式步进电机原理。 1、结构: 电机转子均匀分布着很多小齿,定子齿有三个励磁绕阻,其几何轴线依次分别与转子齿轴线错开。 0、1/3て、2/3て,(相邻两转子齿轴线间的距离为齿距以て表示),即A与齿1相对齐,B与齿2向右错开1/3て,C与齿3向右错开2/3て,A…与齿5相对齐,(A…就是A,齿5就是齿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て,这就是电机细分驱动的基本理论依据。 不难推出:电机定子上有m相励磁绕阻,其轴线分别与转子齿轴线偏移1/m,2/m……(m-1)/m,1。

步进电机闭环细分驱动控制系统设计_宋鸿飞

步进电机闭环细分驱动控制系统设计 摘要:介绍了螺纹非接触光电测试系统中步进电机闭环细分控制系统的设计,并结合系统要求对抗干扰性和稳定性进行深入研究。文中对步进电机的特性与系统的性能相互关系进行了论述,在此基础上提出了可行的系统设计方案,给出了基于TA8435专用芯片的细分驱动设计电路,对系统抗干扰性和稳定性设计提出了具体解决办法,硬件设计中采用了传感器反馈的全伺服控制方法,软件上采用升频离散化处理,很好的解决了步进电机在高速启停过程中的堵转和丢步现象,提高了系统的稳定性和精度。 关键词:闭环控制;细分驱动;升频离散化 中图分类号:TP216文献标识码:A文章编号:1672-9870(2008)02-00093-03 收稿日期:200716 基金项目:国家863计划资助项目 作者简介:宋鸿飞(1980

角,并依靠电磁力锁定转轴在一定的位置上。因此在定位精度不高的场合下,一般的步进系统都采用开环控制。但由于步进电机固有的低频共振,高频扭矩小引起的失步和机械结构等因素的影响,都会造成实际位移值偏离指令设定值。因此在高定位精度的场合下,没有闭环反馈就无法知道电机是否丢步或过步,系统无法对其进行有效校正和补偿,导致不能准确定位。在步进系统中引入检测环节并对其进行闭环控制,可从根本上解决步进系统的定位精度问题,将使其性能大大提高。步进电机的闭环控制可采用各种不同的方法,其中包括步校验、无传感器反电动势检测和有传感器反馈的全伺服控制。 1系统构成 本电机系统设计应用精密在螺纹非接触光电测试系统中,两相步进电机通过精密滚珠螺杆把电机的轴角运动转化成直线位移运动,带动负载平台及上边安装的测试系统在螺管内部进行直线运动,实现对螺纹的实时检测。由于螺纹检测属于精密检测,对精密位移台的定位精度、速度范围和速度稳定性提出了很高的要求,因此步进电机采用开环控制方式是达不到系统的指标要求的,针对系统的要求步进电机要采用闭环细分控制方式。 电机控制系统设计采用有传感器反馈的全伺服控制方法。其系统组成包括四部分:(1)使用89S52单片机实现电机控制器设计;(2)电机细分驱动器采用东芝公司生产的TA8435电机驱动专业芯片实现电机细分驱动器的设计;(3)位置反馈传感器采用分辨率 1 图1步进电机闭环细分控制系统功能图 Fig.1Diagram for close-loop subdivision control system func- tion of stepper motor 2细分驱动器设计 结合螺纹检测系统对位移平台定位精度和速度范围的要求,步进电机步距角不能满足使用条件,在设计中采用细分驱动的方法,细分驱动电路是通过对步进电机的励磁绕组中电流的控制,来调整步进惦记步距角的大小,把原来的一个整步步距角细分成若干步来完成,从而实现步进电机的高精度定位,提高了步进电机的分辨率。实现细分驱动的方法有很多种,设计中使用了东芝公司生产的单片正弦细分二相步进电机驱动专用芯片TA8435,芯片采用的是脉宽调制式斩波驱动,该芯片有电路连接简单,工作稳定,特点如下: (1)工作电压范围宽(10 、B+、B 图2细分驱动电路原理图 Fig.2Circuit schematic diagram of subdivision driving 在系统中使用的位移平台螺杆导程L为4mm (即电机轴转动一周负载平台的直线位移量),细分数为为0.9° ,分数为 而转台的移动速度和脉冲频率、细分选择、电机本身的固有频率有关。在设计中由89S52的内部 定时器

步进电机细分驱动电路及原理(后面是已经编好的程序改改就可直接使用)

步进电机细分驱动电路及原理(后面是已经编好的程序改改就可直接使用) 细分原理分析 步进电机驱动线路,如果按照环形分配器决定的分配方式,控制电动机各相绕组的导通或截止,从而使电动机产生步进所需的旋转磁势拖动转子步进旋转,则步距角只有二种,即整步工作或半步工作,步距角已由电机结构所确定。如果要求步进电机有更小的步距角,更高的分辨率,或者为了电机振动、噪声等原因,可以在每次输入脉冲切换时,只改变相应绕组中额定的一部分,则电机的合成磁势也只旋转步距角的一部分,转子的每步运行也只有步距角的一部分。这里,绕组电流不是一个方波,而是阶梯波,额定电流是台阶式的投入或切除,电流分成多少个台阶,则转子就以同样的次数转过一个步距角,这种将一个步距角细分成若干步的驱动方法,称为细分驱动。在国外,对于步进系统,主要采用二相混合式步进电机及相应的细分驱动器。但在国内,广大用户对“细分”还不是特别了解,有的只是认为,细分是为了提高精度,其实不然,细分主要是改善电机的运行性能。由于细分驱动器要精确控制电机的相电流,所以对驱动器要有相当高的技术要求和工艺要求,成本亦会较高。 图3 给出了三相步进电机八细分时的各相电流状态。由于各相电流是以1P4 的步距上升或下降的,原来一步所转过的角度θ将由八步完成,实现了步距角的八细分。由此可见,步进电机细分驱动的关键在于细分步进电机各相励磁绕组中的电流。 步进电机细分驱动电路 为了对步进电机的相电流进行控制,从而达到细分步进电机步距角的目的,人们曾设计了很多种步进电机的细分驱动电路。随着微型计算机的发展,特别是单片计算机的出现,为步进电机的细分驱动带来了便利。目前,步进电机细分驱动电路大多数都采用单片微机控制,它们的构成框图如图4 所示。单片机根据要求的步距角计算出各相绕组中通过的电流值,并输出到数模转换器(DPA) 中,由DPA 把数字量转换为相应的模拟电压,经过环形分配器加到各相的功放电路上,控制功放电路给各相绕组通以相应的电流,来实现步进电机的细分。单片机控制的步进电机细分驱动电路根据末级功放管的工作状态可分为放大型和开关型两种(见下图5)。 图5 步进电机细分驱动电路 放大型步进电机细分驱动电路中末级功放管的输出电流直接受单片机输出的控制电压控制,电路较简单,电流的控制精度也较高,但是由于末级功放管工作在放大状态,使功放管上的功耗较大,发热严重,容易引起晶体管的温漂,影响驱动电路的性能。甚至还可能由于晶体管的热击穿,使电路不能正常工作。因此该驱动电路一般应用于驱动电流较小、控制精度较高、散热情况较好的场合。开关型步进电机细分驱动电路中的末级功放管工作在开关状态,从而使得晶体管上的功耗大大降低,克服了放大型细分电路中晶体管发热严重的问题。但电路较复杂,输出的电流有一定的波纹。因此该驱动电路一般用于输出力矩较大的步进电机的驱动。 随着大输出力矩步进电机的发展,开关型细分驱动电路近年来得到长足的发展。目前,最常用的开关型步进电机细分驱动电路有斩波式和脉宽调制(PWM) 式两种。斩波式细分驱动电路的基本工作原理是对电机绕组中的电流进行检测,和DPA 输出的控制电压进行比较,若检测出的电流值大于控制电压,电路将使功放管截止,反之,使功放管导通。这样,DPA输出不同的控制电压,绕组中将流过不同的电流值。脉宽调制式细分驱动电路是把DPA 输出的控制电压加在脉宽调制电路的输入端,脉宽调制电路将输入的控制电压转换成相应脉冲宽度的矩形波,通过对功放管通断时间的控制,改变输出到电机绕组上的平均电流。由于电机绕组是一个感性负载,对电流有一定的波波作用,而且脉宽调制电路的调制频率较高,一般大于20 kHz ,因此,虽然是断续通电,但电机绕组中的电流还是较平稳的。和斩波式细分动电路相比,脉宽调制式细分驱动电路的控制精度高,工作频率稳定,但线路较复杂。因此,脉宽调制式细分驱动电路多用

步进电机细分驱动

技术文档-步进电机多级细分驱动方法研究 步进电机作为电磁机械装置,其进给的分辨率取决于细分驱动技术。采用软件细分驱动方式,由于编程的灵活性、通用性,使得步进细分驱动的成本低、效率高,要修改方案也易办到。同时,还可解决步进电机在低速时易出现的低频振动和运行中的噪声等。但单一的软件细分驱动在精度与速度兼顾上会有矛盾,细分的步数越多,精度越高,但步进电机的转动速度却降低;要提高转动速度,细分的步数就得减少。为此,设计了多级细分驱动系统,通过不同的细分档位设定,实现不同步数的细分,同时保证了不同的转动速度。 1 细分驱动原理 步进电机控制中已蕴含了细分的机理。如三相步进电机按A→B→C……的顺序轮流通电,步进电机为整步工作。而按A→AC→C→CB→B→BA→A……的顺序通电,则步进电机为半步工作。以A→B为例,若将各相电流看作是向量,则从整步到半步的变换,就是在IA与IB之间插入过渡向量IAB,因为电流向量的合成方向决定了步进电机合成磁势的方向,而合成磁势的转动角度本身就是步进电机的步进角度。显然,I AB的插入改变了合成磁势的转动大小,使得步进电机的步进角度由θb变为0.5 θb,从而也就实现了2步细分。由此可见,步进电机的细分原理就是通过等角度有规律的插入电流合成向量,从而减小合成磁势转动角度,达到步进电机细分控制的目的。 如图1所示,在三相步进电机的A相与B相之间插入合成向量AB,则实现了2步细分。要再实现4步细分,只需在A与AB之间插入3个向量I1、I2、I3,使得合成磁势的转动角度θ1=θ2=θ3=θ4,就实现了4步细分。但4步细分与2步细分是不同的,由于I1、I2、I3 3个向量的插入是对电流向量IB的分解,故控制脉冲已变成了阶梯波。细分程度越高,阶梯波越复杂。 图1 步进细分原理 在三相步进电机整步工作时,实现2步细分合成磁势转动过程为IA→IAB→IB;实现4步细分转动过程为IA→I2→IAB……;而实现8步细分则转动过程为 IA→I1→I2→I3→IAB……。可见,选择不同的细分步数,就要插入不同的电流合成向量。 2 多级细分驱动系统的实现 2.1 系统组成 如图2所示,系统由主机、键盘输入系统、步进显示系统、步进控制系统组成。主机采用AT89C51单片机,其为低功耗的8位单片机,片内有一个4K字节的Flash

步进电机驱动方案概述

步进电机驱动方案概述 众所周知,步进电机的驱动方式有整步,半步,细分驱动。三者即有区别又有联系,目前,市面上很多驱动器支持细分驱动方式。本文主要描述这三种驱动的概述 如下图是两相步进电机的内部定子示意图,为了使电机的转子能够连续、平稳地转动,定子必须产生一个连续、平均的磁场。因为从宏观上看,电机转子始终跟随电机定子合成的磁场方向。如果定子合成的磁场变化太快,转子 跟随不上,这时步进电机就出现失步现象。 既然电机转子是跟随电机定子磁场转动,而电机定子磁场的强度和方向是由定子合成电流决定且成正比。即只要控制电机的定子电流,则可以达到驱动电机的目的。下图是两相步进电机的电流合成示意图。其中Ia是由A-A`相产生,Ib是由B-B`相产生,它们两个合成后产生的电流I就是电机定子的合成电流,它可以代表电机定子产生 磁场的大小和方向。 有了以上的步进电机背景描述后,对于步进电机的整步、半步、细分的三种驱动方式,都会是同一种方法,只是电流把一个圆(360°)分割的粗细程序不同。 整步驱动 对于整步驱动方式,电机是走一个整步,如对于一个步进角是3.6°的步进电机,整步驱动是每走一步是走3.6°。下图是整步驱动方式中,电机定子的电流次序示意图: 由上图可知,整步驱动每一时刻只有一个相通电,所以这种驱动方式的驱动电路可以是很简单,程序代码也是相对容易实现,且由上图可以得到电机整步驱动相序如下: BB’→A’A→B’B→AA’→BB’

下图是这种驱动方式的电流矢量分割图: 可见,整步驱动方式的电流矢量把一个圆平均分割成四份。 下图是整步驱动方式的A、B相的电流I vs T图: 可以看出,整步驱动描出的正弦波是粗糙的。使用这种方式驱动步进电机,低速时电机会抖动,噪声会比较大。但是,这种驱动方式无论在硬件或软件上都是相对简单,从而驱动器制造成本容易得到控制。 半步驱动 对于半步驱动方式,电机是走一个半步,如对于一个步进角是3.6°的步进电机,半步驱动是每走一步,是走 1.8°(3.6°/2)。 下图是半步驱动方式中,电机定子的电流次序示意图: 由上图可见,半步驱动方式的比整步驱动方式相对复杂一些,在同一时刻,可能两个相都需要被通电,如果要求电机转动的力矩平稳,则需要在两相同时通电时,通电电流应该为单相通电电流的sin(45°),即√2/2。当然,可以直接通以和单相通电流相等的电流,结果是电机转动过程中的力矩不恒定,但它带来的好处是驱动电路或软件编写的简化。具体应用视实际场合而定。以下是这种的驱动方式的驱动相序: BB’→BB’ A’A→A’A→B’B A’A→B’B→B’B AA’→AA’→AA’ BB’

相关主题