基于步进电机驱动器MC33991的设计


时间: 2024-07-09 15:29:34 |   作者: 电机

  国内常用的仪表步进电机驱动芯片包括瑞典SWITEC公司的X12.017、伟盈集团生产的VID66- 06和美国飞思卡尔公司生产的MC33991等。

  SWITEC公司生产的X12.017在国内应用较广,可以同时驱动4路十字线完全相同,其各项性能参数也基本相同。它们的主要特征如下。

  这种驱动器控制简单,输入信号CW/CCW控制步进电机的转动方向,输入信号F( scx)的上升沿驱动电机转动一个微步。通过发送脉冲的频率能控制电机的转动速度。

  MC33991是单独封装,通过SPI (串行外设接口)进行通信,可同时控制2个步进电机的驱动电路。该电路也可以仿照气隙磁通的运动,把普通电机转化为步进电机来控制。它有以下主要特征[3].

  MC33991可设定步进电机最大转速。其具有内部状态机,保证在正常操作时,驱动器接收到位置命令后,以恒定加速度到达最大速度,然后在合适的时间减速,并保证减速过程中不超过最大减速度,到达指定位置后速度等于零,避免指针抖动。此外, MC33991可以允许2个步进电机或其中之一工作。其内部诊断功能可诊断单个步进电机是否过热、电池电压过高或者过低、指针归零状态驱动器内部时钟的工作状态、确定仪表的指针是否在转动。由以上性能特点能够准确的看出, MC33991比X12.017和VID66-06功能更丰富,如过电压和过热诊断功能、回零校验功能。且使用X12.017和VID66-06作为驱动时,为使仪表指针运行平滑,必须在微控制器程序中对步进电机速度进行细分,否则易产生超调抖动。

  汽车在行驶过程中,汽车车速传感器产生频率与汽车车速成正比的脉冲信号,此脉冲信号经过滤波放大后送给微控制器,微控制器利用输入捕捉通道捕捉2次脉冲信号的间隔时间,并根据间隔时间计算汽车行驶速度。最后,微控制器把计算得到的速度转换成位置命令发送给MC33991, MC33991驱动步进电机指向对应的刻度。

  本设计选用微控制器MC68HC908GR16作为主控芯片,采用SWITEC公司生产的仪表用步进电机X15.288作为执行器。MC68HC908GR16是飞思卡尔半导体公司生产的8位微控制器,片内具有16 KBFLASH存储器和1 KB RAM存储器。其内部锁相环( PLL)可以把外部32.768 kHz晶振频率升频至8 MHz内部总线频率。微控制器内部集成了增强的串行通信模块( ESCI)、8路10位A/D模块、SPI模块、8位键盘模块,拥有2个独立的16位定时器,每个定时器都由1个定时计数器和2个输入输出通道组成。其内部还集成了定时基模块,可以定时把微控制器从STOP模式中唤醒。

  MC33991内部有6个寄存器,微控制器通过发送16位的SPI命令到这些寄存器来控制并读取MC33991的工作状态。16位SPI数据的15~13位是地址, MC33991接收到微控制器的命令后,把命令的15~13位与这些地址对比,并把数据放到对应的寄存器。这些寄存器的地址与功能如表1所列。微控制器通过这一些寄存器来控制电机的最大速度、指针位置、指针回零,并读取电机的运作时的状态、线圈是否过热、电压是否过高或过低。

  硬件电路包括速度传感器信号调理电路、微控制器与MC33991的接口电路。

  车速传感器把车速信号转化为脉冲信号,其频率与车速成正比。此脉冲信号经过调理电路送给单片机的T1 CH0 ( Timer 1 channel 0) ,速度脉冲的调理电路如图1所示。在没脉冲信号输入时,三极管集电极和发射极关断,脉冲调理电路输出高电平。有脉冲输入时,三极管导通,调理电路输出跳变到低电平。

  微控制器MC68HC908GR16与MC33991利用串行外设接口SPI通信。微控制器、MC33991和仪表用步进电机的接口电路如图2所示。

  微控制器MC68HC908GR16 上电后要初始化MC33991。MC68HC908GR16的SPI设为主模式。发送数据的格式要符合MC33991接、发数据的时序,MC33991收发数据的时序如图3所示。SPI无数据传输时CS=1, 时钟信号保持低电平。有数据传输时,MC33991的SI引脚在SCLK时钟的下降沿读入1位数据, 而输出引脚SO在时钟的上升沿输出数据。设MC68HC908GR16的SPCR寄存器时钟极性位COPL=0,时钟相位控制位CPHA=1。设引脚PTC5方向寄存器DDRC5=1, 设为输出。不与MC33991通信时令PTC5保持高电平。MC33991每次接收的数据必须是16,32, 48⋯位。

  MC33991的初始化流程图如图4所示。微控制器先向PECCR发送命令关闭步进电机, 并在2个电机停止转动的情况下发送时钟校正命令。经过时钟校正后, MC33991内部时钟稳定在1 MHz ( 10%) ,校正时钟后使能电机, 可允许2个或者其中一个工作, 然后向寄存器RTZCR发送命令设置指针回零速度, 向VECR寄存器发送命令控制电机的最大转速。如果步进电机回零时指针不在一个整步位置或者磁场排列没有对齐, MC33991回零检测会发生错误,导致回零失败。所以在发送电机回零命令前, 先使电机前进24微步或者30, 36, 42⋯微步, 以保持磁场排列整齐, 然后发送指针回零命令, 指针转向电机的逆时针极端。每一时刻只能有一个指针回零,微控制器检测回零状态直至回零结束。

  初始化时必须要格外注意, 时钟校正可选为1 MHz,单片机发送完时钟校正命令后拉低引脚, 延时8 s后再将其拉高。如果电机的齿轮减速比较低则选择0.667 MHz, 这样的一种情况需要延时12 s。

  MC33991初始化后设MC68HC908GR16的定时器1通道零为输入捕捉模式, 在输入脉冲的下降沿进入捕捉中断, 并计算2次下降沿的计数差值t。本设计的车速仪表盘的最大车速为120 km/h,最高速度与最低速度对应刻度盘的夹角为225 , 对应MC33991的静态指示位为2 700。

  微控制器根据计算得到的速度在仪表盘上的位置, 计算出MC33991的静态指示位置, 并把静态指示位发给MC33991, MC33991驱动仪表指向指定位置。为加快程序工作速度, 先根据车速、汽车车速仪表盘的参数计算出一个常数Con。

  式中: vmax汽车仪表盘指示的最大速度;C用于调整指针指示误差的常数。其中C用来调整车速表的指示位置, 使仪表指示速度不小于汽车的实际速度。车速表指针应指向

  的位置P0=t /Con, 由微控制器直接向MC33991发送此位置( P0) 命令, MC33991接到位置命令后即控制仪表电机旋转, 指向刻度盘的对应位置。

  本文详细的介绍了一种汽车车速表的设计的具体方案,设计采取了专用集成驱动芯片MC33991。此表在试验台运行测试时, 指针可以平滑转动, 在加速度较高时也没有超调抖动。与传统机械式仪表相比, 这种仪表响应速度快、抖动小、产品的稳定性和可靠性高。与采用其它驱动芯片的步进电机式仪表相比,首先此表占用硬件资源少, 控制方便, 仪表响应快; 其次能从任意位置以设定的速度恒速回零, 到达零点时无抖动; 最后仪表转动时, 微控制器可以每时每刻通过MC33991读取步进电机的工作状态。