ESP32(8) Low Power
Low Power我踩過不少坑(如下),做起來曲折離奇,不得不解。雖然內心十分抗拒,還是得咬著牙搞定。這篇也是盡量原汁原味,呈現我做的傻事
http://lihgong.blogspot.com/2019/05/volvo-xc60-2.html
http://lihgong.blogspot.com/2019/05/volvo-xc60-5low-power.html
[Low Power 規格]
CAN logger在汽車運作中,吃不到50mA,這程度對發電機完全無感,問題不大先忽視
引擎熄火開始吃電瓶,70Ah電瓶一顆約莫7000台幣,待機電流必須做得小才不會弄壞電池。定義規格:待機1年,吃1%電瓶,待機電流要壓到80uA。鉛電池自放電是每個月3%~10%,我訂的規格算是很嚴苛
- 70Ah*0.01 = 365*24h*80uA
Low Power選零件先決定一半:極小值是20uA!這裡的規格不開藍芽或無線網路
- ESP32-C3 deep-sleep mode耗電量5uA
- TJA1042/3 standby mode耗電量10uA
- 5V LDO靜態耗電2.5uA
- 3.3V LDO靜態耗電2.5uA
[先搞定硬體]
CAN logger放車上,要搞定12v轉5v,拿先前做過的板子跳線加工一下。電源也加個二極體稍微隔離(理論上USB也要隔離,PCB已經做好沒辦法改)。跳線連接頭避免拉扯,用熱溶膠盡量固定,免得實驗做一半要維修。我的工藝水準真的有限,下面這團東西,感覺很不可靠啊
下圖是設計IDEA,原型驗證過做小板子會好得多
[睡眠機制]
先思考什麼時候要睡覺
- 汽車運作中,CAN Logger開始紀錄封包到SD卡,寫寫寫
- 等汽車熄火,CAN封包還會持續一段時間,最後停止
- 封包停止,ESP32-C3 SDK,接收CAN封包函數timeout設成4秒,然後去睡覺
[睡下去]
斷電前要做這些事
- 把所有GPIO pin review一輪,一般是設成input or output,檢查pull-up/ pull-down,避免從IO pin漏電。基本上low power這個是基本功
- 讓CAN收發晶片進Standby Mode省電,電流壓到10uA。這個狀態CAN bus任何擾動(bit#0, dominate)都會在RX pin輸出high-to-low,用這根pin喚醒ESP32-C3
- 一切都準備完成,讓ESP32進入deep sleep mode
[測量耗電]
我有自製小道具,能斷開12V/GND,直接用電錶測量耗電
[醒過來]
- 樹梅派打出CAN封包,CAN收發晶片偵測到dominate,輸出high-to-low喚醒ESP32-C3
- 處理器不同的睡法,醒過來的方式不同。ESP32-C3的Deep-sleep是完全重跑。我在開機的地方讓某根GPIO pin拉高再拉低,用示波器驗證真的重開機
- ESP32 SDK因為有些軟體放在SPI上面跑,睡醒要花比較長時間。嚴謹的驗證還包括CAN封包擾動,到真的醒過來,需要多少時間(之後再做)
- SDK也提供reset reason API,能在醒過來時,驗證是什麼原因起來
- 如果是原地醒過來,那軟體一般會這樣寫
// prepare for sleep (IO pin adjustment)
go-to-sleep
// prepare for operation (IO pin adjustment)
這顆完全重跑,寫起來像這樣下面這樣,既然軟體是完全重跑,樣子就是重開機
// prepare for sleep (IO pin adjustment)
go-to-sleep// prepare for operation (IO pin adjustment) - ESP32-C3也可以在睡下去之前,把某些資料寫入另一塊記憶體,等回電還看得到。這個功能目前我還沒用上
[實驗結果]
- 運作耗電約27mA,睡下去860uA,穩穩地睡,電流沒突然跳起來(觀測3min)。巨大的電流差大表真的有睡,成功一半了。待機耗電離目標80uA還很遠,一般會從周邊找漏電
- 直接拔SD卡,電流降到400uA,這裡佔一半的電流!ESP32-C3有根VDD_SPI pin給Flash供電,睡下去這根pin會斷電。從3.3v改接這根pin,運作正常,而且睡下去不耗電
- 我的板子放了兩顆CAN收發器,因應VOLVO車有兩條CAN bus,有顆收發器好像被我弄壞沒法打出封包,電流降不下去。換一顆好的收發晶片,現在電流可以壓到90uA。離目標值(80uA)只差一步,原則上是可以上車玩了
- 離理論極小值 (20uA)還有一段路。我反覆查Google,反覆實驗,修改GPIO pin設定,基本上全部沒用!如果某個地方實驗做很久都沒效,那可能原因不在這裡,沒準是硬體出問題導致漏電:IC解焊,跳線飛來飛去,焊油沒清乾淨,太多不確定因素。硬要修復硬體原型可能會先弄壞,就此先打住
- 備案準備登場了,有了上次VOLVO+經驗,我知道開發板會折損很快,果斷直接訂了10片板子(在路上),我準備先單獨測試CPU斷電,看datasheet說的5uA是不是真的。再依序擺上周邊,看哪一步出錯
[踩坑]
做Low Power這題一定會踩坑,坑還沒填上,內心的抗拒果然騙不了人 >_<
留言
感謝你的分享
Edwin