PR 記事には広告が含まれています
Translate

電池2,3本で動作するESP32-C3ボードの設計方法

スポンサーリンク

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

スポンサーリンク

ESP32-C3は3.3V動作

ESP22-C3の推奨電源電圧範囲
ESP22-C3の推奨電源電圧範囲

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のデータシート
TPS63001のデータシート

TPS63001は、昇降圧できるDCDCコンバータICです。800mA出力時、2.4Vから5.5Vの範囲の電圧を3.3Vに変換できます。ESP32-C3の消費電流は最低500mAは必要で、瞬間的にはもっと必要です。このため800mAという電流値は、なかなかいい感じだと思います。

このDCDCコンバータ自体の消費電流は50uAと小さく、パワーセーブモードに設定することで低消費電流時の変換効率の向上(省電力化)も期待できます。

回路図

ESP32-C3用昇降圧DCDCコンバータ回路図
ESP32-C3用昇降圧DCDCコンバータ回路図

データシートにある回路を参考に回路図を制作しました。

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までとなります。

スポンサーリンク

基板の制作

アートワーク

電池2,3本で動作するESP32-C3の基板
電池2,3本で動作するESP32-C3の基板

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

UVプリント用のデータを制作
UVプリント用のデータを制作

以前作ったESP32-C3開発ボード同様、各種ピンの役割がわかりやすように、フルカラーUVプリント基板にしようと思います。

そこで、KiCadで、基板の外形、シルクの2つをSVG形式で出力し、そこにUVプリントの画像をデザインしていきます。

UVプリントした基板のイメージ
UVプリントした基板のイメージ

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

面付け

4つ面付け基板
4つ面付け基板

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

面付け基板用のUVプリントデータの制作
面付け基板用のUVプリントデータの制作

UVプリント画像も面付けします。画像の解像度は1200dpiにしました。画像のサイズは基板と同じサイズになっています。

ファイル名は、「基板の名前+UVPrint+印刷面+サイズ+解像度」と、ファイル名から仕様がわかるようにしました。具体的には「LowVoltageESP32C3_4pcs-UVPrint _TOP_109.22mmx130.81mm_1200dpi.png」となっています。

ファイルの準備

基板の発注データ
基板の発注データ

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

スポンサーリンク

PCBWayに基板を発注

PCBWayの基板仕様設定
PCBWayの基板仕様設定

UVプリント基板を製造してくれるPCBWayに基板を発注します。

面付け基板なので「基板の種類」を「面付け」に設定します。あとは基板のサイズ、枚数、レジストの色を設定します。

そして今回はUVプリントしてほいので「UV Printing Multi-color」を「Single-sided Top」に設定します。

メタルマスクの仕様設定
メタルマスクの仕様設定

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

以上で設定完了です。右側の緑色の「カートに追加」をクリックします。

ガーバーファイルのアップロード
ガーバーファイルのアップロード

ガーバーファイルをアップロードするウィンドが表示されるので、ガーバーと画像ファイルをまとめて圧縮したzipファイルをアップロード①し、「ファイルを今すぐ提出」②をクリックします。

アップロードするとデータのチェックが始まります。PCBWayはいつもであれば数分で終わるのですが、今回はUVプリントデータがあるからか1時間くらいかかりました。

支払いへと進む
支払いへと進む

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

発送手段を選択し注文する
発送手段を選択し注文する

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

スポンサーリンク

基板の発注が完了しました

発注したUVプリント基板

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