ラズパイとMOSFETとPWM制御


画像の拡大

この記事では、Raspberry Pi(ラズパイ)とMOSFETを使ったPWM制御で、100均のLEDライトを調光するやり方を解説していく。

100均LEDライトを分解すると、下の写真のように高輝度白色チップLEDが10個入っている。ラズパイのGPIO出力電流だけでは、10個のLEDライトの点灯は不可能である。

そこで、この記事ではMOSFETを使ってLEDをドライブする方法を紹介する。さらに、PWM制御によるLEDの明るさを調光する方法も解説していく。

Akozon 5個 0-24V IRF520 MOSFETドライバモジュールボタンドライブ、Arduino用(3.5V / 5V)
Akozon 5個 0-24V IRF520 MOSFETドライバモジュールボタンドライブ、Arduino用(3.5V / 5V)
Amazon

環境

項目バージョン
ラズパイRaspberry Pi zero WH
OSRaspbian 9.13
Python2.7.13/3.7.0
MOSFETIRF520
LEDUSB電源LEDライト(100均)

USB電源LEDライトの仕様

100均LEDを分解
100均LEDを分解

100均LEDライトの配線を調べると、次の回路になっていた。

100均LEDライトの回路図
100均LEDライトの回路図

10個のLEDは並列に接続されており、さらに4.7Ωのチップ抵抗が並列に入っている。抵抗をわざわざ並列にしているのは、抵抗の定格電力を超えないように抵抗の耐ワット数を増やすためだと思われる。

LEDライトを点灯させ消費電流を計測してみたところ、全体で640mAの電流が流れた。つまり、1つあたりのLEDで64mAの電流となる。また、LEDのVF(順方向電圧)は3.4V程度である。

消費電流を測定
消費電流を測定

チップ抵抗の読み方

表記読み方
47347kΩ47 x 10^3
4724.7kΩ47 x 10^2
4R74.7ΩRを小数点に置き換える

MOSFET(IRF520)の使い方

今回使用したIRF520は、左からゲート(G)、ドレイン(D)、ソース(S)が割り当てられている。

MOSFET(IRF520)の端子割り当て
MOSFET(IRF520)の端子割り当て

MOSFETの使い方はいたって簡単。

  • ドレインソース間を導通させない場合は、ゲートの電位を2V以下の電圧にする。
  • ドレインソース間を導通させたければ3V程度以上の電圧をかける。

MOSFETの動作図
MOSFETの動作図

ゲートのコントーロールにより、MOSFETは電子スイッチの動作をするのだ。

LEDの明るさを変えるには?

LEDの明るさを変えるには、PWM制御で行っていく。

PWMとは、Pulse Width Modulationの略で「パルス幅変調」と呼ばれる。点灯と消灯を高速で繰り返すのだが、その比率を変えると見た目上の明るさが変わるのだ。またこの比率を、デューティ比デューティサイクルと呼ぶ。

PWMデューティ比の説明図
PWMデューティ比の説明図

Raspberry Pi・MOSFET・LEDライトを配線する

実際にRaspberry Pi・MOSFET・LEDライトを配線していこう。回路図と配線図を次に示す。

MOSFETとLEDライトの回路図
MOSFETとLEDライトの回路図

fritzingで書いたRaspberry Pi・MOSFET・LEDライトの配線図
fritzingで書いたRaspberry Pi・MOSFET・LEDライトの配線図

fritzingで100均LEDライトを表現できなかったので、普通のLEDで表記している。

LEDに供給する5V電源は、Raspberry Piとは別の電源から供給したほうが良い。GPIO14ピンを1kΩの抵抗を通してMOSFETのゲートに繋いが、この抵抗は保護用に入れてみただけなので、別になくても構わないと思う。

LEDを調光するPythonプログラム

配線ができたところで、Pythonプログラムを書いてLEDを調光してみよう。プログラムは次の通り。一定の周期でなめらかな点滅を繰り返す。

# -*- coding: utf-8 -*-
from gpiozero import PWMLED
from time import sleep
import numpy as np

