步进电机式仪表与模拟电路电子式仪表相比,其分度均匀,指针的重复性能好、响应速度快、抖动小、产品品质的稳定性和可靠性有根本保证[1] ,因此步进电机式汽车仪表在我国逐渐普及。这种汽车仪表通常采用微控制器驱动步进电机带动仪表指针转动。微控制器控制步进电机一般需要外加驱动电路,而采用专用的汽车仪表步进电机驱动集成电路可以简化汽车仪表的软硬件设计,提高仪表的稳定性和可靠性。本文介绍并比较了国内常用的驱动器的性能特点,最后以飞思卡尔半导体生产的MC33991为实例设计了车速表。
1 常用仪表电机驱动芯片特点及性能比较
国内常用的仪表步进电机驱动芯片包括瑞典SWITEC公司的X12.017、伟盈集团生产的VID66- 06和美国飞思卡尔公司生产的MC33991等。
1.1 X12.017与VID66- 06的主要特点
SWITEC公司生产的X12.017在国内应用较广,可以同时驱动4路十字线圈步进电机。VID66- 06控制方式和X12.017完全相同,其各项性能参数也基本相同。它们的主要特点如下。
a.以微步驱动,每个脉冲对应电机输出轴转动(1/12)°。
b.每个电机只需要速度和方向2个控制端。
c.所有输入脚都有干扰过滤器;低电磁干扰辐射。
d.工作温度在- 40~105℃;工作电压4.5~5.5 V.
这种驱动器控制简单,输入信号CW/CCW控制步进电机的转动方向,输入信号F( scx)的上升沿驱动电机转动一个微步。通过发送脉冲的频率可以控制电机的转动速度。
1.2 MC33991的主要特点
MC33991是单独封装,通过SPI (串行外设接口)进行通信,可同时控制2个步进电机的驱动电路。该电路也可以仿照气隙磁通的运动,把普通电机转化为步进电机来控制。它有以下主要特点[3].
a.有4 096个静态指示位置,接收位置命令后驱动指针指示。
b.最大指针扫过范围340度;最大指针速度为400 deg/s;最大指针加速度为4 500 deg/s.
c.应用微步距控制技术(每步细分为12个微步)。
d.指针回零校准,能准确地回零。
e. 16位SPI ( Serial Peripheral Interface) ,通信占用较少的I /O口。
f.内部时钟校准功能;睡眠模式下的耗电量较小。
g.工作温度- 40~125℃;供电电压范围6.5~26 V。
MC33991可设定步进电机最大转速。其具有内部状态机,保证在正常操作时,驱动器接收到位置命令后,以恒定加速度到达最大速度,然后在合适的时间减速,并保证减速过程中不超过最大减速度,到达指定位置后速度等于零,避免指针抖动。此外, MC33991可以允许2个步进电机或其中之一工作。其内部诊断功能可诊断单个步进电机是否过热、电池电压过高或者过低、指针归零状态驱动器内部时钟的工作状态、确定仪表的指针是否在转动。由以上性能特点可以看出, MC33991比X12.017和VID66-06功能更丰富,如过电压和过热诊断功能、回零校验功能。且使用X12.017和VID66-06作为驱动时,为使仪表指针运行平滑,必须在微控制器程序中对步进电机速度进行细分,否则容易产生超调抖动。
2采用MC33991的汽车车速表设计
汽车在行驶过程中,汽车车速传感器产生频率与汽车车速成正比的脉冲信号,此脉冲信号经过滤波放大后送给微控制器,微控制器利用输入捕捉通道捕捉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所列。微控制器通过这些寄存器来控制电机的最大速度、指针位置、指针回零,并读取电机的运行状态、线圈是否过热、电压是否过高或过低。
2.1硬件电路设计
硬件电路包括速度传感器信号调理电路、微控制器与MC33991的接口电路。
2.1.1速度脉冲检测电路
车速传感器把车速信号转化为脉冲信号,其频率与车速成正比。此脉冲信号经过调理电路送给单片机的T1 CH0 ( Timer 1 channel 0) ,速度脉冲的调理电路如图1所示。在没有脉冲信号输入时,三极管集电极和发射极关断,脉冲调理电路输出高电平。有脉冲输入时,三极管导通,调理电路输出跳变到低电平。
2.1.2 MC33991接口电路
微控制器MC68HC908GR16与MC33991利用串行外设接口SPI通信。微控制器、MC33991和仪表用步进电机的接口电路如图2所示。
表1 MC33991内部寄存器
图1 速度传感器信号调理电路图
图2 MC33991与MCU接口电路图
MC68HC908GR16的SPI时钟引脚SPSCK、主机数据输入从机输出引脚MISO、主机数据输出从机输入引脚MOSI和I /O引脚PTC5, 分别接MC33991的SCLK、SO、SI、CS引脚, RSTB引脚与单片机的RST引脚连接。
2.2 软件设计
2.2.1 SPI通信程序
微控制器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⋯位。
2.2.2 MC33991初始化流程
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。
2.2.3 车速检测
MC33991初始化后设MC68HC908GR16的定时器1通道零为输入捕捉模式, 在输入脉冲的下降沿进入捕捉中断, 并计算2次下降沿的计数差值Δt。本设计的车速仪表盘的最大车速为120 km/h,最高速度与最低速度对应刻度盘的夹角为225 °, 对应MC33991的静态指示位为2 700。
汽车行驶速度可以利用以下公式计算
式中: n———2次速度脉冲间隔内计数器的计数值之差; T———微控制器计数器时钟源的周期;D———车轮外径; μ———汽车轮胎变形系数( 一般取0.93~0.96) ; N———车轮转一周, 车速传感器发送的脉冲数。
微控制器根据计算得到的速度在仪表盘上的位置, 计算出MC33991的静态指示位置, 并把静态指示位发给MC33991, MC33991驱动仪表指向指定位置。为加快程序运行速度, 先根据车速、汽车车速仪表盘的参数计算出一个常数Con。
式中: vmax———汽车仪表盘指示的最大速度;C———用于调整指针指示误差的常数。其中C用来调整车速表的指示位置, 使仪表指示速度不小于汽车的实际速度。车速表指针应指向
的位置P0=Δt /Con, 由微控制器直接向MC33991发送此位置( P0) 命令, MC33991接到位置命令后即控制仪表电机旋转, 指向刻度盘的对应位置。
3 结束语
本文详细介绍了一种汽车车速表的设计方案,设计采用专用集成驱动芯片MC33991。此表在试验台运行测试时, 指针可以平滑转动, 在加速度较高时也没有超调抖动。与传统机械式仪表相比, 这种仪表响应速度快、抖动小、产品的稳定性和可靠性高。与采用其它驱动芯片的步进电机式仪表相比,首先此表占用硬件资源少, 控制方便, 仪表响应快; 其次能从任意位置以设定的速度恒速回零, 到达零点时无抖动; 最后仪表转动时, 微控制器可以随时通过MC33991读取步进电机的工作状态。