ESP32で高電圧を操る!MOSFETを使った24V機器制御②【実回路評価】
前回の振り返り
前回の記事では、ESP32が電磁弁を制御する回路を設計し、KiCadのシミュレーションを使って解析しました。
そこで設計した回路を実際にユニバーサル基板を使って製作し、オシロスコープでの評価を実施してみました。
シミュレーションではMOSFETがOFFのときに電圧のバタつきを起こしていたので実回路ではどうなるのか楽しみです。
Ⅰ.今回やったこと
安定化電源の24Vに接続した電磁弁をESP32の信号でON/OFF制御するユニバーサル基板実回路を製作した。
作動した実回路をオシロスコープにて評価した。
Ⅱ.使用した部品や機器など
1.ESP32基板
自分で設計したESP32ですが、もちろん他から購入しても同じです。

2.電磁弁
SMCのVX21シリーズを使用しました。ミスミやモノタロウなどから購入することができます。
3.オシロスコープ
岩崎通信のデジタル・オシロスコープ DS-5107B
電子回路を勉強するのに便利かと思い数年前に中古品を2~3万円で購入しました。購入して満足していたため使い方はあまり分かりませんが、現在勉強中です。

4.安定化電源
2023年にAmazonから7499円で購入しましたが、年々高くなっているようです。
30V10Aまで出力でき、電流もモニターできるのでとても便利です。
5.実回路
①秋月電子通商から購入
・ユニバーサル基板:[104718]片面ガラス・薄型ユニバーサル基板
Cタイプ(72×48mm)めっき仕上げ
・カーボン抵抗:220Ω、2.2kΩ、10kΩ
②LCSCから購入(電子部品をまとめて買うと安く購入できます)
・MOSFET:IRLB8721PBF(LCSC番号C7429053)
・ダイオード:1N4007RLG(LCSC番号C53568)
・LED:204-10GVD/S530-E2-L(LCSC番号C5278511)
これら部品を図3の回路図に従いハンダ付けしました。
前回のシミュレーションで使用した回路のVPULSEのところにESP32(GPIO26)を接続し、元々電磁弁の代わりとして使っていたElectromagneticActor(L1)と抵抗(R5)のところに電磁弁を接続します。
電磁弁はコネクタなどで回路に接続できるのが理想ですが、いいコネクタを持っていなかったので基板の裏側に直接ハンダ付けしています。

Ⅲ.製作した回路

動作させたのがこちらです。GIFなのでLEDの点滅しか分かりませんが、実際は電磁弁の音がメトロノームのようにカチカチ鳴っています。

安定化電源の電流モニターを見ると電磁弁作動時に流れている電流は197mAでした。選定したMOSFETの最大ドレイン電流は62Aですので余裕過ぎます。

Ⅳ.使用したプログラム
1秒ごとにON/OFFを繰返します。毎度のことですが、生成AIでサクッと作成しました。
同時に使うか分かりませんが、SPI通信やUART通信と干渉しないGPIO26を使っています。
#include <Arduino.h>
// 電磁弁制御用のMOSFET(IRLB8721のゲート)に接続するピン
const int SOLENOID_PIN = 26;
void setup() {
// シリアル通信の初期化(デバッグ用・UART0使用)
Serial.begin(115200);
while (!Serial); // シリアルポートの準備ができるまで待機
// 指定したGPIOピンを出力モードに設定
pinMode(SOLENOID_PIN, OUTPUT);
// 起動時は安全のため出力をLOW(OFF状態)にしておく
digitalWrite(SOLENOID_PIN, LOW);
Serial.println("--- ESP32 電磁弁制御シミュレーション開始 ---");
}
void loop() {
// 1. 電磁弁をONにする(ゲートに3.3Vを出力)
Serial.println("[ON] 電磁弁を開きます (24V通電)");
digitalWrite(SOLENOID_PIN, HIGH);
delay(1000); // 1秒間(1000ms)待機
// 2. 電磁弁をOFFにする(ゲートを0Vにする)
Serial.println("[OFF] 電磁弁を閉じます (サージ注意!)");
digitalWrite(SOLENOID_PIN, LOW);
delay(1000); // 1秒間(1000ms)待機
}Ⅴ.オシロスコープでの測定
電磁弁を作動させた状態で図7(左)に示した①~③をオシロスコープで測定しました。オシロスコープのプローブは図7(右)で示した部品の足に取付けました。

