カラーLEDでのお遊び

LEDでのお遊び

[TopPage] -> [PIC] -> [ColorLED]  |  

1.はじめに
 数ヶ月前に秋月さんから高輝度カラーLEDを購入しました。土曜日に部品箱をあさっていたらたまたま目につきましたのでPIC12F629を使ってPWM点灯して遊んでみました。
 回路はすぐでき、Cを使ったこともありPWM点灯もすんなり。これだけでは物足りないので、回路の変更なしにLEDの起電力(起電圧?)を利用して周囲が明るい場合は自動消灯しsleepするようにしました。

2.回路
 回路図はこちらです。(HEXファイルはこちらから)
 12F629を使うんだからコンパクトにまとめようと思い、レギュレータとコンデンサは手持ちの表面実装タイプのものを使用しました。
 最初はまったく考えていなかったのですが、完成後、外来光でのLEDの起電圧を利用して周囲が明るい場合は消灯するようにしています。このため赤LEDの起電圧を短時間コンパレータ入力(GPIO0)し、明暗を判定しています。
 簡単な回路なので回路図を書かずに製作し後で回路図を書きました。

 電流制限抵抗も手持ちにあった100Ωだけで構成(緑と青はパラ接続で50Ω)しています。


表  面

裏  面
3.処理内容
 PWM制御に関してはいろんなホームページで説明されているので割愛。今回はC言語で開発したのでhw製作も含め一日ですんなり動きました(アセンブラだったらこうはいかないでしょう)。

4.LEDの起電力利用方法
 LEDに光を当てテスタで起電圧を図ったところ、予想に反して赤色LEDが最も高く(当てた光の波長にも依存する可能性もあるが←発光色より短い波長の光で起電するらしい)1.5程度の電圧がありました。
 そこで赤色LEDを制御しているGPIO0をPWM制御内で一瞬だけコンパレータ入力に切り換えることで周囲の明るさを無理やり判定します(笑)
 右の図が周囲が暗い場合にシンクロで見た波形で水色の線の期間だけコンパレータ入力に切り換えて波形を観測しました。
 下の紫色の線がコンパレータ入力のGPIO0で上の黄色の線がコンパレータ出力の波形です。コンパレータのリファレンス値は内部のものを使用し、設定範囲で最も高い3.6Vに設定しています(GPIO0の入力電圧は(Vcc−LED起電圧)となるので)
 LEDに起電圧が殆ど発生していない状態ではコンパレータ入力はリファレンス値に向かって引っ張られるようです(本来ならLEDで発生した電圧をFET等でバッファリングする必要があると思います)。
 リファレンス値までたどり着くとコンパレータ出力は安定しない状態になりました。

暗い環境での信号波形
 それではLEDにライトの光を当てた時の信号はどうでしょうか?
 右が光を当てた時の波形で約120μS後には(この時間は当然光の強さに依存)コンパレータ出力はhighで安定しています。
 周囲が暗い場合との違いをソフト的にどう判定したらいいでしょうか?
 今回はコンパレータに切り換えてから一定時間(約200μS)後に、コンパレータ出力がhighで安定しているかどうかで判断することにしました(8回連続してhighの場合は周囲は明るいと判断しsleep状態に移行する)。

 最後に、カラーLEDが発光する様子と光を当てた時に発光が停止する画像を見てください。ここをクリック・・・ピンボケしていて判り辛いかも・・・・^^;
 手持ちの光量の少ないライトではかなり近づけないとLEDが消えませんでしたが、昼は窓際の明るさで確実に消えました。

 LEDがむき出しだと眩しいですが、半透明の買い物袋を上に被せ、部屋の電気を消すと得体の知れない光る物体となり、見ていてとても綺麗です(^^)。


 added in 2005/11/01
 今回作成したプログラムではRGBそれぞれの点灯パターンをプログラム内テーブルに配列データとして保持しています。
 RGBのパターンデータ長をそろえない場合、それぞれのパターン長の最小公倍数がRGB全体での点灯パターン周期になります。
 初回バージョンではわざと周期を揃えて単純なパターンの繰り返しにしていましたが、RGBそれぞれの点灯パターン長をずらして見ましたので見ている限りでは繰り返しパターンの認識はできないくらい長くなりました。

明るい環境での信号波形


[ History ]
 2005/11/01 change table data in prog
 2005/10/25 first published by T.Satoh

[TopPage] -> [PIC] -> [ColorLED]  |