2018年4月26日 星期四

BMW E38 Enhanced IKE


Enhanced IKE - DME/EGS data stream displayed in the instrument cluster





Supports

DME : Bosch Motronic v7.2 (M62TU) 
EGS : Automatic Transmission ZF5HP24 v8.60.2 (E38/E39/E53)

Functions

@ Display the following information

1.Coolant temperature.
2.Coolant outlet temperature.
3.Transmission temperature.
4.Intake air temperature.
5.Intake air mass flow.
6.Battery voltage.
7.Engine RPM.
8.Engine load.
9.Fuel trim additive.
10.Fuel trum multiplicative.

@ Display switch by steering wheel buttons NEXT / PREV or RT_TELEPHONE.

@ Data request interval 2 secs.

@ Automatic external scanner collision detection.

Principle

Basiclly, the project is a small OBDII scanner that requesting information from DME and EGS.
It reads data from D-Bus then write display string to I-Bus. There are 4 wires needed to connect to wire harness of IKE (12V / GND / D-BUS / I-BUS)

Hardware/Software

Base on STM32F103C8T6 (20k RAM / 64k FLASH)

Enhanced IKE released as free, open source hardware/software, licensed under the GNU General Public License (GPL)

https://github.com/gigijoe/E-IKE

All bugs are made by my self @@

Installation

Before doing anything, make sure the ACC key off and know what you are doing...



There are 4 pins need to branch out - D-Bus / I-Bus / 12V / GND

Find connector X10113 on the back of Instrument Cluster. Mark the following wires.
D-Bus : Pin 1 (White / Purple)


 GND : Pin 9 / 10 (Brown / Green)


I-Bus : Pin 8 (White / Gray / Yellow)


12V : Pin 12 (Purple / Green)


Soldering 4 wires of MPX connector to the X10113 wire harness

PIN          X10113                                      MPX 

D-Bus      Pin 1 (White / Purple)                D-Bus (Brown)
I-Bus       Pin 8 (White / Gray / Yellow)     I-Bus (White)
12V         Pin 12 (Purple / Green)               12V (Red)
GND       Pin 9 / 10 (Brown / Green)         GND (Black)



The E-IKE box is located in the space below to instrument cluster as shown. Then plug in the MPX connector.

Modification of under hood 20 pins connector cap. The cap is needed in order to make connection between TXD and TXDII of D-Bus


Remove the PCB from the cap.
Wired two pins and cut two wires as below then put it back to the cap.

Operation

ACC Key on, press steering wheel button NEXT / PREV / RT_TELEPHONE to switch between items.


2018年4月8日 星期日

BMW IKE ASCII Code

This is a demo to display ASCII code after 0x7f. It may be useful to making some special function on IKE screen :)


BMW M62TU Enhanced IKE

延續之前對D-Bus / I-Bus的研究,現在要以此來製作 儀表板顯示擴充.



E38/E39/E53車系能透過儀表板顯示水溫,電壓等資訊但要經過繁複按鍵多次才能顯示,而且熄火再開又要再重頭按一次相當不方便.另外變速箱油溫無法由儀表板顯示也是個遺憾.因此我想要能夠很容易的在儀表板上看到水溫,油溫,氣溫等資訊.

規格

0.支援 M62TU DME7.2 / ZF5HP24 v8.60.2
1.在儀表板LCD顯示資訊.
2.顯示 冷卻水溫度, 水箱出口溫度, 變速箱油溫, 進氣溫度, 進氣量, 電壓, 引擎負載.
3.方向盤按鍵 R/T 控制切換顯示.
4.方向盤按鍵 Next / Prev 控制切換顯示(音響關閉時).
5.點火開關偵測, 紅火才動作.
6.D-Bus 忙碌偵測, 避免與外掛診斷電腦衝突.
7.I-Bus 忙碌偵測, 避免與內部電腦衝突.

架構

E38/E39/E53車系儀表板是車上I-Bus/D-Bus/K-Bus訊號的收發中心,所有與引擎及傳動相關的電腦都串接在D-Bus上提供故障碼診斷及數據流.實作原理是透過D-Bus取得DME/EGS電腦的數據流再透過I-Bus顯示在儀表板LCD.相當於是自製診斷電腦再過濾出想要的資訊並顯示.

硬體

一樣是以STM32F103做處理運算.D-Bus與I-Bus讀寫線路是相同的,除了D-Bus上需要外部pull high.
Usart1 - K-Bus - 9600 8E1
Usart2 - Console - 115200 8N1
Usart3 - I-Bus - 9600 8E1



軟體

以之前I-Bus實做作為基礎增加D-Bus支援.
D-Bus資料傳輸速率是9600 bits/秒, 但發送命令給DME/EGS等電腦必須要每個byte間隔5ms, 而收到DME/EGS等電腦的回應則是連續的.

逆向工程

D-Bus上該送什麼命令?以及收到的回應該如何解析?沒有官方文件只能以逆向工程的方式解決.利用前篇提到的方式解析電腦協議.

