MOSFETの利用経験
デジタル屏風では屋外で騒音を検知するとLEDが光る騒音警報看板を試作しています。屋外で省電力で動作するPICマイコンでLEDをコントロールします。MOSFETを使って問題なく複数のLEDを光らせることができるかを検証しました。
●PICで多数のLEDを点灯させる
10個程度のLEDを光らせることを想定し、PICマイコンでたくさんのLEDを光らせる実装方法を「逆引きPIC電子工作やりたいこと事典」(後閑哲也著)の「たくさんのLEDの点滅制御をしたい」節を参考に検討しました。当該書籍には、「PICマイコンの入出力ピンは最大でも5V25mAまでしか駆動できない」ので、「MOSFETトランジスタを追加して駆動する」ことが解決方法として示され「MOSFETトランジスタは、数十V数Aという大電圧大電流をオンオフ制御できるので、たくさんのLEDでも問題なく制御できます」とあります。MOSFETとはMetal Oxide Silicon Field Transistarの略です。
●MOSFETの駆動回路
MOSFETの駆動回路については、「パワーMOSFET 技術と回路 入門」(Lee Kyongyui著)に以下のような駆動回路が紹介されています。MOSFETには、ゲート(gate)、ソース(source)、ドレイン(drain)という3つのピンがあります。ソースは通常アースに接続し、ドレインから電流を流し込みます。ゲートに電圧をかける(今回はMOSFETから出力PINのhigh出力に該当)ことによって、ドレインからの電流を制御する仕組みです。下の図のようにドレインに使う電源(Vds)とゲートをコントロールする電源(Vgs)が別々であると考えるとわかりやすいと思いました。同じ電源を両方の目的で使うことは可能ですが。
●MOSFETトランジスタの選定
「逆引きOIC電子工作やりたいこと事典」(後閑哲也著)の「たくさんのLEDの点滅制御をしたい」の節には、「ドレインーソース間の耐電圧と最大電流が使用する電圧、電流の2倍から3倍の定格のものを選びます」と記されており、文献中では2SK2796(秋月電子で60円/個)が例として記述されています。2SK2796の仕様は、ドレインソース間電圧:Max 60V、連続ドレイン電流:Max 5A、ゲートソース遮断電夏:1.0V~2.0V、ドレインソースオン抵抗:0.12Ωと記されています。今回ドレインソース間電圧は5Vに設定し、連続ドレイン電流は200mA(=20mA/LEDx10)ですので、最大値は12倍~25倍となりますが、現在秋月電子で販売されているMOSFETでは、このMOSFETがほぼ最小のスペックであるため、このMOSFETを使うことにしました。データシートを参照すると、Gate、Drain、Sourceは以下の図のように対応しています。
またデータシートには特性として、以下が記載されています。
◆Low on-resistance RDS(on) = 0.12 Ω typ.
◆4 V gate drive devices.
◆High speed switching
●MOSFETの特性
MOSFETのデータシートにはいくつかのグラフが表示されていますが、下のようなドレインーソース間電圧(縦軸=VDS)とゲート-ソース間電圧(横軸=VGS)とし、複数のドレイン電流(ID)がグラフとして表示されているものです。パルス測定とあるので連続時間で測定したものではなくパルスとして測定した結果でしょう。
このグラフを見ると、VGSの値が3~4Vでグラフが大きく曲がり、VGSが4Vを超える範囲ではVDSは変化しないということです。VGSはドレインに流れる電流をせき止め、解放する役割を担っているように見えます。そして複数のグラフで示されたIDがそれぞれ同じ値として描かれているため、ドレイン電流としてはコンスタントであることがうかがえます。
ここでVDSがどの値を表しているのかについて、「電子工作入門以前」(後閑哲也著)には以下のような図が描かれています。負荷の部分を含めない電圧として記されています。LEDを点灯させるには、約2Vの電圧が必要なので、負荷の部分も含めた電圧としてVDSを見ると、グラフのVDS値が小さすぎます。当該書籍に記されたVDSの範囲で一貫した解釈ができました。
●MOSFETを使ってLEDを点灯させる
MOSFETを使ってLEDが光ることをまずはArduinoを使って確認しました。MOSFETのGateに電圧を1秒間隔で高くしたり低くしたりするプログラムをArduinoのblinkサンプルプログラムを利用しました。LED_BUILTINは13番のピンが割り当てられているようです。
MOSFETおよびLEDの電源はArduinoの5Vのピンを使いました。2つのLEDを直列につなげて1秒ごとに点灯、消灯を繰り返すことを確認しました。
10個のLEDも問題なく点灯できました。
Arduinoの5Vの電源ではなく、単三電池3個(4.5V)を使っても同様に光りました。ArduinoのGNDを電池のマイナスとつなげないと、正しく動作しませんでした。動作から推察すると13番ピンがhighのままになってしまうようです。
●色々なMOSFETを試してみる
「ドレインーソース間の耐電圧と最大電流が使用する電圧、電流の2倍から3倍の定格のものを選びます」というルールに合致するMOSFETは見つからなかったので、2SK2796を選定しましたが、手元にあったより耐電圧の大きい、もしくは最大電流の大きいいくつかのMOSFETをArduinoで作った回路で試してみました。いずれも動作し、LEDの点灯する様子も目視では違いがありませんでした。