ESP32-DevKitCは、ESP32を簡単に利用することができるボードです。
私は、Espressif Systems純正のESP32-DevKitCではなく、その互換品のESP32-DevKitCを安いのでよく使っています。その互換品のESP32-DevKitCを使って、郵便が届いたらメールで知らせてくれる「はかり」内蔵の郵便受けを作りました。この郵便受けについて詳しくはこちらをご覧ください。

この郵便受けは、1分毎に重さをはかり、重さが変化したらインターネットに接続してメールを送信するという仕組みになっていて、一通り処理が終わったら1分間のDeepSleepに入ります。
このDeepSleep中の電流が結構大きかったので、詳しく調べることにしました。
DeepSleep中も消費電流が大きい
試しにこのボードだけで、DeepSleep中の電流を測定してみました。このボード、DeepSleep中にもかかわらず、11.38mAも消費しています。
ESP32単体のDeepSleep中の消費電流は数uAのはずです。11mAはかなり大きな電流です。どこで、どれだけ電流を消費しているのでしょうか。
部品を取って調べてみる
ESP32-DevKitCには、ESP32の他に、電源のレギュレータICと、USBシリアル変換のICが搭載されています。
電源のレギュレータIC
レギュレータICにはAMS1117-3.3というICが使われています。データシートで消費電流を調べてみると、約5mA消費することがわかります。
それでは実際に取り外して、電流がどれだけ変化するか調べてみます。
取り外しにはホットエアーを使います。
ホットエアーは、多ピンの表面実装部品を簡単に取り外すことができるので、とても便利な工具です。
レギュレータICが取り外せました。
レギュレータICを取り外し、安定化電源から3.3Vを供給します。DeepSleep中の電流は8.15mAに減りました。
レギュレータICを取り外す前が11.38mAだったので、レギュレータICで消費されていた電流は3.23mAです。おおよそデータシート通りです。
レギュレータICをもっと低消費電流の物に変えることで、最大3mA程度電流を下げられることがわかりました。
USBシリアル変換IC
USBシリアル変換ICには、CP2102というICが使われています。
CP2102の消費電流は、サスペンドモードになっている時で約80uAということです。
それでは、ホットエアーでCP2102を取り外してみましょう。
ホットエアーのおかげで、簡単に取り外せました。
DeepSleep中の消費電流は0.00mAになってしまいました。10uA以下ということです。
取り外す前が8.15mAだったので、この電流が全てUSBシリアル変換ICで消費されていたことになります。
CP2102は消費電流が大きいのか?
CP2102はサスペンドモード中の消費電流が80uAとデータシートに書いてありますが、実際は8mAも消費しています。データシートが間違っているのでしょうか。
評価ボードでテスト
偶然ですが、SILICON LABS純正のCP2102評価ボードを持っていた(しかも全く使ったことがない新品)ので、このボードの消費電流を測定してみます。
この評価ボード単体の消費電流は0.49mAでした。80uAではありませんでしたが、部品が少し載っているので、それらが消費しているのかもしれません。
互換品ESP32-DevKitCのCP2102は互換品か?
左のICがSILICON LABSの本物のCP2102です。右が、互換品ESP32-DevKitCから取り外したCP2102です。
マーキングが違いますね。互換品ESP32-DevKitCのCP2102は、本物ではなく互換品なのかもしれません。そのため、サスペンド中の消費電流が本物のように低くならないのでしょう。
CH340Cで置き換える
互換品CP2102は消費電流が大きすぎます。しかし取り外してしまうと、プログラムの書き換えができなくなってしまいます。
そこで、先日作ったCH340Cを使った書き込み機をつなぐことを検討します。CH340Cの書き込み機についてはこちらをご覧ください。
CH340Cの書き込み機だけの消費電流を測定したところ、15.8uAでした。SILICON LABの本物CP2102よりもかなり省電力です。
DeepSleep中の電流
ESP32-DevKitCにCH340Cの書き込み回路を接続し、DeepSleep中の電流を測定してみました。結果は18.8uA。これはすばらしい値ですね。
ESP32-DevKitCのUSBシリアル変換ICをCH340Cに変えるだけで、消費電流を劇的に下げることができます。
違うESP32-DevKitCの消費電流も調べてみる
左がこれまで調べてきた互換品のESP32-DevKitCです。右もESP32が載っていない互換ボードですが、CP2102が本物っぽいです。このボードの消費電流も測ってみます。
結果は3.41mA。レギュレータICが3.2mAくらいだったので、CP2102の消費電流は0.2mA程度ということになります。
まとめ
各ICの消費電流
互換品のESP32-DevKitCのDeepSleee中の消費電流は、11.4mAとかなり大きめなことがわかりました。
原因は
- レギュレータICが3.2mA
- 互換品CP2102が8.2mA
消費しているといることが原因でした。
本物のESP32-DevKitCの場合、
- レギュレータICが3.2mA
- CP2102が0.2mA
消費していました。
さらに、レギュレータICを使わず、CP2102をCH340Cの回路にすることで、DeepSleepの電流が18.8uAと劇的に下げられることがわかりました。
郵便受けも改造
早速、郵便が届いたらメールで知らせてくれる「はかり」内蔵の郵便受けの、ESP32-DevKitCのCP2102を取り外しました。レギュレータの代わりにDCDCコンバータを使っています。CP2102を取り外すことで、DeepSleep時の消費電流は0.07mAになりました。このDCDCコンバータについて詳しくはこちらです。
DeepSleep中の消費電流が70uAになったことから、バッテリー動作でもかなり長寿命になると思います。どのくらい寿命が伸びるか、しばらく様子を見たいと思います。
2021.4.30追加 つづき HX711の省電力化もしてみました。
追加終わり
コメント
PR初心者です。相談です。
ESP32-DevKitC同士をbluetooth通信でつないでLチカしてみました。
送信側は人感センサーで3.3Vを供給しているので、使用電力は大きくありません。
受信側はDeepSleepで省電力化しようとしていますが、どうしてもうまくいきません。
太陽光発電+電気二重層コンデンサを使う予定のため、省電力化が必須です。
この相談にのっていただけるでしょうか?
ATLETAさん
はじめまして。現状どのような流れのプログラムで、何が問題となっているのですか?
数十μA程度の低消費マイコンによる機器をつくりたいのですがμA級の測定方法が分からず、市販のテスターではμA級の測定は難しいような情報ばかりでどのようにμAを測定すべきか悩んでいます。記事で使用したテスターのμA級の測定結果はどの程度の信頼性があるのか教えていただけると幸いです。
にゅうは様
記事を読んで頂きありがとうございます。
テスターにuAのモードがないのであれば、例えば、
1kΩ(1000Ω)の抵抗をマイコンと電源の間に入れて、テスターのmVモードで抵抗の両端の電圧を測定します。
オームの法則がE=I×Rなので、1uAの電流が流れると抵抗の両端の電圧はE=1uA×1000Ω=1mVとなります。
このため1mVと測定できた場合、実際は1uA流れており、10mVだった場合には10uA流れていることがわかります。
このようにしてmVの電圧測定モードでuAの電流を測定することができます。
測定精度はテスターのmVの測定精度とほぼ同等となります。(テスターのuAの測定もこれと同等な仕組みです)
1点注意があります。
マイコンが1mA消費してしまうと、E=1mA×1000Ω=1Vなので、抵抗の両端で1Vの電圧が測定できます。
これは、マイコンに供給される電圧が電源電圧よりも1V低下することを意味します。
3.3Vの電源の場合、マイコンの電圧は2.3Vになります。この電圧ではマイコンが正常に動作しないかもしれません。
このため正しく測定できるのは数100uA(マイコンの電圧が数100mV低下)までとなるでしょう。