您当前的位置:五五电子网电子知识电子知识资料仪器仪表读写器基于CDC3207G的汽车仪表步进电机控制算法 正文
基于CDC3207G的汽车仪表步进电机控制算法

基于CDC3207G的汽车仪表步进电机控制算法

点击数:7543 次   录入时间:03-04 11:58:30   整理:http://www.55dianzi.com   仪器仪表读写器

    当前,在经历了机械式、电气式、模拟电子式仪表时代后,汽车仪表进入了如今的步进电机全数字式仪表时代。目前,国内部分中、高档轿车,均配套使用步进电机汽车仪表。其它汽车也正在配套该类型的仪表。步进电机汽车仪表,将是未来一段时间内汽车仪表的主导产品,有着十分广阔的市场前景。

    今后,汽车仪表的功能将更加侧重由软件来完成。这对于产品数量大并且对成本极为敏感的汽车仪表有着特殊意义。与仅由电子硬件组成的汽车仪表相比,带有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所示。

11.jpg

 图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

    含义

    目标地址

    当前位置

    本周期结束位置

    响应时间

    本周期步进数

    上周期步进数

    由于程序中的位置信息都是按照步进数来表示的,因此,可以预先定义一个常数数组,保存步进数对应的控制寄存器的数值。这样,根据需要步进数查表便可以得到所需要的寄存器的数值。

    控制算法分析

    为了进一步分析本算法的性能,用LabVIEW编程软件进行算法仿真,这样就可以很方便地在不连接步进电机的情况下对算法进行分析。在LabVIEW7.1中可以采用图2的框图对本算法进行分析。

22.jpg

图2 LabVIEW的算法框图

    在LabVIEW中,用一个while结构来周期地对算法的目标地址进行处理,每次循环都得到pos_new的数值,即每周期结束后步进电机的显示数值,然后将该数值输出到LabVIEW的前面板上。前面板如图3所示。

33.jpg

图3 LabVIEW的算法前面板

    通过前面板中Start按钮可以控制循环的开始与结束,手动改变pos_set的数值来模拟实际仪表中的数据变化。本例中该值的变化范围为0至100,并且每次试验都使该值由0突变为100。再用Gauge(量具)来仿真步进电机的显示,可以很方便地观察到不同参数改变后显示的视觉效果。此外,还可以通过LabVIEW提供的绘图功能得到控制算法中一些重要变量随时间变化的图像,更加直观地进行性能分析。

44.jpg

图4 pos_new随时间的变化

    图4为步进电机目标值pos_set由0突变为100的过程中,步进电机实际输出值pos_new随时间的变化曲线图。由于设定的while循环周期为1ms,所以,时间轴显示每周期步进电机输出,纵坐标POS即为步进电机的显示结果。

    观察0至128ms区间的曲线,可以看出此阶段曲线的斜率是逐渐增加的,表明步进电机在加速运行,因为初始阶段步进电机目标位置与实际位置之间的差值很大,计算得到的speed_delta数值超过了MAX_ACC这一常数的限制。128ms至475ms区间的曲线为直线,说明在此区间步进电机已达到最大速度MAX_SPEED,并以该速度匀速运行。

    余下区间的曲线,斜率是逐渐减小的,这时步进电机在减速运行,因为这时目标位置与实际位置的差值已经很小,计算得到的speed_delta数值已经处于由MAX_ACC限制的范围内。变量speed随时间的变化曲线更能清楚地分辨出这三个过程。如图5所示。

55.jpg

[1] [2]  下一页


本文关键字:步进电机  汽车  仪表  仪器仪表读写器电子知识资料 - 仪器仪表读写器