ラズパイとMOSFETとPWM制御
この記事では、Raspberry Pi(ラズパイ)とMOSFETを使ったPWM制御で、100均のLEDライトを調光するやり方を解説していく。
100均LEDライトを分解すると、下の写真のように高輝度白色チップLEDが10個入っている。ラズパイのGPIO出力電流だけでは、10個のLEDライトの点灯は不可能である。
そこで、この記事ではMOSFETを使ってLEDをドライブする方法を紹介する。さらに、PWM制御によるLEDの明るさを調光する方法も解説する。
環境
項目 | バージョン |
---|---|
ラズパイ | Raspberry Pi zero WH |
OS | Raspbian 9.13 |
Python | 2.7.13/3.7.0 |
MOSFET | IRF520 |
LED | USB電源LEDライト(100均) |
USB電源LEDライトの仕様
100均LEDライトの配線を調べると、次の回路になっていた。
10個のLEDは並列に接続されており、さらに4.7Ωのチップ抵抗が並列に入っている。抵抗をわざわざ並列にしているのは、抵抗の定格電力を超えないように、ワット数を増やすためだと思われる。
LEDライトを点灯させ消費電流を計測してみたところ、全体で640mAの電流が流れた。つまり、1つのあたりのLEDで64mAの電流となる。また、LEDのVF(順方向電圧)は3.4V程度である。
チップ抵抗の読み方
表記 | 値 | 読み方 |
---|---|---|
473 | 47kΩ | 47 x 10^3 |
472 | 4.7kΩ | 47 x 10^2 |
4R7 | 4.7Ω | Rを小数点に置き換える |
MOSFET(IRF520)の使い方
今回使用したIRF520は、左からゲート(G)、ドレイン(D)、ソース(S)が割り当てられている。
MOSFETの使い方はいたって簡単。
- ドレインソース間を導通させない場合は、ゲートの電位を2V以下の電圧にする。
- ドレインソース間を導通させたければ3V程度以上の電圧をかける。
ゲートのコントーロールにより、MOSFETは電子スイッチの動作をするのだ。
LEDの明るさを変えるには?
LEDの明るさを変えるには、PWM制御で行っていく。
PWMとは、Pulse Width Modulationの略で「パルス幅変調」と呼ばれる。点灯と消灯を高速で繰り返すのだが、その比率を変えると見た目上の明るさが変わるのだ。またこの比率を、デューティ比やデューティサイクルと呼ぶ。
Raspberry Pi・MOSFET・LEDライトを配線する
実際に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)
gpiozero と numpy を使ったので、事前にインストールしておこう。gpiozeroライブラリの PWMLED 関数を使うと、簡単にPWMのデューティ比を変えることができる。frequcency の値を変えることで、点滅スピードを変化させることができるので色々試してみよう。
以上で説明を終わるが、PWM制御の応用編として、DCモーターの回転速度を制御した記事も書いたのでよかったら参考に。
PWM信号はラズパイなどのコンピュータを使わずとも、オペアンプなどで実現できてしまう。アナログ回路になるが、用途によってはこれで十分だったりするのでこちらの記事も参考に。
この記事で使用した関連製品はこちら
Raspberry Piの参考書
本書は、全世界で多くのユーザーの支持を集めているマイコンボード「Raspberry Pi」を使いこなすためのレシピ集です。ハードウェアの基本、オペレーティングシステムの使い方、ネットワーク接続、Pythonプログラミングの基本を紹介した上デ、実際の作品製作に必要になる、高度なPythonプログラミング、GPIO(汎用入出力)、モーター、センサー、ディスプレイなどの使い方へと解説を進めていきます。
Amazon最後まで読んでいただきありがとうございました。
「この記事が参考になったよ」という方は、ぜひ記事をシェアをしていただけるととても嬉しいです。
今後も有益な記事を書くモチベーションにつながりますので、どうかよろしくお願いいたします。↓↓↓↓↓↓↓