Arduino UNOでLEDの駆動デューティを変えてみる
LEDの駆動デューティを変えた時の輝度変化を見るための
実験にArduinoを使ってみました。
単純な「PWM」なんですが、Arduinoに備わっているPWMは
「analogWrite()」で、どちらかというとD/Aコンバータの代わり
です。 (分解能が8bit)
そこで今回の実験では、
・8bit タイマー2のOC2Aに方形波を出力。
・これをT1入力に入れて16bit タイマー2でカウント。
・タイマー2をPWMモードにしてOC1Bに出力。
・PWMの分解能は1/1000。
・PWMの分解能は1/1000。
PWMのデューティと周波数を設定できるよう、16進の
ロータリーDIP SWと出力用のMOS-FETを小基板に
乗せました。
・回路図
組んだLED群です。 (実際に使うのはこれではありませんが)
基本、デューティを1/2にしたら明るさ半分、デューティ1/4なら
基本、デューティを1/2にしたら明るさ半分、デューティ1/4なら
明るさも1/4にという比例関係になるんですが、「目で見た感じ」
が分かりません。
それを調べるための実験です。
FETのソース側に入れた抵抗の電圧を測れば、駆動電流が
それを調べるための実験です。
FETのソース側に入れた抵抗の電圧を測れば、駆動電流が
読めるということにしました。
砲弾型LEDの最大定格、20~30mAで、1/10デューティの
砲弾型LEDの最大定格、20~30mAで、1/10デューティの
駆動ならピーク100mAというのが多いでしょうか。
作った制御スケッチのアップロード↓ へ。
作った制御スケッチのアップロード↓ へ。
※特徴的な処理
・タイマー0はArduinoのシステムで使っている。
・自由になるのはタイマー1と2。
・PWMの分解能が欲しいから、タイマー1が16ビットなので
これを使う。
・PWMデューティを設定するスイッチの周期的読み出しに
は、「millis()」で1msカウンタの変化をチェックして、変化
したら1mS経過フラグをオン。
・これでチャタリング除去の時間待ちを処理。
実際の処理は、時間待ちせずに時間経過をチェック。
処理が終わるまで待つというプログラムの書き方は×。
実際の処理は、時間待ちせずに時間経過をチェック。
処理が終わるまで待つというプログラムの書き方は×。
| 固定リンク
コメント
これって、「平均電流が同じでも、パルス点灯の方が人間には明るく見える」という話が本当なのかの確認ですよね。結果がどうなったのか気になってます。
何かの事情で記事に出来なくなったのなら、このままスルーしてください。
この話は以前から引っ掛かっていたので、可能なら私も実験してみようかと思ってます。
投稿: ラジオペンチ | 2018年11月15日 (木) 18時31分
ラジオペンチさん、するどいつっこみ!
「明るさ」の測定は、これ↓
http://act-ele.c.ooco.jp/blogroot/igarage/article/4044.html
で、数値化可能なんです。
※センサーの時定数とかは、自作モノなんでどうにでも。
でも、見た目は数値化できない!
デジタルカメラのレンズを絞って(NDフィルタも登場)、低速シャッターにして(スキャンタイミングを無視できるよう)、明るさの変化を撮影画像上の輝度として数値にしても・・・
結果・・・ 人の目の応答がよくわかりません。
目で見ての明るさ、元の瞬時的発光輝度に依存しているように感じます。
でも、デューティを低くするとそれなりに暗く見えるわけで・・・。
ヒューマンエレクトロニクス系の論文を探せば調べている人がいてたり、測定の方法を論じてたりするんだろうと思ってますが・・・不明です。
私には、数値として示せません。
ということで、この実験はおしまいです。
実際に光らせてみて(使用するLEDとその回路系で)判断して!が結論でっす。
投稿: 居酒屋ガレージ店主(JH3DBO) | 2018年11月15日 (木) 21時59分
了解です。
試してみたい回路のアイディアがあるのでちょっとやってみます。
投稿: ラジオペンチ | 2018年11月16日 (金) 08時52分