はじめに:Pico 2 WでDCソレノイドは動いた。でも測ると電流は8割だった
こんにちは。ニンジンです🥕
Raspberry Pi Pico 2 Wで12VのDCソレノイドを動かしてみました。
回路図どおりに組んで、プログラムを実行すると「カチッ」。問題なく動きました。
……で終わればよかったのですが、念のためテスターとオシロスコープで測ってみると、ソレノイドに流れていた電流は計算値の8割ほど。さらに、MOSFETが発振していることもわかりました。
使ったMOSFET(IRLU3410)のデータシートでは、オン抵抗が保証されているのはゲート電圧4Vからです。それは承知のうえで、「流すのは1.7A程度。定格17AのMOSFETにとっては少ない電流なので、Picoの3.3Vでも足りるだろう」と見込んで試していました。
最初は「電流が8割しか流れないのも、発振するのも、ゲート電圧が足りないせいだろう」と考えました。ところが、ゲートを5Vにすると発振は消えましたが、電流はほとんど増えませんでした。電流が8割止まりだったいちばんの原因は、ブレッドボードの配線でした。
この記事では、
- 「3.3Vでも足りるだろう」と判断した理由
- 動いているのに性能が出ていないことを、どう測って見つけたか
- ゲートを5Vで駆動したら、何が改善して、何が改善しなかったか
- 電流が8割止まりだった本当の原因
を、実測データと波形で紹介します。
DCソレノイドの基本(仕組み、電流、極性、突入電流など)は前回の記事で解説しています。
使った部品とMOSFET駆動回路
部品表


今回の検証の主役。オン抵抗の保証はゲート4Vから
NchパワーMOSFET 100V17A IRLU3410PBF
型番がIRLで始まるロジックレベル品。Picoの3.3Vでも動きはしますが、オン抵抗は保証の範囲外です(この記事で実測)。

オフにした瞬間の逆起電力を逃がす
ショットキーバリアダイオード 40V3A SB340LS
還流ダイオードとしてソレノイドと並列に入れます。帯(カソード)を+12V側に向けてください。


ゲートを5Vで駆動して比べるために使用
4ビット双方向ロジックレベル変換モジュール AE-LCNV4-MOSFET(BSS138使用)
本来はI2Cなどの信号用のモジュールで、手持ちにあったので使いました。立ち上がりが遅いので、PWMには向きません(本文の注意を参照)。




