M5StickCのバッテリー管理AXP192を図にまとめる

一覧を列挙したものだと、あとでわかりにくいので使うところだけをまとめた図を作ってみました。

※現時点の情報ですので、最新情報はM5StickC非公式日本語リファレンスを確認してください。

関連図

項目詳細

外部USB電源入力(USB, VBUS)

電圧(mV):GetVusbinData() * 1.7
電流(mA):GetIusbinData() * 0.375

USBからの電源供給ですが、0.0.5では関数が実装されていません。以下の内容を自分で定義すれば取得できます。

uint16_t GetVusbinData(void){
 
    uint16_t vin = 0;
 
    Wire1.beginTransmission(0x34);
    Wire1.write(0x5a);
    Wire1.endTransmission();
    Wire1.requestFrom(0x34, 1);
    uint8_t buf = Wire1.read();
 
    Wire1.beginTransmission(0x34);
    Wire1.write(0x5b);
    Wire1.endTransmission();
    Wire1.requestFrom(0x34, 1);
    uint8_t buf2 = Wire1.read();
 
    vin = ((buf << 4) + buf2); // V
    return vin;
 
}
 
uint16_t GetIusbinData(void){
 
    uint16_t iin = 0;
 
    Wire1.beginTransmission(0x34);
    Wire1.write(0x5c);
    Wire1.endTransmission();
    Wire1.requestFrom(0x34, 1);
    uint8_t buf = Wire1.read();
 
    Wire1.beginTransmission(0x34);
    Wire1.write(0x5d);
    Wire1.endTransmission();
    Wire1.requestFrom(0x34, 1);
    uint8_t buf2 = Wire1.read();
 
    iin = ((buf << 4) + buf2); // V
    return iin;
 
}

外部電源入力(5V←, ACIN)

電圧(mV):M5.Axp.GetVinData() * 1.7
電流(mA):M5.Axp.GetIinData() * 0.625

外部電源の電圧と電流を取得する。

液晶バックライト電圧(LDO2)

電圧(V):M5.Axp.ScreenBreath( val )

valは0x00(1.8V:暗い)から0x0f(3.3V:明るい)の16段階。

内部供給電圧(ASP)

電圧(mV):M5.Axp.GetVapsData() * 1.4

USBやACINから5Vが供給されているときには5V、バッテリー駆動のときには4V程度になります。0.0.5では実装されていません。GitHubでは実装されていますので、次回リリース時には使えるようになると思います。

内部温度

温度(℃): -144.7 + M5.Axp.GetTempData() * 0.1

40℃から50℃ぐらいが正常値な気がします。

バッテリー充電

充電電流(mA):M5.Axp.GetIchargeData() * 0.5

バッテリーに充電している電流です。この値が0以外の場合が充電中になります。バッテリー残量によりますが10mA前後で充電をしているようです。電源を消すともっと早く充電できるはずです。

バッテリー放電(状態取得)

充電電流(mA):M5.Axp.GetIdischargeData() * 0.5
バッテリー電圧(mV):GetVapsData() * 1.4
バッテリー容量(mHA):M5.Axp.GetCoulombData()

バッテリー残量を表示する場合には、容量ではなく電圧を使ったほうが無難だと思います。容量は使っていくと減っていくので、最大値を保存しておかないと計算できません。バッテリー電圧は3.0Vから4.2Vの間で設定されているので、 3.3V以下で0%、4.1V以上は100%の計算などがかんたんな気がします。

コメント