![]()
街にはクリスマスツリーが飾られて華やいだ雰囲気になってきた。我が家でも景気づけにクリスマスツリーをだしてきたので、毎日定刻にイルミネーションを点灯するコントローラを作ってみた。
ACコンセントの無い場所にも小さなツリーをおくために、電池でLEDイルミネーションを点滅させるコントローラと、ACコンセントにつなぐイルミネーション用の2本立て。
どちらも電源を入れてから6時間点灯した後、消灯する。翌日も同じ時刻になると点灯することを繰り返す。
電池式のLED用コントローラについて、PWM制御による滑らかな点滅を行うプログラムを追加(2012.11.25追記)。
2013.06.30 3つのソース共にバグ修正しました。1秒で9usで進むバグ(月差+24秒位なので水晶発振子の精度と同じ程度の誤差)。
![]()
LEDイルミネーション(電池タイプ)
IKEAで買ってきた10灯の白っぽい電球色LEDイルミネーション(299円)×2個。単三 2本の電池ボックスにスイッチがあり、単純なON/OFFしかできない。これを点滅するようにする。
回路図
2連のLEDのON/OFFだけなので手持ちの8ピンPIC12F675を使う。毎日同じ時間に点灯するために発振子には4MHzのX'Talを使って精度をだす。
内蔵発振だと±1%程度の誤差があるので、1日で最大14分、1ヶ月稼働すると7時間もずれるので狙った時刻に点灯できなくなる。
回路図の拡大図です。上側が電池LED用で、下側がAC制御用です。無保証です。
![]()
コントローラ基板
こんな感じで切れ端のユニバーサル基板に実装した。赤い小さなLEDが消灯時動作のモニタ用。
![]()
プログラム
時間をカウントする方法は、キッチンタイマと同じで、約4ms毎のtimer0割り込みをカウントする。
全体の動作は、電源を入れると2系統のLED群を1秒毎に交互に点灯(点滅)させ、さらに1分毎に2秒間激しく点滅する。今回は凝らなかったが、PWM機能を使ってなめらかに点滅するようにするとよいかも(PWM版を作ってみた)。
6時間経つと消灯し、代わりにモニタ用LEDが2秒毎に点滅し、動作していることが判るようにする。
さらに18時間(電源投入から24時間)経つと、再度6時間LED群を点滅する動作を繰り返す。日が落ちる5時頃に一度電源を入れれば、11時まで点灯することを毎日繰り返す。
ソースプログラムです。バグがあるかもしれません、無保証です。著作権は留保しますが、改変などご自由にどうぞ。
![]()
PIC書き込み中
今回、PICへのプログラムの書き込みはICSPではなく、事前に書き込んでからソケットに実装する形とした。以前作った書き込みアダプタを使用。
![]()
動作中の様子
10個のLED群が1秒毎に交互に点滅し、1分ごとに激しく(0.1秒毎)点滅する。単二電池×2本で1ヶ月弱は持つ計算。
動作中 35mA x 6H = 210mAh 待機中 1mA x 18H = 18mAh --------------------------- 228mAh/日 単二電池容量 6,000mAh位? →6,000mAh/228mAh = 約26日電池ボックスと基板は、クリスマスプレゼントを模した小型の箱に収めてツリーの下に置く。
2012.11.25追記
![]()
PWM版プログラム
ハードは変更せずプログラムのみ書き換えて、PWM制御による滑らかな点滅にするようにしてみた。
PIC12F675にはPWMモジュールがないのでプログラムでPWMを実現。timer0割り込みをパルス幅の基準として、輝度毎に光らせる幅を決める(左図)。
![]()
プログラム変更点
・割り込みを約4msから約2ms毎に変更
明るさ(LEDを光らせるパルス幅)を8段階にしたので、今までの4msだと 4ms×8 = 32ms = 31.25Hz となり、チラチラしているのが見えてしまうため、半分の2msとした。timer0のプリスケーラを1/8にすることで対応。
・割り込み2回毎に時間カウントを進めるように変更
時間のカウントは従来の方法のまま4msをベースとしているため。・輝度変化パターンテーブル化
輝度を変化させるために輝度パターンをテーブル化した。このテーブルを変えることで簡単に様々なパターンに変更できる。輝度変化パターンを確認しつつ、パターンのアセンブラソースを作るための簡単なExcelツール(左図)と、PWM版のアセンブラソースです。いずれもバグがあるかもしれません、無保証です。
動作中(動画)
動作している様子の動画(約11秒、wmv型式540KB)です。途中、1分ごとの激しい点滅が入っています。
![]()
AC100V制御用の基板
写真左上がAC100VからDC 5Vを作るトランスレス電源。茶色のキャラメルっぽいものが1uF,250Vのコンデンサ。右下が秋月のソリッドステートリレー・キット(専用基板は使わずにユニバーサル基板に実装)。
(注)AC100Vを直接扱うのでショートや感電に注意してください。
![]()
プログラム
上の電池用と殆ど同じだが、単純にON/OFFしかしないように(点滅しないように)してある。また、AC100Vが出力中はモニタLEDも点灯状態としている。18時間のアイドリング中は点滅。
ソースプログラムです。バグがあるかもしれません、無保証です。著作権は留保しますが、改変などご自由にどうぞ。
![]()
ケース
AC100Vを扱うので感電しないように、きちんとケースに収める。手元にあったタカチのプラスチック製のケースを使った。
基板取り付け用のビス穴(3φ)と、AC100Vの出力用穴(9φ)、モニタLED用の穴(2φ)が見える。
![]()
ケース内側
コードブッシングをつけた様子。これも手元にあったもので間に合わせたので手前と向こう側で異なるブッシングとなった。
![]()
ACコード
以前100均で買った延長コードを真ん中で切って使うことにした。
![]()
ケースに収めた様子
こんな感じで収まった。左側が入力、右側が出力。
取り付けビスが無駄に長いのは、手元に長いビスしかなかったため。
![]()
全景
全景は延長コードの途中に箱がついた感じ。もちろん蓋もあります。
出力側のプラグに普通の100V用イルミネーションライトをつないで使います。0.5Aのフューズを入れてあるので、最大50Wまで。ソリッドステートリレーのトライアックは放熱無しで使ったので100W程度までが無難。
![]()
動作中
赤いモニタLEDが点灯し、出力側に通電している様子。この後6時間すると通電OFFとなり、モニタLEDが点滅に変わる。
![]()
おまけ
展示会のマイクロチップ社ブースでアンケートに答えたらボールペン型ドライバーセットを頂いた。また「ご自由にどうぞ」となっていたSerial EEPROM/SRAMの入った名刺大のカードも頂いた。個人的な趣味で寄ったのに申し訳ない。感謝。
そのうちこれらのチップを使った工作をしてみようと思う。
以上