当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]浅谈嵌入式汽车数字仪表设计

1 引言

汽车仪表是驾驶员与汽车的信息交流界面,对汽车安全以及经济行驶具有重要作用。汽车仪表板的仪表不尽相同,但是一般汽车的常规仪表有车速里程表、转速表、机油压力表、水温表、燃油表、充电表等。 现代汽车上,汽车仪表还需要装置稳压器,专门用来稳定仪表电源的电压,抑制波动幅度,以保证汽车仪表的精确性。另外,大部分仪表显示的依据来自传感器,传感装置根据被监测对象的状态变化而改变其电阻值,通过仪表表述出来。 仪表板中最显眼的是车速里程表,它表示汽车的时速,单位是km/h(公里/小时)。车速里程表实际上由两个表组成,一个是车速表,另一个是里程表。近年来,随着汽车电子技术的发展,汽车仪表显示信息也不断增加,而传统机械指针式汽车组合仪表则无法满足现在使用需求。特别是计算机、微电子和各种现场总线通信技术广泛运用,以嵌入式微处理器为核心的智能化数字式仪表将是汽车仪表发展的必然趋势。本文给出一种嵌入式汽车数字仪表设计方案。

2 硬件设计

传统的车速表是机械式的,典型的机械式里程表连接一根软轴,软轴内有一根钢丝缆,软轴另一端连接到变速器某一个齿轮上,齿轮旋转带动钢丝缆旋转,钢丝缆带动里程表罩圈内一块磁铁旋转,罩圈与指针联接并通过游丝将指针置于零位,磁铁旋转速度的快慢引起磁力线大小的变化,平衡被打破指针因此被带动。这种车速里程表简单实用,被广泛用于大小型汽车上。不过,随着电子技术的发展,现在很多轿车仪表已经使用电子车速表,常见的一种是从变速器上的速度传感器获取信号,通过脉冲频率的变化使指针偏转或者显示数字。汽车仪表需要处理的信号主要有:车速、发动机转速、水温、油量、以及各种开关量或报警信号。其中,发动机转速信号和前后灯信号是从CAN总线(发动机电控模块和前后灯电控模块)获取,而车速信号、水温、油量和其他开关量信号从相应的传感器获取。

汽车数字仪表系统结构如图1所示,本系统对车速、发动机转速、水温和油量信息采用步进表头显示,里程信息采用LCD显示,LCD(Liquid Crystal Display),为平面超薄的显示设备,它由一定数量的彩色或黑白像素组成,放置于光源或者反射面前方。液晶显示器功耗很低,因此倍受工程师青睐,适用于使用电池的电子设备。它的主要原理是以电流刺激液晶分子产生点、线、面配合背部灯管构成画面。开关量或报警信号采用LED显示,串口EEPROM用于存储里程信息。采用Microchip公司的具有SPI接口的控制器MCP2510与收发器80C250构成CAN节点,用于实现与汽车其他CAN节点间的通信。

2.1 MCU、外扩存储器和里程存储电路

系统采用三星公司的ARM7TDMI器件S3C44BOX作为主控制器。S3C44BOX是16/32位RISC处理器,其工作主频可达75 MHz,内部资源丰富。由于S3C44BOX内部无存储器(内部SRAM用于缓存),因此必须采用总线扩展外部存储器,包括程序存储器和数据存储器,采用16 Mbit的:FlashSST39VF160及64 Mbit的SDRAM HY57V641620分别作为程序存储器和数据存储器。系统还采用一片AT24C04存储器件来存储里程信息。AT24C04是4 Kbit的串行存储器,采用I2C总线方式实现里程信息的存储。I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。

2.2 电源和复位电路

该汽车数字仪表系统采用汽车蓄电池供电,汽车蓄电池的电压约为12 V,而该系统需采用5 V、2.5 V和3.3 V工作电压,S3C44BOX内核工作电压是2.5 V,I/O端口的工作电压是3.3 V,调理电路以及一些驱动器件需用5 V的工作电压。因此,系统选用7805稳压器作为5 V电压转换器,选用AS2515AU2.5和AS2515AU3.3分别作为2.5 V和3.3 V电压转换器。掉电时能够及时存储里程信息,电源地需接一只1 000 μF的电容。掉电时,大电容可以确保S3C44BOX工作一段时间,完成里程信息的存储。复位电路采用专用的复位电路IPM811实现系统稳定启动。图2为系统电源电路。

2.3 车速、水温、油量以及开关量的处理电路

由于汽车大多工作在恶劣环境下,将干扰车速传感器信号,因此在输入至中断端口EINT0前需要对车速脉冲信号进行处理,这里采用RC滤波、三极管放大以及斯密特整形方法调理车速脉冲信号。车速脉冲调理电路如图3所示。

水温、油量信号是电阻信号,须转化为电压信号,再将其电压信号输入至S3C44BOX的AD端口。而其他开关量则经过滤波降压后输入至S3C44BOX的I/O端口。

2.4 CAN总线通信电路

S3C44BOX无SPI接口,但有SIO接口,SIO模块的发送和接收既可在上升沿锁存数据位,也可在下降沿锁存数据位,因此可通过设置S3C44BOX的SIO模块所对应的寄存器实现上升沿发送数据,下降沿接收数据,从而与MCP2510的SPI总线时序相配合。CAN总线通信电路如图4所示。

步进电机表头电路等。其中步进电机选用Switec的汽车仪表专用步进电机X15.168,以及专用四通道步进电机驱动器件X12.017.S3C44BOX的I/O电平为3.3LVCMOS电平,而X12.017是5VCMOS电平,需采用74LVX4245电平转换。

