步进电机细分驱动的基本原理及基于FPGA器件实现设计

可编程逻辑

1367人已加入

描述

1、 引言

步进电机是把脉冲信号转换成角位移或直线位移的执行元件,是一种输出与输入数字脉冲相对应的增量驱动元件。具有定位精度高、惯性小、无积累误差、启动性能好、易于控制、价格低廉及与计算机接口方便等优点,被广泛应用于数控系统中。计算机技术的发展,促进了数字控制技术的发展。步进电机细分驱动技术可以减小步进电机的步距角,提高电机运行的平稳性,增加控制的灵活性等。利用FPGA中的嵌入式EAB可以构成存放电机各相电流所需的控制波形表,再利用数字比较器同步产生多路FPGA电流波形,对多相步进电机进行控制。若改变控制波形表的数据、增加计数器和比较器的位数,提高计数精度,就可以提高PWM波形的细分精度,进而对步进电机的步进转角进行任意级细分,实现转角的精确控制。

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

步进电机的驱动是靠给步进电机的各相励磁绕组轮流通以电流,实现步进电机内部磁场合成方向的变化来使步进电机转动的。即改变一次通电状态,转子转过一个步距角。该步距角的计算公式为:

cpld

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

cpld

在无细分的步进电机驱动系统中,通过各相绕组的电流幅值是不变化的,仅在各相通电状态变化时,α值才相应地变化。如对于三相步进电机来说,单三拍或双三拍运行时,α = l ;单双六拍运行时,α=2。如果要想增大α,必须使绕组中的电流按阶梯上升和下降,即在零与最大相电流之间有多个稳定的中间电流状态。图1所示为三相六拍四细分时各相电流波形,各相电流均以最大电流值的1/4上升和下降。与单双六拍方式相比,α值从2增加到8,步距角θb为三相六拍运行方式时的1/4。所以步进电机细分驱动的关键在于控制电机各相励磁绕组中的电流大小及其稳定性。

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

iA = imcosx

iB = imsinx

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

3、 基于FPGA的硬件实现

为了对步进电机的相电流进行控制,从而达到细分步进电机步距的目的,人们曾设计了多种步进电机的细分驱动电路。最初对电机相电流的控制是由硬件来实现的。这种细分驱动电路线路复杂,成本高,缺乏柔性,因此现很少采用。

随着大规模集成电路FPGA/CPLD的发展,为步进电机的细分驱动带来了便利。采用EDA技术进行控制设计,可根据细分要求的步距角计算出各项绕组中通过的电流,存储在FPGA的嵌入式ROM中。细分控制时,地址计数器自动产生地址送到LPM-ROM,根据不同的地址,LPM-ROM给出相应的数据到数字比较器,与线性锯齿波比较后输出PWM波形,控制功放电路给各相绕组通以相应的电流,实现步进电机的细分驱动。

3.1 系统构成

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

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

cpld

3.2 PWM控制电路

图3为步进电机PWM控制电路。CNT4是四进制计数器,构成PWM计数器,将整个PWM周期分成4等份,产生阶梯形上升的周期性锯齿波,同时加载到三相步进电机各相数字比较器的一端;CNT24是二十四进制计数器构成ROM地址发生器,计数器的up_down为方向控制,ENA为使能控制,clk_js速度控制,可以通过up_down、ENA和clk_js控制步进电机的旋转方向、工作/停止和旋转速度;ROM是宽度为9位,深度为32位的存储器,存放了各个时刻细分电流波形所对应的数值;COMPARE为数字比较器,用于ROM输出的数据和PWM计数器计数值的比较。

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

cpld

4、 仿真、测试结果分析

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

cpld

图4中也给出了步进电机从A-》AB-》B-》BC-》C-》CA-》A三相六拍工作过程的仿真波形。首先,步进电机A相导通,B、C相截止,q[8..0]输出数据为400;A相的数据为4,其他相的数据为0。然后逐渐过度到AB相导通,q[8..0]输出数据为410-》420-》430-》440, B相的数据逐渐增大,从1增大到4。电机中的磁场经过4拍,从A相转到了AB相。再经过4拍,从AB相转到B相;q[8..0]输出数据为340-》240-》140-》040, A相的数据逐渐减小,从4变为0。从A到AB到B共经过了8拍,实现了步距角的8级细分。此外由于步进电机是电感性负载,对输出的PWM电流具有平滑滤波作用,对电机线圈起作用的是PWM的平均电流,因此在效果上将图中的细小毛刺电流滤除。

5、 结论

通过利用FPGA中嵌入式EAB构成的LPM-ROM存放电机转角细分电流所需的数据表,由数字比较器同步产生多路PWM电流波形,对多相步进电机的转角进行均匀细分,有效地控制步进电机。若提高波形表数据的位数,增加计数器和比较器的位数,就可以提高PWM波形的细分精度,对步进电机的步进转角进行任意细分,实现步进转角的精确控制。此实现方法比目前单片机加D/A的控制方案更加高效。

本文作者创新点:通过利用FPGA中嵌入式EAB构成的LPM-ROM存放电机转角细分电流所需的数据表,由数字比较器同步产生多路PWM电流波形,对多相步进电机的转角进行均匀细分,有效地控制步进电机。

责任编辑:gt

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分