
ESP32-C3マイコンを、電池2,3本の2.4Vから5.5Vで動作させることができる、回路の設計方法をご紹介します。
ESP32-C3は3.3V動作

ESP32-C3はWiFiの機能を搭載しているためか、動作する電源電圧範囲が3.3V±0.3Vととても狭くなっています。
このため電池で動作させるためには、電池3本で4.5Vから低ドロップボルテージレギュレータで3.3Vに落としたり、充電電池4本で4.8Vから3.3Vに落として利用する方法が一般的だと思いまいます。
バッテリー動作させるということは、極力省電力で動作し電池を長持ちさせたいと考えるでしょう。そのためにはESP32のDeepSleepを使って間欠動作させると思います。DeepSleepはESP32の内部機能を極力OFFして、10uA程度の消費電流でタイマーやGPIOの変化による割り込み待ちをすることができる 省電力モードです。
しかしながらボルテージレギュレータの消費電流は数mA(AZ1117の場合では6mA)必要で、DeepSleepの10uA対してものすごく大きく、電池駆動するにはとても大きな無駄が発生します。
このため、ボルテージレギュレータに代わり低消費電流のDCDCコンバータが必要になります。
TPS63001
仕様

TPS63001は、昇降圧できるDCDCコンバータICです。800mA出力時、2.4Vから5.5Vの範囲の電圧を3.3Vに変換できます。ESP32-C3の消費電流は最低500mAは必要で、瞬間的にはもっと必要です。このため800mAという電流値は、なかなかいい感じだと思います。
このDCDCコンバータ自体の消費電流は50uAと小さく、パワーセーブモードに設定することで低消費電流時の変換効率の向上(省電力化)も期待できます。
回路図

データシートにある回路を参考に回路図を制作しました。
TPS63001のPS/SYNCピンは、Lowにすることでパワーセーブモードを有効にすることができます。ESP32-C3がDeepSleep中の低消費電流時の、効率の向上(DCDCの省電力化)が期待できます。
ESP32-C3は、WiFi起動時に瞬間的に500mA以上の電流を必要とします。TPS63001としては 定常的に消費される電流としては800mAまで対応できますが、DeepSleepからの復帰でWiFi接続の場合など、瞬間的な電流の需要には間に合わない可能性があるので、C3に1000uFの電解コンデンサを追加しました。
回路作成

TPS63001の回路は、過去作った基板の一部を流用し制作しました。ESP32-C3の回路は、ESP32-C3開発ボードの電源部分を除去して、TPS63001の出力を接続しました。
ESP32-C3開発ボードの回路設計に関しては、こちらの記事をご覧ください。
ESP32-C3開発ボードは現在、スイッチサイエンスさんでご購入いただけます。
実験
プログラム
#include <WiFi.h>
#define WIFI_BEGIN_TIMEOUT 10 //[s]
#define SLEEP_TIME 10*1000*1000 //[us]
void setup() {
Serial.begin(115200);
Serial.println("");
Serial.println("start");
resetReason(); //Show RESET reason
//WiFi connect
WiFi.mode(WIFI_MODE_STA);
Serial.println("tring Wifi connect");
WiFi.begin();
for (int i = 0; i < WIFI_BEGIN_TIMEOUT; i++) {
if (WiFi.status() == WL_CONNECTED) {
Serial.println(" connected");
break;
}
Serial.print("o");
delay(1000);
}
if (WiFi.status() != WL_CONNECTED) {
ESP.restart();
}
//DeepSleep
Serial.print("DeepSleep\n");
esp_deep_sleep(SLEEP_TIME);
}
void loop() {
}
//Show RESET reason
void resetReason() {
esp_reset_reason_t reason = esp_reset_reason();
switch (reason) {
case ESP_RST_UNKNOWN: Serial.println("ESP_RST_UNKNOWN : Reset reason can not be determined"); break;
case ESP_RST_POWERON: Serial.println("ESP_RST_POWERON : Reset due to power-on event"); break;
case ESP_RST_EXT: Serial.println("ESP_RST_EXT : Reset by external pin (not applicable for ESP32)"); break;
case ESP_RST_SW: Serial.println("ESP_RST_SW : Software reset via esp_restart"); break;
case ESP_RST_PANIC: Serial.println("ESP_RST_PANIC : Software reset due to exception/panic"); break;
case ESP_RST_INT_WDT: Serial.println("ESP_RST_INT_WDT : Reset (software or hardware) due to interrupt watchdog"); break;
case ESP_RST_TASK_WDT: Serial.println("ESP_RST_TASK_WDT : Reset due to task watchdog"); break;
case ESP_RST_WDT: Serial.println("ESP_RST_WDT : Reset due to other watchdogs"); break;
case ESP_RST_DEEPSLEEP: Serial.println("ESP_RST_DEEPSLEEP : Reset after exiting deep sleep mode"); break;
case ESP_RST_BROWNOUT: Serial.println("ESP_RST_BROWNOUT : Brownout reset (software or hardware)"); break;
case ESP_RST_SDIO: Serial.println("ESP_RST_SDIO : Reset over SDIO"); break;
default: break;
}
}
起動時にリセット要因を表示し、WiFiに接続して、接続後10秒間のDeepSleepに入るというとてもシンプルなプログラムです。
DeepSleep時の消費電流

