ここ数ヶ月の発電実験で、規模的に余計だった要素を省いていった結果となる。
このシステムは屋外みたいな日照の安定しない、昼夜が存在する環境を想定している。 となると工場のように24時間光源が存在する特殊環境ではないので、発電した余剰エネルギーを貯めて、曇りと夜を乗り切らなくてはならない。
・太陽電池(9直の単結晶シリコン) 4.5V 10mA出力
・MSP430G2553
・EDLC
MSP430は下限電圧が1.8V、今回つけたEDLCは2.7Vが耐圧の規格上限なので、
おおよそ0.9Vの範囲内で動作するだろう。 それ以下の電圧のエネルギーはもったいないけど利用しない。 (実質3.3Fくらい) LiCが入手出来ればその点は改善されるだろう。
過充電防止はディスクリートでは設けず、電圧をモニタして、日照時の余剰電力を負荷に回すことでソフトウェア的に実現する。(ハイサイドスイッチでも良いがお手軽にしてみた)
具体的には数mA~数十mAのLED、無線系(XBee?)などなど。
電気二重層コンデンサは過放電については心配しなくて良いから、電源管理は稼働率の配分だけになる。 枯渇時はほとんどスリープ状態。
センサはI2Cバスにぶら下げて拡張しようと思う。
今ついてるのは
・S11059(I2Cカラーセンサ) http://akizukidenshi.com/catalog/g/gI-06793/
・BMP180(MEMS気圧センサ)
・TMP006(放射温度計)
LaunchPadはEneriga IDEで使っているけれど、最新の配布バージョンだとI2C周りのバグがとれていない。(2013/08/03現在)
なので、以下の点に注意が必要。
・MSP430のCoreライブラリをgithubの最新版に差し替える。
・ピン定義と、サイトのPinMapで示されるSDAとSCLはなぜかMSP430G2553の実際のHWピンと逆なので注意。
P1.6: SCL
P1.7: SDA
・ボード上でI2Cを有効化するときは、LED2(緑色)がSCLと干渉しているため、LED2のジャンパピンを外す。 (これを忘れていて1時間くらい悩んだ)
これで、Arduino 1.0以降と互換のあるAPIが使える。
BMP180とTMP006はArduino向けのライブラリをそのまま使って、カラーセンサはデータシートを元に固定露出モードの読み出しを実装した。 日照下でも問題なく使える。
課題
・MSP430のスリープからの復帰は、低速オシレータを使った割り込みでやりたいけど、まずCoreライブラリがどうタイマーを初期化してるのか調べないと…
・システムクロックを8~1MHzに下げるとI2Cバスが通信できない。一応TWI.cとかにはクロック毎に記述があるが…?
・EDLCの自己放電が結構多く、一日で0.5V下がっていた。