摘要:MC33991是Motorola公司生产的两相步进电机驱动器,可以准确地控制步进电机的运动并及时反馈步时电机的工作状态。该电路有良好的抗干扰能力,可以灵活地控制驱动步时电机,是汽车电子设备特别是汽车仪表中的理想驱动器。
关键词:步时电动机 驱动器 SPI MC33991 汽车仪表
1 MC33991的主要特点
MC33991是单独封装、通过SPI(同步串行外设接口)进行通信、可同时控制二个步进电机的驱动电路。该电路由4个可驱动线圈的功率H桥和辅助逻辑控制器组成。每组H桥的驱动可用来控制步时电机的速度、旋转方向及每相线圈中电流的大小。MC33991有良好的抗干扰能力,可以十分灵活地驱动步进电机,因此是汽车电子设备特别是汽车仪表的理想驱动器。只要做一些外围设备的改进,该电路也可以仿照气隙磁通的运行,把普通电机转化为步进电机来控制。MC33991的特性如下:
·最小的上层处理器(不需其他外设即可直接驱动电机);
·仿效普通电机的运动进行控制,使电机有完美的动态和静态性能;
·有4096个静态指示位置;
·最大指针扫过范围为340°;
·最大指针速度为400 deg/s;
·最大指针加速度为4500deg/s2;
·应用微步距控制技术(每步细分为12个微步);
·指针回零校准;
·有16位SPI;
·内部时钟校准;
·睡眠模式下的耗电量较小。
2 结构原理与引脚功能
2.1 内部结构
MC33991的内部结构框图如图1所示,它由PI、逻辑电路、电压/温度检测及功率H桥等模块组成。MC33991主控电路先将驱动命令通过SPI以串行数据的方式输出,再通过逻辑电路将命令转化成驱动信号以驱动功率H桥,H桥输出电流直接驱动步进电机,同时MC33991中的电压/温度等检测模块可以随时检测电机的动转状态,并将检测结果通过SPI以串行输出方式将数据反馈给主控电路。
2.2 引脚功能
COS+、COS-、SIN+与SIN-:H桥输出端。它们分别是H功率桥中各个半桥的输出端。H功率桥可以直接线性控制步进电机的二组线圈,使其在4象限中运动。
GND:接地端,包括与晶闸管相连的输出地及逻辑地,同时具备散热作用。
CS:片选输入端,与片选信号相连。
SCLK:串行时钟,该引脚与主控电路的时钟相连,决定串行外围接口的时钟频率的大小。信号的占空比为50%,由CMOS电平驱动。
SO:串行输出端,该引脚与主控电路外围串行接口的输入端或者与其他驱动电路的串行输入端相连。输出为CMOS电平,输出的数据为状态反馈信息或报错信息。
SI:串行输入端,该引脚与主控电路外围串行接口的输入端相连,接收主控电路提供的控制信号,SI端在电路内部有上拉电阻器,要由CMOS电平驱动。
RTX:多元输出。指针回零时要用此引脚。
VDD:电源输入端,为逻辑电路及SPI供电,电压为4.5~5.5。
RST:复位端,当主控电路要复位或者要使电路进入睡眠状态时,应将此引脚置0使电路回到默认状态。该引脚在电路内部接有上拉电阻器。
VPWR:电池电压,电源输出端。电压范围为6.5V~26.0V,工作电流小于6.0mA。
图2
3 SPI的引脚及通信协议
SPI为同步串行外部设备接口,可以进行16位数据的双向传输,MC33991中有4个引脚:SI、SO、SCLK、CS与之相关。其中SI与SO引脚遵循先入先出(FIFO)协议进行数据输入和输出。所有输入引脚都需要5.0V的CMOS驱动电平。下面具体加以介绍:
片选端CS:是主控电路与MC33991进行通讯的使能端。当CS为0时,MC33991型步进电机驱动器与主控电路传输数据。MC33991在CS端输入信号的上升沿锁存输入数据,当CS为0时,输出端SO输出信号有效;当CS为1时,SI与SCLK引脚的输入信号被忽略,SO端为高阻状态。只有当SCLK为0时,CS端的信号才可以由1转换为0,CS端在电路内部接上拉电阻器,专门控制I/O端口。
串行时钟输入端SCLK(同步时钟):SCLK端口为MC33991内部寄存器转换提供时钟信号。在其下降沿SI的信号被转换到寄存器内部,在其上升沿同时SO的信号将寄存器中的数据转换成输出信号,SCLK引脚在电路内部接下拉电阻器。
串行输入端SI:SPI的输入端,串行输入信号在SCLK的下降沿被读取。输入的数据为16位,从最高位(MSB)开始传输。其他的多重数据信息(16位以后的数据)将被忽略,传输完16位数据后,在传输新数据之前CS必须置1。当CS为高电平时,输入数据被忽略。
串行输出端SO:寄存器的输出端口,有3种状态(0、1、高阻)。数据在SCLK信号的上升沿被输出,当CS为高电平时,SO引脚为高阻状态。
4 MC33991的寄存器
MC33991型驱动器可以与微处理器直接相连,并通过16位SPI进行数据传输,微处理器向驱动器输入控制数据,驱动器向微处理器输出反馈信息。MC33991内部的寄存器及其功能如表1所列。
表1 MC33991内部寄存器
地址(13~15位) | 用 途 | 名 称 |
000 | 能量、使能以及校准寄存器 | PECR |
001 | 最大运行速度寄存器 | VELR |
010 | 步进电机0的位置寄存器 | POS0R |
011 | 步进电机1的位置寄存器 | POS1R |
100 | 回零寄存器 | RTZR |
101 | 回零配置寄存器 | RTZCR |
110 | 未用 | |
111 | 测试用 |
MC33991内部有6个寄存器,分别用来控制和记录4个H桥的输出状态,它们的地址由SPI所输入的16位数据中的15-13位来决定,主要功能如下:
(1)控制方面
·独立控制每个电机的工作;
·控制电源的升降;
·校准内部时钟;
·决定步进电机指针的位置和移动的速度;
·控制指针的回零校准。
(2)状态输出方面
·分别指示玩二个步进电机是否有过热现象;
·指示电池电压是否过高;
·指针回零状态指示;
·内部时钟状态指示;
·指示输出与指针运动是否相符。
在这6个寄存器中,能量、使能及校准寄存器(PECR)能够使主控电路独立控制每个步进电机驱动信号的输出或禁止。同时还可以帮助校准电路的内部时钟,发出空指令以得到状态位的数据,还可以控制MC33991使其工作在“睡眠状态”。
图3
最大运行速度寄存器(VELR)的第0-7位可以表示0-255个不同的数据,用来设定电机运行的最高速度,第8位和第9位分别用来控制是否将这一最大速度应用到各个步进电机上。
步进电机0/1的位置寄存器(POS0R/POS1R)可以分别确定0号步进电机和1号步进电机指针的位置。寄存器的0-11位表示4096个不同的数据,从而使电机批易地的位置在0-4095之间变化。
回零寄存器(RTZR)的第0位决定是哪个电机回零,第1位为回零的使能位。2-3位决定输出哪8位数据,第4位为决定是无条件回零还是自动回零,5-12位必须置0。
回零配置寄存器(RTZCR)用来设定指针回零需用的参数,主要包括每一整步所用的时间、速率及空白时间的大小。空白时间指一相线圈断电与下一相线圈通电之间的延迟时间(512μs或768μs)。该寄存器还可用来判断指针的状态是运动还是静止。
状态输出寄存器:当CS为低电平时,状态输出寄存器会把它其中的16位数据通过SO端输入到主控电路,为主控电路提供步进电机驱动及运行状况的信息。此寄存器为只读寄存器。其中15-8位和第7位用来指示内部时钟是否需要校准;第6位用来指示驱动电源电压是否正常;第5/4位用来指示在上一条指令发出后1/0号步进电机的状态(正步/运动);第3/2位指示步进电机1/0是否处在回零状态;第1/0位指示步进电机1/0的温度是否正常。图2和图3分别示出MC33991的输入、输出时序。