DeepSleep中の消費電流は30uA程度から瞬間的に200uA程度と常に変動していました。そこで10秒程度の期間の平均値を計算してみました。
- 電源電圧3.0V時:77uA
- 電源電圧2.4V時:90uA
この消費電流には、電源表示用のLEDの9uAが含まれています。
ESP32-C3の10uA、LEDの10uA、DCDCコンバータICの50uAを合算すると消費電流は70uAなので、なかなか性能が出ているのではないでしょうか。
動作電圧

電源電圧は2.2Vから5.5Vの範囲で、ESP32-C3がDeepSleepから復帰しWiFiに接続するという先ほどのプログラムが動作しました。

しかし電源電圧が2.2Vを下回ると、マイコンは起動できますが、WiFi接続時に電源電圧が低下しマイコンがリセットしてしまいました。シリアル出力にはBrownout reset(電源電圧低下リセット)が要因と表示されています。
WiFiを利用しようとすると電圧低下によりリセットしてしまうため、WiFiを使うプログラムの場合の電源電圧は2.2Vまでとなります。
基板の制作
アートワーク

基板を設計したところ、以前作ったESP32-C3開発ボードと同じサイズの基板に、回路を収めることができました。

以前作ったESP32-C3開発ボード同様、各種ピンの役割がわかりやすように、フルカラーUVプリント基板にしようと思います。
そこで、KiCadで、基板の外形、シルクの2つをSVG形式で出力し、そこにUVプリントの画像をデザインしていきます。

KiCadの3Dビューアーに画像を合成して、UVプリント基板のイメージを確認してみます。なかなかいい感じなのではないでしょうか。
面付け

部品の実装時に実装がしやすいように、4つを1つの基板に面付けしました。

UVプリント画像も面付けします。画像の解像度は1200dpiにしました。画像のサイズは基板と同じサイズになっています。
ファイル名は、「基板の名前+UVPrint+印刷面+サイズ+解像度」と、ファイル名から仕様がわかるようにしました。具体的には「LowVoltageESP32C3_4pcs-UVPrint _TOP_109.22mmx130.81mm_1200dpi.png」となっています。
ファイルの準備

基板を発注するときに使うファイルの準備をします。ガーバーファイルはgerbersフォルダに入れて、UVプリント画像はUVPrintフォルダに入れました。これらをzipで圧縮して発注データとします。
PCBWayに基板を発注

UVプリント基板を製造してくれるPCBWayに基板を発注します。
面付け基板なので「基板の種類」を「面付け」に設定します。あとは基板のサイズ、枚数、レジストの色を設定します。
そして今回はUVプリントしてほいので「UV Printing Multi-color」を「Single-sided Top」に設定します。

続いてメタルマスクも作ってもらいます。枠は大きくて邪魔になるので、枠なしを選択します。そのままではサイズが大きいので、基板のサイズ+20mmになるようにカットしてもらいます。「その他特殊加工」にカットするサイズを書いておきます。
以上で設定完了です。右側の緑色の「カートに追加」をクリックします。

ガーバーファイルをアップロードするウィンドが表示されるので、ガーバーと画像ファイルをまとめて圧縮したzipファイルをアップロード①し、「ファイルを今すぐ提出」②をクリックします。
アップロードするとデータのチェックが始まります。PCBWayはいつもであれば数分で終わるのですが、今回はUVプリントデータがあるからか1時間くらいかかりました。

データのチェックが完了すると支払いができるようになります。右下の「チェックアウトに進む」をクリックします。

お好みの輸送手段を選択し①、右側のオレンジ色の「注文する」をクリックします②。PayPalの支払い画面が表示されるので、支払いを完了させて基板の発注は完了です。
基板の発注が完了しました

電池2,3本で動作するESP32-C3ボードの設計と、基板の発注まで完了しました。届いたら組み立てて、動作確認したいと思います。うまく動くといいな。




コメント