※リンクはアフィリエイトを含みます。価格・在庫・同梱内容は変わることがあるので、購入前に各商品ページをご確認ください。
電源は手持ちのACアダプター(12V/2.5A)を使いました。ソレノイドに約1.7A流すので、2A以上流せるものを選んでください。
DCソレノイドの電流と消費電力(6.95Ω → 1.73A・21W)
ソレノイドのコイル抵抗をテスターで測ると 6.95Ω でした(テスト棒の抵抗を差し引き、コイルが冷えた26℃の状態で測った値)。12Vをかけると、計算上は
- 電流:12V ÷ 6.95Ω ≒ 1.73A(ラベルの1.7Aとほぼ一致)
- 消費電力:12V × 1.73A ≒ 21W
になります。Picoのピンで直接流せる電流ではないので、MOSFETでスイッチします。
IRLU3410のデータシートで見るべき項目:Vgs(th)とオン抵抗の規定電圧
IRLU3410のデータシートのうち、選定で見たのは次の項目です。
| 項目 | 値 | 条件 |
|---|---|---|
| ドレイン電流(連続) | 17A | Vgs=10V、ケース温度25℃ |
| オンし始める電圧 Vgs(th) | 1.0〜2.0V | ドレイン電流250µA |
| オン抵抗(最大) | 105mΩ | Vgs=10V、ID=10A |
| 125mΩ | Vgs=5V、ID=10A | |
| 155mΩ | Vgs=4V、ID=9A | |
| Vgs=3.3Vでのオン抵抗 | 記載なし |
型番が「IRL」で始まるのは、低いゲート電圧でも動く「ロジックレベル」品の印です。ただ、オン抵抗が保証されているのは4Vまでで、Picoの3.3Vは保証の範囲外です。
それでも試してみたのは、次のように考えたからです。
- オンし始める電圧 Vgs(th) は最大でも2.0Vなので、3.3Vならオンはする
- 流すのは約1.7Aで、定格17Aの10分の1。保証外とはいえ、この程度の電流なら問題なく流せるだろう
この見込みが正しかったのかを、実測で確かめていきます。
回路図と実体配線図(ゲート抵抗100Ω・プルダウン10kΩ・還流ダイオード)
ポイントは次の4つです。
- 100Ω(ゲート抵抗):ゲートに流れ込む瞬間的な電流を抑える
- 10kΩ(プルダウン):Picoが動いていないときにゲートを0Vに保つ
- SB340LS(還流ダイオード):オフにした瞬間の逆起電力を逃がす。帯(カソード)を+12V側に付ける
- 470µF:12Vラインの電圧変動を抑える
ED 5%(使用率)に注意
MicroPythonでソレノイドを動かす
この記事で使ったコードは、まとめてダウンロードできます。
この記事のプログラム一式
📦 solenoid002-code.zip をダウンロードgate-check.py(ゲート電圧の確認)/solenoid-pulse.py(0.1秒だけオン)/solenoid-measure.py(2秒通電+40秒休止のくり返し)の3本です。
どのコードも、3.3V直結の回路と5V駆動(レベル変換)の回路の両方でそのまま使えます。
12Vをつなぐ前にゲート電圧をテスターで確認する
まず12Vをつながずに、Picoからゲートに電圧が出ているかを確認します(gate-check.py)。
from machine import Pin
GATE_PIN = 15
g = Pin(GATE_PIN, Pin.OUT, value=0) # 起動直後から LOW にしておく続けて次の1行を実行し(シェルに打っても、エディターの末尾に足して実行しても同じです)、MOSFETのゲートとGNDの間の電圧をテスターで測ります。
g.value(1) # ゲートが約3.3Vになるか
g.value(0) # 0Vに戻るかHIGHで 3.249V、LOWで 0.000V。Pico側の配線は問題なさそうです。
pulse()関数で0.1秒だけオンにする
12Vをつないで、0.1秒だけオンにします(solenoid-pulse.py)。
from machine import Pin
import time
GATE_PIN = 15
g = Pin(GATE_PIN, Pin.OUT, value=0)
def pulse(ms=100):
g.value(1)
try:
time.sleep_ms(ms)
finally:
g.value(0) # エラーや Ctrl+C で止まっても必ずオフにする
pulse(100)try〜finallyにしているのは、途中でエラーが出たりCtrl+Cで止めたりしても、ソレノイドがオンのまま残らないようにするためです。ED 5%のソレノイドは、1秒オンにしただけでも19秒休ませる必要があります。21Wを消費するソレノイドがオンしっぱなしになれば、すぐに制限を超えてしまいます。
▲ 0.1秒だけオンにしたところ(音が出ます)
「カチッ」と動きました。ここまでは順調です。
テスターとオシロで測る:電圧降下とMOSFETの発振
動いたので完成……としてもよかったのですが、本当に設計どおりの電流が流れているのか、測ってみることにしました。
測定には solenoid-measure.py を使います。2秒通電して、ED 5%を守れるだけの時間(40秒)休ませる、を指定回数くり返すコードです。
from machine import Pin
import time
GATE_PIN = 15
ON_MS = 2000 # 1回の通電時間(ミリ秒)
REPEAT = 3 # くり返し回数
ED = 0.05 # 使用率(ラベルの ED 5%)
REST_MS = max(int(ON_MS * (1 - ED) / ED), 40000) # 2秒通電なら 38秒 → 下限の40秒
g = Pin(GATE_PIN, Pin.OUT, value=0)
def pulse(ms):
g.value(1)
try:
time.sleep_ms(ms)
finally:
g.value(0) # エラーや Ctrl+C で止まっても必ずオフにする
try:
for i in range(REPEAT):
print("{}/{} 回目: {} ms 通電します".format(i + 1, REPEAT, ON_MS))
pulse(ON_MS)
if i < REPEAT - 1:
print(" {} 秒休ませます(ED {}%)".format(REST_MS // 1000, int(ED * 100)))
time.sleep_ms(REST_MS)
finally:
g.value(0)
print("終了しました")ソレノイドの両端は9.93V(電流は計算値の約8割)
2秒通電している間に、テスターのMAX/MIN記録機能を使って、場所ごとに電圧を測りました。
| 測った場所 | 電圧 |
|---|---|
| ACアダプター(無負荷) | 12.19V |
| ACアダプターのDCジャック(オン中) | 11.85V |
| ブレッドボードの電源レール(オン中) | 11.71V |
| ソレノイドの両端(オン中) | 9.93V |
ソレノイドにかかっていたのは 9.93V。電流にすると
9.93V ÷ 6.95Ω ≒ 1.43A
計算値の1.73Aに対して 約83% しか流れていませんでした。
電源レールの11.71Vとソレノイドの9.93Vの差、約1.8V が、MOSFETとブレッドボードの配線で失われています。この1.8Vがどこで失われているのかを調べます。
オシロで見るとドレイン電圧が発振していた
MOSFETのドレイン電圧をオシロスコープで見てみました。オン中のドレインは0V近くまで下がるはずです。
オンしている間、ドレイン電圧が太い帯になっています。ドレインが細かく上下に振れている、つまり発振している状態です。
しかも、この発振は
- 測るたびに、始まるタイミングも止まるタイミングもバラバラ
- テスターのリード線をつなぐ場所によって、出たり出なかったりする
という不安定なものでした。
疑い:Picoの3.3VではMOSFETが十分にオンしていない?
「定格17Aの10分の1なら大丈夫」が成り立たない理由
データシートを読み直すと、見込みの根拠にしていた数字は、どれも3.3Vとは条件の違う値でした。
- ① 定格17AはVgs=10Vのときの値:データシートにも「Continuous Drain Current, VGS @ 10V」と条件が書かれています
- ② Vgs(th)はドレイン電流わずか250µAのときの値:「オンし始める電圧」であって、1A以上を流せる電圧ではありません
- ③ 3.3Vはオン抵抗の保証の範囲外:規定されているのは4V(155mΩ)まで
MOSFETのオン抵抗はゲート電圧で大きく変わります。Picoの3.3VはVgs(th)(1.0〜2.0V)から1〜2V上でしかなく、後の実測では、オン抵抗が4Vでの保証値(155mΩ)より大きい約0.27Ωまで上がっていました。
ターンオン波形のミラー期間(ミラープラトー)
オンする瞬間を拡大してみました。
ゲート(緑)は0Vから上がり始め、約2V付近で一度平らになってから3.3Vまで上がっています。この平らな部分は「ミラー期間(ミラープラトー)」と呼ばれ、MOSFETが切り替わっている最中を表します。
ゲートが最終的に3.3Vにしか届かないので、ミラー期間を抜けたあとの余裕が小さくなります。その結果、MOSFETはオンはしているものの、オン抵抗が大きい状態にとどまり、
- 抵抗として電圧を食う(=MOSFETが発熱し、ソレノイドの電圧が少し下がる)
- ゲート電圧のわずかな変化でドレイン電流が大きく変わりやすく、テスターのリード線のようなちょっとした外乱で発振する
ということが起きていたと考えられます。
検証:レベル変換モジュール(BSS138)でゲートを5V駆動する
電流不足と発振が、ゲート電圧のせいなのかを確かめるため、ゲートを5Vで駆動してみます。
使ったのは、手持ちのレベル変換モジュール AE-LCNV4-MOSFET(BSS138使用)です。Picoの3.3V信号を5Vの信号に変換します。5VはPicoのVBUSピンから取ります。
AE-LCNV4-MOSFETのようなBSS138タイプの双方向レベル変換は、本来I2Cなどの信号用です。HIGHへの立ち上がりを基板上のプルアップ抵抗(10kΩ)で作るので、MOSFETのゲートを駆動すると立ち上がりが遅くなります。
今回のように「オン・オフするだけ」なら問題ありませんが、PWMでソレノイドの電流を調整する用途には向きません(切り替えが遅いぶん、MOSFETの発熱が増えます)。PWMを使うなら、3.3Vでオン抵抗が規定されたMOSFETを選ぶか、ゲートドライバーを使うのが確実です。
AE-LCNV4-MOSFETを使った回路図と配線
プルダウン抵抗を変えた理由(1kΩ追加・10kΩ→100kΩ)
| 変更 | 理由 |
|---|---|
| LV=3.3V、HV=VBUS(5V) | 12Vにはつながない。USBを抜けばゲートを駆動する電圧も一緒に消えるので安全 |
| LV側に1kΩのプルダウンを追加 | Picoの起動中はGP15が入力状態になる。プルダウンがないと、モジュールのプルアップでHIGH扱いになり、ソレノイドがオンしっぱなしになる |
| ゲートのプルダウンを10kΩ→100kΩに変更 | 10kΩのままだと、モジュールの10kΩと分圧されてゲートが約2.5Vにしかならない。100kΩにすると、実測で約4.6Vになった |
起動直後のゲート電圧0.66Vは問題ないか
12Vをつなぐ前に、gate-check.pyでゲート電圧を確認しました。
| 状態 | ゲート電圧(実測) |
|---|---|
g.value(1) | 4.651V |
g.value(0) | 0.025V |
| USBを挿した直後(プログラム未実行) | 0.663V |
プルダウンを付けても、起動直後はゲートが約0.66Vになりました。
- 原因:レベル変換のBSS138がオンすると、LV側(3.3V)とHV側(5V)の2本のプルアップ(どちらも10kΩ)が、両方とも1kΩを押し上げるため。計算すると約0.69Vで、実測とほぼ一致します
- 問題ない理由:IRLU3410のVgs(th)は1.0V以上なので、この電圧でソレノイドが動くことはありません。プログラムで
g.value(0)を実行すれば0.025Vまで下がります
3.3V直結と5V駆動の比較:オン抵抗・発熱・発振
比較表
比較のため、3.3V直結と5V駆動を同じ日に、同じ手順で続けて測り直しました。前の章の測定(83%)とは日が違うので、3.3V直結の値も少し違います。数値はすべてテスターの実測値です(オン中の値。電圧はMAX/MIN記録機能で読み取り)。
| 項目 | 3.3V直結 | 5V駆動 |
|---|---|---|
| ゲート電圧 | 3.25V | 4.65V |
| MOSFETのドレイン・ソース間電圧 | 0.375V | 0.162V |
| ソレノイドの電圧 | 9.75V | 10.29V |
| 電源レールの電圧 | 11.42V | 11.43V |
| 電流(ソレノイドの電圧 ÷ 6.95Ω) | 1.40A(計算値の81%) | 1.48A(86%) |
| MOSFETのオン抵抗(ドレイン・ソース間電圧 ÷ 電流) | 約0.27Ω | 約0.11Ω |
| MOSFETの発熱(ドレイン・ソース間電圧 × 電流) | 約0.53W | 約0.24W |
| 発振(テスターをMOSFETにつないだとき) | あり | なし |
- MOSFETのオン抵抗は約0.27Ω → 約0.11Ω。5V駆動(ゲート4.65V)では、データシートの規定値(4Vで155mΩ、5Vで125mΩ)の範囲に収まりました
- MOSFETの発熱は約半分になりました
- 発振は消えました。試した3か所のどこにテスターをつないでも、波形はきれいなままです
一方で、電流は81% → 86%。改善はしたものの、わずか5ポイントです。ゲート電圧不足は「発振」と「MOSFETの発熱」の原因でしたが、電流が8割しか流れなかった主な原因ではなかったことになります。
テスターをつなぐ場所で発振の出方が変わる
3.3V直結では、テスターのリード線をどこにつなぐかで発振の出方が変わりました。
| テスターをつないだ場所 | 3.3V直結 | 5V駆動 |
|---|---|---|
| MOSFETのドレイン・ソース間 | 強く発振し、約2秒かけて収まる | なし |
| 電源レール | オン直後に短く発振(約0.2秒) | なし |
| ソレノイドの両端 | なし | なし |
リード線がMOSFETに近いほど発振しやすい。Picoの3.3Vでオン抵抗が大きい状態のMOSFETは、ちょっとした外乱で発振してしまうことがわかります。ゲートを5Vで駆動すれば、同じ位置にテスターをつないでも発振しません。
発振と発熱については、「ゲート電圧が足りず、MOSFETが十分にオンしていなかった」という見立てが実測で裏付けられました。ただし、電流が8割止まりだった原因は別にあります。
残りの電圧降下はブレッドボード(1.5Aで約1V)
では、電流が86%止まりだった残りの原因はどこにあるのか。5V駆動で、12Vがソレノイドに届くまでの内訳を出してみます。
| 区間 | 失われた電圧 |
|---|---|
| ACアダプターと、電源レールまでの配線(無負荷12.19V → 電源レール11.43V) | 約0.76V |
| ブレッドボード上の配線(接点とジャンパー線) | 約0.98V |
| MOSFET | 0.162V |
| → ソレノイドにかかった電圧 | 10.29V |
※ACアダプターの無負荷電圧(12.19V)は初日の測定値。初日の測定では、このうちDCジャックから電源レールまでの配線で約0.14V下がっていました
ブレッドボードが原因だということは、配線を変えた測定でも確かめています。前回の記事で、ACアダプターとソレノイドをブレッドボードを通さずに直結して測った値と比べると、次のとおりです。
| 条件 | ソレノイドの電圧 | 12Vに対する割合 | 電流(÷6.95Ω) |
|---|---|---|---|
| 12V直結(ブレッドボードなし、前回の記事) | 11.39V | 95% | 1.64A |
| ブレッドボード経由・5V駆動 | 10.29V | 86% | 1.48A |
| ブレッドボード経由・3.3V直結 | 9.75V | 81% | 1.40A |
直結でも95%にとどまるのは、ACアダプターの出力が負荷で下がるためです(無負荷12.19V → 11.39V、約0.8V)。上の表の「ACアダプターと、電源レールまでの配線」の約0.76Vとほぼ同じです。
わかったこと
- MOSFETを5V駆動にした後、いちばん大きな損失はブレッドボードの配線で、MOSFETの約6倍だった
- 1.5A級の電流を流すと、ブレッドボードの配線だけで1V近く失う。ブレッドボードを通さずに直結すると、86%が95%まで上がった
- 次に大きいのはACアダプター側で、今回のアダプター(12V/2.5A)は1.5A流すと電源レールまでで約0.76V下がった
おすすめ
- 実験はブレッドボードで十分。実際に使うなら基板にはんだ付けするか、端子台と太い線で配線する
- 電源は、負荷をかけたときの電圧をテスターで確認しておく(無負荷の電圧だけでは分からない)
まとめ:マイコンの3.3VでMOSFETを選ぶときのチェックポイント
今回わかったことは次のとおりです。
- ゲート4V保証のIRLU3410を、Picoの3.3Vで直接駆動しても動くには動いた
- ただしオン抵抗は5V駆動の約2.4倍(0.27Ω)で、テスターのリード線をつなぐだけで発振した
- レベル変換でゲートを5Vにすると、オン抵抗はデータシートの規定値の範囲に収まり、発熱は半分、発振も消えた
- それでも電流は計算値の86%止まり。いちばんの損失はブレッドボードの配線だった
マイコンの3.3VでMOSFETを直接駆動するときは、次の点を確認しましょう。
- オン抵抗が何Vのゲート電圧で規定されているか(2.5Vまたは2.7Vで規定された品なら安心。4.5Vや4Vからの品は保証外)
- 「定格電流より小さいから大丈夫」と判断しない。定格電流は十分なゲート電圧(多くは10V)をかけたときの値
- 保証外で使うなら、ドレイン・ソース間の電圧を実際に測る(オン抵抗が計算できる)
- オシロがあれば、オン中のドレイン電圧が太い帯(発振)になっていないか見る
- 1A以上流すなら、ブレッドボードではなくはんだ付けや端子台で配線する
よくある質問(FAQ)
QRaspberry Pi Picoの3.3Vで、MOSFETを直接駆動できますか?
A「オン抵抗がVgs=2.5V(または2.7V)で規定されていて、流す電流に対してそのオン抵抗が十分小さい」MOSFETなら直接駆動できます。今回のIRLU3410のように4V以上で規定された品は、動くことはあってもオン抵抗が大きくなり、発振することもありました。
Q3.3Vで使うMOSFETは、データシートのどこを見ればいいですか?
Aオン抵抗 RDS(on) の測定条件に書かれているゲート電圧(VGS=〇V)です。オンし始める電圧 Vgs(th) は、ドレイン電流わずか250µAのときの値なので、これが3.3Vより低くても、3.3Vで十分にオンするとは限りません。
Q型番がIRLで始まるロジックレベルMOSFETなら、3.3Vで大丈夫ですか?
A「ロジックレベル」は多くの場合5Vロジックを想定しています。今回のIRLU3410も、オン抵抗が規定されているのは4Vまででした。型番ではなくデータシートで確認するのが確実です。
Qブレッドボードで1.5Aの電流を流しても大丈夫ですか?
A短時間の実験なら動きますが、今回はブレッドボードの配線だけで約1V失い、電流は直結したとき(12Vの95%)より1割近く少なくなりました。長時間・大電流で使うなら、はんだ付けや端子台で配線しましょう。
次回予告
次回は IRLB3813PBF を使います。
- IRLB3813PBFを使う理由:当初予定していたIRLB8721は生産中止で入手が難しかったため、その代替品です。オン抵抗は4.5Vで最大2.6mΩと、IRLU3410とは桁違いに小さい品です(条件は少し違いますが、IRLU3410は4Vで155mΩ)
- 3.3Vでは保証外:IRLB3813PBFも、オン抵抗が規定されているのは4.5Vからで、Picoの3.3Vは今回と同じく保証の範囲外です
- 確かめること:
- ここまでオン抵抗の小さいMOSFETなら、レベル変換なしの3.3V直結で足りるのか
- オフにした瞬間の逆起電力の波形と、還流ダイオードの効果
- PWMで保持電流を下げて焼損を防ぐ方法
Follow me on X
本ブログの中の人「ニンジン🥕」はXやってます。新着記事はいち早くポストでお知らせしているので、見逃したくない方は @ninjin_py_vba をフォローしてみてください🥕
@ninjin_py_vba をフォロー



















コメント