汽车仪表步进电机控制算法的仿真
在经历了机械式、电气式、模拟电子式仪表时代后,汽车仪表进入了如今的步进电机全数字式仪表时代。目前,国内部分中、高档轿车,均配套使用步进电机汽车仪表。其它汽车也正在配套该类型的仪表。步进电机汽车仪表,将是未来一段时间内汽车仪表的主导产品,有着十分广阔的市场前景。
今后,汽车仪表的功能将更加侧重由软件来完成。这对于产品数量大并且对成本极为敏感的汽车仪表有着特殊意义。与仅由电子硬件组成的汽车仪表相比,带有ECU的汽车仪表功能的实现手段更加灵活多样,产品的"柔性"更好,即在推出新款产品时,能最大限度地利用以前产品的软、硬件设计成果,这在产品更新换代很快的今天和未来显得尤为重要。
目前,很多半导体芯片制造商都生产汽车仪表板的微控制器,比如NEC、freescale、Fujitsu和Micronas等公司。在此介绍一种基于Micronas CDC3207G微控制器的汽车仪表板步进电机控制的解决方案。
步进电机控制
步进电机又称脉冲电动机,它能将输入的脉冲信号变成电动机轴的步进转动,是一种将电脉冲转化为角位移的执行机构。在非超载的情况下,电机的转速以及停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响。
控制步进电机实际上是控制输入脉冲序列,使步进电机轴按照预定方向转动需要的角度。汽车仪表中应用的主要是两相步进电机,有两个独立绕组。通过控制两个独立绕组上的脉冲信号,就能实现对步进电机的控制。此外,一般步进电机内部在电机转轴与指针之间都装有降速齿轮组,使得转动轴与指针之间有一定的降速比,这样可以降低指针转动的抖动,使电机指针转动更加平滑。
本控制算法采用Microcomponents公司的SWITEC步进电机,其电机转动轴与指针之间的转速比为180:1,即步进电机转动轴旋转180°,步进电机的指针旋转1°。
步进电机控制算法
控制算法基本功能
控制算法主要功能是控制步进电机以完成仪表的显示,主要是根据实时数据计算得到显示仪表的位置信息,再根据位置信息计算出步进电机控制指令。对于内部集成了步进电机控制模块的微控制器,控制算法最终输出控制寄存器的数值,微控制器根据寄存器的数值产生驱动信号,实现对步进电机的控制。
CDC3207G微控制器
CDC3207G微控制器是Micronas(微开)公司的一款基于ARM7TDMI内核的32位[0]微控制器,它集成了7个步进电机模块,再加上PWM软件模拟最多可以直接驱动8路步进电机。每个步进电机模块通过4个控制器内部连接了H桥的高电流输出端口,直接驱动两相步进电机。通过软件便可以产生步进电机定位需要的各种脉冲。
CDC3207G的步进电机模块可以提供多通道的PWM输出,输出信号频率通过硬件设置来选择,并且各个步进电机模块输出信号的时序具有偏移,可以提高电磁兼容性能(EMC)。
根据控制两相步进电机的需要,CDC3207G内部提供了3个8位的寄存器,用于通过软件来产生控制脉冲。其中两个寄存器通过模块中的比较器与模块计时器进行比较,用于产生驱动电机的PWM信号,另外一个寄存器用来选择相应步进电机模块以及选择四个输出引脚的极性。这样,通过软件对三个寄存器的操作就能方便地对每一路步进电机进行控制。
此外,CDC3207G还具有零位检测功能,即检测电机运转时的感应电流,得到电机运行的位置信息,据此判断电机是否达到初始位置(即汽车仪表的零位)。
控制算法的实现
软件的主要任务是根据不断更新的步进电机位置信息,计算控制寄存器的数值。同时,为了满足仪表指示的实时性要求,本方案采用周期性调用步进电机控制函数的办法,根据实际需要选择周期。本方案中,调用步进电机控制函数的周期为2ms。
除了需要满足实时性以外,步进电机控制函数还需要控制步进电机平滑地运转,这样,指针的显示才不会在视觉上给人以不适的感觉。为此,控制函数需要限制步进电机的速度以及加速度。由于周期性更新步进电机位置信息,所以控制函数是通过比较当前位置与给定位置来计算每周期的步进量,最终完成给定位置的显示。控制函数流程图如图1所示。
图1 步进电机控制函数流程图
本方案的SWITEC步进电机的指针显示范围为330°,指针每转动一度,步进电机转动轴需要转动180°,在软件中分为256步来实现。所以,按照步进数计算的步进电机量程为330×256=84480步。
为保证指针显示上平滑,流畅,需要限制每一周期的最大步进数以及相邻两个周期步进数量差,以常量MAX_SPEED以及MAX_ACC分别对电机运行速度和加速度进行限制。
由于需要周期性更新步进电机的位置,且每一周期时间很短,步进数量有限,所以,对于一个新的仪表位置,步进电机要完成显示往往需要多个周期来实现。
部分变量的简单说明见表1。
表1 变量说明
变量名称
pos_set
pos_act
pos_new
delay_time
speed
speed_old
含义
目标地址
当前位置
本周期结束位置
响应时间
本周期步进数
上周期步进数
由于程序中的位置信息都是按照步进数来表示的,因此,可以预先定义一个常数数组,保存步进数对应的控制寄存器的数值。这样,根据需要步进数查表便可以得到所需要的寄存器的数值。
- 单芯片集成电路优化自适应转向大灯系统设计(07-03)
- 灵活的现代CPLD汽车数字仪表板(06-04)
- 基于步进电机控制技术的汽车辅助照明随动系统设计(01-25)
- 基于步进电机驱动器MC33991的车速表设计(11-14)
- 基于CAN总线的一体化步进电机驱动器的设计与实现(11-25)
- 基于CAN总线汽车组合仪表的设计与研究-步进电机驱动、存储电路设计及外围电路(01-08)