こんにちは、shotaです。
社員研修として、オリジナルマウスの製作しています。
[前回の記事]では回路ブロック図について書きました。
今回は電源回路について書きます。
マウスの回路ブロック図(振り返り)
マウスの回路ブロック図は以下のとおりでした。
今回は、この左上部分の電源回路について書きます。
電源回路の回路ブロック図
電源回路のブロック図はこのようになりました。
点線から左側が外部回路で、LiPoバッテリが接続されます。
点線から右側が内部回路で、コネクタから始まり、スイッチやLDO、その先にはESP32マイコンやモータドライバが接続されます。
それでは、各ブロックの役割を左から順に説明します。
LiPoバッテリ
LiPoバッテリは、電源回路(広く言えばマウス回路)の電源供給源です。バッテリがなければ回路は動きません。
どのLiPoバッテリを使用するかは、動かしたい回路の電源電圧や消費電流などから選定します。
今回は[HM-StarterKit(通称ハムスター)]で使用しているバッテリ 3.7V 150mAhを使用する予定ですが、容量を何mAhにするかは実際に動かしてみて決めたいと思います。
ESP32はWiFiやBluetoothが使用できるので、150mAhでは容量が足りないことを懸念しています。
別のLiPoバッテリ使用する場合は、[Amazonで”lipo 3.7V”と検索]したり、模型屋さんでドローン用のバッテリを調べたりして入手しようと思います。
電源コネクタ
電源コネクタは、使用するバッテリのコネクタ形状に合うものを選びます。
今回はハムスターで使用しているものと同じ、JSTのZHコネクタを使います。
ケーブルが車体外に飛び出ないようにトップ型を選びます。
また、ケーブルを繰り返し抜き差しすることを想定して、スルーホールタイプ(表面実装タイプではない)を選びます。
(私はケーブルを外すときに、表面実装のコネクタを剥がした経験があります)
スイッチ回路
電源ON/OFFを簡単に切り替えるため、スイッチを用意します。(バッテリの抜き差しでON/OFFするのは大変です)
スイッチは、ハムスターと同じくALPSのSSSS810701を使います。
ここで、スイッチの定格電流を確認します。データシートには0.3Aと書かれています。
つまり、0.3Aより大きい電流を流してしまうと、スイッチが壊れる可能性が有ります。
0.3Aより大きい電流が流れるかどうかは、負荷(ICやモータ、センサなど)の消費電流から求めます。
本来は各回路の消費電流の最悪値を計算(電源電圧の変動や温度の変化等を考慮する)し、まとめ、電源回路が流す電流を求める、という作業をしますが手間がかかるので省略します。
ここで、[ESP32のデータシートの10ページ]を見てみましょう。
The operating voltage of ESP32 ranges from 2.3 V to 3.6 V. When using a single-power supply, the recommended voltage of the power supply is 3.3 V, and its recommended output current is 500 mA or more.
簡単言うと3.3V 0.5A以上流せる電源を用意しろ、ということです。これで、ESP32が0.5A以上の電流を流す場合があるということがわかります。
このままではスイッチを使えないので、対策としてMOSFETを使用したスイッチ回路を用意します。
(といってもハムスターの回路を流用するだけですが・・・)
こちらがオリジナルマウスの電源回路図です。電源コネクタから3.3V LDOまで接続されています。回路図のQ1がMOSFETです。
このMOSFETのゲートに接続されているスイッチがSSSS810701です。スイッチをON/OFFすると、ゲート電圧がHi/Loと切り替わり、電源供給をON/OFFできます。
このMOSFET [IRLML6402のデータシート]によると、25℃環境でドレイン電流3.7A、70℃環境で2.2Aまで流すことができます。
ESP32や、モータを駆動しても常時2.2A以上の電流が流れることは無いので(なにより、ハムスターで実績のある素子なので)問題ないです。
ESP32でWiFiを駆動したら大きな電流が流れるのでは・・・? と心配ですが、データシートによると、
5.5 RF Power-Consumption Specifications
Mode Min Typ Max Unit Transmit 802.11b, DSSS 1 Mbps, POUT = +19.5 dBm – 240 – mA Transmit 802.11b, OFDM 54 Mbps, POUT = +16 dBm – 190 – mA Transmit 802.11g, OFDM MCS7, POUT = +14 dBm – 180 – mA Receive 802.11b/g/n – 95 ~ 100 – mA Transmit BT/BLE, POUT = 0 dBm – 130 – mA Receive BT/BLE – 95 ~ 100 – mA
とあり、最も消費するモードでTyp 240 mAとなります。MOSFETが故障するような電流値ではありません。
3.3V LDO
バッテリ電圧は3.7Vなので、ESP32等のICを動かすために3.3Vまで落とさなければなりません。
そこで、LDOを使用して安定した3.3V電圧を供給させます。
LDOはLow Dropoutの略で、低い入出力間電位差でも動作するリニアレギュレータです。
ハムスターで使用している3.3V LDOは、MicrochipのMIC5330 です。できればこのICをそのまま流用したいですが、残念ながら使用できません。
[MIC5330のデータシート]によると、最大出力電流が300mAで設計されています。
ESP32には3.3V 0.5A以上流せる電源が必要なので、MIC5330ではスペックが足りません。
代わりに選んだICがANALOG DEVICESのADP3338です。
注意として、このICは新規設計非推奨です。しかし、[秋月]では手に入るのでこのICを選びました。
[データシート]でスペックを確認します。
ADP3338は最大出力電流1Aで設計されています。
出力電流制限機能を見ると、2Aで電流値が制限されるようです。
出力電圧は、最も悪い150℃環境でプラスマイナス1.6%です。(typ 3.3Vであれば、3.25V ~ 3.35V)
また、回路構成としては、入力と出力に1uFのコンデンサを取り付けるだけでOKです。
以上より、ESP32が必要とする電源スペックを満たしているのでADP3338を使用します。
懸念点としては新規設計非推奨であること(市場からなくなれば代替品を探します)、とパッケージサイズが大きいことです。
こちらはCADの画像ですが、ESP32も大きければADP3338も大きいことがわかります。(一番小さく見えるコンデンサは1005サイズです)
できるだけ基板サイズが小さくなるようにがんばります。
バッテリ電源監視用の分圧回路
最後に説明するのは電源監視用の分圧回路です。
回路図のR2、R3の部分です。ここでは、バッテリ電圧(厳密に言うと、バッテリ電圧 – MOSFETのVds)を、1 / 2にして、ESP32に供給します。
抵抗値は10 kΩ±1%にします。抵抗値を小さくし過ぎると消費電流の増加が、大きくし過ぎるとノイズや・マイコンの入力インピーダンスによる測定誤差が発生するので、適当な値を選びました。
この監視用の電圧(回路図のAN_VCC)は、ESP32のADCピンに接続します。(ピンアサインについては後ほどブログ記事に書きます)
ここで、[ESP-IDF Programming Guide]から、ADCに関わる注意書きを抽出します。
Minimizing Noise
The ESP32 ADC can be sensitive to noise leading to large discrepancies in ADC readings. To minimize noise, users may connect a 0.1uF capacitor to the ADC input pad in use. Multisampling may also be used to further mitigate the effects of noise.
つまり
- ノイズを減らすために0.1uFのコンデンサをADCの入力部分に取り付けてね
- ノイズを減らすためにマルチサンプリングを使うことも有効だよ
ということです。
そのため、回路図の分圧回路に0.1uFのコンデンサ(C1)を取り付けています。マルチサンプリングはソフト的に実施する方法なので、回路図には関係ありません。
※回路図表記上、分圧回路の近くにコンデンサを取り付けていますが、実際はESP32の端子近くにコンデンサを実装します。
次回の内容
以上が電源回路の説明です。
次回は物体検出センサ回路(壁センサ)について説明します。
参考資料と余談
ESP32の資料ですが、個人的にはESP-IDF Programming Guideがおすすめです。
理由としては、以下のとおりです。
- espressif社の公式ページである(重要)
- ページの更新が[GitHub]にて行われている[Contributions Guide]
- ESP32の始め方がまとめられている[Get Started]
- [API Reference]に、APIの使い方だけでなく、内部回路の構造や、機能の特徴・不具合等もまとめられている
- 例:[MCPWM]
このページはデータシートの内容をもとに作成されているので、データシートを読まずにESP-IDF Programming Guideを見ても問題ないと思います。
以上、余談でした。