以前、ニッケル水素電池でESP32を駆動させる記事を書きました。
ESP32のDeepSleepの機能をつかって間欠動作させて電池による長時間駆動を試みです。
今回はアップデートとして、バッテリーの見直しとさらなる低消費電力化を目指してみました。
ESP32-C3
今回使用するマイコンはESP32-C3です。ESP32シリーズの中でも低消費電力をうたっている製品です。
秋月電子ではマイコン単体で400円以下で販売されていますし、使いやすいように2.54ミリ間隔でピンを引き出しているXIAO Seeedなどでも販売されています。
電源問題
データシートによると駆動電圧は3.0~3.6V、消費電流は500mAとなっています。
これらの仕様が結構やっかいです。
まず上限値は3.6Vなので公称3.7Vのリチウムイオン電池は使用できません。0.1Vぐらいなら超えても大丈夫な気はしますが、リチウムイオン電池の電圧は充電直後には4Vを超えますのでそのまま使っちゃえとは言いにくいです。ニッケル水素電池×3というのも同様に公称値は1.2×3=3.6Vですが充電直後はもっと高い電圧です。
つまり、もっと高い電圧を用意しておいてレギュレータかDCDCコンバータでちょうどよい電圧を作り出す必要があるのです。この場合、これらの降圧素子の消費電流が無視できないほど大きいのでせっかくのESP32のDeepSleep時の消費電力の低さが生かしきれません。
また、瞬間的とは言え数百mAの電流が流れますので電池の内部抵抗による電圧低下も無視できません。大電流が流れた瞬間の電圧低下でESP32にリセットがかかってしまいます。
ニッケル水素電池3本直列(≒3.6V)をマイコンに直結させて実験を行ったこともありますが、電池容量の大半を残したまま、通信開始でリセットがかかりループする状態になったことがあります。ニッケル水素電池は内部抵抗が小さい部類だと思いますがそれでもダメなわけですね。
レギュレーターの消費電力
DCDCコンバーターやレギュレーターを使用する場合、これらの待機電力や変換効率も無視できません。
レギュレーターを使用した場合、ドロップ電圧×電流がまるごとロスになります。例えば5V電源から3.3Vに降圧した場合、変換効率は単純計算で66%です。
一方、DCDCコンバーターでは80~90%以上の変換効率ですが待機電力が大きい(数mA程度)です。
ESP32のDeepSleepを使用して極限まで消費電力を切り詰めたい場合にはバッテリーを直接ESP32に接続して使用したいところです。
救世主-18650LFPバッテリーの登場
そんなことを考えていたころ、2024年に突如としてオーム電機から18650型の単セルLFPバッテリーが販売されました。怪しげな製品ではなく、JBRC会員企業様の製品です。

公称電圧は3.2V、充電電圧も3.6VなのでESP32-C3の駆動電圧にもぴったりと一致します。従来のリチウムイオン電池と比べて発火・爆発しにくく安全性が高いのもメリットです。
電池容量は1800mAhです。18650型としては控えめではありますが、内部抵抗が小さく放電末期までの安定動作が期待できます。
今回はこの電池をつかってESP32C3の長時間駆動を試してみました。
仕様・構成
以下のような仕様・構成を考えます。
- 数十秒~数十分ごとの間欠動作
- 電源レギュレータなどは使用せず、ESP32C3マイコン(生)にLFPバッテリー(単セル)を直結
- 環境センサー(BME280)からのデータを収集し、Wifi経由でSQLサーバーにデータを送信
- 送信データには、I2C接続による気温湿度気圧センサーの他、バッテリー電圧の情報も含む
I2Cセンサー
I2Cバスに接続するセンサーの電源はESP32C3のGPIOから供給しました。電源ラインに直結してしまうと無駄に電力を消費してしまうからです。
電源電圧の測定
電源電圧を470kΩの抵抗を2つ使って半分に分圧したうえでESP32内蔵のADC(-11dbのアッテネータ)を使用して測定します。
実はここが消費電流のネックになっていた部分です。以前の実験では10kΩで分圧していたため、この抵抗だけで160~170μAも消費してしまっていました。(待機時の電流の大部分が電源測定用の抵抗で消費されてしまっていました)。
ESP32のADCの入力インピーダンスは公開されていませんが、実際測定をした方のブログ記事によると数M~10数MΩ程度とのことでした。シャント抵抗を470kΩ×2≒1MΩとすると少々誤差が大きくなりそうですが、ここは電池交換のための概ねの値がわかればよいこととして、この値に設定しました。
また、動作中のみシャント抵抗に電流が流れるような方法も色々と試してみたのですがうまくいかなかったため、今回は電源にシャント抵抗を直結しています。ここは今後の課題ですね。
実験してみた
回路図
実験のために作成した回路は以下のようなものです。LFPバッテリーとESP32を直結しています。本来であれば最低限ヒューズは入れるべきかと思います。再現される場合は各自安全策をお願いします。
なお、回路図ではBME280を描いていませんが、I2CバスでESP32C3と接続し、電源はGPIO5から取っています。
結果
(1)30秒間隔でデータの測定とデータ送信を行った結果、489時間の駆動を確認できました。平均消費電流は約3.7mAです。
(2)120秒間隔でデータの測定とデータ送信を行った結果、1841時間の駆動を確認できました。平均消費電流は約1mAです。
以前の検証で、単三型ニッケル水素電池×4本でXIAO ESP32C3を駆動させた場合よりも長時間駆動させることができました。(60日→75日)

次のグラフは120秒間隔で動作させたときの電圧ログの結果です。
まとめ
今回はLFPバッテリーを使用してESP32C3マイコンを駆動させてみました。
動作電圧と電池電圧がぴったりとかみ合ったことでレギュレーター等消費電力の増大を招く素子を使う必要がなくなり、長時間駆動が実現できました。
なお、リチウムイオン電池の取り扱いには各自十分に注意してください。LFPバッテリーは従来のリチウムイオン電池よりは安全性が高いとは言われていますが、ショートさせれば火花ぐらい簡単に飛びますし、爆発・発火の可能性は0ではありません。
コメント