PIC12F675 を利用した LED 岩塩ランプの製作 (2008/2/2〜2/18, 2009/2/2)

(Last update:09/02/03)


まずは基本形で動作確認 7セグ LED を追加して開発中
基板表 基板裏
安物岩塩ランプ試作品の
LED 部(橙 LED x 12)
安物岩塩ランプ試作品
底面の様子
ケーシングの様子 安物岩塩ランプ試作品完成形。
安物なので裏側はほとんど不透明(爆)
スイッチは上面に設置
岩塩ランプを良品に変更。
スイッチ位置を前面に変更。
高輝度白色 LED x 2 を追加。
ベッドサイドで愛用中
回路図
明暗自動検出改良型 回路図

きっかけと元ネタ

 ある日、共立で面白そうな IC を発見したので買ってみた。モノは CDT3460 なる台湾製の PFM(≠PWM)制御 IC で、電源(3V)、外付け抵抗1個でろうそくの炎のようなゆらめきのある LED 点灯ができるという。値段も 100円以下とリーゾナブル ^^。

 しかし点滅の具合を確認してみると確かにゆらめくような点灯をするものの点滅パターンの周期が短く、イマイチしっくりとこない。そこで別の手段でゆらめきのある LED 点灯を試みることに。

 そもそも「ゆらぎ」といえば 1/f をすぐに思いつくのだが、数学が赤点スレスレだった管理人にはシミュレーションでゆらぎのパターンを得ることなど土台無理なハナシである(泣)。仕方がないのでろうそくの明かりを自前でサンプリング( CDS の抵抗値を A/D 変換)でもするか、と思っていたところ面白そうな本を見つけた。

「LEDで遊ぼう! 電子工作とマイコン入門」

 もともとエレキジャック創刊号の一部を別冊化したもののようだが、この本の中に、PIC16F628 を使った LED 岩塩ランプが載っており、「揺らめきモード」も持っていることから、こいつを製作することとした。

 最終的なコンセプトは、読書にも使えるちゃんとしたライトというよりベッドサイドに置く常夜灯をイメージ。これなら特に高出力の LED を使わなくても十分製作可能であろう。


回路設計

 デッドコピーを作っても面白みが無いので、いろいろといじってみることに。

 オリジナルの回路は拡張性を重視したハードウエア設計となっているが、岩塩ランプ機能だけに絞るならかなりのシェイプアップが可能である。特に I/O は最低限 PWM 出力と電源スイッチ入力があればよいから 12Fシリーズで十分。PWM 制御も TMR0 を用いたソフトウエア PWM であるから、最近の PIC ならほとんどがサポートしている。

 そこで今回は手持ちの豊富な PIC12F675用にプログラムを移植することとした。ただしそのまま移植しただけでは面白みが無いので、プッシュスイッチで点灯モードを変更できるようにし、また余ったポートで点灯モードを 7 セグ LED で表示するようにした。また LED のスイッチングはオリジナルでは出力電圧可変の5端子レギュレーターを使っているが、今回は単純にデジタルトランジスタでスイッチング制御することに。

 電源はAC アダプタを使うと配線の取り回しが面倒になるのでトランス式とした。電源電圧は手持ちのトランスの都合上 9V とし、7セグ LED はシンクドライブにすることに(3端子レギュレーターにはあまり負荷をかけたくないので)。そこで 7セグデコーダは 74LS247 を選択。こいつはオープンコレクタなので PIC と電源電圧が異なっても 7セグ LED をドライブできて便利なのだが当然ながら CMOS 品が無いのが玉にキズ。余談だが試作時にジャンク箱から穿り出したスタンダード TTL 7446 を使ってみたら、LS の2倍も電気を食ってビックリ @o@。昔の TTL は地球に厳しかったのね・・・ ^^;


今回の失敗

 いろいろとパラメーターをいじってみたのだが、8ビットタイマによる割り込みだとろうそくのようなゆらぎを表現するにはちと周期が短すぎる模様。オリジナルプログラムでは 65ms 毎にパルス幅を変更していたので倍の 130ms に変更したところ多少はマシにはなった。ただ、ろうそくの揺らめきを再現するには 1〜2秒ぐらいの周期が欲しいところ。いずれ 16ビットタイマを使った、より長周期の調光可能なプログラムをゼロから書かねばなるまい・・・

 またこれは回路・ソフトウエアの失敗ではないのだが、安物(平均市価の半額程度)の岩塩ランプを買ったら不透明な部分が非常に多くて閉口(不良選別品か?)。結局、それなりのお値段のキューブタイプ岩塩ランプを再購入するハメに(汗)。まさに安物買いの何とやら(爆)。対して標準価格のキューブ岩塩は透明度も高く、同じ LED 数でもだいぶ明るくなった。


改良案

 今回は手持ちの関係上 12F675 を使用したが、TMR0 機能さえあれば良いので 12F509/629/683 にも十分移植可能。ただ 7セグ LED を繋ぐなら別途デコーダ IC を使用するよりはオリジナルと同じ PIC16F628 を使ってソースドライブした方が部品点数と配線作業を減らせる。また PWM 機能を持った PIC を使えば 7セグ LED をダイナミック点灯にして消費電力を減らすのも魅力的。

 応用としては明るさを自動検知して点灯制御するとか(これは 2009/02 に改良完了)、出力ポートを複数使って多色 LED で派手なイルミネーションにするとか、いくらでも考えられる。


最後に

 岩塩となるとやはり潮解が気になるところ。実際、「岩塩が溶けた」という情報(こことかこことか)もある。オリジナルの岩塩ランプでは電球の発熱で岩塩中の水分を蒸発させるわけだが、発熱しない LED では当然そのような効果は期待できない。乾燥する冬場はともかく、梅雨時が心配だったのだが、とりあえず1年目は問題なく経過。

 ちなみに管理人は岩塩ランプのうたい文句である「マイナスイオン」なんてのはまったく信じておりません ^^; 単に見た目が綺麗だから岩塩ランプを使ってみただけなので、そのあたりは誤解の無きよう・・・


プログラム

 元ネタプログラムの著作権保護のため非公開。元ネタプログラムはこちら


2009/02/03 追記:

 毎日電源操作をするのが面倒なのでフォトトランジスタで明暗を検出して自動で点灯制御するよう改良。

 回路的にはフォトトランジスタを使い、PIC の入力ポートに明るさに応じて H/L を入力するとともに、プログラムの電源制御部分を一部書き換える。念のため PIC のポートには直接フォトトランジスタを繋がず、トランジスタによるスイッチを一段かましてある。(H/L 中間値あたりで大電流が流れないための配慮。CMOS IC 入力ピン処理の鉄則)


 [電子工作のページへ]