現時点の情報です。最新情報はM5StickC非公式日本語リファレンスを確認してみてください。
概要
AXP192まわりの設定で、消費電流がどうかわるかを主に調査しました。また、測定環境も変わったので、少し精度があがったかな?
測定環境
前回まではUSB経由の電源テスターを使って測定していました。
この子じゃないけれど、こんなタイプのやつです。一般的な用途には十分なのですが、低電流での精度がなんか悪いかもしれません。
今回は上のようなUSBから電圧調整と、電流が制御できる物から電源をとって、M5StickCとの間にマルチメーターを入れて、電流を計測しました。
ワニ口クリップや、ジャンパー線を使っているので、0.5V以上電圧低下してしまいましたので、M5StickCのAXP192で入力電圧がだいたい5Vになるように電圧を調整しています。こちらにも電流計がありますが、50mA以下だと流れているはずですが0と表示されたりしています。
M5StickCのスケッチ
前回まではボタンを利用して、測定モードの変更をしていましたが、M5StickCだとボタンを押すことで消費電流が跳ね上がったりするので、ちょっと使いにくかったです。
そこで、Serial経由でモードを投げる方式にしてみました。
#include <M5StickC.h> int delayTime = 1; void setup() { M5.begin(); } void loop() { while (Serial.available()) { String command = Serial.readString(); command.trim(); if (command == "") { // Skip } else if (command == "0") { delayTime = 0; Serial.print("Command : delayTime = "); Serial.println(delayTime); } else if (command == "1") { delayTime = 1; Serial.print("Command : delayTime = "); Serial.println(delayTime); } else if (command == "1000") { delayTime = 1000; Serial.print("Command : delayTime = "); Serial.println(delayTime); } else { Serial.print("Command? : "); Serial.println(command); } } delay(delayTime); }
Arduino IDEのシリアルモニタから0とか1000と文字列を投げることで、内部のモードを変更しています。
delay()の影響
loop | 消費電流 |
delay(0) | 65mA |
delay(1) | 50mA |
delay(1000) | 50mA |
loop()の最後にdelay()を入れるか、入れないのかで15mAぐらい差がありました。1と1000だと1000の方が若干消費電流が減りましたが0.1mA単位の差でした。
delay()がないと無限ループで処理が止まらないので消費電力的には良くないみたいでした。
AXP192の設定差
設定 | 消費電流差 |
内部クーロンカウンタ | 差なし |
内部ADC動作 | 若干下がる |
GPIO0(MIC) | 若干下がる |
LDO1(RTC) | 若干下がるはず。。。 |
LDO2(TFTバックライト) | 20mA下がる |
LDO3(LCD) | 上がる! |
EXTEN(DCDC) | 2mA下がる |
DCDC1(ESP32) | ESP32が止まる |
DCDC2(未使用) | 差なし |
DCDC3(未使用) | 差なし |
AXP192のレジスタを変更しながら、消費電流の差を見てみました。若干の場所は測定誤差程度の差で、0.1mA単位の差です。
内部クーロンカウンタ
充電と放電のクーロンカウントを行って、バッテリー容量の計算などをしています。止めるとたぶん消費電流は下がっていると思いますが、0.1mA未満の差な気がします。
内部ADC動作
内部の温度や入力電圧などのADCを動かすかのレジスタです。動作を止めることで、若干下がっていましたが0.1mA単位の差でした。
GPIO0(MIC)
I2S接続の内蔵MICへの電源供給です。こちらも止めることで下がるはずですが、大きくはありませんでした。
LDO1(RTC)
RTCのバックアップ電池への充電用電源供給です。設定値的に0.2mAまでの供給ですが私の環境ではそこまでの変動を測定できませんでした。
LDO2(TFTバックライト)
バックライトへの電源供給です。M5.Axp.ScreenBreath(7)とOFFで消費電流がほとんど変わらないので、7でうっすらつけておいてもいい気がします。
LDO3(LCD)
画面の制御用電源に接続されているはずですが、電源をOFFにすると消費電流が不安定になり、電流も増えてしまいます。回路的にOFFにしてはいけない設計になっている気がします。
EXTEN(DCDC)
こちらはDCDCに接続され、5V OUTとGroveの5V電源用で使われていました。出力をOFFにするとIPSOUT(バッテリー電圧)が出力されます。
5V端子を利用していない場合か、3Vから5V程度までの電圧で動くセンサーなどと接続する場合にはOFFにすることで2mA消費電流を減らすことができます。
DCDC1(ESP32)
ESP32に供給される電源なので、OFFにはできません。
DCDC2、DCDC3(未使用)
未使用のため、OFFでもONでも消費電流は変わりません。
まとめ
まだざっくりとしか測定していませんが、過去の測定結果は電流の精度が悪かった気がします。電源OFF時の電流とかも、新環境だと低い数字まで落ちたのでこっちの環境でもう一度測定し直したほうがいいかもしれません。
コメント