EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
步进电机是一种将电脉冲信号转换成相应的角位移的特殊电机,每改变一次通电状态,步进电机的转子就转动一步。目前大多数步进电机控制器需要主控制器发送时钟信号,并且要至少一个I/O口来辅助控制和监控步进电机的运行情况。在单片机或DSP的应用系统中,经常配合cpld或者FPGA来实现特定的功能。本文介绍通过FPGA实现的步进电机控制器。该控制器可以作为单片机或DSP的一个直接数字控制的外设,只需向控制器的控制寄存器和分频寄存器写入数据,即可实现对步进电机的控制。2 z: A7 D& u: _$ z6 X
1 步进电机的控制原理
9 E5 j3 r7 c g( C, [ 步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合对数字系统的控制。步进电机可分为反应式步进电机(简称“VR”)、永磁式步进电机(简称“PM”)和混合式步进电机(简称“HB”)。 2 e( N/ Y9 I6 p& o' ?3 [
步进电机区别于其他控制电机的最大特点是,通过输入脉冲信号来进行控制,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。 ; F: J. Y. c! v) m% J
步进电机的驱动电路根据控制信号工作,控制信号由各类控制器来产生。其基本原理作用如下: - V% G. K+ x! G& w9 c" w1 {
① 控制换相顺序,通电换相。这一过程称为“脉冲分配”。例如:四相步进电机的单四拍工作方式,其各相通电顺序为A—B—C—D。通电控制脉冲必须严格按照这一顺序分别控制A、B、C、D相的通断,控制步进电机的转向。如果给定工作方式正序换相通电,则步进电机正转;如果按反序换相通电,则电机就反转。 0 R) N5 j$ `, s4 _+ R; X: R( ^; w
② 控制步进电机的速度。如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。两个脉冲的间隔越短,步进电机就转得越快。调整控制器发出的脉冲频率,就可以对步进电机进行调速。 # y, t! |8 h& u) ]' N+ N/ h
2 控制器的总体设计 1 M5 }0 O" c! J1 h
控制器的外部接口电路如图1所示。各引脚的功能如下:
0 G9 T4 E# G' {2 c6 K, N& \ ![]() $ B' D( m. h8 i0 g
data[7~0] 控制器与单片机等设备的总线接口;
# c; u0 _3 [. f0 X cs片选信号,低电平有效; 8 O1 D* j8 v5 r# L) N; H
wr写信号,低电平有效;
2 |. L4 ?4 {. W# a! x reset复位信号,低电平有效; : S8 k# Q- X: }' \ }- O7 f
adr[1~0] 内部寄存器地址信号,与单片机等设备地址线相连; * O; U6 c6 N2 _- _
clk待分频的时钟,可由FPGA提供;
+ g& W: `7 o+ l9 ]: U$ e abcd[3~0] 四相位输出。 6 v/ [; }5 e! x9 Q9 d
控制器的内部原理框图如图2所示,由命令字寄存器(Cmd_reg)、分频系数备份寄存器(fdiv_back)、分频器、相位输出状态机组成。 " Q, ^! X. _! d
其中命令字寄存器(Cmd_reg组成如下(对应的地址为“00”):
, Q& n# u! H7 M9 `1 P1 [8 S X未用位。
$ V6 z' Y8 y2 P4 `% k4 r. | Ini 对控制器初始化为1时有效。当该位为1时,备份寄存器的数据直接装入分频器的寄存器reg_data[15~0],装入后由硬件自动置0。 1 Z" A! C1 A5 B; B0 H6 P9 q
New 当对正在运行的控制器写入新的分频系数时,对该位置1;当下一个分频器输出的clkout时钟来到时,将fdiv_back写入到reg_data[15~0]中,分频器便按新的分频系数进行分频。 3 @9 L9 |6 p/ Z3 k
![]() . h! U8 W7 V; ^: Y1 ?0 R- m
Manner[1~0] 电动机的驱动方式,用来控制相位输出状态机的输出,“00”表示单四拍方式,四相位输出为(A—B—C—D);“01”表示双四拍,四相位输出为(AB—BC—CD—DA),八拍(A—AB—B—BC—C—CD—D—DA)。 ! y( y: `, o, r) k* ]. K* O3 E7 H
分频系数备份寄存器(fdiv_back) 两字节寄存器,reg_data[15~0]为分频器的一个16位寄存器,接收fdiv_back的值,对系统的分频为2~65 536。对于12 MHz的输入频率,分频后频率为6 MHz~183 Hz,(本设计中,步进电机的启动转速、转距、加速度由使用者根据实际情况自己计算)分频后每个clkout走一个步距角。对于步距角为1.8°的电机,可以满足各种速度的要求。 9 i' T* h4 Z* H
3 分频器的设计 ; p- S% ]2 ~, Y9 p* ?
分频器是该控制器实现的关键,在这里作为一个独立的模块,data[15~0]为分频系数。系统时钟Clk被分频系数寄存器中值分频后,输出Clkout作为相位输出状态机的时钟,每个Clkout到来时,产生一次相位转换,步进电机运行一个步距角。分频器的程序如下: / P: z' L7 m2 }
![]()
; Z) C% F) @( B; A) j* k8 j' g ![]() 5 v1 z0 a( D0 B, c% m6 v# Q; J% Q3 s
+ R5 N" D9 V) S* o 图3所示为3分频时单四拍的输出仿真图。 ) r4 p1 \- D# l' `* j; T6 F( @
: @( b) w* N3 T# D( W' W: B
结 语 $ G8 T" i& m: _+ h$ I
本文的创新点为将该步进电机控制器的控制字和分频系数映射在主控制器(DSP或单片机等)的内存空间,控制时仅需对其进行写操作,使步进电机的控制变得简单方便;而且,可节省主控制器(DSP或单片机等)的外围资源,减少板上负载。系统中可以加入电机运行总步数控制寄存器及其电路、加速度寄存器及其控制电路等,打造一个更智能的步进电机控制器。 & Q& O" v R) ^6 i7 f
|