MOS FETとマイコン (1) 複数のLEDを点灯
■マイコンから電力デバイスのドライブに使えるFET
Arduino UNOのI/O電圧は5Vで、ラズパイのGPIOは3.3Vです。LEDやリレーを制御するためにトランジスタが使われます。トランジスタには、普通のトランジスタBJT(Bipolar junction transistor)と電界効果トランジスタのFET(Field Effect Transistor)があります。
FETには、JFETとMOS FETがあり、MOS FETはスイッチ素子としての利用がメインです。
●マイコンのI/O電圧はいくら?
Arduino UNO(電源は5V)とMicro:bit(電源は3.3V)で、次のスケッチを動かします。いずれもUSBから電源を供給します。
void setup() {
pinMode(2,OUTPUT);
digitalWrite(2,HIGH);
}
2番ピンの電圧を測りました。
Arduino UNO | Micro:bit | ||
---|---|---|---|
電源電圧 [V] | 2番[V] | 電源電圧 [V] | 2番[V] |
4.86 | 4.86 | 3.19 | 3.19 |
●実験に用いたMOS FET
2種類のMOS FETを用意しました。2N7000は小信号用、2SK2796は中電力用でゲートの駆動電圧VGSが低いタイプです。
型番 | 電圧[V]と電流[A] | ゲート電圧VGS(th) [V] | オン抵抗 [Ω] |
---|---|---|---|
2N7000 | 60/0.2 | 0.8(min) 3(max) | 1.8(typ) |
2SK2796 | 60/5 | 1(min) 2(max) | 0.16(min) |
●STEP1 LEDをドライブ(1)
最初に、マイコンのI/Oポートから直接LED 1個を駆動します。
◆Arduino UNO
LEDは赤色、電流制限抵抗R1は330Ωを使って点灯します。LED1を流れる電流は8.1mAでした。青色LEDは5.7mA、緑色LEDは8.1mAでした。
Arduino UNOのI/Oポートで流せる電流は20mA(最大40mA、全ポートの合計は100mA)ですから、小信号用LED 1個を直接駆動するのに問題はありません。
◆Micro:bit
Micro:bitのI/Oポートの電流は不明です。4~5mAと想定します。
LEDを直接ドライブします。LEDは赤色、電流制限抵抗R1は330Ωを使います。電源電圧が低いので、電流は3.2mAでした。青色LEDは1.3mA、緑色LEDは3.1mAでした。
Micro:bitの回路図を見ると、LEDマトリクスに入っている抵抗は220Ωのようです。4mAほど流しています。
●STEP2 LEDをドライブ(2)
上記のドライブ方法で、より明るくするために電流を20mA流そうと思います。小信号用のLEDは、数mAから電流が増えると明るさが増します。しかし、電流が約20mAを超えても明るさは増えません。Arduino UNOであれば、20mAまでI/Oポートから直接駆動できます。二つのLEDを並列につなぐと40mAになるので、直接は駆動できません。
そこで、MOS FETでドライブ回路を用意します。電流制限抵抗R3はLEDに20mA流したいので、47Ωにしました。MOS FETがON時、LED1のカソードはGNDに接続された状態になります。LEDは赤色です。STEP1で測定した結果から、順方向電圧Vfは2.18Vです。
( 3.19[V] - 2.18[V] ) / 47[Ω] = 21[mA] |
Micro:bitで、下記のスケッチは5秒おきにON/OFFを繰り返します。
void loop() {
digitalWrite(2,HIGH);
delay(5000);
digitalWrite(2,LOW);
delay(5000);
}
ゲートに入っているR1=47Ωは100Ω前後でよいようです。R2=100kΩも、10k~1MΩの範囲とアバウトで、ゲート電圧が解放にならないようにする目的で入れるようです。数百kHzを超えるような高速な繰り返しになると、MOSFETの入力容量を十分に駆動する回路が必要です。
◆2N7000
明るさは少し変わるのですがLEDはOFFになりませんでした。ON時のゲートの電圧は3.1Vなので、駆動できると思ったのですが。ドレインの電圧は約1.2Vでした。
測定器のAnalog Discovery2を使ってゲート電圧とドレイン電圧を調べました。上の黄色い波形が0Vから5Vへ変化させているランプ波形です。ゲートに入力します。下の青色がドレインの波形で、ゲート電圧は変化するのですが、ONにはなりません。ゲート電圧が約3VでONする以外の要素があるようです。
◆2SK2796
LEDのON/OFFがスケッチ通りに動きました。
Analog Discovery2を使ってゲート電圧とドレイン電圧を調べました。上の黄色い波形が0Vから5Vへ変化させているランプ波形です。ゲートに入力します。下の青色がドレインの波形で、ゲート電圧が約2VでONしています。以降の実験は2SK2796を使います。
●STEP3 LEDをドライブ(3)
MOS FETを使えば、電流をたくさん流せます。しかし、電源供給元をマイコンの電源端子からだとたくさん取り出すことができません。Arduino UNOの5VはUSBケーブルでつないでいるときは、数百mAとれます。しかし限界があります。Micro:bitの3V端子からどれくらい電流が取れるかは不明です。ラズパイでは50mAなので、同じくらいかもしれません。
そこで、別途LED電源を用意します。AC-DCアダプタだと9Vや12Vがあります。ノートPC用だと約19Vです。12Vを用意しました。電流制限用抵抗R3は20mAほど流したいので330Ωにしました。
( 12[V] - 2.18*3[V] ) / 330[Ω] = 17[mA] |
Micro:bitで実験しています。実測すると、LEDを流れる電流は17.7mAでした。
●STEP4 LEDをドライブ(4)
Red、Green、Buleをそれぞれ3個直列につなぎました。それぞれの色ごとに流れる電流が異なるので、電流制限抵抗は別個につないでいます。色が同じでも、LEDは製品によってばらつきがあり、電流は異なります。R3、R4、R5の値は47Ωです。電源は同じく12Vです。
Micro:bitで実験しています。LEDを流れる電流の合計は43.7mAでした。MOS FETはON時にオン抵抗が0.16Ωなので、ほとんど発熱もありません。