基于MC9S12HY32的电动汽车仪表盘设计

2012-09-05 20:21:55来源: 互联网

引言:

    电动汽车仪表盘是一种集LED、LCD显示技术、步进电机控制技术于一体,适应电动汽车电子化、数字化、信息化发展的高新技术产品,它是驾驶员与汽车进行信息交流的窗口,是一个多信息显示平台,显示电机状态、电池组状态、行驶信息、底盘信息、指示报警等其它信息。Freescale的S12HY32是汽车仪表盘设计专用16位MCU,笔者以S12HY32为核心设计了一款电动汽车仪表盘,它采用步进电机进行指针的指示,具有很好的数据控制特性,并能及时反映汽车加减速、电压电流上升与下降等各种工况,提高了整个系统的平稳性和定位精度,同时保留了机械指针指示的直观、有动感、符合驾驶员习惯等优点。采用LED显示转向灯、远近光变换、车门状态、安全带未系提示、充电指示、报警等状态【1】,采用LCD数字显示里程表和故障状态。本文介绍S12HY32的功能特性和应用要点,并剖析电动汽车仪表盘的设计原理和软硬件结构。

1 硬件设计

    1.1 MC9S12HY32简介

    MC9S12HY32是一款可扩展入门级的汽车仪表盘应用16位微控制器,集16位性能和许多专用功能于一身【2】,如LCD驱动和步进电机驱动,同时服务于需要CAN/LIN的应用,非常适合经济高效的汽车仪表盘应用。其芯片资源及特性如下【3】:

    1、32MHz总线频率的HCS12 CPU内核;

    2、带有ECC(错误校正码)的32KB程序闪存和4KB数据闪存,4KB片内SRAM;

    3、字段式LCD控制器,最多可配置为40x4段;

    4、4个步进电机控制器,可以进行电机失速检测;

    5、两个16位定时器模块,可提供16位输入捕捉、输出比较、计数和脉冲累加器功能;

    6、8通道10位逐次逼近型ADC;

    7、SPI/I2C模块,一个SCI模块,支持 LIN 2.0、2.1 和 SAE J2602 通信;

    8、MSCAN模块,支持 CAN 协议 2.0A/B。

    1.2 系统结构

    仪表盘由CAN总线接口、信号采集电路、步进电机、LCD、LED、报警装置组成,用于各种工况下汽车运行信息的采集和显示,图1给出了仪表盘硬件结构,下面结合S12HY32的内部资源介绍下仪表盘的硬件设计。

图1 仪表盘硬件结构图

Picture 1:Dashboard hardware architecture

    S12HY32内部资源专为仪表应用而设计,4个步进电机驱动器可以进行车速、电机转速、电流和电池组电压的指针指示,LCD控制器可以控制字段式LCD显示总里程、小计里程和电机故障信息,内部有MSCAN模块支持CAN总线应用,可以通过CAN总线获取一些关键信息,同时保留直接进行信息采集的能力:内置定时捕捉模块可以进行车速/电机转速脉冲的捕捉与统计,内置ADC进行电机温度等模拟量的采集。下面以车速信号检测为例介绍下仪表盘电路设计

    1.3 车速信号检测

    车速是仪表盘需要显示的关键信息,根据汽车原理和拓扑结构,车速信号来源是CAN总线或者车速传感器。车速传感器输出0-12V的脉冲信号,其信号频率大小与车速值大小成线性关系,随车速增加而增加【4】,通过图2所示的整形电路将车速传感器信号转换为TTL电平,然后通过定时捕捉模块捕捉脉冲信号的上升沿或下降沿,进行统计分析即可得到车速大小。

图2 车速信号检测电路

Picture 1:Speed signal detection circuit

2 软件设计

    2.1 软件流程设计

    因为没有采用操作系统,软件设计采用循环体+中断的软件结构【5】,主循环体完成主体功能,中断服务程序进行底层协议设计和驱动管理,软件流程图如图3所示,下面简单介绍一下该流程。首先进行全局变量和所用外设(包括IO、PWM、TIMER、SCI、CAN、LCD、MOTOR CONTROLLER)的初始化,初始化完成后,进入主循环,然后在循环体内依次进行定时器管理、开关信号检测、车速检测、CAN通讯管理、里程计算及存储、报警控制、LCD控制和步进电机控制。各软件模块次序如图三所示。下面以车速检测为例介绍下软件的详细设计。

    图3 软件流程图

    Picture 3 Software Process

    2.2车速信号检测软件设计

    车速信号整形后得到TTL脉冲,S12HY32的定时捕捉模块以中断的方式捕捉脉冲的沿变化【6】,在中断处理函数中进行脉冲个数累加。设计脉冲统计结构体和一200ms的周期定时器,采用“滑动时间窗口脉冲统计法”进行车速的计算,脉冲统计结构体设计如下:

    typedef struct{

    uint8_t   bank;

    uint16_t  cnt;

    }s_PulseCnt;

    在上述结构体中,cnt表示脉冲个数,bank表示数据是否有效。滑动时间窗口脉冲统计法设计如下:

    定义成员个数为6的脉冲统计结构体数组Speed_pulse[6],周期性存储车速脉冲个数,脉冲率等价于一秒内的脉冲个数,则有公式如下:
 
    脉冲频率=(Speed_pulse[5].cnt-Speed_pulse[0].cnt)   (2-1)

    车速=脉冲频率*FACTOR                       (2-2)
 
    FACTOR由变速比和轮胎直径共同决定。

    当下计算的车速表示过去1秒内的平均车速,在下一个200ms到达后,将下标为1到5的结构体变量依次“滑动复制”到下标为0到4的结构体变量中,然后更新下标为5的结构体变量,此时根据公式2-1和公式2-2进行计算得到的车速为0.2秒-1.2秒之间的平均速度。这种方式计算得到的车速实时性更强,而且车速变化更加平滑,反映在指针的变化上也更加平稳平滑,能得到更佳的视觉体验,其代码实现如下:

    void SpeedDetect(void)
    {
    uint16_t i,j;
    uint16_t Carspeed_pulse_frequency=0;
    if(1==Speed_detect_enable){
    if(1==Timer[SPEED_PULSE_ACCUMU_200MS].overflow_flag){
      for(i=0;i<=5;i++){
        if(0==Speed_pulse[i].bank){  
          Speed_pulse[i].cnt=Car_speed_pulses;
          Speed_pulse[i].bank=1;
          if(5==i){
            Carspeed_pulse_frequency=Speed_pulse[5].cnt-Speed_pulse[0].cnt;
            Ev_speed=(float32_t)Carspeed_pulse_frequency*CAR_PULSE_FACTOR;
            EvSpeedRangeCheck();
            for(j=0;j<5;j++){
              Speed_pulse[j].cnt=Speed_pulse[j+1].cnt;
            }
            Speed_pulse[i].bank=0; 
          }
          break;
          }
        }     
      }
    }
  }

结语

    笔者采用MC9S12HY32设计实现了一款电动汽车仪表盘,从处理器特性、硬件结构、车速信号检测等方面描述了仪表盘的硬件设计,从软件流程设计,车速信号检测的软件实现上描述了仪表盘的软件设计。该仪表盘经装车试验,运行稳定,功能可靠,已经进入小批量预生产阶段,具有很高的实用价值。

关键字:设计

编辑:鲁迪 引用地址:http://www.eeworld.com.cn/qcdz/2012/0905/article_5939.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
设计

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved