文献标识码: A
文章编号: 0258-7998(2012)11-0097-04
OBD(On Board Diagnostics)即“车载诊断系统”,2000年以后生产的汽车都配置有OBD接口[1]。OBD接口能够输出汽车各项运行参数和故障码,广泛应用在安全驾驶、行驶预警、汽车维修等领域。
OBD接口是美国汽车工程师协会(SAE)制定的汽车行业标准,有独立的电气和信息定义规范,OBD信息读取终端通常要配置专用的接口与OBD接口对接,这极大地限制了OBD接口的应用。
本文介绍一种新型的汽车OBD信息无线发射机设计方案,它不需要OBD连接电缆,利用蓝牙模块无线传输OBD信息,使配置蓝牙接收功能的终端如PC机、笔记本电脑、智能手机、车载导航仪等都能接收到OBD信号。
1 方案总体设计
用系统工程知识划分发射机设计工作,参照模块化硬件、软件开发规范,按照以下模块划分发射机的总体设计:
(1)发射机硬件:提供供电,读取CAN总线信号并进行OBD解析转换,通过蓝牙模块和天线发送输出;
(2)发射机软件:对CAN总线进行命令控制并解析CAN总线信息。方案总体框图如图1所示。
2 硬件设计
2.1 供电模块
供电模块给整个发射机提供+5 V工作电压环境。
OBD接口电气规范定义规定:接口4号引脚为电源负,16号引脚为电源正,电源正负电压与车载蓄电池电压一致[1],乘用车车载蓄电池电压为12 V。汽车启动后,因为发电机的作用,其实际电压约在12.5 V~14 V之间,所以需要构造稳压降压电路,将蓄电池电压降压并稳定在+5 V。此处选用LTC3340稳压芯片搭建稳压降压电路,设计供电电路如图2所示。
图2中,LTC3340从OBD接口4号、 16号引脚提取12 V电压,转换成稳定的TTL电平电压从Vout引脚输出供整个发射机使用。
2.2 CAN总线采集收发模块
CAN总线采集收发模块的作用是发送查询请求到行车电脑,然后读取返回的CAN总线信息。
不同型号汽车的OBD接口总线传输速率不一定相同,但传输速率一般限制为CAN2.0协议规定的1 MB/s,为了扩大发射机的应用范围,需要向下兼容所有低速率,所以选用支持1 MB/s传输速率的MCP2551高速CAN总线信号收发芯片作为本模块的主芯片。
MCP2551作为CAN协议控制器和物理总线接口,分别从OBD的7号、15号引脚收发高速CAN信号和低速CAN信号[2],两组信号差分收发、锁存而后送PIC18F2480单片机解析。
在实际工作中, 蓝牙无线信号电磁波频率高达2.45 GHz,易干扰MCP2551使其不能工作在正常状态,对电路稍加改造,在输入输出引脚都连接可调电容进行滤波抗干扰处理,如图3。微调电容使其达到最佳状态后,用4路跟踪示波器检测经过抗干扰处理后的差分收发后的CAN总线信号,时序图如图4所示。
图4中上、下部两组信号分别为发送、接收模式下CAN总线的TXD和RXD信号。显而易见,发送和接收时序波形信息位相同,触发位不同,证明该模块完成了读取CAN信息并中断触发后送PIC18F2480的功能,具有较强的抗干扰能力。
2.3 CAN总线控制和OBD解析模块
CAN总线控制和OBD解析模块由专用单片机实现,一般的单片机如单独进行CAN总线控制,则需要很高的主频和专门的程序,不适合选用,因此选用PIC18系列的F2480单片机。
PIC18F2480内部自带CAN控制器和16 KB Flash储存,并提供专用CAN总线操作指令集,只需对其内部的CAN控制器进行简单的指令操作,就能实现CAN总线控制和OBD模块解析。
2.4 蓝牙发射模块
蓝牙电路实现将解析后的OBD信号处理并无线发射到终端机的功能。
方案选用BC417143B作为主芯片, 如图5解析模块输出的信号为TTL电平,将其直接连入BC417143B芯片的数据输入端口D+和D-,经芯片基带层编码和分组处理,传入无线层完成频率合成,最后传入RF射频模块予以发射[3]。虽然2.2节中的信息为差分收发,但BC417143B发射电路中带锁相环,所以发射可以在不同的时隙进行,提高了发射的效率。
为提高发射效果,方案硬件实现时使用大增益全向天线,而不使用印刷版电路布线的隐藏天线。为了防止发射时出错中断,硬件实现时需连接RESET开关。
3 软件设计
3.1 CAN报文格式
根据ISO 15765标准,CAN报文信息主要集中在数据帧中,数据分为显性和隐性,显性时表示有CAN信息出现[4]。数据按帧发送,每帧数据格式如图6所示。
3.2 OBD报文解析
3.1节所述数据存放在CAN总线控制和OBD解析模块的核心器件PIC18F2480单片机的CAN控制器中,编程依次解析各域的值即可。软件流程图如图7所示。
(1)初始化:设定MCP2551和PIC18F2480单片机的端口、工作模式、传输速率、数据格式等信息,关键代码如下:
Init_PIC18F2480();
//PIC18F2480接口初始化
Init_MCP2515(); //MCP2515初始化
TRISA=0B00000001; //打开通道
ADCON1=0B00001110; //定义输如引脚
ADCON2=0B10100001; //转换结果按格式对齐
write_MCP2515(TXB0CTRL,0x03);
//设置为发送最高优先级
write_MCP25150(TXB0SIDL,0xEB); //扩展帧
write_MCP2515(TXB0DLC,0x02);
//发送数据长度为8字节
write_MCP2515Write(TXB0DLC, 0x80); //配置工作模式
(2)发送查询请求:MCP2551提供专门的发送请求指令,关键指令如下:
void MCP2515ReqTx (TXB0SIDL,0xEB);
当查询请求达到OBD接口送入行车电脑后,则会反馈当前CAN总线数据报文至OBD接口。
(3)接收数据:MCP2551提供专门的接收请求指令,关键指令如下:
BOOL CANGetMsg(int Channel, TXB0SIDL,
0xEB)
OBD接口数据按帧发送,此时应该监视接收数据的缓冲区,当接收缓冲区的数据满时,代表接收数据完毕,即开始解析数据流程[5]。
(4)解析数据:如3.1节所述,每帧数据分为多位,按位处理即可解析数据。关键代码如下:
do
{
uint8 MCP2515RdStus (void); //读状态
void MCP2515BitModify (TXB0DLC, 0x03); //按位读取
}while(MCP2515ReadRXBuf (TXB0DLC, 0x80));
//当接收缓冲区满的时候开始解析
解析过程中,每解析一位,数据关键寄存器减1,直至0,表示数据解析完毕。
(5)出错处理:错误帧为显性,则出错,此时点亮出错报警LED并闪烁,提醒使用者按下复位按钮重新启动发射机。
4 工程实测
以Android2.3.2版本设备摩托罗拉ME722作为测试终端,以长安福特CAF7180A48轿车作为实测车辆。开启终端蓝牙端口,将前述蓝牙发射机实物安装在OBD接口并开启,运行三方OBD信息提取显示软件Torque软件。
在汽车怠速和行驶状态下,终端均通过蓝牙端口成功接收发射机传输的汽车时速、发动机转速等参数信息,在拔下响应传感器模拟故障的情况下,终端能够读取故障码。
新型汽车OBD信息无线发射机设计方案真实有效,其通用性好、实用性强,特别是无线传输的模式,极大地扩展了可以接收OBD信息的终端类型。
新型汽车OBD信息无线发射机可以直接用于小型载客汽车,也可以在对电源模块稍作改造后用于重型汽车或其他支持OBD协议的交通工具。
参考文献
[1] BOSCH Company. CAN Specification Version2.0[EB/OL]. http://www.bosch. Com. Germany.2011.
[2] 吕立亚, 王兆伍. 基于蓝牙的汽车CAN网络信号无线测量系统[J]. 计算机测量与控制,2009,17(2):281-283, 286.
[3] IDWAN S A. Developing a mobile application via bluetooth wireless technology for enhancing Communication[J]. International Journal of Interactive Mobile Technologies, 2009:34-37.
[4] Wu Jianjun, Hu Juan. Application of CAN-bus network in Intelligent parking[J]. Physics Procedia, 2009:615-628.
[5] 蔡黎,代妮娜,邓明,等.基于OBD协议的Android平台汽车虚拟仪表设计[J].电子技术应用,2012,38(1):69-72.