技术中心
 
 

汽车行驶记录仪的研制与应用

   日期:2005-08-15     来源:中国测控网     作者:管理员    

汽车行驶记录仪,俗称“汽车黑匣子”,是用于监测、记录、储存汽车在行驶中各种状态和数据的智能装置,它将微机应用的先进性、实用性与车辆运行状态统一起来,为分析、判断汽车行驶状态和处理交通事故提供了可靠准备的科学依据。本文介绍的汽车行驶记录仪系统采用AT89C51单片机为核心处理器,大容量闪速存储器作为存储载体,利用定时器中断的方式实现固定时间间隔的数据采集与存储,利用串行口中断的方式实现与微机的数据通信,把汽车行驶记录仪发送的数据以二进制文件的形式存储到硬盘上,并以图形的形式模拟再现汽车的历史行驶状态。
1 系统的硬件设计
系统的总体框图如图1。AT89C51单片机为核心处理器,完成信息采集、信息动态存储及数据处理,并通过串口实现与微机通信。由于汽车行驶中各种状态信息具有时间特征,因此数据在存储时必须按时间坐标排序,同时采用FLASH固态存储和EEPROM动态存储相结合的方式进行数据存储和记忆。

2 信息采集模块设计
汽车行驶记录仪要求实时可靠地记录车辆行驶的各种状态信息,包括开关量信号、模拟量信号、时间信号。

左右方向灯、前车灯、开门信号、刹车灯信号等16路开关信号通过光电耦合器隔离,由并—串转换电路串行输出给单片机处理,此项工作由二片74LS165(并入串出移位寄存器)完成。水温、水位、油压等6路传感器采集的信号经过归一化处理,统一整定成0~5V的电压信号,然后经过A/D转换器进行A/D转换。系统采用美国德州仪器公司8路8位逐次逼近型模数转换器TLC0838,此A/D转换器采用SPI总线的形式与单片机通信。为了使行驶记录仪能够实时记录汽车行驶状态信息,采用专门的时钟模块提供时间信号,系统选用DS12887作为时钟芯片。DS12887能够自动存取并更新当前的时间,单片机可通过读DS12887的内部时标寄存器得到当前的时间和日历,也可通过选择二进制码或BCD码初始化芯片的10个时标寄存器。
测车速的传感器有电磁感应式、磁性形式、光电式、霍尔式。不论哪一种传感器都以脉冲的形式向外输出转速信号。目前大部分汽车常采用霍尔式传感器,输出的脉冲信号低电平UL为3V,高电平UH为8V,如图2(a)所示。因此需要经过整形电路转换将传感器输出的脉冲信号转换成单片机能够识别0-5V脉冲信号,如图2(b)所示。其原理是霍尔式传感器采集脉冲信号ui,经过LM339电压比较器进行比较(其中将Uref调整为5v)。由于LM339的工作在+12v,其比较结果的高电平信号并非为5V。通过一个电阻和5.1v的稳压管串接,可以将非5V的高电平信号转换为5V,从而为单片机所识别。

为了减轻主控单片机的运行负荷,由一个专用的单片机AT89C2051来进行车速信号处理。当主控单片机向AT89C2051发送控制命令时,AT89C2051通过串口将当前车速度数值发送给主控单片机。
系统采用频率法对车速进行测量,即累计单位时间内的脉冲个数,从而计算出该时刻的车速,如图3所示。通过对AT89C2051内部定时器0设置获得测速采样时间0.2秒,同时设定一个计数存储器Count。传感器每送来一个脉冲,计数存储器Count自动加1,定时器0每隔0.2秒钟中断,CPU响应中断后立刻读取计数存储器Count中的数值(即0.2秒钟内来自传感器输入的脉冲数),随即对计数存储器Count清零,计数存储器Count在下一0.2秒从0开始重新累计传感器送来的脉冲数,然后由程序按下面的式子计算车速。