A.ESP32からの信号線
電磁弁が作動したときのノイズがESP32側に戻るとESP32が破損する心配がありますので、まずはESP32からの信号線を確認してみました。
電磁弁がきちんと動いているのはLEDや音で確認できていたので心配はしていませんでしたが、水平軸を1s/div(1メモリ1秒)に設定し取得すると、図8のように1秒ごとにON/OFFを繰返しています。
このスケールでわかるほどのノイズはありません。

次に、水平軸を1us/divに設定し取得しました。垂直軸は100mV/divです。なんか波形の形が変ですがサージのようなノイズは検出されていません。

ここで、MOSFETが作動していないときにどのような波形になるのか気になったので、安定化電源をOFFにして図9と同じ条件で波形を取得しました。ちょっと波形の形が変わりましたね。こちらの方がイメージ通りです。

B.ゲート電圧
次にゲートの電圧を測定してみました(図11)。220Ωの抵抗を挟んで「A.ESP32からの信号線」と反対側です。なお、図9と10は立ち上がりの位置が画像の中心でしたが、電圧上昇を最後まで見たかったので図11は5us分左に移動させています。
やはり、図9と同じように電圧の上昇が2段になっています。チャッピーに理由を聞いたところ、以下の回答で正常のようです。
これはパワーMOSFETをスイッチングさせる際に発生する、「ミラープラトー(Miller Plateau)現象」と呼ばれる非常に有名な現象です。回路は正常に動作していますのでご安心ください。メカニズムは以下の通りです。
①MOSFETの内部には、構造上、いくつかの小さな寄生容量(コンデンサ成分)が存在します。ESP32の出力(3.3V)から R1(220Ω)を通して、主に ゲート・ソース間容量への充電が始まります。この時は単純なRC直列回路の充電カーブなので、斜めにグッと電圧が上がっていきます。【立ち上がり直後~0.5us】
②ゲート電圧がONになり始めるしきい値電圧に達した瞬間、MOSFETが導通し始めます。すると、ドレイン電圧が24Vから0Vに向かって急激に低下します。ドレイン電圧が下がると、ゲート・ドレイン間のコンデンサを逆向きに猛烈に充電(放電)しなければならなくなります。ESP32(220Ω経由)から流れ込む電流が、すべてこの ゲート・ドレイン間のコンデンサに奪われてしまうため、ゲート電圧の充電が一時的にストップします。【0.5us~3.5us】
③ドレイン電圧が完全に0Vまで落ちきると、再び残りの容量(ゲート・ソース間のコンデンサ + ゲート・ドレイン間のコンデンサ)に充電が再開されるため、再び電圧が上昇していきます。【3.5us以降】

C.ドレイン電圧
ドレイン電圧は図12のようになっていました。KiCadのシミュレーションで心配していた電圧のバタつきは起きておらず安心しました。

B.ゲート電圧+C.ドレイン電圧
「B.ゲート電圧(CH1:黃:垂直軸1V/div)」と「C.ドレイン電圧(CH2:ピンク:垂直軸10V/div)を同時に取得してみました。上でチャッピーが説明した「ミラープラトー現象」が理解でき面白いですね。
①立ち上がりの開始からゲート電圧(黃)が直線的に上昇。
②ゲート電圧が閾値をこえるとMOSFETが動作しドレイン電圧(ピンク)が下降+そのタイミングでゲート電圧が水平になる。
③ドレイン電圧の下降が終わったら再度ゲート電圧(黃)が2段目の上昇を始める。

Ⅵ.結果
ESP32で電磁弁を制御できるMOSFETを使った実回路を製作し、動作を確認した。
ESP32を破壊するようなノイズは検出されなかった。
KiCadのシミュレーションで見られたドレイン電圧のバタつきは起こらなかった。
回路の動作とは関係ないが、ミラープラトー現象が確認され、勉強できた。
Ⅶ.最後に
実際に回路を製作し評価してみると、ドレイン電圧のバタつきなどシミュレーションと一部違う結果でした。今回はユニバーサル基板を使用するので進めましたが、プリント基板を作るとなれば躊躇します。
どうすれば、実回路に近づくのかアドバイスがありましたら、コメントお願いします。
