文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2012)11-0097-04
OBD(On Board Diagnostics)即“車載診斷系統(tǒng)”,2000年以后生產(chǎn)的汽車都配置有OBD接口[1]。OBD接口能夠輸出汽車各項(xiàng)運(yùn)行參數(shù)和故障碼,廣泛應(yīng)用在安全駕駛、行駛預(yù)警、汽車維修等領(lǐng)域。
OBD接口是美國(guó)汽車工程師協(xié)會(huì)(SAE)制定的汽車行業(yè)標(biāo)準(zhǔn),有獨(dú)立的電氣和信息定義規(guī)范,OBD信息讀取終端通常要配置專用的接口與OBD接口對(duì)接,這極大地限制了OBD接口的應(yīng)用。
本文介紹一種新型的汽車OBD信息無(wú)線發(fā)射機(jī)設(shè)計(jì)方案,它不需要OBD連接電纜,利用藍(lán)牙模塊無(wú)線傳輸OBD信息,使配置藍(lán)牙接收功能的終端如PC機(jī)、筆記本電腦、智能手機(jī)、車載導(dǎo)航儀等都能接收到OBD信號(hào)。
1 方案總體設(shè)計(jì)
用系統(tǒng)工程知識(shí)劃分發(fā)射機(jī)設(shè)計(jì)工作,參照模塊化硬件、軟件開發(fā)規(guī)范,按照以下模塊劃分發(fā)射機(jī)的總體設(shè)計(jì):
(1)發(fā)射機(jī)硬件:提供供電,讀取CAN總線信號(hào)并進(jìn)行OBD解析轉(zhuǎn)換,通過(guò)藍(lán)牙模塊和天線發(fā)送輸出;
(2)發(fā)射機(jī)軟件:對(duì)CAN總線進(jìn)行命令控制并解析CAN總線信息。方案總體框圖如圖1所示。
2 硬件設(shè)計(jì)
2.1 供電模塊
供電模塊給整個(gè)發(fā)射機(jī)提供+5 V工作電壓環(huán)境。
OBD接口電氣規(guī)范定義規(guī)定:接口4號(hào)引腳為電源負(fù),16號(hào)引腳為電源正,電源正負(fù)電壓與車載蓄電池電壓一致[1],乘用車車載蓄電池電壓為12 V。汽車啟動(dòng)后,因?yàn)榘l(fā)電機(jī)的作用,其實(shí)際電壓約在12.5 V~14 V之間,所以需要構(gòu)造穩(wěn)壓降壓電路,將蓄電池電壓降壓并穩(wěn)定在+5 V。此處選用LTC3340穩(wěn)壓芯片搭建穩(wěn)壓降壓電路,設(shè)計(jì)供電電路如圖2所示。
圖2中,LTC3340從OBD接口4號(hào)、 16號(hào)引腳提取12 V電壓,轉(zhuǎn)換成穩(wěn)定的TTL電平電壓從Vout引腳輸出供整個(gè)發(fā)射機(jī)使用。
2.2 CAN總線采集收發(fā)模塊
CAN總線采集收發(fā)模塊的作用是發(fā)送查詢請(qǐng)求到行車電腦,然后讀取返回的CAN總線信息。
不同型號(hào)汽車的OBD接口總線傳輸速率不一定相同,但傳輸速率一般限制為CAN2.0協(xié)議規(guī)定的1 MB/s,為了擴(kuò)大發(fā)射機(jī)的應(yīng)用范圍,需要向下兼容所有低速率,所以選用支持1 MB/s傳輸速率的MCP2551高速CAN總線信號(hào)收發(fā)芯片作為本模塊的主芯片。
MCP2551作為CAN協(xié)議控制器和物理總線接口,分別從OBD的7號(hào)、15號(hào)引腳收發(fā)高速CAN信號(hào)和低速CAN信號(hào)[2],兩組信號(hào)差分收發(fā)、鎖存而后送PIC18F2480單片機(jī)解析。
在實(shí)際工作中, 藍(lán)牙無(wú)線信號(hào)電磁波頻率高達(dá)2.45 GHz,易干擾MCP2551使其不能工作在正常狀態(tài),對(duì)電路稍加改造,在輸入輸出引腳都連接可調(diào)電容進(jìn)行濾波抗干擾處理,如圖3。微調(diào)電容使其達(dá)到最佳狀態(tài)后,用4路跟蹤示波器檢測(cè)經(jīng)過(guò)抗干擾處理后的差分收發(fā)后的CAN總線信號(hào),時(shí)序圖如圖4所示。
圖4中上、下部?jī)山M信號(hào)分別為發(fā)送、接收模式下CAN總線的TXD和RXD信號(hào)。顯而易見,發(fā)送和接收時(shí)序波形信息位相同,觸發(fā)位不同,證明該模塊完成了讀取CAN信息并中斷觸發(fā)后送PIC18F2480的功能,具有較強(qiáng)的抗干擾能力。
2.3 CAN總線控制和OBD解析模塊
CAN總線控制和OBD解析模塊由專用單片機(jī)實(shí)現(xiàn),一般的單片機(jī)如單獨(dú)進(jìn)行CAN總線控制,則需要很高的主頻和專門的程序,不適合選用,因此選用PIC18系列的F2480單片機(jī)。
PIC18F2480內(nèi)部自帶CAN控制器和16 KB Flash儲(chǔ)存,并提供專用CAN總線操作指令集,只需對(duì)其內(nèi)部的CAN控制器進(jìn)行簡(jiǎn)單的指令操作,就能實(shí)現(xiàn)CAN總線控制和OBD模塊解析。
2.4 藍(lán)牙發(fā)射模塊
藍(lán)牙電路實(shí)現(xiàn)將解析后的OBD信號(hào)處理并無(wú)線發(fā)射到終端機(jī)的功能。
方案選用BC417143B作為主芯片, 如圖5解析模塊輸出的信號(hào)為TTL電平,將其直接連入BC417143B芯片的數(shù)據(jù)輸入端口D+和D-,經(jīng)芯片基帶層編碼和分組處理,傳入無(wú)線層完成頻率合成,最后傳入RF射頻模塊予以發(fā)射[3]。雖然2.2節(jié)中的信息為差分收發(fā),但BC417143B發(fā)射電路中帶鎖相環(huán),所以發(fā)射可以在不同的時(shí)隙進(jìn)行,提高了發(fā)射的效率。
為提高發(fā)射效果,方案硬件實(shí)現(xiàn)時(shí)使用大增益全向天線,而不使用印刷版電路布線的隱藏天線。為了防止發(fā)射時(shí)出錯(cuò)中斷,硬件實(shí)現(xiàn)時(shí)需連接RESET開關(guān)。
3 軟件設(shè)計(jì)
3.1 CAN報(bào)文格式
根據(jù)ISO 15765標(biāo)準(zhǔn),CAN報(bào)文信息主要集中在數(shù)據(jù)幀中,數(shù)據(jù)分為顯性和隱性,顯性時(shí)表示有CAN信息出現(xiàn)[4]。數(shù)據(jù)按幀發(fā)送,每幀數(shù)據(jù)格式如圖6所示。
3.2 OBD報(bào)文解析
3.1節(jié)所述數(shù)據(jù)存放在CAN總線控制和OBD解析模塊的核心器件PIC18F2480單片機(jī)的CAN控制器中,編程依次解析各域的值即可。軟件流程圖如圖7所示。
(1)初始化:設(shè)定MCP2551和PIC18F2480單片機(jī)的端口、工作模式、傳輸速率、數(shù)據(jù)格式等信息,關(guān)鍵代碼如下:
Init_PIC18F2480();
//PIC18F2480接口初始化
Init_MCP2515(); //MCP2515初始化
TRISA=0B00000001; //打開通道
ADCON1=0B00001110; //定義輸如引腳
ADCON2=0B10100001; //轉(zhuǎn)換結(jié)果按格式對(duì)齊
write_MCP2515(TXB0CTRL,0x03);
//設(shè)置為發(fā)送最高優(yōu)先級(jí)
write_MCP25150(TXB0SIDL,0xEB); //擴(kuò)展幀
write_MCP2515(TXB0DLC,0x02);
//發(fā)送數(shù)據(jù)長(zhǎng)度為8字節(jié)
write_MCP2515Write(TXB0DLC, 0x80); //配置工作模式
(2)發(fā)送查詢請(qǐng)求:MCP2551提供專門的發(fā)送請(qǐng)求指令,關(guān)鍵指令如下:
void MCP2515ReqTx (TXB0SIDL,0xEB);
當(dāng)查詢請(qǐng)求達(dá)到OBD接口送入行車電腦后,則會(huì)反饋當(dāng)前CAN總線數(shù)據(jù)報(bào)文至OBD接口。
(3)接收數(shù)據(jù):MCP2551提供專門的接收請(qǐng)求指令,關(guān)鍵指令如下:
BOOL CANGetMsg(int Channel, TXB0SIDL,
0xEB)
OBD接口數(shù)據(jù)按幀發(fā)送,此時(shí)應(yīng)該監(jiān)視接收數(shù)據(jù)的緩沖區(qū),當(dāng)接收緩沖區(qū)的數(shù)據(jù)滿時(shí),代表接收數(shù)據(jù)完畢,即開始解析數(shù)據(jù)流程[5]。
(4)解析數(shù)據(jù):如3.1節(jié)所述,每幀數(shù)據(jù)分為多位,按位處理即可解析數(shù)據(jù)。關(guān)鍵代碼如下:
do
{
uint8 MCP2515RdStus (void); //讀狀態(tài)
void MCP2515BitModify (TXB0DLC, 0x03); //按位讀取
}while(MCP2515ReadRXBuf (TXB0DLC, 0x80));
//當(dāng)接收緩沖區(qū)滿的時(shí)候開始解析
解析過(guò)程中,每解析一位,數(shù)據(jù)關(guān)鍵寄存器減1,直至0,表示數(shù)據(jù)解析完畢。
(5)出錯(cuò)處理:錯(cuò)誤幀為顯性,則出錯(cuò),此時(shí)點(diǎn)亮出錯(cuò)報(bào)警LED并閃爍,提醒使用者按下復(fù)位按鈕重新啟動(dòng)發(fā)射機(jī)。
4 工程實(shí)測(cè)
以Android2.3.2版本設(shè)備摩托羅拉ME722作為測(cè)試終端,以長(zhǎng)安福特CAF7180A48轎車作為實(shí)測(cè)車輛。開啟終端藍(lán)牙端口,將前述藍(lán)牙發(fā)射機(jī)實(shí)物安裝在OBD接口并開啟,運(yùn)行三方OBD信息提取顯示軟件Torque軟件。
在汽車怠速和行駛狀態(tài)下,終端均通過(guò)藍(lán)牙端口成功接收發(fā)射機(jī)傳輸?shù)钠嚂r(shí)速、發(fā)動(dòng)機(jī)轉(zhuǎn)速等參數(shù)信息,在拔下響應(yīng)傳感器模擬故障的情況下,終端能夠讀取故障碼。
新型汽車OBD信息無(wú)線發(fā)射機(jī)設(shè)計(jì)方案真實(shí)有效,其通用性好、實(shí)用性強(qiáng),特別是無(wú)線傳輸?shù)哪J?,極大地?cái)U(kuò)展了可以接收OBD信息的終端類型。
新型汽車OBD信息無(wú)線發(fā)射機(jī)可以直接用于小型載客汽車,也可以在對(duì)電源模塊稍作改造后用于重型汽車或其他支持OBD協(xié)議的交通工具。
參考文獻(xiàn)
[1] BOSCH Company. CAN Specification Version2.0[EB/OL]. http://www.bosch. Com. Germany.2011.
[2] 呂立亞, 王兆伍. 基于藍(lán)牙的汽車CAN網(wǎng)絡(luò)信號(hào)無(wú)線測(cè)量系統(tǒng)[J]. 計(jì)算機(jī)測(cè)量與控制,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協(xié)議的Android平臺(tái)汽車虛擬儀表設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2012,38(1):69-72.