3 信息存储及处理模块设计
为了保持数据存储的连续性,当系统上电时,要求接着上次退出时的地址进行写操作,因此每次执行写操作时要将当前所写的地址存储下来。FLASH存储器在扇区擦除操作完成之后,该扇区的每一个地址只能进行一次写操作,不便于记忆最后一次存储地址。而EEPROM适宜多次擦写,并且容量不大,操作方便。系统采用FLASH固态存储和EEPROM动态存储相结合的方式进行数据存储和记忆,即要求用FLASH固态存储汽车状态信息,用EPROM动态存储FLASH最新存储的扇区号和存储地址。系统选用MX29F800BTC为FLASH存储器,24C32为EEPROM存储器。
一帧完整的状态信息包括时间信息、6路模拟信号量数据、车速信息、16路开关量信号。系统利用6个字节的存储空间来存储6路模拟信号量数据,2个字节存储空间来存储车速信息、2个字节的存储空间(共16位)来存储16路开关量信号,共10个字节存储空间。为了存储格式的统一,系统用10个字节的存储空间存储10个时标寄存器的内容。
由于每次执行数据存储操作时,写入的字节长度都是10的倍数,而MX29F800BTC的每个扇区长度为64K字节,因此每个扇区存储到最后会剩余6个字节的存储空间。如果将这6个字节长度的字节带入下一个扇区,将使下一个扇区的数据存储毫无规律性。因此系统在每个扇区的开始地址处保留6个字节空间,从第七个字节开始存储数据信息,以保证每个扇区的数据存储具有规律性,同时各个扇区之间不相互影响。
MX29F800BTC共有19个扇区,但其长度不一,为了使存储操作更加方便,系统选用FLASH的0X00~0X0F扇区存储数据,这15个扇区的长度都是64K字节。因此,当系统上电运行时,读取24C32中存储的扇区号应在0x00至0x0F之间,否则提示错误;另外读取24C32中存储的当前存储地址时,其值有一定的规律,应是对10的整除后余数为6。但是,在实际运行中,由于系统可能出现突然掉电的情况,最后一次采集的数据可能没来得及全部存储到FLASH。而每存储一个字节的数据,24C32中记录的当前存储地址都会更新,导致最后记录的地址值毫无规律性。所以在系统重新上电运行时,要求读取24C32中记录的地址值,并对其进行判断。如果24C32中最后记录的地址值被10除后的余数不是6,则需要进行修正,应将其减6,然后对10整除得一余数,然后将24C32中记录的地址值减去这一余数,再加10,以防止会出现数据重叠得现象,并将得到的结果取代原来的值。利用这一方法可将上次突然掉电的错误修正,也不至于出现重复写操作的错误,并保持地址的存储规律性。
为了避免FLASH存储空间的浪费,系统并非每次存储状态信息都存入时间信息,而是将6路模拟信号量数据、车速信息、16路开关量信号打包成一个数据包,如图4所示。由于数据采集是以固定的时间间隔来进行,系统只是在汽车刚启动时和每个扇区头采集并存储时钟信号,作为时间标记,后面数据的采集时间以这个时间标记为参照,如图5所示。同时每次写入时间信息时,紧跟其后写入10个字节0XAA,以辨别当前写入的是时间信息还是状态信息。假设T0表示起始的时间标记,Ts表示采集的时间间隔,则第N次存储时的时间信息T可根据公式T=T0+N*TS计算出来。系统存储的软件流程图如图6。

4 串口通信模块设计
计算机可以通过串口随时读取行驶记录仪存储的数据。行使记录仪与计算机之间的串口通讯,遵循RS232串行通信协议。串行通信时,单片机依次将FLASH中存储的数据读出并经串口发出,经过MAX232电平转换器件,发送给计算机。
5 结 论
本记录仪在硬件结构与软件设计上都有所创新,能很好地适应相关法规的要求,具有很好的性价比及很强的可扩充性和移植性。通过将此汽车行驶记录仪安装在小轿车上,得到较为可靠的测试结果。微机通过串口接收汽车行驶记录仪的数据,并对数据进行分析处理。本系统利用Visual C++ 6.0作为开发工具,编写微机数据分析处理程序,模拟显示汽车运行时的状态,利用图形显示各分量的波形,如前向灯开关情况,左右方向灯开关情况,开门信息,刹车信号,水温变化情况(范围为0~1000C)等。


 
  
  
  
  
 
更多>同类技术
 
全年征稿 / 资讯合作
 
推荐图文
推荐技术
可能喜欢