文獻標識碼: 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.