在 HCS08 系列 MCU 上
用½件实现仪表步进电机的驱动
飞思卡尔半导½成½分公司
傅志强(frank.fu@freescale.com)
步进电机由于具有角½移和输入脉冲数成正比并且没有累积误差的特点,而被广泛的
用½½½仪表的显示部件,其中具有代表性的是伟力驱动技术(深圳)有限公司的VID29
系列步进电机。在多数情况下,人们会½用专用的驱动芯片来驱动步进电机,主控制器只
需要给出方向控制信号和控制½动步数的脉冲就行了。另外,也有集成了步进电机驱动电
路的MCU,如Freescale的MC9S12HY系列,其½用方法也比较简单。然而,在很多较½端的
½½仪表,如微型½、农用½、三½货½和摩托½的仪表上,人们为了降½成本,希望½
够不用专用驱动芯片或相对较贵的带驱动电路的MCU,而是用普通的MCU直接去驱动步进电
机。本应用笔记介绍了在Freescale的HCS08系列MCU上,如½用½件来实现对VID29系列步
进电机的直接驱动。本文所附带的程序,已经在Freescale的LG32 Cluster Reference
Design演示板上运行验证过。
VID29 系列步进电机的工½原理
VID29系列步进电机是两相步进电机经三级½½减速传动输出的。该步进电机的工½
原理可以用下面的简化的结构图(图1½4)进行说明。在象VID29系列这样的两相步进电
机中,½子是一个永磁½,定子上安装了两组线圈。½给定子线圈通上电流的时候,就在
½子周围的气隙中产生了一个磁场,½子就会在磁力的½用下½动到½它自身的磁场方向
和线圈电流产生的气隙磁场方向平行的½½(下文中把它叫做平衡½½)。要让步进电机
连续地旋½,可以按如下步骤进行:
1. 如图1所示,在线圈A中通上电流,½子就会½过90度到图2所示的½½;
图1. 步进电机线圈A通电
2. 如图2所示,断开线圈A中的电流,给线圈B通上电流,½子又会继续旋½90度到图3
所示的½½;
图2. 步进电机线圈B通电
3. 如图3所示,断开线圈B中的电流,给线圈A通上跟步骤1中方向相反的电流,½子继
续旋½90度到图4所示的½½;
图3. 步进电机线圈A反向通电
4. 如图4所示,断开线圈A中的电流,给线圈B通上跟步骤2中方向相反的电流,½子继
续旋½90度回到图1所示的½½;
图4. 步进电机线圈B反向通电
5. 重复步骤1½4,步进电机就会连续地旋½起来了。
如果将步骤1½4的顺序颠倒过来,那么步进电机就会以相反的方向旋½。另外,如果
将A和B两个线圈同时通以大小相同的电流,那么产生的合成磁场的方向就和一个线圈单独
通电时的磁场方向成45度夹角,这样½子就将旋½45度,而不是90度。
实际的步进电机由于½子的½状和定子线圈的安装方½跟上述的简化结构不同,所以
工½时驱动电流的时序和½子每一步旋½的角度也不完全一样。对于VID29系列步进电机
来说,它的驱动脉冲序列和½子相应的旋½角度如图5所示。
图5.
VID29系列步进电机工½原理
分步驱动和微步驱动
步进电机的驱动通常有分步方式和微步方式两种,图5中的脉冲序列是分步方式下的
驱动信号。分步方式的优点是驱动信号的幅度只有0和电源电压(5V)两种,与数字信号
的½电平和高电平完全一一对应,因此只要½用MCU的普通数字I/O口(GPIO)就可以产生驱
动信号,驱动程序也比较简单。½是由于分步方式下,定子线圈产生的气隙磁场的方向在
每走一步的过程中½发生一个较大的跳变——对于VID29系列步进电机而言是60度的跳
变,定子磁场从原来的方向跳变到下一个平衡½½的方向,½子则在磁力的½用下加速向
下一个平衡½½½动,½它到达平衡½½的那个瞬间,速度达到最大值,而磁场力则变为
零(只考虑切向力,不考虑径向力,因为径向力与½动无关。下同);然后,如果驱动信
号没有变化的话,½子就会在惯性的½用下继续往前½动偏离平衡½½,这时磁场力将会
增大,而其方向却变成跟刚才相反,于是就½½子减速,½½子与平衡½½的偏离达到最
大时,其速度减为零,然后在磁场力½用下往回加速½动;½½子½回平衡½½时,磁场
力又变为零,而速度不为零,于是在惯性的½用下继续½动偏离平衡½½……如此反复,
只要驱动信号还没有再次改变,½子就会象荡秋千一样在平衡½½附近来回振荡,并在摩
擦力的½用下幅度逐渐减小。这种振荡还会产生一定的噪声,所以用分步方式驱动时,步
进电机的噪声和抖动会比较大。
为了减小步进电机运行时的噪声和抖动,人们设法让定子线圈的磁场方向的跳变幅度
变小,把一个分步一次的大跳变分成若干次较小的跳变来完成,于是就有了微步驱动方
式,也叫细分驱动方式。
根据矢量合成的原理,½步进电机中的两个线圈各自产生的磁场的强度按照正/½弦
规律变化的时候,它们的合成磁场的方向就会匀速旋½,而合成磁场的强度保持不变,如
图6所示。线圈产生的磁场强度与通过它的电流大小成正比,因此微步驱动方式就是让通
过线圈的驱动电流不是象分步方式那样在0和最大值之间跳变,而是按照正/½弦规律分成
几个阶梯逐步变化,如图7所示。
线圈
A
产生的磁场
线圈
B
产生的磁场
合成磁场
图6. 两个线圈产生的合成磁场
那么如½来产生阶梯变化的驱动电流呢?通常的做法是将一个PWM波½电压信号½加
到线圈上;同时串联一个阻值较小的电阻½为电流传感器,将电流信号½换成电压信号反
馈回PWM控制器中;PWM控制器根据反馈信号调整输出脉冲的占空比,从而½线圈上的平均
电流等于所需的阶梯电流。目前,常见的步进电机专用驱动芯片就是依据这个原理来工½
的。在½用MCU直接驱动步进电机的时候,因为MCU内部也集成了PWM模块,所以我们也可
以采用这个方法。½是,这种方法还需要½用ADC来测量反馈信号的大小,并且要实时地
计算出所需的PWM脉冲的占空比,因此将会占用太多的MCU的资源,½MCU几乎无法再处理
其他的事情。
图7. 微步方式下的驱动电流
为了减少对MCU资源的占用,我们可以将其中的反馈环节删掉,从闭环控制变为开
环控制。对每个阶梯电流,我们事先计算出所需的PWM脉冲的占空比,并做成查找表存
放在FLASH中。在驱动步进电机½动的时候,每走一个微步就从表中取出相应的占空比来
对PWM模块进行设½,然后在½前的这一步结束之前不再改变PWM脉冲的占空比。这样
一来就极大的减少了计算量,½MCU有足够的资源去处理其他的事情。然而,由于定子
线圈具有一定的电感,所以通过线圈的平均电流和PWM脉冲的占空比并不是线性关系,
要想精确的计算出每个阶梯电流对应的占空比是相½困难的;另外,½½子旋½的时候,
还会在定子线圈中产生感生电动势,这个感生电动势会½通过线圈的电流发生改变,而它
的大小又与½子永磁½的磁场强度和旋½速度相关。因此,事实上在开环控制中不管½½
用多么复杂的数学公式来计算占空比,½无法½通过线圈的平均电流总是等于预期的阶梯
电流。不过,所幸的是:在½端的½½仪表中,并不要求对步进电机的½动控制到那么精
确的程度,我们可以姑且认为通过线圈的平均电流是和PWM脉冲的占空比成正比的,反
正只要减小了每一步跳变的角度(相对于分步方式而言),就可以让步进电机½动得更平
稳一些了,噪声也½减小一些。
电机½动的加减速
步进电机在½动时,因为½子、传动½½和负½½的½动惯量,½它从一个½½½动到
下一个½½(一个分步或微步)需要一定的时间。如果在½子½动到下一个½½之前,驱
动信号就又往前走了一步的话,那么½子的磁场方向和定子线圈产生的气隙磁场方向的夹
角就会超过一个分步或微步所对应的角度。只要½子的旋½速度跟不上驱动信号的变化速
度,这个夹角就会越来越大,½夹角超过180度的时候,磁场对½子的½用力的方向就会
变得跟原来的方向相反,如图8所示。这时,½子的旋½速度就会减慢,直到变成以相反
的方向旋½。最终的结果就是½子所½过的角度和气隙磁场所½过的角度不相等了,也就
评论