1.C310+診斷電腦與K+Dcan傳輸線用OBDII Y型線並接,這樣就可以從PC看到C310+如何與DME/EGS溝通.
2.解碼數據流,透過網路上的資訊及從INPA / EDIABAS的檔案 *.PRG 中分離出編碼的解譯表.
3.建立一個車外獨立實驗環境,一顆IKE儀表,OBDII Y型線,K+Dcan傳輸線,在PC上模擬DME/EGS在收到命令時會產生數據流.有了獨立實驗環境就可以在桌上完成所有的工作,省去每次都要上車測試的困擾.


安裝


總共要接4條線 I-Bus / D-Bus / Terminal R - 12V / GND, 這幾根線都在儀表板排線X10113. 依據顏色找出正確的線.


四條線全部接出來


電路板安放至正鴐邊手套箱旁的空間



最後修改引擎室內20pin診斷頭蓋子,將pin 17 - TXDII 及 pin 20 - TXD 連接在一起並切斷  pin 17 / pin 2 及 pin 20 / pin 15, 這樣才能同時與DME/EGS通訊. 診斷頭蓋子蓋上整個系統才能正確運作.




到此整個實做完成



體驗

上路後實際觀察各項數據
1.水溫,上下水管溫差在水龜未開啟時可達到50~60度的差距,塞車時則會差距20度以內.


2.變速箱油溫,這是我主要的觀測項目,最高溫在100度左右


3.進氣流量,打P檔及關閉空調壓縮機,數值約在15~16kg/h,開空調數值約在18~19kg/h,再採煞車進D檔數值約在24~25kg/h


4.電壓13.7V附近



2018年4月7日 星期六

BMW M62TU 含氧感知器

本篇為英文翻譯
 http://p38arover.com/rover/p38a/Engine_Management/BOSCH_ME72_Systems.pdf

p.18 ~ p.21 (第18至21頁)

Engine Control Module (ECM) - 引擎控制模組

Heated Oxygen Sensors (HO2S) - 具有加熱能力的含氧感知器

HO2S 回應訊號給 ECM 使其能夠進入封閉迴路的油氣混合比控制. 總共有四個HO2S被安裝在每列汽缸的觸媒前後各一個 (V8有兩列汽缸在觸媒前後各一個,所以總共四個).每個HO2S會輸出與廢氣含氧量成反比的電壓輸出.HO2S由鋯金屬感測元件以及具有氣體可穿透性的陶瓷包覆在外部表面.外部表面直接暴露在廢氣當中而內部表面則與大氣相通(參考圖片).內外部表面含氧量的差異在感測器產生電位差.電壓的產生則依靠前後兩個HO2S2的訊號差異.當AFR(油氣混合比)比例參數Lambda為1時(例如空氣及汽油質量比為14.7比1)輸出電壓為約為450mV.當Lambda為1.2的較稀混合比,廢氣中的含氧量增加而輸出電壓約為100mV.叫濃的混合比Lambda 0.8造成廢氣含氧量降低而輸出電壓約為900mV.

ECM經由兩個HO2S提供的資訊來監控噴油嘴脈衝寬度改變的效果.噴油嘴脈衝寬度是噴油嘴作動噴油的時間長度也就是決定有多少油量噴出.反應時間則依據不同的駕駛情況而定,ECM可以得知每個汽缸對總排氣量的貢獻度.這讓ECM可以對每個汽缸變動噴油的策略,例如在任何時間點精確控制每個汽缸的噴油量.

ECM持續不停檢查HO2S的輸出訊號是否正確可信.若檢查出不合理的訊號,ECM會儲存相關的故障碼以及引擎轉速,負載及HO2S的輸出電壓.ECM需要HO2S的訊號來設定大部分的調適值.某個HO2S錯誤失效會造成這些調適值重置為預設值.接著造成引擎失去最佳化設定.引擎怠速可能變糟以及排氣像是腐爛雞蛋的氣味(起因於氧化硫的增加).

HO2S的功效會隨著使用時間持續惡化而需要週期性的更換(目前是每120000英哩,但還是要參考保養計畫表最新的更換週期).ECM可以從HO2S的訊號偵測到持續穩定的劣化.若HO2S的劣化程度超過預定的水準,ECM會儲存相關的故障碼以及引擎轉速,負載及電池電壓.

HO2S需要高溫才能有效率工作.為了保證能快速達到工作溫度,每個HO2S感測器都有加熱元件在陶瓷頂端內.加熱器會將HO2S感測器加熱到超過350度C(662F).加熱速率(溫度上升的速度)由ECM小心的控制以免造成陶瓷材料的溫度衝擊.ECM輸出PWM訊號給加熱器來控制HO2S溫度上升速率.HO2S在引擎暖機及一段時間的怠速後會被加熱.

ECM以計算有多少電流供給來監測每個工作中的HO2S感測器的加熱器狀況.若ECM辨識出加熱器阻抗太高或太低,ECM會儲存相關的故障碼以及引擎轉速,冷卻水溫及電池電壓.

HO2S感測器是非常靈敏的裝置,必須要一直小心的操作.沒有正確的操作將會導致非常短的使用壽命或無法操作.安裝HO2S感測器時會塗覆一些抗鎖死合成劑.要小心不可塗抹感測器的頂端.若感測器需要拆卸並重新安裝,應該要塗覆少量的抗鎖死合成劑