M5Stack電源IC IP5306 用モニタ

最近のM5Stackに搭載されている電源ICにはI2Cによる制御機能が備わっています。そこで、動作確認用に、(1)電源ICの各種設定値の確認機能と、(2)USB給電停止時の自動起動の設定機能、(3)電源ボタン可否設定機能、(4)充電指示が出来るツールを作ってみました。

M5Stack用の電源ICモニタ:
https://bokunimo.net/git/m5pow/blob/main/m5stack/m5pow_monitor/m5pow_monitor.ino

電源IC IP5306の設定値(画面上部の2進数)

画面上部に、電源IC IP5306の主要なレジスタSYS_CTL0~2、Charger_CTL0~3、CHG_DIG_CTL0の計8個のレジスタの値を2進数で表示します。

PowerVin (左ボタン)

USBからの電源供給を止めて停止したときに、自動的に(バッテリからの供給で)起動するための設定です(有効=1)。
M5Stackの左ボタンでOFF/ONできます。このとき、SYS_CTL1のb2が変化します。

PowerBtnEn(中央ボタン)

電源ボタンの操作を有効にするための設定です(有効=1)。M5Stackの中央ボタンでOFF/ONできます。このとき、SYS_CTL0のb0が変化します。

Charge (右ボタン)

USBからバッテリへの充電をON/OFFするための設定です。ONにすると、BatteryLevelのステータスが「–」になり、棒グラフが充電表示(左から右へ増大するアニメーション表示)を繰り返します。OFFにすると、充電容量を5段階で表示します。

I2C対応 IP5306かどうか

I2Cによる制御に対応しているかどうかは、見た目では判断がつきません。比較的、新しいM5Stackで試してみて下さい。ボクが確認したM5Stack BASICは、2020年3月のバージョン(バッテリ容量が110mAのタイプ)です。

(参考) AutoBootOnLoad

電源ICの2次側(ESP32マイコン側)が動作したときに、自動的に起動するための設定です(有効=1)。SYS_CTL0のb2が変化します。

(参考) SYS_CTL0~2

SYS_CTL0~2の初期値は以下のようになっています。先頭の「//」を外すと書き込みを実行することができます。ロットにより違いがあるかもしれません(注意参照)。

// IP5306write(0x00,0x25); // SYS_CTL0
// IP5306write(0x01,0x1D); // SYS_CTL1
// IP5306write(0x02,0x64); // SYS_CTL2

ご注意:
誤った値を書き込んでしまうと動作に不具合が生じ、場合によっては起動ができなくなる恐れもあります。
GitHubではコメント化して配布しているので、「//」を消さなければ問題ありません

M5StackのAPIを使えば、より安全に書き換えることが出来ます。

bool PowerBoostOnOff = false; // Press and hold to turn on / off.
bool PowerBoostSet = false; // ON / OFF in one short press.
bool PowerBoostKeepOn = false; // always boost output mode.
bool PowerVin = true; // the supply off, to turn on the power again.
bool PowerWLEDSet = false; // to turn on the power LED
bool PowerBtnEn = true; // to accept the power button.
bool AutoBootOnLoad = true; // auto start function.
bool Charge = false; // Start charging

// M5.Power.setPowerBoostOnOff(PowerBoostOnOff);
// M5.Power.setPowerBoostSet(PowerBoostSet);
// M5.Power.setPowerBoostKeepOn(PowerBoostKeepOn);
// M5.Power.setPowerVin(PowerVin);
// M5.Power.setPowerWLEDSet(PowerWLEDSet);
// M5.Power.setPowerBtnEn(PowerBtnEn);
// M5.Power.setAutoBootOnLoad(AutoBootOnLoad);
// M5.Power.setCharge(Charge);

by bokunimo.net

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です