Memorandumの小部屋
本ページは金銭授受を伴う行為を含むAuctionや商用Web
Pageからの無断リンク・無断参照を禁じます。
無断リンク・無断参照が判明した時点で然るべき処置をとらさせて頂きます。
電池ボックス電子工作(その3)
どこでもデコレーションライトホタル
1.背景
PICマイコンを使い始めた頃から、ぴかぴか点滅するのではなく、フィラメント式の電球のように点滅時にゆっくり光量が変化するクリスマスツリー用のデコレーションライトを製作しようと思っていました。 しかし、毎年いつの間にか年末が近づき、タイミングを逸していました。 今年2003年にはキットの小部屋の「光るゲンジ (SR-199)」を製作して、クリスマスツリー用のデコレーションライトだけではなくホタルもできるのではと思い、とうとう今年こそはタイミング的に合う時期にデコレーションライトを製作すうることにしました。(蛍は来年用)
「どこでも デコレーションライトホタル」の製作で意外と困っていたのがLEDです。 デコレーションライトですから、それなりの数が必要になります。 構想を練っている段階で、秋月電子から電池ボックス(フタ付きプラスチック・スイッチ付)が、また、100円ショップのザ・ダイソーからザ・ライトの「デコレーションプチライト」が発売されるようになり、これらを組み合わせることににました。
今回使用した「デコレーションプチライト」は電池ボックス電子工作(その1) ちょこ置き集音ワイヤレスマイクでも紹介していますが、このなかの常時点灯タイプの(LED20個)を使用します。 下記写真は緑色LEDのタイプです。 後述の製作例では赤色LEDのタイプを使用しています。 なお、実際にLEDを今回の製作で利用した際に、3個ほどLEDリード線ハンダ付け不良と思われる接触不良がありました。 100円ショップ商品であることを忘れてはいけないようです。
【 デコレーションプチライト パッケージ外観 】
パッケージから取り出した写真を下記に示します。 常時点灯タイプではLEDは全て並列に接続されています。(本当?) 電流制限用抵抗もしくは回路が見あたりません。 パッケージには3V/0.25Aと記載されており、LED1個当たり約10mAになりますがいいのかなーーー。 でも、こんなこと(常識)を考えては100円ショップ商品は開発できないでしょうね。
【 内部状態 】
この商品は部品取りとしてLED以外にスライドスイッチも流用できます。 下の写真のようにスライドスイッチに取り付け用が穴もあいており、部品取りして流用可能です。 当然、電池ボックスも他に利用できます。
【 スイッチ部拡大 】
2.どこでもデコレーションライトホタルの仕様
2.1 基本仕様
「どこでもデコレーションライトホタル」の仕様を下記します。
項 目 | 内 容 |
電源 | 単三乾電池3本(4.5V) PICマイコンとしては2V程度でも動作しますが、LEDの点灯を考えれば、3Vは必要です。 単三乾電池2本(3V)で動作させる場合には電流制限抵抗やLEDの数の見直しが必要です。 |
出力系統数 | LED 8系統独立制御 1系統LED2個直列接続 |
CPU | PIC16F84A CR発振 (可変抵抗により発振周波数変更) |
LED光量調整方法 | 人間の目の残像現象を利用したTRC方式 (Time Ratio Contorol : 時間比制御) 。 つまり、発振周波数を固定し、Dutyを0〜100%に変えることによりLED点灯時間割合を変え、人間の目の残像現象を利用して光量を制御することにします。 |
省エネ機能 | 今回は乾電池駆動のため、少しでも長く乾電池を使用できるように省エネ機能を設けます。 今回はPICマイコンのRBポート出力をソース源として使用しますので、LEDの駆動電流を調整は電流制限抵抗の抵抗値を変えることで簡単に実現できます。 しかし、8系統もあると、抵抗値を変更することも大変です。 今回、光量調整をDutyで制御しています。 このように光量調整をディジタル的に制御していますので、この省エネモードもディジタル的に行うことにします。 最も簡単な方法はLoopカウンタが1サイクルする周波数より高い周波数でチョッピングすることでLEDの電流を低減する方法です。 今回、PICマイコンをCR発振としています。 このとき、15番ピン(OSC2)には発振周波数の1/4の周波数のクロックが出力されています。 このクロックを使用して全LEDをチョッピングすることでLEDの消費電流を低減します。 また、ジャンパーピンで省エネ機能を無効にすることもできるようにします。 |
全LED点灯機能 | LEDの点灯チェックをするために、全LED点灯機能を設けます。 |
パターン選択機能 | 点滅するパターンを4通りのなかから1つを選択できるようにします。 4通りのパターンのうち1つはPICマイコンのEEPROMで設定、残りの3パターンはプロクラム中にあらかじめ設定されたパターンです。 つまり自由に調整できるのはEEPROMの1パターンです。 |
出力論理設定 | 点滅パターンの中に出力論理設定を設けています。 各出力毎に正負論理を設定できます。 |
ケース | 秋月電子通商の「電池ボックス 単3×4本用(フタ付プラスチック・スイッチ付)[SBH-341-AS]」を使用。 |
2.2 点滅パターンのしくみ
2.2.1 点滅パターン全体動作
- 点滅パターンは消灯(Offサイクル)→、徐々に光量アップ(Off→On変化)→点灯(Onサイクル)→徐々に光量ダウン(On→Off変化)を繰り返します。
- 点滅パターンの状態を下記のように4通りのモードで呼称します。
モード | 状 態 |
モード0 | 消灯(Offサイクル) |
モード1 | 光量アップ(Off→On変化) |
モード2 | 点灯(Onサイクル) |
モード3 | 光量ダウン(On→Off変化) |
2.2.2 Loopカウンタ関連
- LEDの点灯する期間(Duty)を決めるためにLoopカウンタを設けます。
- Loopカウンタは1〜254の間を+1カウント単位でカウントアップします。 254の次は1にリセットされます。
- Dutyは0〜100%で表せますが、Loopカウンタでは0%がカウント0,100%がカウント255となります。
- LED毎に、LEDの消灯タイミングを決定するLoopカウンタレジスタを設けます。
- 常時点灯(LED On)はLoopカウンタレジスタ=255、常時消灯(LED Off)はLoopカウンタレジスタ=0が設定された状態です。
- LEDの点灯期間はLoopカウンタのカウンタ値とLoopカウンタレジスタの設定値を比較し、(Loopカウンタのカウンタ値)>(Loopカウンタレジスタの設定値)となったときにLEDをオフします。
2.2.3 サイクル関連
- N回ほどこのLoopが回ったときを1サイクルとします。 このNをN Parameterと呼びます。(N=0のときはN=1に置き換えます。)
- Offサイクル・Onサイクルの時間はこのサイクル数で決定されます。
2.2.4 光量変化関連
- 光量の変化用にステップ数を設け、1Loop毎にLoopカウンタレジスタの値をステップ数分だけ増減することでLEDを点灯するDutyを変化させます。 これでLEDの光量の変化し具合を変更できます。
光量アップ(Off→On変化) : 新規Loopカウンタレジスタ = 前回Loopカウンタレジスタ + ステップ数
光量ダウン(On→Off変化) : 新規Loopカウンタレジスタ = 前回Loopカウンタレジスタ − ステップ数
3.どこでもデコレーションライトホタルの製作
3.1 回路図
「どこでもデコレーションライトホタル」の回路図を下記に掲載します。
【 回路図 】
Jumper | 信 号 | PIC | 動 作 | ||||||||||||||||||||
J1 | Turn on all LEDs | RA0 | Short(Low)で全LEDを点灯。 LEDの動作(配線)チェックにご利用下さい。 | ||||||||||||||||||||
J1 | N Parameter | RA1 | Open(High)でN Parameter無効。(無効時N=1に相当)。 Short(Low)でN Parameter有効。 Select0,1で選択された選択パターンデータ中のN Parameterの値が使用されます。 N=0のときはN=1と見なします。 |
||||||||||||||||||||
J1 | Select0 | RA2 | 点滅パターン選択
モード選択は常時チェックしていますので、途中でモード変更することが可能です。
|
||||||||||||||||||||
J1 | Select1 | RA3 | |||||||||||||||||||||
J1 | − | RA4 | Open(High)で通常動作。 Short(Low)で一時停止。 上記例ではOpen(High)。 | ||||||||||||||||||||
J2 | Power Down | − | Openで省エネ有効。 Shortで省エネ無効。 |
3.2 プログラム
PICマイコンのHEXファイルを下記に掲載します。 下記ファイルを秋月電子の「AKI−PICプログラマーキットVer3」で書き込んで下さい。
このHEXファイルのパラメータを下記します。
名 称 | 内容 / 設定値 |
Mode | プログラム起動時のモード設定値。 モード0,1,2,3に対応して、0,1,2,3のいずれかを設定する。 |
Offカウンタ | Offカウンタ設定値。 LEDが消灯する期間の設定。 適切な設定範囲は1〜255。 |
ステップ数 | 光量変化の割合を決めるステップ数。 設定範囲は 1〜255。 0を設定すると、光量変化の一つ前の状態を維持する。 |
Onカウンタ | Onカウンタ設定値。 LEDが点灯する期間の設定。 適切な設定範囲は1〜255。 |
サイクルカウンタ初期値 | プログラム起動時のサイクルカウンタ初期値 各LED点灯位相差設定用。 適切な設定範囲は1〜Offカウンタもしくは1〜Onカウンタの値。 この値が有効なのはモード0・モード2の場合。 |
Loopカウンタ初期値 | プログラム起動時のLoopウンタ初期値 各LED点灯位相差設定用。 設定範囲は0〜255。 適切な設定範囲は1〜ステップ数の値。 この値が有効なのはモード1・モード3の場合。 |
初期N Parameter | パラメータ1〜3の場合に、各パラメータが選択された初回にのみ設定されるN
パラメータの値。(各LED毎に設定する。) 設定範囲は 1〜255。 あまり大きくするとLEDが変化しないようい見える。 パラメータ0(EEPROM)では設定エリア無し。 |
N Parameter | N パラメータの値。(全LEDに対してこの値がが適用される。) 設定範囲は
1〜255。 あまり大きくするとLEDが変化しないようい見える。 パラメータ0はこの値のみ使用される。 パラメータ1〜3では初回のみ上記の「初期N Parameter」が使用され、2回目以降はこの「N Parameter」が適用される。 |
出力論理 |
RB0〜RB'7の出力論理をビット単位で設定する。 本ピットとRB0〜RB7のビットが一対一で対応している。 0:正論理 1:負論理 |
パターン0はEEPROMに格納してありますので下表を参考に修正してオリジナルの動作を作成することができます。
LED | 名 称 | パターン0 EEPROM 番地 /データ |
パターン1 | パターン2 | パターン3 |
RB0 | Mode | 00h / 00h | 00h | 00h | 00h |
Offカウンタ | 01h / 28h | 7Fh | 2Fh | 10h | |
ステップ数 | 02h / 0Fh | 0Fh | 0Fh | 10h | |
Onカウンタ | 03h / E0h | 02h | FFh | 10h | |
サイクルカウンタ初期値 | 04h / 28h | 3Fh | 3Fh | 10h | |
Loopカウンタ初期値 | 05h / 00h | 00h | 00h | 00h | |
初期N Parameter | - | 04h | 04h | 04h | |
RB1 | Mode | 06h / 00h | 00h | 00h | 00h |
Offカウンタ | 07h / 3Fh | CCh | 3Fh | 10h | |
ステップ数 | 08h / 0Fh | 12h | 0Fh | 10h | |
Onカウンタ | 09h / EFh | 05h | EFh | 10h | |
サイクルカウンタ初期値 | 0Ah /2Fh | 10h | 1Fh (*a) | 08h | |
Loopカウンタ初期値 | 0Bh / 00h | 00h | 00h | 00h | |
初期N Parameter | - | 04h | 01h | 04h | |
RB2 | Mode | 0Ch / 01h | 01h | 01h | 01h |
Offカウンタ | 0Dh /28h | EFh | 3Fh | 10h | |
ステップ数 | 0Eh / 0Fh | 08h | 0Fh | 10h | |
Onカウンタ | 0Fh / E0h | 03h | DFh | 10h | |
サイクルカウンタ初期値 | 10h / 00h | 00h | 00h | 00h | |
Loopカウンタ初期値 | 11h / 00h | 7F | 0Fh | 00h | |
初期N Parameter | - | 04h | 04h | 04h | |
RB3 | Mode | 12h / 01h | 01h | 01h | 01h |
Offカウンタ | 13h / 3Fh | DFh | 3Fh | 10h | |
ステップ数 | 14h / 0Fh | 0Ch | 0Fh | 10h | |
Onカウンタ | 15h / EFh | 04h | CFh | 10h | |
サイクルカウンタ初期値 | 16h / 00h | 00h | 00h | 00h | |
Loopカウンタ初期値 | 17h / 80h | 40h | 3Fh | 80h | |
初期N Parameter | - | 04h | 04h | 04h | |
RB4 | Mode | 18h / 02h | 02h | 02h | 02h |
Offカウンタ | 19h / 28h | F0h | 3Fh | 10h | |
ステップ数 | 1Ah / 0Fh | 09h | 0Fh | 10h | |
Onカウンタ | 1Bh / E0h | 05h | BFh | 10h | |
サイクルカウンタ初期値 | 1Ch / E0h | 03h | BFh | 10h | |
Loopカウンタ初期値 | 1Dh / 00h | 00h | 00h | 00h | |
初期N Parameter | - | 04h | 04h | 04h | |
RB5 | Mode | 1Eh / 02h | 02h | 02h | 02h |
Offカウンタ | 1Fh / 3Fh | EFh | 3Fh | 10h | |
ステップ数 | 20h / 0Fh | 11h | 0Fh | 10h | |
Onカウンタ | 21h / EFh | 02h | AFh | 10h | |
サイクルカウンタ初期値 | 22h / 60h | 02h | 20h | 08h | |
Loopカウンタ初期値 | 23h / 00h | 00h | 00h | 00h | |
初期N Parameter | - | 04h | 04h | 04h | |
RB6 | Mode | 24h / 03h | 03h | 03h | 03h |
Offカウンタ | 25h / 28h | EEh | 3Fh | 10h | |
ステップ数 | 26h / 0Fh | 07h | 18h | 10h | |
Onカウンタ | 27h / E0h | 03h | 9Fh | 10h | |
サイクルカウンタ初期値 | 28h / 00h | 00h | 00h | 00h | |
Loopカウンタ初期値 | 29h / 7Fh | 7Fh | C0h | FFh | |
初期N Parameter | - | 04h | 04h | 04h | |
RB7 | Mode | 2Ah / 03h | 04h | 03h | 03h |
Offカウンタ | 2Bh / 3Fh | DDh | 2Fh | 10h | |
ステップ数 | 2Ch / 0Fh | 0Eh | 19h | 10h | |
Onカウンタ | 2Dh / EFh | 04h | 8Fh | 10h | |
サイクルカウンタ初期値 | 2Eh / 00h | 00h | 00h | 00h | |
Loopカウンタ初期値 | 2Fh / FFh | 00h | 2Fh | 80h | |
初期N Parameter | - | 04h | 04h | 04h | |
− | N Parameter(全LEDに適用) | 30h / 04h | 04h | 04h | 04h |
− | 出力論理(RBの各ビットに対応) | 31h / 00h | 00h | 00h | 00h |
(*a : 本来は04hのつもりでしたが、修正漏れをしていたようです。 支障がないのでそのままとしています。)
3.3 製作例
上記回路で製作した例を下記します。 LED部分は「デコレーションプチライト」のLEDを1個ずつばらして、2個を直列に接続し直して配線しています。 今回は電池ボックスとLED間の配線は赤黒の単線をツイストして製作しましたが、0.08mm2リのリボンケーブル(フラットケーブル)を使用すればもっと配線太さを細くしてスリムにできると思います。
【 完成外観 】
電池ボックスの中の様子です。 LED用の配線が合計で16本ありますので口出し部が相当込み入っています。
【 電池ボックス内部 】
製作途中で仕様を変更したため、一部の部品を無理矢理追加しました。 決して適切な部品配置ではありませんが参考にして下さい。
【 基板外観 】
3.3 製作結果
全LED点灯時の消費電流を下表に示します。 4V程度までは支障無く使用できます。
電源電圧 [V} | 省エネモード 消費電流 [mA] |
通常モード 消費電流 [mA] |
備 考 |
5.25 | 36.2 | 78.6 | |
5.0 | 34.2 | 69 | |
4.75 | 31.9 | 58.6 | |
4.5 | 29.2 | 47.7 | |
4.0 | 22.3 | 27.1 | |
3.5 | 6.68 | 8.92 | |
3.0 | 0.73 | 0.78 | LEDはほとんど点灯していない。 PICマイコンは動作している。 この電圧以下ではLEDが点灯していることを確認できないので、LEDの数や電流制限抵抗の見直しをする必要有り。 また、発振周波数も低下していく。 |
1.9 | - | - | 今回の回路でPICマイコンが起動できる最低電圧。 |
ホタル設定値(パターン1)のLED駆動信号波形を下記に掲載します。 この程度で光量が徐々に変化しているように見えます。
【 ホタル設定値(パターン1)のLED駆動信号波形 】
試作(デバッグ)基板でLEDを順番に並べた状態と、製作例でLEDを16個ばらばらに配置したときの様子を動画にて公開します。 写真をクリックするとWMVファイルにアクセスできますのでWindows Media Playerでご覧願います。 なお、撮影時、LEDが明るすぎたため電源電圧を3Vにしています。
パターン |
試作基板(下側がRB0、上側がRB7) | 製作例(LED16個) |
パターン0 デコレーション用 (EEPROM) |
無 し | |
パターン1 ホタル (Program) |
||
パターン2 デコレーション用パターン2 (Program)
|
無 し | |
パターン3 デコレーション用パターン3 (Program) これが一番良さそうです。 |
【プログラム書き込みサービス】
本ページで紹介しましたPICマイコンの書き込みサービスを行っています。 詳細はプログラム書き込みサービスのページを参照願います。
本ページの製作に用いる部品を有償で提供します。 提供内容の詳細はパーツ有償サービスのページを参照願います。
End of This Page.