PIC12F675 を利用した簡易電圧計の製作 (2008/11/19〜11/20)

(Last update:08/11/23)


まずはブレッドボードで動作試験。
基板表。
左端と右端の LED は
MPPT コントローラーの
インジケーター
基板裏
バッテリボックスに組み込んだ様子。
(耐候性向上のためケースには
アルミテープを貼っている)
回路図

製作の経緯

 通常のソーラー充電モノは、充電時は屋外放置のためそれほど頻繁に動作状況を目視する必要はない。ところが先日作成した携帯電話充電用バッテリボックスは、なまじオフィスの窓際で充電しているだけに頻繁に装置が視界に入ってしまう(笑)。そこで充電状態(MPPT 動作)を簡単にモニタできるようにしよう、と思ったのが製作のキッカケ。


設計方針

 一番実用的なのは充電電流表示なのだが、微小抵抗に発生する微小電圧を増幅して A/D 変換するために別途オペアンプが必要となり、今回の実装スペースには収まりそうに無い。そこで今回はより簡便な太陽電池電圧表示とすることにした。太陽電池が十分に発電している場合、MPPT 制御下では鉛電池電圧 < 太陽電池電圧の関係が成立し、太陽電池電圧から MPPT の動作確認とおよその充電電流が把握が可能だからである。

 次に電圧表示方法を検討してみる。オーソドックスな 7セグ LED 表示は判り易くはあるが電気を食いすぎるし、今回の場合は詳細電圧までは必要ない。そこで通常 LED で簡易表示することにした。当初レベルメーター用 IC (=コンパレーターの集合体)投入を検討したが、手持ちの品では電源電圧や閾値電圧、表示パターンの点でイマイチ使いづらいことがわかったので、PIC で作ることに。PIC なら電圧の閾値設定も表示方法も自由なので、判り易くかつ見ていて飽きない表示にできる。

 PIC は A/D 変換機能さえあれば良いので手持ちの豊富な 8 pin の PIC12F675 を使用。GP3 は入力専用、1ポートは A/D 変換入力にとられるので、LED は 4つまでとなる。電圧の閾値は

9.5V 以上 → 緑
8.5-9.5V → 黄
7.5-8.5V → 黄
6.5-7.5V → 赤
6.5V 以下 → 無点灯

 に設定。表示は 赤→赤→黄→緑 と順々に流れていくような表示にする。充電モノによくある点灯パターンなので感覚的に判りやすいし、同時点灯する LED が 1つだけなので省エネにもなる。

 一方、夜間は電気の無駄食いになるので何らかの対策を講じておきたいところ。無論 LED が無点灯になるだけでもかなり消費電力は抑えられるが、どうせなら超省エネなスリープモードを活用したいところ。だだしどうやってスリープから復帰させるかが問題となる。

 そこでカギとなるのが空いている GP3 ポート。このポートに明暗判別信号をつないで状態変化割り込みをかければ問題は解決できる。この信号を監視して暗状態が一定時間続いたらスリープ状態に移行させ、GP3 の明暗判別信号に変化(この場合は夜→昼)があったら自動復帰させてやればよい。なおスリープへ移行する際には LED を緑→黄→黄→赤と逆表示させてスリープ移行を目視できるようにしておく。また復帰時は全 LED をブリンク表示させて復帰を目視確認できるようにしておく。

 明暗判別信号は当初 MPPT 基板から取っていたのだが、0.9V から明判定となってしまうので案外スリープに移行しないことが判明。どのみち LED が点灯するのは 6.5V 以上なので、約 5V で明判定となるよう別途検出回路を設けることにした。


工作のポイント

 LED には秋月で売っている高輝度品〜超高輝度品を使用した。超高輝度品は 2mA 程度でも眩しいぐらいに発光するので陽差しの強い屋外でも十分に視認でき、節電にも貢献できて一石二鳥。

 なお、明暗検出用の 2SC2878 は手持ち品を使っただけなので定番の 2SC1815 でも良いし、デジトラならより便利。


使用感、改良等

 今回使用している太陽電池の開放時電圧は 12V( MPP = 9.6V)。緑 LED が点灯すれば最大出力が搾り出せていることが一目で確認できて実用性は抜群。しかも LED 表示がチョコマカと移動していくので見ていて飽きない・・・ってか、ついつい見とれてしまう(笑)。おぃ、そこ、仕事しろ、仕事(汗)。オフィスの窓際に置いているせいもあって他人からの注目度もバッチリだ(殴)

 ただ LED が順次点灯していくスタティック表示も味があって良いのだが、割り込みを使用しているわけではないので応答性には欠ける(もちろん実用上全く問題はないのだが)。そこでよりリアルタイムに MPPT の動作をモニタできるよう、ダイナミック点灯を使用したバー表示に変更。スタティック表示より LED の実点灯時間が長くなるので多少電気は食うが、それでも 5mA 程度なので我慢することに。

 またスリープモードのおかげで待機時の消費電流はμAオーダーで、MPPT 基板(クロックダウンで節電)と合わせても 1.6mA 程度に抑えられた。よほど無充電で放置しない限りは鉛電池が過放電になる心配は無いだろう。


改良案

 LED をもっとカラフルにしたり、ピン数の多い PIC を使って LED の数を増やしたりしてよりド派手な表示パターンにしてみるのも一興。また LED を1つ減らす代わりに鉛電池側の電圧も測定し、太陽電池側電圧と鉛電池電圧(満タン具合)を交互に表示するのも実用的かもしれない(表示パターンを工夫しないとわかりづらくなるかな?)。

 ちなみに今回は太陽電池電圧を測定してるわけだが、正確には MPPT コントローラー側では 2秒毎に 100ms ほど太陽電池を開放して MPP を再計算している。したがって応答性の良いダイナミック点灯では 2秒毎に開放時電圧が表示される。


プログラム(アセンブラ)

 改変自由。微修正でスタティック表示(順次点灯)、ダイナミック表示(バー点灯)どちらの表示も可。電圧閾値等を変更してご活用あれ

ソース(アセンブラ) HEXファイル
Voltage_Meter.asm Voltage_Meter.HEX

 [電子工作のページへ]