Raspberry Pi 3 pigpioを使ってLチカ PWMパラメータ確認編

スポンサーリンク

※2017/10/1 回路図追加

やりたいこと

前回はpigpioでLEDをPWM制御しました。

が、あんまりパラメータとかわからずとりあえず出来るか確認しただけでした。。

今回は前回使ったパラメータを少しだけ掘り下げてみようと思います。

参考にさせていただいたサイト様です。

またpigpioのコマンドについてはこちらを参考にしています。

なぜPWMを使うのか

そもそもなぜPWMを使ってLチカをしているかというと、

PWM制御をするとLEDを調光(光の強さを調整)することが出来るからです。

LEDを調光する方法は他にもありますが、後々このPWMでモーター制御とかもしてみたいので、勉強がてらLED調光を試しています。

ラズパイとpigpioでこんなに面白いことができるとは・・・良い時代になりましたね。

・・・PWMのすごさとかは私ではとても解説できないので他サイト様を探索してくださいw

「LED調光」、「PWM」などで調べればいろいろ出てきます。

使用部材

前回と同様なので割愛します。

使用部材の計算について

こちらも前回と同様なので割愛します。

構成図

Fritzingを使用して書いています。

今回はLED2つを使用して比較します。

各場所のGPIOピンとの対応は以下のとおりです。

左:GPIO(4ピン)

右:GPIO(17ピン)

回路図

※LED635nmとありますが使用したのは640nmです。

fritzingで選択できる一番近いものを選んでます。

set_PWM_frequency(user_gpio, frequency)について

PWMの周波数をHzで指定するコマンドです。

例としてPWM周波数を200Hzとした場合、1秒間に200個の波が発生することになります。

周波数は1秒間にある波の数なので、値が小さいほど波が少なく、値が大きいほど波が多くなります。
周波数が低いほど電源ON、OFFの回数が少なくなるので目に見えてちらつきます。

以下のプログラムで周波数200と10の場合を比較してました。

※今回も実行前に$ sudo pigpiodは打ちません。自動起動済みです。

実行方法はこちら。

$python Lchika_f_change.py
done.

実行結果はこちら。


右側の周波数10Hzはチカチカしていて、光が強くなってるのか弱くなっているのか

わからないですね。低すぎるとPWMとして機能しません。

set_PWM_range(user_gpio, range)について

PWMの値の範囲を決めると書いてあるのですが、何かと思ったら次に出てくるdutycycleの最大値のを決めるためのコマンドです。デフォルトは255ですが100にすると直感的にわかりやすくなるので100にしています。この値を大きくして細かくPWM制御することも出来そうです。

以下のプログラムでrangeを100 と 200にして比較しました。
200は100の2倍の時間がかかりますががより細かく調光できることになります。

実行方法はこちら。

$python Lchika_r_change.py
done.

実行結果はこちら。


左に比べて右は2倍の時間光っています。

その分段階的に光が強くなったり、弱くなったりしてます。

set_PWM_dutycycle(user_gpio, dutycycle)について

0-255がデフォルト。ですがさきほど100を最大値に設定したので100で説明します。

PWMの1周期に対してONになっている時間の割合を表します。
100の場合は50で1周期あたり半分の時間光っていることになる。
0だとずーと光ってないということです。
25だと1/4光っていて3/4光っていない。
50だと1/2光っていて1/2光っていない。
75だと3/4光っていて1/4光っていない。
100だとずーと光っています。

実際に人の目で見ると50の場合は100の半分くらいの暗さで見えることになります。

以下プログラムで100と25で比較しています。LチカではなくLピカです。

実行方法はこちら。

$python Lchika_d_change.py
done.

実行結果はこちら。


左に比べて右は光が小さくなっています。

・・・1/4かは肉眼ではわからないですね。。

次回予告

未定です!

LEDチカチカしてると目が痛くなるのでそろそろ別のことやりたいんですが・・・

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする