第二篇做了樣品上車測試,結果第一晚過去了,電瓶電壓掉得比平常更低,發動後自動啟停也不反應。看起來我量到很低的電流跟成功搞定省電(low power)是兩件事(淚)
當晚我在汽車鎖定的狀態下,端詳著板子上的LED燈。他設計成有封包就會閃,而且是每0.1秒亮暗切換。我真的看到LED一閃一閃亮晶晶,想破頭不小心觸發汽車警報!我一直都沒辦法順利解除警報,最後把OBD-II電源 & 警報系統的保險絲燒壞,車子也跑出錯誤碼收場
有三個讓LED閃爍的可能
我還是得先修車,不然OBD-II頭沒電不能做實驗。雖然還在保固期,但跑原廠和他說我開發車用電子要出保固,似乎不大妥。趕緊約新竹知名的外場(昇佑汽車)處理,老闆很專業,很快就定位到保險絲的問題,幫忙消除錯誤碼,整台車又回復正常
下圖是換下來的5A保險絲,可以看到裡面的線已經斷掉
我和老闆討論起實驗,老闆很有把握:LED閃爍不會觸發警報。所以眼下只剩兩個可能(柯南背景音樂響起)
ELM327還是很好用的
從駕駛座拉出一分二延長線,一邊接ELM327,一邊接遙控關門器,有趣的地方來了
當晚我在汽車鎖定的狀態下,端詳著板子上的LED燈。他設計成有封包就會閃,而且是每0.1秒亮暗切換。我真的看到LED一閃一閃亮晶晶,想破頭不小心觸發汽車警報!我一直都沒辦法順利解除警報,最後把OBD-II電源 & 警報系統的保險絲燒壞,車子也跑出錯誤碼收場
有三個讓LED閃爍的可能
- LED閃爍讓汽車警報系統送出CAN封包
- 汽車休眠,還是定期會有CAN封包
- 我的關門器插上去,把汽車喚醒,於是出現CAN封包
看來問題不單純,要找兇手了
我還是得先修車,不然OBD-II頭沒電不能做實驗。雖然還在保固期,但跑原廠和他說我開發車用電子要出保固,似乎不大妥。趕緊約新竹知名的外場(昇佑汽車)處理,老闆很專業,很快就定位到保險絲的問題,幫忙消除錯誤碼,整台車又回復正常
下圖是換下來的5A保險絲,可以看到裡面的線已經斷掉
我和老闆討論起實驗,老闆很有把握:LED閃爍不會觸發警報。所以眼下只剩兩個可能(柯南背景音樂響起)
- 汽車休眠,還是定期會有CAN封包
- 我的關門器插上去,把汽車喚醒,於是出現CAN封包
ELM327還是很好用的
從駕駛座拉出一分二延長線,一邊接ELM327,一邊接遙控關門器,有趣的地方來了
- 接ELM327,汽車鎖定幾分鐘後,CAN bus確實平靜無波
- 接ELM327和遙控關門器,ELM327和遙控關門器都會看到CAN bus有封包
- 每隔幾秒就有一些封包送出
所以接上遙控關門器,就會讓汽車定期被喚醒一下(然後又立刻睡下去)。所以第一晚測試,汽車不斷被喚醒,吃了不少電
驗屍報告
CAN Transceiver有根腳叫CAN-TX,這根腳收到0,就會送出CAN bus的"dominant"信號叫醒大家。所以汽車睡覺時,CAN-TX必須永遠保持是1,才不會驚擾大家
經過一長串debug,我找到錯誤的原因了
經過一長串debug,我找到錯誤的原因了
- 開機瞬間,CAN Transceiver還沒啟動,CAN-TX是0或1都沒關係
- 事件A: 打開CAN Transceiver
- CAN-TX pin開機預設是0
- 打開CAN Transceiver,看到CAN-TX pin=0,送出dominant驚醒其他人
- 事件B: 啟動MCU內部的CAN Controller
- CAN-TX pin變成1
真是諷刺,我的low power設計反而更耗電了。汽車裡的電子元件醒來的耗電可不是開玩笑的。修復這個問題也很簡單,把上頭的事件A/B顛倒就可以了
- 開機瞬間,CAN Transceiver還沒啟動,CAN-TX是0或1都沒關係
- 事件B: 啟動MCU內部的CAN Controller
- CAN-TX pin從0變成1
- 事件A: 打開CAN Transceiver
- CAN-TX pin已經是1,也不會送出dominant
(我很想把過程寫得英勇萬分,但真的有點難)
解題只要5分鐘,查問題卻花了5個鐘頭
事後回想,其實這題一開始我有想過。當時模組本身的耗電都還沒降下,就沒再多想。這題顯然是設計車用電子得踩過的坑,踩過了就過關了
我拿修改過的裝置插上車,設定警報,一動也不動,我不想再燒保險絲了。現在LED沒再一閃一閃亮晶晶,我知道我做對了!插上裝置,繼續長期測試
留言
張貼留言