自作電子小物/太陽電池式誘導灯0.7
自作電子小物/太陽電池式誘導灯0.7
Solar guide lamp V0.7
2011年10月31日月曜日
「太陽電池式誘導灯」は、ソーラーガーデンライトのようなもので「ほたる」光りするのが特徴です。昼間に太陽電池で発生した電力を蓄え、暗くなるとホタルのようにゆっくり点滅します。発光色は日によって変化し、日射量の多い夏は涼やかな水色に、冬のような少ない時は暖系色になるようにしています。2011年版となるバージョン0.7は、V0.5の基本設計を踏襲していますが、DC/DCコンバータ専用ICを無くしたり、入手し易い部品を使う事で、作り易くなっています。製作費は約2000円、バッテリ1セルをインダクタ昇圧型DC/DCコンバータ回路でLED駆動の電圧を発生させ、制御部にマイクロチップテクノロジー社のPIC16F1823を使用し、ソフトウエアはC言語にてコーディングしています。
<機能/特徴>
■手のひら大、日当りの良い場所に置いておくだけ
■曇りが続いても安定して点灯する
■色が変わって楽しい
■バッテリは単三型充電池1本のみ、交換は5年以上
■製作容易で数が揃えやすい
名称:Solar guide lamp V0.7
分類:太陽電池式小型誘導灯
充電時間: 直射日光で4時間/日以上(設計値)
点灯開始条件:暗くなった時
暗くなった時:
点灯時間:4時間で自動停止、明るくなると停止
点灯パターン:「ホタル」発光、約3秒周期、発光量は3%〜50%で変化
点灯色:12色、点灯開始時のバッテリー電圧により決定(右参照)
無日照点灯:1週間程度(設計値、満充電後)
無日照限界:1年以上
バッテリー:ニッケル水素電池 1.2V 2Ah以上 × 1
太陽電池パネル:ETM250-2V × 1
期待寿命:5年以上
モジュール外形:幅57mm、奥行17mm、高さ10mm
製作費:約1500円ぐらい
埋設型
外形:幅:100mm、奥行き:100mm、高さ:50mm
重量:400g
<技術的なポイント>
■ハードウエア
・Microchip Technology社のPIC16F1823マイクロコントローラ
・DC/DCコンバータ、1V→3.6V,200mW級、昇圧インダクタ型、PFM、マイコン駆動
・バッテリ過放電対策、自己電源切断式
・バッテリ過充電対策、強制負荷式
・LEDを光センサとして使用
■ソフトウエア
・プログラミング言語はC、開発環境はMPLAB、コンパイラはHI-TECH C
・LEDの輝度制御、ソフトウエアPWMの実装
■開発法
・プログラム開発は、無料で利用出来るMicrochip社の標準的なIDEであるMPLABを使用
・回路とプリント基板設計は、無料で利用出来るCadSoft Computer社のEAGLEを使用。
<回路図>
コイルやFET等、使うのがためらわれる部品がありますが、どうしても避けられない物です。電力変換するにはコイルもしくはコンデンサの力に頼らなければなりません。
<部品>
基板、 線材、ケースを除きます。
D1のショットキバリアダーオードは、手持ちの関係でこれを使いましたが、より入手し易い1S3や1S4でもデータシート上大丈夫だと思われます。
Q1,2のNch MOS-FETは、電源投入時には1.5V位からゲートが開かないとブートアップ出来ないので、VGSのしきい値が低い物を探す必要があります。また、スイッチング駆動が3.6V/20mA/1MHz出来る品種である必要もあります。大抵はIDが1A程度の品種でないとゲートチャージが重すぎるので、大きければ良いと言う訳にはいきませんでした。2N7000が入手し易いので使いたかったのですが、データシート上では難しそうでしたので止めました。試してはいません。
<ダウンロード>
次のツールを追加インストールする必要があります
Cコンパイラ: HI-TECH C PRO for the PIC10/12/16 MCU Family V9 以上
ライセンス: フリーソフトウエア(GPL v3)
作成者:富樫豊彦 tog001@nifty.com
開発環境:
Windows2000 SP6 / VMware Fusion 3.1.3 / Mac OS X 10.5
CadSoft Computer EAGLE 5.11 Light Edition for Mac
Microchip MPLAB IDE 8.36
HI-TECH C PRO for the PIC10/12/16 MCU Family(Lite) V9.65PL1
PICkit 2 v2.60
<おおまかな設計>
■目標とする物
過去のバージョンで機能の実現性は確認が出来ていますので、このバージョンを作る目的は、より単純に作り易くしたい事です。部品数を減らしたり、入手し易い部品を使えるように再設計します。
■全体構成
基本的には、太陽電池で光を電力に変換、バッテリに充電しておき、暗くなったらその電力で発光させる、電子回路で行います。
コスト面から考えると、高価な太陽電池パネルとバッテリにかける比重を減らす事が効果的だと考えました。こんな小さな電子機器でも、制御回路は意外とコストを低く設計出来る世情になっています。
太陽電池は、入手し易い標準的な物と言うのがなく、1W未満の小型のものは、どうしても割高になっています。あまり選択肢が無いのが実情です。色々探しましたが、V0.5でも使用していたETMシリーズが、幾つかの販売店で扱っており、比較的入手し易いものの一つなので、これを一つのターゲットにします。このシリーズは開放電圧が0.5V, 1V, 1.5V, 2Vと、短絡電流が250mA, 300mA, 500mAの組み合わせのシリコン単結晶セルのモジュールで、屋外使用も可能・丈夫で再利用もし易く、長く使える部品です。
1セルの場合(V0.5での構成)
充電は、1.2Vの充電池に、太陽電池が2Vもしくは1.5Vの物を逆流防止のダイオードで直結するだけで充電回路を形成する事が出来るので、極めて単純化します。しかし、過充電を回避する方策が必要であるため、本当は単純には済みません。
放電系は、発光素子にLEDを使用するのが決定的である事から、3.5〜4V程度まで昇圧(Boost)する必要があります。過放電保護は昇圧回路を工夫すれば何とか出来ると思います。
とは言え、1本のメリットは大きい。
2セルの場合
充電は昇圧回路が必要ですが、過充電保護機能や多様な太陽電池を使えたり、MPPT機能を持たせられるメリットがあります。
放電系もLEDを駆動する為の昇圧回路が必要になり、コスト面で大変不利です。
どうしても中途半端な構成となってしまい、良い結果が得られるとは思えません。
3セルの場合(V0.6での構成)
充電は昇圧回路が必要ですが、過充電保護機能や多様な太陽電池を使えたり、MPPT機能を持たせられるメリットがあります。
放電系は、3.6Vでも駆動出来るLEDの品種はたくさん有りますので、簡単なスイッチで済みます。注意すべきは、過放電対策で、制御回路自身の電力消費をきちんと遮断し、かつ再起動するルートを確保しなければなりません。
おまけの機能は良いのだが、バッテリのコストが3倍になるのは大変痛い所。
今回の選択としては、やはりV0.5と同じ結論です。1.5V-2V/250mAの太陽電池が入手しにくくなければ、1セルでの構成が最良ではないかと考えます。
充電ルート
基本的には夜間時に蓄電している電力が太陽電池で消費!?してしまわないように逆流防止ダイオードを付加するだけの構成です。ダイオードにはVFと略称記号で呼ばれる順方向降下電圧という物が有り、若干電力消費されてしまいます。このエネルギーはほとんど熱になってしまうようです。通常のダイオードは1V程度取られてしまうのですが、ショットキバリアダーオードでは0.6V程度改善されますので、これを使ったとしたとして、2Vの太陽電池起電力に対し、1.4Vが蓄電池に加わる事になります。Ni-MHの充電プロファイル(データシートを確認すべし)に照らし合わせると、フローティング充電方式で丁度良い仕様になるので、まずまずの充電条件になります。本当は、電流制限を設けなければならないのですが、あらゆるセル個体を意識する必要がある訳ではないので、目的の品種で問題なければOKと出来るでしょう。また、正確な事を言うと、電流によりVFが変動、一般的には電流が小さい程VFも小さくなるので、充電満了に向かって押し込まれる形になり、パンパンになるまで充電されるはずです。
ここで、問題になるのが過充電に対する対策です。無理に電力を詰め込むと蓄電池の寿命がちじんでしまうので、最大制限がかかる仕組みを付けなければなりません。一般の充電器ではデルタピーク等の手法で、充電を終了させていますが、太陽電池を使うと言う事は、電力源が不安定な条件ですので、ピーク検知は難しいのが現実です。充電電力を積算する手も考えられますが、仕組みは単純には済みません。そこで、蓄電池の能力をフルで利用出来なくなってしまうのですが、絶対電圧値で最大を判定する方法に頼る事にしました。決められた最大電圧を越えた場合、充電をカットする方法です。
充電をカットするには、充電回路をスイッチで切れば良いだけなのですが、現実問題スイッチにはMOS-FET等の素子が必要になってきます。部品数は可能な限り減らしたいので、他の機能と重畳できないか等、考えあぐね、強制電力消費方式に行き着きました。無理矢理電力を消費し、充電にまわる電力を無くしてしまうと言う手です。電力消費するネタとしては、LED発光、CPU(マイコン)を高負荷で実行、もしくはダミーロード部品の追加です。
LEDで消費する場合、20mA×3.6V×3灯=210mW、コントローラの消費が3.6V×10mA=36mW、DC-DCコンバータでの変換ロスを0.7とした場合、350mWが使われます。ターゲットの太陽電池の定常発生電力は320mW(ETM250-2Vは、短絡電流が250mA,開放電圧が2V、最大電力点は通常80%辺りなので、320mWの実力と思われる)なので、電力を相殺出来ると考えられます。今回は、この方式を使う物とします。
放電ルート
●過放電対策
まずは、過放電対策を考えなければなりません。数ヶ月間放置状態が続く(寒冷地では根雪で日光が差さない条件が有る)可能性のある本小物の性格からすると、過放電状態に陥る事のないように、数μA以上の電流が流れない様に設計しておく必要が有ります。(試算:10mAh/3ヶ月=4.5μA)
V0.5では昇圧回路に専用ICを選択しており、この機能を持っていました。今回は、これに頼らない方法を考えるとします。基本的には、半導体スイッチMOS-FETで切断回路を構成する手でしょう。
・マイコンでコントロール
どうしてもコンピュータに頼ってしまうのが悲しいですが 、電源を切り離す為の制御回路をマイコンで行うとした場合、数μA/1.2Vの電力で動くものが必要です。マイコンを使えれば何かと便利、融通がきくので好ましいのですが、これに合う品種は見つけられませんでした。特に、動作電圧が問題で、1.8V以下の物でも結局SMP昇圧する仕組みを利用していたり、純粋に1セルで動くマイコンは一般的にはなっていないようです。
・バッテリ電圧でゲートコントロール
そうなると、半導体スイッチで切断回路を作る方法しか考えつきません。通常はオフ(切断)状態にしておき、バッテリに十分な電力が蓄えられているときのみオン(接続)するような、回路を考えれば良いのです。MOS-FETで、ゲートスレッショルド電圧を、バッテリ低下時電圧に合うように設定すれば、出来そうな感じです。分圧抵抗でスレッショルドを合わせる手があるものの、常時バイアス電流が必要となるため、今回の要件には不利です。直接ゲートに加える手では、残念ながら1セル(1.2V)では、そのような都合の良い品種は見つけられません。
・太陽電池電圧でゲートコントロール
そこで、オンは外部からのアクションで行ってもらう事は出来ないかと考え、太陽電池が日光を受け電力を発生した時の電圧でオンさせる方法を思いつきました。NチャネルMOS-FETの場合、ゲートをプルダウン抵抗で通常GNDレベルにしてスイッチオフの状態を作り、太陽電池の出力が流れ込むルートを造れば実現出来そうです。これだけだと、夜にはオフになってしまうので、追加の制御回路で強制的にオンの状態を作り出せば良いでしょう。ただし、オフにしてしまうと、再度日光が差さないと、オンにはなりませんが、本小物では全く問題にはなりません。
●昇圧
直流で1W級を昇圧するには、コイルを使用したスイッチングコンバータや、コンデンサを使用したチャージポンプ回路等があります。
製品の選択の幅があるスイッチングコンバータ回路に絞って検討してみました。
最近入手し易くなった、HT77xxAシリーズは安価で最適の様に思われます。私的には使用した事のあるデバイスなので、設計上の不安は少ないです。
・マイコンで制御
PSoC(Cypress Semiconductor)やC8051F9xx(Silicon Labs)には、DC-DCコンバータが内蔵されている物が有りますので、これを選択する手も有りますが、価格や入手性の問題から普通のマイコンでの可能性を考えて行きます。
マイコンで実現するには、出力電圧の測定はA/Dコンバータで、PWM信号の生成はタイマ機能で、関連づけはソフトウエアで出来るでしょう。
ただし、以下の課題が有ります。
→昇圧前の電圧でマイコンが動作する必要が有る
→LEDをマイコンで直接駆動するには、ブースト後の電源をマイコンに与えなければならない
→FETのゲート駆動電圧が低い(1.2V)品種は入手が難しい
→ソフトウエアが介入すると処理時間がかかるのでレスポンスは良くない
最初の課題は、この所、1.8Vから動作する品種が入手し易くなって来ましたので、太陽電池の出力仕様を、1.8V以上の制限に課せば良いので、今回の要件とはズレている訳では有りません。
2つ目の課題は、 アノードコモン型のLEDを使用する事で、LED電源と分ける事が出来ます。
最後の課題は、マイコン内の機能モジュールを組み合わせて、ソフトウエアの介入無しにゲート信号の生成ができないものか調査してみました。PFM信号とはなりますが、PIC12F1822/PIC16F1823が構成可能のように思われました。これですと、安く入手も出来き(約100円/秋月電子通商)、まさに最適な選択になります。
とりあえず、マイコン使用での検討を進め、ダメだったらHT77xxAを使う方式にする事にしました。
●LED駆動
20mA級の高輝度RGB-LEDを利用する事とします。
<詳しい設計>
■電源部
まず、スイッチングコンバータの制御をソフトウエア介入無しにマイコンPIC12F1822で行う方法です。
結果から言うと、PIC12F1822/PIC161823に内蔵している機能だけを組み合わせて、綱渡りの様に何とか実現出来た感じになりました。
発振器はECCPで固定周波数・固定デューティーの矩形波を発生させておきます。
フィードバック対象の電圧はマイコン自体の電源電圧Vddとなります。電源電圧を分圧抵抗で減圧し、基準電圧とコンパレータでぶつけ、発振器の出力とANDを取ります。 分圧抵抗は、DACのラダー抵抗を利用すれば、外部部品を減らす事ができそうです。DACの基準電圧にVddを割当て、Vddを3.6Vにしたい場合、ラダー抵抗の9/32段目が大体1.0Vになります。コンパレータに与える基準電圧はFVRで1.024Vを作ります。
ANDロジックも、外部部品の必要がなく、ECCPの新しいシャットダウン機能を使えば、同じ結果が得らるはずです。
具体的なレジスタ設定値等の情報を下図に示します。
レジスタ設定だけでは、接続出来ない所がありますが、これは外部ピンでショートさせる手段で回避出来ました。かなり部品を少なく出来ました。
この設定で、実際に動作確認を行い問題なく機能する事が検証されました。
なお、スイッチングコンバータで重要な、動作周波数については、1W未満である事と、出来るだけ小さい部品を使いたかった事から、1MHzとしましたが、真面目に設計した訳では有りません。経験的なものです。そのため、電源投入時のブートストラップが心配でしたが、全く問題ありませんでした。
■表示部
・発光素子
表示は20mA高輝度タイプのRGB-LEDを使う事に決めていましたので、実績のあるEP204K-35RGB(PARALIGHT)を選択しました。屋外の高温/低温環境でも5年近く光り続けているのが最大の理由です。
使用するマイコンが20mA流せるので、電流制限抵抗を入れただけの直接接続で行い、駆動回路をカットしました。
■入力部
以前の回路構成では、太陽電池の出力をチェックすれば、夜なのか昼なのかの区別がつきましたが、太陽電池とバッテリを直結してしまう今回の回路構成では、判別出来なくなってしまいました。
そこで、幾つかの回避策を考えました。
・Vbat計測
太陽光を受け充電している時の電圧変化を監視し、夜のタイミングを推測する方法です。全日曇りの日や、バッテリの状態等の曖昧な情報を元に機械判断するので、精度を良くするのは相当苦労する事が予想されます。
・LED受光
LEDは発光素子であると共に、逆に受光センサとしても使用出来る事は、色々実験している中で認識していました。今回の要件で使える可能性がありますが、実際実用となり得る物かは自信が有りません。追加部品が不要になるので、大変魅力的な方法です。
・受光センサ追加
フォトトランジスタ等の受光素子を追加する事で対策とする方法です。確実ですがコスト的には不利です。
・温度変化検知
マイコン内に温度センサが内蔵されていますので、これを利用し温度変化を監視して、夜になったタイミングをつかみます。最初の案と同じで、正確に動かすのは難しいと思われます。
LED受光を試行した結果、いけそうな感触がありましたので、この方式を採用しました。感度が比較的良い「赤」を使っても、 発生電力が極めて小さいので、ほぼハイインピーダンス条件での電圧計測にしました。そのため、バラツキが多く、夜になるタイミングに個体差が出易くなっています。このバラツキを抑える為に、ソフトウエア上での工夫として、しきい値の設定を絶対値ではなく、比率で動く様にしています。負荷抵抗100k程度を入れると改善出来るかも知れませんが、検証しておりません。
■制御部
大まかな設計の中で、PICの8bitマイコンの中でも新しいPIC12F1822もしくはPIC16F1823を使用する事にしていましたが、ピン数の制約で14ピンのPIC16F1823となりました。
<ソフトウエア>
■開発に必要な物
Windows PC(パソコン)
PICkit等のプログラム書込み器
Microchip MPLAB IDE 8 (*1)
HI-TECH C PRO for the PIC10/12/16 MCU Family(Lite) V9 (*1)
PICkit 2 v2.60 (*1)
*1: Microchip社のサイトからダウンロード可能
■ソースコード
プログラムはC言語で記述しました。無料で使用出来るHI-TECH CのLite版を使用しました。
ソースファイルはmain.cのみで、全てのサブルーチンとメインルーチンを含んでいます。処理フローに付いては、コメント込みで600行程度の単純で小さいプログラムなので、ソースコードを直接読んでもらった方が早いと思います。
<基板>
SMD部品を使っていたり、複数作る予定があったので、専用プリント基板を作りました。CADツールはEAGLEを使っています。プロジェクトファイルは「ダウンロード」で提供しています。
基板のサイズは、ほぼ単三型電池ボックスに合わせました。C3のコンデンサは、線が通せなかったので、パターン面に取付ける必要が出てしまっています。タカチの電池押さえ金具も使える様にパターンを引いていますが、この時はコイルが邪魔になるので、SMDタイプのコイルをパターン面に付けた方が良いでしょう。
ハンダ付け中の様子です。C3がパターン面についています。
ハンダ付け完了。
PICkit2をISPコネクタに差し、プログラム書込み中。PIC16F1823は比較的新しいデバイスなので、MPLABのサポートが追いついておらず、直接は書込めません。PICkit2の書込みツールではサポートしています。
試運転。
ガラスを使ったケースで、半レンガサイズの埋設型です。
とりあえず、2個作ってしばらく運用しています。
<関連>
<あとがき>
太陽電池のETMシリーズの販売が再開されたのを機に、再設計してみました。設計サイドとしては、満足のいく小物に仕上がったと思っています。最終形と言って良いかもしれません。太陽電池パネルが安くなると、もっと嬉しいんですが。
PICは決して好きなデバイスではないのですが、知らず知らずのうちに使ってしまっています。Microchip社は、おいしい所を心得ている様ですね。
富樫 豊彦 tog001@nifty.com
Solar guide lamp, compact size and low cost boards, day battery charge, night light on effect “firefly”.
Version 0.7 parts/cost reduction edition.