EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
摘 要:本设计应用Altera 公司的Cyclone II系列的FPGA(现场可编程门阵列)实现了对步进电机正弦波可变细分控制,并在FPGA中进行了具体验证和实现。该方案综合运用了电流跟踪型SPWM技术、PI调节、片上可编程系统SOPC技术、EDA技术等。步进电机控制系统用FPGA实现了Nios II软核处理器与硬件逻辑电路集于一体,发挥了处理器的灵活性和数字逻辑电路高速性,有效地解决了步距角的高细分问题,细分数最高达4096,而且细分数可自动调节。实验表明高细分大大提高了步进电机的控制精度,降低了电机运行噪声消除了低频振荡。6 \7 u) l/ k5 q/ S. {; K
. D$ `! T! ~) R) w0 c9 B2 A! P 关键词: 步进电机驱动器;Nios II;细分;FPGA 1 引言
6 f2 ~. O6 B2 x y3 B; g6 y6 z3 p k, n9 X. G% A6 A% u0 `2 F ~) D
步进电机是一种将电脉冲信号转换成相应的角位移(或线位移)的机电元件,具有结构简单坚固耐用工作可靠的优点因此广泛应用于工业控制领域。由于脉冲的不连续性又使步进电机运行存在许多不足之处,如低频振荡、噪声大、分辨率不高及驱动系统可靠性差等,严重制约了其应用范围。步进电机的细分控制有效地解决了这一问题,但是传统的步进电机驱动系统大多数采用的是用单片机作为控制芯片,外加分立的数字逻辑电路和模拟电路构成。受单片机工作频率的限制,细分数不是很高,因此驱动器的控制精度较低,控制性能不是很理想。随着高性能数字信号处理器DSP的出现,以DSP为控制核心,以软件方式实现电机控制一度成为研究的热点。近年来随着可编程逻辑器件的飞速发展,使得可编程逻辑器件功能越来越强大从而促使高集成化高精度驱动器的出现。因此本文提出了一种基于SOPC片上可编程的全数字化步进电机控制系统,本系统是以FPGA为核心控制器件,将驱动逻辑功能模块和控制器成功地集成在FPGA上实现,充分发挥了硬件逻辑电路对数字信号高速的并行处理能力,可以使步进电机绕组电流细分达到4096,且细分数可以自动调节,极大地提高了控制精度和驱动器的集成度,减小了驱动器体积。
6 L) @4 t1 K* D o( x! w) ^3 v) m' p* a" U
2 步进电机细分驱动原理
$ C' p4 P j- j& X, i& m; E6 p: o3 g2 S2 z
步进电机的细分控制本质上是对步进电机励磁绕组中的电流进行控制,在普通驱动方式下,驱动电路只是通过对电动机绕组激磁电流的“开”和“关”,使步进电动机转子以其本身的步距角分步旋转。步进电动机靠定子、转子磁极间的电磁力来进行工作,当它处于“双拍”状态工作时,其定位位置是正好位于两通电磁极的中间,即依靠两通电磁极电磁吸引力的平衡而获得的。由此可以推论:如果能够进一步仔细地控制两磁极电磁吸引力的大小,使转子磁极获得更多种由于两相定子磁极的电磁吸引力差异而形成的平衡定位位置。步进电机细分驱动方式就是应用了这一原理,在细分驱动时,细分控制器通过控制各相激磁绕组电流的逐步增大及逐步减小,让转子处于多个磁力平衡状态使电机内部的合成磁场为均匀的圆形旋转磁场,实现步距角变小、电动机的旋转得到细化的目的。合成的磁场矢量的幅值决定了电机旋转力矩的大小,相邻两个合成磁场矢量的夹角大小决定了该步距角的大小。对于三相步进电机而言,向A、B、C绕组分别通以相位相差2/3π,而幅值相同的正弦波电流(图1),则合成的电流矢量在空间做幅值恒定的旋转运动,其对应的合成磁场矢量也作相应的旋转从而形成旋转力矩(图2)。% m) g# w, M& ?% O5 M
' s5 f# P; E8 L5 e6 U- a
A、B、C三相瞬时电流值如式(1)、(2)、(3)所示。 (1)
(2)
(3)
![]()
图1 步进电机正弦细分三相绕组电流波形图 ![]()
图2旋转力矩图 细分驱动方式下,由于步距角小,步进电机的控制精度明显提高,同时这种驱动方式又有效抑制低速运行中产生的噪声和振荡现象。. i4 I0 v8 t- A. u0 g- ^7 w
( P" k/ k1 ^# B/ o' u. i
3 控制器总体设计方案1 A5 |# R1 O$ \. p e
( |1 T. |! d9 \/ J& @& J 步进电机三相绕组的电流是正弦阶梯电流,通过改变给定电流的每一次变化的阶梯数可以实现可变细分功能。驱动器的任务就是控制绕组的电流,使之按正弦阶梯波的规律变化。每给一个步进脉冲,A、B、C三相绕组的电流沿正弦阶梯波前进一步,电机转动一个步距角。步进电动机驱动主回路图如图3所示IA、IB为两个霍尔元件。图中6个IGBT集成在电源控制模块IPM内。 ![]()
图3 步进电动机驱动主回路图 步进电机控制系统框图如图4所示。采用FPGA作为主控制芯片, 将控制器与驱动器的数字电路部分集成在一片FPGA上实现。为了控制绕组电流,在设计中引入电流跟踪型闭环反馈,反馈电流与给定的正弦电流(离散的正弦表)经过改进的比例积分PI调节后进行SPWM调制,输出6路PWM波,来控制驱动电路三个桥臂上的6个IGBT开通关断。如果忽略死区时间控制每个桥臂的上下半桥的两路PWM波互补即上半桥PWM波为高/低电平时,下半桥PWM波为低/高电平。系统采用14位宽度200MHz计数器产生PWM载波,载波频率12.2KHz,电流数据全部采用14位精度进行离散化。200MHz时钟由50MHz时钟经PLL倍频产生。FPGA输出的PWM波经功率模块放大后,控制步进电机运行。步进电机运行状态(转速和转向)通过LED指示。步进电机转速是由查表速度决定的,CP是用来决定查表频率,在细分等级一定的情况下CP速度越高电机转速越快。如果电机在高细分下高速旋转则CP脉冲频率就会很高,导致PWM脉宽过小,使功率模块IGBT控制桥臂频繁开关,其结果是开关损耗大为增加,功率模块过热。而高细分在步进电机高速旋转时其优势并不明显,所以在不影响电机运行精度的情况下,系统根据转速对细分精度在4096、2048、1024、512、256、128、64、32之间自动调节,使电机更加平稳可靠的运行。 ![]()
图4 控制系统框图 3.1 FPGA结构设计- f7 h+ f% H3 H+ a6 H- Q
2 R1 M7 ?5 g0 ]- E9 K3 h1 n# |: q
本系统是由集成在系统采用层次化开发方式,顶层模块由多个子模块组合而成,FPGA设计系统框图如图5所示。系统由Nios II微处理器模块和数字逻辑模块组成。 ![]()
图5 FPGA设计系统框图 控制器采Nios II的32位CPU软核,由SOPC Builder 生成。用来接收外界控制信号并把信号处理后送给脉冲发生器,并通过输出端口控制LED来指示系统工作情况。系统顶层设计图如图6所示,系统由CPU软核(stepmotor_controller、CP发生器(PatternGenerator)、正弦查表控制模块(inteRFace)、A/D电流采样模块(currenttop)、C相电流计算模块(Current_c)调节模块、PI调节模块(pimodule)、PWM发生模块(PWM)组成,各模块功能如下:: _, u A' r7 S; A
0 ~1 @" D/ m! I- i$ S$ I' T: w* _
CPU:接受外界控制信号把信号处理后得到相应的细分等级和与速度对应的控制信号送给CP发生器,把转向信号处理后送到查表控制模块,并把转速和转向信号送到LED数码管和发光二极管来指示电机运行情况;
" p+ q4 C3 Q% m2 j) r5 v% Q" [& t$ W
X7 W2 S! h! z CP发生器:接受转速控制信号发出与转速相对应的CP脉冲并给出相应转速下对应的最佳细分等级;
; ~2 j7 o- p; Z- T) ?- J- q% a正弦查表控制模块:根据CP脉冲和细分等级进行查表产生参考电流,根据转向控制信号来决定查表方向来实现转向控制;
9 ?, A, G* R9 K6 Z7 I( r
& [) ^ O) ?, \# Z1 S! Y% J A/D电流采样模块:采集步进电机A、B两相电流值;
5 C2 W* o, N5 |+ m
( A- f7 N# A9 z C相电流计算模块:根据基尔霍夫电流定律A、B、C三相电流之和为零,由A/D采集的A、B两相的电流计算出C相电流;3 [0 L8 M9 V% o; r
6 n9 C" h( f; Z# j# F; z PI调节模块:将参考正弦电流与反馈电流差值进行PI调节,把调节后的控制信号,为了防止IPM内上下半桥的IGBT同时导通,导致IPM短路,PI模块内设置的了死区时间。 ![]()
图6 系统顶层设计图 顶层接口说明: 0 K. Q' F, ~+ g) |) {
AD_in_a、AD_in_b 是 AD1674转换输出的数字信号;2 p# \0 S8 i9 i. n* L; y, j
AD_CE、AD_RD、AD_STS为AD的控制信号;
( C$ m& ^- h. f+ Y; Z- A' cclk、reset分别为系统时钟输入端口和系统复位端口;
( l S( O! j J/ zenable端口是PWM发生器使能端,功率模块温度过高热保护就会动作将enable置0停止发出PWM波,保护驱动器;0 u$ S" G: m4 u" d7 G: |" f
setspeet、rotate_dirc分别为转速和转向控制端口;
b2 r5 Z3 S0 W' A% _+ ?: y0 t3 v% yled_sel、speeddisplay、led_indicator为工作情况指示电路;
4 ?3 U' N( m1 T1 f3 V9 X* _pl_a、ph_a、pl_b、ph_b、pl_c、ph_c为A、B、C三相桥臂的上下半桥控制端;
3 ]( l1 t' ?; S4 p- I3 ^# Z: D" k8 b D4 ?1 I) c9 a7 n7 r0 F
3.2 Nios II软核设计
) E; j- C# f9 |' J7 q9 h! a2 M9 ^/ c" H
在本控制器中利用CPU控制灵活的功能用来接受并处理外界控制号再将处理过的控制信号送到各个功能模块,因此Nios II软核采用了经济型即Nios II/e,加入了用于输入输出端口(PIO)、片上存储器模块(On chip Memory)。控制器程序流程图软件程序工作流程如图7所示。 ![]()
图7 CPU控制流程图 CPU内部程序采用C++语言编写,并对电机的控制状态建立类。通过对电机的控制状态对象的操作,即可输出各种控制命令到接口模块和CP脉冲发生模块,控制电机状态;同时在程序主循环中监视用户的各种输入,更新电机的控制状态对象的成员变量。
2 G5 H) [3 ^0 O, A% O& l: O* C8 m c$ N
3.3 CP发生器模块和查表控制模块
3 t E6 u: J! M3 @1 E+ a2 b" S1 G* @% l4 n- x6 \. M( a$ m; w
PatternGenerator模块根据设置的电机转速产生相应的CP脉冲和在该转速下的最适宜的细分等级,并把这些信号传送给查表控制模块。CP发生器模块和查表控制模块如图8所示。 ![]()
图8 CP 发生器模块和查表控制模块 查表控制模块(interface)内部例化了一个只读存储器,存放一个周期的正弦数据表。正弦表数据宽度与系统数据流数据宽度一致,因此选择14位宽度。正弦表深度决定了驱动器的最大细分等级,关系式表示为:NMAX=2N,当N=12时,达到最高细分等级4096细分。外部输入CP和CCW信号后,通过顺序的给出三相绕组对应的地址数据,即可查得三相相电流的给定数据,并同时更新三个给定数据寄存器,送入下一个环节。转向交换也在本模块实现。输入的CCW信号将控制一个路选择器,控制正弦表的查表方向来改变步进电机转向。本模块通过输入的细分等级信号和CP脉冲信号共同决定三相绕组的地址数据的每次增量大小。当细分等级最高时,地址计数器每次增1或减1;当处于非最高细分精度时,地址计数器每次递增2的N次幂,N由当前的细分等级确定。
) g" r6 B' ?9 x7 ?2 L8 ]' p# d; m+ {- D2 R) f- X
3.4 AD采样模块与C相电流计算模块+ K/ ~8 s- B) }" _$ _( h
6 v ]% e$ M* [5 V4 X 步进电机A、B两相电流通过霍尔元件进行采集,AD采样模块通过采集采样电阻上的电压来将电机A、B两相电流的模拟量转换为数字量,C相电流模块由基尔霍夫电流定律ia+ib+ic=0计算得到。图9为两模块的端口。 ![]()
图9 AD采样模块与C相电流计算模块 3.5 PI调节模块# M f# Z c& f) i# m
1 M9 A) ^- n( j p0 N PI调节模块是对给定数据和反馈数据进行离散化PI调节。模块的数据宽度统一为14位,即给定数据/反馈数据/控制数据都用14位宽度无符号整型数据表示。本模块实现一个PI控制器功能,如图10所示。 ![]()
图10 PI控制逻辑框图 PI调节离散化公式如(4)式所示。( N! c) ]1 f9 ~3 H
6 F4 z9 {. u6 z; c- K& m& r% YI(K)=I(K-1)+KP*(E(K)-E(K-1))+KI*E(K) (4)4 N# E/ R" x. c0 N& o1 V5 ^8 ~
# R- y6 }$ m9 Z, R; j' r6 g" k; |, E7 Z其中,1500≤I(K)≤14384,I(0) = 8192,E(K)=IREF-IOUT
( r) o* \3 p* o/ P
# Y t: d4 {& A0 b- ~4 {+ d9 S 模块在收到启动信号后,先寄存给定数据/反馈数据,再对二者扩宽符号位做有符号减法,并启动KI乘法器计算KI乘以误差e的结果。对减法的计算结果取绝对值,并与阀值作比较(常数比较器),比较的结果存入寄存器。计算e的误差增量,即E(K)-E(K-1) ,并用KP乘法器计算KP乘以误差增量的结果。将KI乘法器计算的结果先送入累加器,然后再将KP乘法器计算的结果送入累加器;模块的累加器在每次累加的时候会进行溢出处理和数据超出边界处理,无论哪种情况都会置为边界值(最大/最小值)。 . m {& e1 x% a
" a8 s; | {) y1 q- c3.6 PWM发生器模块
' \- X1 Z1 S3 D' P0 x5 n7 ]- @9 l9 @8 H9 `; d& @: Q1 f$ M
PWM发生器模块将PI调节后输出的数据转化为PWM波形输出给IGBT模块,通过IGBT的通断切换调整相电压,进而改变相电流按照给定进行变化。PWM波形的生成是通过将给定控制数据和载波数据比较,通过比较二者大小情况确定PWM的高低电平,实现PWM调制,如图11所示。 ![]()
图11 PWM模块总体框图 锯齿波作为PWM载波,驱动时钟频率为200MHz,14位寄存器宽度。为减少计数器的进位链长度,采用计数器,拆分为3位计数器和11位计数器,减少了组合逻辑延迟。死区保护发生器模块根据给定的死区长度数据,将输入的PWM信号输出为PH和PL信号,分别对应IGBT的上下桥臂,并在PH和PL数据的变沿插入死区保护(同时置为低电平)。插入的死区保护是通过上升计数器和下降计数器来实现的,保证上桥臂和下桥臂不同时导通。
: X5 Q% f/ g; w" X+ ?+ z Q
5 r9 ]! z+ G9 @$ G4仿真结果
- H3 J' w9 N$ c F+ ^0 J# e$ j3 [4 d
对PWM模块进行功能仿真,仿真波形如图12所示。经分析,六路PWM波满足时序和死区保护的要求,实现了设计所要达到的目。将图12进行放大可见IGBT死区如图13所示。 5电机运行波形及分析# K& K8 _: x1 t! q2 T
# v' m& Z7 }3 [! g/ ]# N
把FPGA配置好之后,对系统调试电机运行时三相电流波形如图14所示,电机换向时进行反转查表,电机转速反转波形如图15所示。 实验结果表明步进电机运行时三相电流相位差120度,三相电流为正弦波,电机运行平稳,电机反转时进行反相查表,转换方向时反应时间短,电流波动小。$ r, g5 q+ [% ]+ s$ P3 `
9 g9 Q) g4 L X
6结论
. e/ l- \% E: J$ p6 u# d" }& B9 \# F$ E. m
本控制器采用Altera 公司嵌入Nios II处理器软核的FPGA实现了步进电机正弦波可变细分控制,大大提高了系统的可靠性,降低了设计成本。
# v: \- d9 I/ T, F
* @, _, h8 X; K8 q4 ` 控制部分采用Nios II CPU软核是系统控制更加方便灵活。CPU和各个控制模块集成在单片FPGA内,使驱动器集成度大为提高,减小了驱动器的体积。大大提高了细分精度,实现了步进电机在是低转速下的4096高细分的运行,消除了步进电机存在的低频振荡问题,控制精度显著提高,在高精密数控机床中有广泛的应用前景。
2 K9 n, i+ A/ g' o) B( A
3 }+ c. t' d- E4 s! z3 h4 l: p |