まだまだ謎の多いAXP192ですが、ちょっとだけわかってきました。現時点の情報なので最新情報はM5StickC非公式日本語リファレンスを確認してください。
概要
M5StickCには外部電源用に5V INの端子があります。しかしながらAXP192のデータシート上は2.9Vから6.3Vまでの入力を許容しています。
また、3.8V以上の入力があると自動起動をするようです。
外部電源の実験
2台のM5StickCを利用して、GNDを共有してから、片方のBAT端子からもう片方の5V INに接続してみました。安定化電源が壊れたので簡易測定です。
BAT側のM5StickCが4V以上の場合
5V IN側のM5StickCが充電されながら動いていました。
BAT側のM5StickCが3.7V前後の場合
5V IN側のM5StickCで充電はされなくなりましたが、外部電源で動いていました。
BAT側のM5StickCが3.5V前後の場合
この辺から外部電源を使わなくなりました。
外部電源との電源連動(GitHub)
#include <M5StickC.h> // 最後に電圧確認した時間 int lastVinTime = 0; // AXPを電源オフする void axp_halt(){ Wire1.beginTransmission(0x34); Wire1.write(0x32); Wire1.endTransmission(); Wire1.requestFrom(0x34, 1); uint8_t buf = Wire1.read(); Wire1.beginTransmission(0x34); Wire1.write(0x32); Wire1.write(buf | 0x80); // halt bit Wire1.endTransmission(); } void setup() { M5.begin(); M5.Lcd.fillScreen(WHITE); } void loop() { if( (M5.Axp.GetVinData()*1.7) < 3.0 ){ if( lastVinTime + 5000 < millis() ){ // 3.0V以下が5秒以上で電源オフ axp_halt(); } } else { // 最終電圧確認時間更新 lastVinTime = millis(); } delay(500); }
外部電源からの入力をM5.Axp.GetVinData()で監視して、一定以下の電圧が指定秒数以上続くと電源を落とすサンプルです。
電源オフは本家ライブラリにプルリクエストを出しているので、そのうち取り込まれる可能性がありますが、現時点では自作する必要があります。
電源オンは5V INに3.7V以上の電源を接続したときに自動起動します。このため5Vで動作する回路とM5StickCを連携させ、外部電源がなくなったらプログラムで電源オフにして、回路から5Vが供給すると電源オンになる連携が可能になります。
まとめ
AXP192のデータシート上2.9Vからの動作になっていましたが、安定動作させるには3.5V以上の電圧が必要でした。この電圧だと18650などのリチウムイオン充電池の直結は厳しいかな?
M5StickCの内蔵電池はかなり容量が小さいので、18650や16340であれば直結でも動きそうですが、安定動作にはやっぱり5Vに昇圧したほうが良さそうでした。
安定化電源が壊れて使えなかったので、ちょっと機材購入して追加で調査したいと思います。
コメント