首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
基于XC2267M的仪表盘步进电机控制
来源:本站整理  作者:佚名  2010-03-02 09:52:13



随着现代电子技术的发展,中高档汽车上的组合数字仪表越来越多地采用“机电一体化”的步进电机。步进电机又称脉冲电动机,它能将输入的脉冲信号变成不连续的机械动作,是一种将电脉冲转化为角位移的执行机构。对步进电机的每一相来讲,输入的是一个脉冲列,只要控制好电脉冲,就能精确控制步进电机的角位移量,转速和转矩。从这个意义上来说,步进电机控制的核心是PWM(脉冲宽度调制)细分控制技术。


用单片机来控制步进电机已有近15年的发展历史。出于降低总体成本的考虑,长期以来所采用的芯片都是8位单片机。由于单片机自身性能的局限性,对于步进电机的控制常常采用不彻底的细分控制或带外设的细分控制。不彻底的细分控制一般是将步进电动机的控制位置数(以两相步进电机为例)的四拍通电逻辑顺序变为八拍通电逻辑顺序,从而将步进角降为原来的一半。这种方法细分度有限,电机运行极不平滑,而且对步进电机也有损伤。带外设的细分控制能够使步进电机的运行平滑稳定,但增加了外部设备(如恒流斩波电路等),使得硬件设计趋于复杂,并且提高了成本。随着科技的进步和单片机的进一步发展,16位单片机的价格不断降低,使得其在步进电机控制上的广泛应用成为可能。由于单片机自身功能曾强了,繁琐的外部设备不再需要,软件编程也变得相对简单。这里即采用16位英飞凌单片机XC2267M实现步进电机的平稳控制。

硬件选择
Infineon XC2267M属于XC2200微控制器系列,集成了电压调节器和多种振荡器,是全功能的16位单片CMOS微控制器。此方案主要使用的是XC2267M的CC2(Capture/Compare Unit2 捕获/比较单元2)模块。

CC2模块提供了16个捕获/比较通道以及同它们相配合的2个16位定时器,能支持16个内部中断。每个CC2通道都可捕获内部或外部事件,也可以比较计时器的内容与给定值,并修改输出信号。这里采用的是其中的8个通道配合8个I/O口控制4个步进电机。其中,SIN+和COS+为CC2通道,输出PWM波形,SIN-和COS-为I/O口,进行0-1变化。

表1  CC2模块各通道功能列表


由于单片机可以直接输出几路互不影响的PWM,所以无需依靠任何外部设备就可以同时实现对几个步进电机的控制。

图1 基于XC2267M的仪表盘步进电机控制示意图(仪表盘其他模块图中未标明)


汽车仪表中应用的主要是两相步进电机,即步进电机中有两个独立绕组(定子两个相对极上的线圈串联成为独立绕组)。步进电机两个绕组的夹角一般有90°和60°两种样式,实验采用的是60°样式的VID29-05,内置减速比180:1的齿轮系,输出轴的步距角最小为1/12°,最大角速度600°/s。


软件编程
1确定细分度,建立变量赋值表


● 确定步进电机每圈的细分度,并根据细分度建立电机在每个位置的两相PWM占空比表。这里采用的是15细分,即每步间隔24°。


● 根据两相电压表,结合所选用的单片机的特性建立对应的PWM寄存器赋值表,储存在全局数组里。


● 根据所选用的步进电机型号的特性曲线,建立速度等级数组。步进电机的转速完全和PWM寄存器赋值的速度有关。根据VID29-05的特性,速度数组里包含255个元素。这255个元素定义了PWM寄存器赋值的时间间隔,元素值越大,步进电机转速越慢。


2 仪表盘步进电机驱动的编程注意事项
指针的运动要有“惯性”的视觉效果。即,指针从任意位置甲移动到目标位置乙的时候,在开始阶段,要进行加速运动,运动至接近位置乙的时候,要进行减速,最后稳定在位置乙。


加速减速的幅度与当前位置和目标位置的间距以及步进电机的选型相关。在指针转动的过程中,对目标位置的变化要实时反应。只有在当前位置和目标位置的差距大于一定范围时,指针才运动。步进电机不允许旋转方向的突变,比如,电机正转时接到反转请求,一定要匀减速至0后才能反转。


考虑到EMC的要求,PWM的频率不要超过20kHz。


3  算法
主程序对当前步数和目标步数比较判定,决定是否转动,以及转动的速度大小。为达到这个目的,引入变量Move-time与转动一步标志位Move_One_Step_Enable,实际转动的速度控制通过在主循环最后Move_One_Step_Enable置1和依据当前步进电机速度级别从速度数组里取相应的元素对Move-time的赋值和来实现。只有当Move-time=0时,才再一次进入主循环对其进行赋值。


中断程序对走步计时递减,并根据标志做马达转动一步处理。每进入一次中断,只要Move-time不为0,则Move-time减1。如果Move_One_Step_Enable为1,步进电机赋值一次,否则不赋值,中断时间为200μs。

[1] [2] [3]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:143,082.00000 毫秒