省電力系の設定を計測してみました。
現時点の情報ですので最新情報はM5StickC非公式日本語リファレンスを確認してください。
概要
USB接続のテスターを利用して、消費電流を計測しています。供給電圧は5Vですので、内部的にDCDCなどを経由してロスがでています。
充電機能は基本的にAXP経由で止めていますが、止めても少しだけ流れています。また、動作時の温度などで消費電流が変わる気がしますので絶対値ではなく、オプションを変更した場合の増減値を参考値として利用してください。
測定値は瞬間電流を目でみて記録していますので、精度は低いです。
CPU周波数
周波数(MHz) | 消費電流(mA) | 増減(mA) |
240 | 95.5 | 0.0 |
160 | 82.1 | -13.4 |
80 | 74.4 | -21.1 |
40 | 65.7 | -29.8 |
20 | 60.5 | -35.0 |
10 | 59.0 | -36.5 |
標準が240MHzで、下げた場合の消費電流の推移です。10と20だとほとんど差がないんですね。
スリープ
状態 | 消費電流(mA) | 増減(mA) |
電源OFF | 13.3 | 0.0 |
DeepSleepEXT0WakeUp | 17.0 | 3.7 |
DeepSleepEXT1WakeUp | 17.2 | 3.9 |
DeepSleepTimerWakeUp | 17.8 | 4.5 |
DeepSleepTouchWakeUp | 17.0 | 3.7 |
DeepSleepULPWakeUp | 17-33 | – |
LightSleepEXT0WakeUp | 18.4 | 5.1 |
LightSleepEXT1WakeUp | 18.2 | 4.9 |
LightSleepGPIOWakeUp | 18.3 | 5.0 |
LightSleepTimerWakeUp | 18.2 | 4.9 |
LightSleepTouchWakeUp | 18.2 | 4.9 |
LightSleepULPWakeUp | 18.2-19.3 | – |
WAKE | 98.8 | 85.5 |
ソースコードはGitHubのサンプルを利用しています。DeepSleepとLightSleepはもっと差があると思いましたが、こんなに差が少ないんですね。
ULPは動作していないときには省電力ですが、起動時には結構電力使っていました。LightSleepは増減が少なかったのですが、DeepSleepは非常に電力使っていたのでちょっと気になります。
スリープ設定
状態 | 消費電流(mA) | 増減(mA) |
標準 | 17.0 | 0.0 |
PERIPH OFF | 17.0 | 0.0 |
SLOW_MEM OFF | 16.8 | -0.2 |
FAST_MEM OFF | 16.8 | -0.2 |
ALL OFF | 16.8 | -0.2 |
下記コードを使って設定値をコメントアウトしながら計測しました。GPIOをPULLUPやHIGH設定にしていないので、周辺機器を切っても電流に差はありませんでした。
メモリはどちらかを切ると消費電流が下がりましたが、両方切っても変わらない謎の動きです。
void setup() { esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH , ESP_PD_OPTION_OFF); esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_SLOW_MEM, ESP_PD_OPTION_OFF); esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_FAST_MEM, ESP_PD_OPTION_OFF); esp_deep_sleep_start(); } void loop() { }
AXPスリープ
状態 | 消費電流(mA) | 増減(mA) |
通常 | 99.7 | 0.0 |
AxpSleep | 67.9 | -31.8 |
AXPのスリープです。主に画面への電源供給が止まります。画面の明るさを7とかにしたのとそれほど変化がなかったです。
まとめ
スリープの消費電流の結果が意外でした。GPIOのpinModeを変更した場合や、通信をした場合の計測もしていきたいと思います。
コメント