M5StickCのDCDCをオフにしたら稼働時間が倍に延びた話


こういう使い方で稼働時間が40分から80分に延びました。

はじめに

DCDCというのはこちら↓ の記事によるとM5StickCから5Vを出力するために使うものだそうで……
M5StickCでの省電力ノウハウ
「初期化時にOFFにするパラメーターが追加されています」とのことだったのですが、あまり情報がなかったので、GitHubのソースを見ながらやってみることにしました。
Zoom用に作ったbluetoothキーボード(上の写真)の電池の持ちをよくしたいというのが趣旨です。

setup()の中で

M5.Axp.begin(false,false,false,false,true);

とするとDCDC3をオフにできるようです。(2020 12/27時点)

で、やってみた

最初に書いちゃいましたが、稼働時間が40分だったのが80分になりました。
DCDCをオフにするのは省電力にかなり有効だということが分かりました。
5V出力が必要ない時は積極的にオフしていきたいと思います。

注意事項

M5.Axp.begin()ですが、使うときに注意事項が2つあります。

  • オフにするのはDCDC3です。DCDC1ではありません。

初期化可能なDCDCには DCDC1 と DCDC3 があります。

void AXP192::begin(bool disableLDO2, bool disableLDO3, bool disableRTC, bool disableDCDC1, bool disableDCDC3)

DCDC1をtrueにするとディスプレイやボタンが反応しなくなりました。(電源ボタンは使えます)
また、ArduinoIDEでスケッチの書き込みができなくなりました。
(M5Burnerを使ったら書き込めました。そのあとはまたArduinoIDEで書き込みできるようになります
M5Burnerを使っても復旧できない場合があるそうです。(2022 4/26 追記))

くれぐれも、不用意にDCDC1をtrueにしてしまわないように気を付けてください。

  • M5StickCのライブラリのバージョンによって引数が異なります

この記事の内容は ArduinoIDE のM5StickCライブラリ バージョン 0.2.0 対応です。
GitHubに上がっている最新バージョンではAxp.begin()の引数が一つ増えています。
手元のライブラリではどうなっているか確認してからお試しください。

(GitHubの最新バージョン 2020 12/27現在)
void AXP192::begin(bool disableLDO2, bool disableLDO3, bool disableRTC, bool disableDCDC1, bool disableDCDC3, bool disableLDO0)

(twitterでLang-shipのたなかまさゆきさん@tnkmasayukiにおしえていただきました。ブログいつも拝見しています。ありがとうございました)


追記:
それにしても………参考文献によるとDCDCは常時1.3mA以上使っているという話だったのですが、それだけで稼働時間がこんなにも変わるものでしょうか?
でもソースは他にどこも変えていないし…
何か他の原因に心当たりのある方がいらっしゃれば、教えていただけたら幸いです。


参考文献

Lang-ship M5StickCでの省電力ノウハウ
GitHub M5StickC/src/AXP192.cpp