Raspberry Pi 4でLED照度調整

Raspberry Pi 工作

TWELITEでのLED照度調整と同じようにRaspberry Pi 4でもPWMを使ってLED照度調整をおこないます。

回路図はとてもシンプルです。GPIO4 (7pin)をブルーLED、PWM0 (12pin)をグリーンLEDの、それぞれアノード(足の長い方)に接続し、それぞれのLEDの他端をGND (6pin) に接続しています。

GPIO4 (7pin) ブルーLEDのアノード
PWM0(12pin) グリーンLEDのアノード
GND (6pin)両方の抵抗端

GPIO4とPWM0にLEDを接続しているのは、ソフトウエアPWMとハードウエアPWMの両方を動かしてみたかったからです。ハードウエアPWMはハードウエアでPWM信号を生成していて、周期やDuty比は正確です。けれどもRaspberry Pi 4ではPWM0とPWM1の2つしか備えられていません。一方ソフトウエアPWMはGPIOポートであればどれでもPWM信号を生成できますが、ソフトウエアゆえに内部の優先処理の影響をうけて周期やDuty比の正確さに欠けます。簡易的なPWMといったところですね。

工作室ではそれら二つのPWMを動かすPythonコードを用意しました。周期とDuty比を設定してPWM出力して、キーボードでコントール+Cを押すことで出力を停止します。

import RPi.GPIO as GPIO
from time import sleep

GPIO.setmode(GPIO.BCM)
GPIO.setup(4, GPIO.OUT)
blue=GPIO.PWM(4, 1000)  # GPIO4を1000HzでPWM設定
blue.start(0) # Duty=0%でスタート
blue.ChangeDutyCycle(95) # Duty=95%に設定

GPIO.setup(18, GPIO.OUT)
green=GPIO.PWM(18, 1000) # GPIO18を1000HzでPWM設定
green.start(0) # Duty = 0%でスタート
green.ChangeDutyCycle(95) # Duty=95%に設定

try:
  while True:
    sleep(0.1) # Ctr-Cが押されるまで点灯継続

except KeyboardInterrupt:
  pass

blue.stop()
green.stop()
GPIO.cleanup()



工作室で購入したロジックアナライザーLA1010を使って実際のPWM出力信号を観察してみます。

Duty比 5%

Duty比 5%ではPWM信号周期の内5%だけ出力(HIGH)します。LEDはこの5%だけ点灯するわけですね。なので結構暗いですね。ロジックアナライザーでは周期が861Hzだと言っています。Pythonでの設定では1000Hzなので結構なズレがあることがわかります、というかズレすぎな感じがしますね。どっちが悪いんだろうって感じです。


Duty比 50%

Duty比50%ではPWM周期の内半分がHIGHになります。LEDも元気よく点灯します。


Duty比 95%

Duty比95%ではPWM周期の95%がHIGHなので、ほぼほぼLEDは全力投球といったところです。ただ、自分の目では50%時の明るさと区別がつかない感じでした。また、グリーンLEDよりもブルーLEDの方が明るく点灯するように感じました。試しにグリーンLEDをブルーLEDに交換したら両方とも同じ明るさに見えたので、PWM信号差(端子差)ではないようです。


周期変更の場合

追加で周期を500Hzから1000Hzに変更した場合もロジックアナライザーで観察しました

500Hz設定時
1000Hz設定時

コメント  

タイトルとURLをコピーしました