LED = PWMLED(14)
LED.value = 0
frequcency = 0.5
phase = 3.0 / 4.0 * 2.0 * np.pi # スタート時のvalueを0にするため位相をズラしている
sample_rate = 100.0
duration = 1.0 / sample_rate
d_phase = frequcency * 2.0 * np.pi / sample_rate

while True:
    value = (np.sin(phase) + 1) / 2.0
    LED.value = value
    phase = phase + d_phase
    if phase > 2.0 * np.pi:
        phase = phase % (2.0 * np.pi)    
    sleep(duration)

gpiozeronumpy を使ったので、事前にインストールしておこう。gpiozeroライブラリの PWMLED 関数を使うと、簡単にPWMのデューティ比を変えることができる。frequcency の値を変えることで、点滅スピードを変化させることができるので色々試してみよう。

PWM信号でLEDライトを点滅
PWM信号でLEDライトを点滅

以上で説明を終わるが、PWM制御の応用編として、DCモーターの回転速度を制御した記事も書いたのでよかったら参考に。

PWM信号はラズパイなどのコンピュータを使わずとも、オペアンプなどで実現できてしまう。アナログ回路になるが、用途によってはこれで十分だったりするのでこちらの記事も参考に。

この記事で使用した関連製品はこちら

Akozon 5個 0-24V IRF520 MOSFETドライバモジュールボタンドライブ、Arduino用(3.5V / 5V)
Akozon 5個 0-24V IRF520 MOSFETドライバモジュールボタンドライブ、Arduino用(3.5V / 5V)
Amazon
5個入り MOS FETトリガスイッチ ドライブモジュール PWMレギュレータ コントロールパネル 15A 400W
5個入り MOS FETトリガスイッチ ドライブモジュール PWMレギュレータ コントロールパネル 15A 400W
Amazon
WayinTop リレーモジュール DC 5V Arduino Raspberry Pi対応 3個入り
WayinTop リレーモジュール DC 5V Arduino Raspberry Pi対応 3個入り
Amazon

人気のラズパイ

Raspberry Pi 4 Model B 8GB 技適マーク入 正規品!ラズベリーパイ4 モデルB
Raspberry Pi 4 Model B 8GB 技適マーク入 正規品!ラズベリーパイ4 モデルB
Amazon
TRASKIT Raspberry Pi 4 Model B Starter Kit
TRASKIT Raspberry Pi 4 Model B Starter Kit
Amazon
Raspberry Pi Zero W - ヘッダー ハンダ付け済み
Raspberry Pi Zero W - ヘッダー ハンダ付け済み
Amazon

人気のラズパイ周辺機器

10 インチRaspberry Pi用タッチモニター EleDuino HDMI モバイルディスプレイ
10 インチRaspberry Pi用タッチモニター EleDuino HDMI モバイルディスプレイ
Amazon
Raspberry Pi4 Model B /アルミニウム金属ケース/ファンレス/放熱シート付き
Raspberry Pi4 Model B /アルミニウム金属ケース/ファンレス/放熱シート付き
Amazon
Freenove Raspberry Pi 4 B 3 B+ 400用の究極のスターターキット
Freenove Raspberry Pi 4 B 3 B+ 400用の究極のスターターキット
Amazon
KEYESTUDIO DC 5V 4チャンネル リレーシールドモジュール 拡張ボード for Raspberry Pi
KEYESTUDIO DC 5V 4チャンネル リレーシールドモジュール 拡張ボード for Raspberry Pi
Amazon

Raspberry Piのオススメ入門書

Raspberry Piクックブック 第3版 (Make:PROJECTS)
Raspberry Piクックブック 第3版 (Make:PROJECTS)
Amazon
これ1冊でできる! ラズベリー・パイ 超入門 改訂第6版 Raspberry Pi 4/Zero W対応
これ1冊でできる! ラズベリー・パイ 超入門 改訂第6版 Raspberry Pi 4/Zero W対応
KindleAmazon
写真や図解でよくわかる ラズパイZeroを使い倒す本 Raspberry Pi Zero W対応
写真や図解でよくわかる ラズパイZeroを使い倒す本 Raspberry Pi Zero W対応
KindleAmazon
記事に関するご質問などがあれば、ぜひTwitterへお返事ください。