M5StickCのAXP192で外部電源を使う

まだまだ謎の多い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に昇圧したほうが良さそうでした。

安定化電源が壊れて使えなかったので、ちょっと機材購入して追加で調査したいと思います。

コメント