3 软件设计

3.1 操作系统

μC/OS-II是Jean J-Labrosse开发的免费的、开源的嵌入式实时操作系统。μC/OS-II是一个基于优先级的可剥夺型内核,系统所有任务都有一个唯一的优先级别,适用于实时性要求较强的场合。μC/OS-II提供多种系统服务,如消息邮箱、消息队列、信号量管理以及时间延时等,实时内核使得CPU的利用更有效。

3.2 μC/OS-II在ARM上的移植及配置

μC/OS-II的源代码除了那些与硬件关系紧密的软件模块需用汇编语言编写外,绝大部分代码都采用C语言编写,所以μC/OS-II的可移植性强。在ARM上移植μC/OS-II主要编写3个源文件,即OS_CPU.H、OS_CPU.C、OS_CPU_A.S.在OS_CPU.H

中完成所需的基本配置和定义(定义数据类型、定义使能和禁止中断宏等);OS_CPU.C主要移植OS-TaskStkInit()、OSTaskCreateHook()、OSTaskDelHook()、OSTaskSwHook()、OSTaskStatHook()、OSTimeTickHo-ok()等6个函数;OS_CPU_A.S主要完成OSStartHighRdy()、OSCtxSw()、OSIntCtxSw()、OSTickISR()等4个汇编函数的移植。

3.3 系统任务及分析

对一个具体的嵌入式应用系统"任务划分"是实时操作系统应用软件的关键,任务划分是否合理将直接影响软件设计质量。本系统主要有8个任务,即车速脉冲测量任务、CAN总线任务、水温采样任务、油量采样任务、开关量处理任务、里程记录及

LCD显示任务、步进电机驱动任务、WDT任务。任务间通过消息队列和信号量进行通信和共享数据。系统主控程序如下:

主程序在完成初始化(硬件初始化ARMtarge-tInit()、μC/OS-II初始化OSInit()、建立消息队列等)工作后依次创建各任务,然后调用OSStart()启动操作系统,启动时钟ARMTargetStart()。在μC/OS-II中,各任务都是并发的,但优先级不同,拥有各自的任务堆栈,不同任务间通过消息队列和信号量进行通信和共享数据。任务采用无限循环结构,各任务通过延时或者等待信号量和消息队列来放弃CPU的使用权,这样在时钟脉冲到来时产生中断切换任务,系统转而运行准备就绪的高优先级任务,当延时或信号量和消息队列到来时,任务再次运行。系统采用TimerO定时中断作为系统时钟脉冲控制器,并在需要的任务中建立信号量。系统任务如下:

1)车速脉冲测量任务:脉冲信号接EINTO,使用定时器1定时,测量t时间内脉冲数,并将数据发送到消息队列。

2)CAN总线任务:CAN总线任务等待中断服务程序发送,接收CAN总线数据的信号量,获得CPU使用权后,CAN总线任务处理CAN总线数据并将其发送到消息队列,并再次等待接收信号量。

3)水温和油量采样任务:定时采样模拟量,并将采样到的模拟量数值发送到消息队列。

4)开关量处理任务:根据开关量的状态控制LED点亮或熄灭,延时。

5)里程记录及LCD显示任务:当车速脉冲值累加至0.1 km计数值,向本任务发出信号量,任务获得信号量后进入准备就绪状态,在任务调度时获得CPU的使用权,显示并记录里程信息,运行后继续等待接收信号量。

6)步进电机驱动任务:首先等待消息队列,再根据送出消息的任务识别出信息内容,根据队列中的数据驱动步进电机旋转相应的步数,运行后再次等待队列中的消息。本任务赋予第2高优先级。

7)WDT任务:用于监控,提高系统的可靠性,任务优先级最高,延时。

3.4 CAN总线任务及步进电机驱动任务流程

由于S3C44BOX的SIO接口的引脚与标准I/O端口复用,因此首先必须设置S3C44BOX的引脚57~引脚59为SIO接口,然后再通过配置SIO模块对应的寄存器,使得SIO时序与MCP2510的SPI接口协议一致,可通过以下初始化SIO函数实现。

如图5所示,初始化完成后,主程序发起CAN总线任务及步进电机驱动任务,两个任务先后进入等待信号量和等待消息队列,CAN总线发生中断后,CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由研发和生产汽车电子产品着称的德国BOSCH公司开发了的,并最终成为国际标准(ISO118?8)。是国际上应用最广泛的现场总线之一。 在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。近年来,其所具有的高可靠性和良好的错误检测能力受到重视,被广泛应用于汽车计算机控制系统和环境温度恶劣、电磁辐射强和振动大的工业环境中断服务程序释放信号量,使得CAN总线任务进入就绪状态,在其获得CPU控制权后,处理数据,然后将数据发送至消息队列,从而使得步进电机驱动任务进入就绪状态,电机任务通过任务调用获得CPU使用权,再根据消息队列中的数据计算出所需的驱动步数,驱动电机旋转。

4 结束语

采用S3C44BOX与嵌入式实时操作系统μC/OS_II设计了一款高精度高、高灵敏度、工作稳定的嵌入式总线汽车数字仪表。S3C44BOX资源丰富、执行速度快,能扩展很多种功能,如IC卡、GPS、黑匣子等;加之嵌入式实时操作系统简化了应用程序,可高效实时地调用系统任务,因此本汽车数字仪表系统能够很好地解决汽车仪表迈向综合信息化的问题。
 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