2013/06/29

MSEChargerの陽光下での実験

前回の回路をMSEChargerと呼ぶことにして、太陽光下でどのように振る舞うのか見てみた。


現時点では、快晴下で直接電池を充電したほうが早かった。Orz
下記の電池で2日間の快晴に置いただけで過充電防止電圧に到達。


 2次電池はオリビン酸(LiFePO4)電池。 eBayで購入したセルだが、Li-ionより内部抵抗大きめだった。引っ張っても数ワットが限度か。

生セルなので、過充電、過放電防止用に電圧検出ICとFETを取り付けてモジュール化した。 マージンを取って3.8~3.0Vの範囲内で使用する。


回路構成。 キャパシタは2.5V4.7Fを直列にして5V、2.3Fで使用。こちらのほうが内部抵抗が少なく、一度に大電流を引き出せる。

手持ちの部品の関係で、キャパシタの充放電電圧の領域が3.1V~3.4Vになっている。PowerLEDのように、電池を負荷に直接接続すると、電池電圧に影響を受けて間欠放電が出来ない。Dを挟むだけでも良さそうだけど、今回はDC/DC(AS1322)で5Vに昇圧して電池に供給した。 キャパシタが3V付近なので、5Vに昇圧して効率9割程度で動作すると思われる。

太陽電池はSharpのモバイル用で、短絡電流で60mAほど
バッテリとDC/DCを繋ぐ前に、動作確認で定格1WのPowerLEDを負荷としてつないでみた時の波形
キャパシタの容量を増やし、内部抵抗を下げたことで、かなりの電流がLEDに流れるようになった。


DC/DC下流で電池に流れ込んだ電流を測定したもの。 2.3Fのスーパーキャパシタからの間欠供給されていることがわかる。快晴の直射日光下での周期が見えているが、曇ったりして日が陰ると間隔が伸びた。

あとは実際の充電効率がどうかだけれど・・・ バッテリの比較実験となるので時間がかかりそう。
定電流回路で実際の効率を調べることにする。

電池レスで、定期的に電波送信するようなアプリケーションにちょうどいいかも。 といいつつ、PICで電圧モニタしながら送信間隔を制御するほうがきっと使い勝手が良い…。 
そう考えると、原典のようなモーター駆動のおもちゃのほうが使い出があるんだろうなあ。

2013/06/28

Miller Solar Engineを使った充電回路の実験1

小型で、発生電力も100mW以下しかない太陽光発電セルで2次電池を充電するとき、逆流防止Dを経由してそのままつないでしまうか、ある程度電力を貯めてから、大きな電流で供給した場合とで充電効率に差がでるのかどうか知りたくなった。 太陽電池のインピーダンスと、2次電池のインピーダンスをあるていど整合させるといえばいいのだろうか…あまり自信が無い。

平均電流は変えられないので、間欠駆動でなんとかすることになる。

Miller Solar Engine

若干分野が違うけれど、高負荷(モーターなど)に間欠的に電力供給するのが、今回試作したMSE(Miller Solar Engine)と呼ばれる回路。

以前紹介した電圧検出ICを1個だけ使い、そのヒステリシス領域を外付け部品で拡張し、充放電動作を繰り返す。蛇口からバケツに水を貯めて、それを一気にぶちまける動作だ。
http://www.beam-wiki.org/wiki/Miller_Solar_Engine

これはBEAM roboticsという、KISS(Keep It Simple Stupid)の教えに従い、基本的にガラクタを使って作られるロボットの要素技術として紹介されている。 どんなものかは、BEAM botで画像検索するとたくさん出てくる。 

MSEは電圧検出ICとNPNトランジスタ、ダイオード、コンデンサ、ストレージ用のコンデンサ/スーパーキャパシタで構成されている。

 原典で使われるパナの1381は入手性がよくないので、似たような電圧検出ICをつかった。、SIIのS808XXCシリーズであれば、いくつかの電圧に対応したものがマルツパーツでも手に入る。二次電池よりやや高い電圧で、太陽電池の最適動作点付近の電圧を検出するものを選ぶと良さそう。 (3~4V)

トランジスタは定番の2SC1815でも大丈夫で、秋月であれば2SC2125を選べば流せる電流が増える。

同じ動作は、低消費電力の少ピンPICとかでも実現出来る。この回路は思ったよりも電流を必要とするので、超低消費電力モードで駆動させるPICのほうが省電力にできそうだ。


早速組みあげて、負荷には定格1WのパワーLEDをそのままつないでみた。 PCから定電流ダイオード(CRD)で充電して、定期的にLEDがフラッシュする。 キャパシタを外した状態だと発光し続けるが、あきらかにキャパシタをつなげるとより強烈なフラッシュが見える。

モーターを繋ぐともっとわかりやすい。 キャパシタが無いとそもそも始動しなかったり、負荷がかかるとすぐ止まる。


駆動波形を見てみる

測定回路を追加して、グラフにしてみた。 マルチメーターだと内部抵抗が大きいのと、変化がわかりにくいので…。
ストロベリーリナックスのINA226キットを使って、自作のArduino互換のデータロガーに繋ぐ。 繋ぐのはI2Cだけなのでお手軽だ。



コードはこちらのサイトのものを使わせていただいた。 http://ore-kb.net/archives/150

CSVに加工しやすいようフォーマットを整え、最高速で変換し、10mS周期でターミナルに出力させた。 その結果をグラフ化してみると…




最初の4秒はキャパシタを意図的に取り外している。 約11mAほど。

電源にはPCからの5Vを30mAクラスのCRDで定電流化して供給している。 

5秒以降はキャパシタ(1F)をつないで、MSE回路により間欠動作をさせた。瞬間的に70mA程度の電流がLEDに供給されている。 眩しさの理由が判明。
 一応希望した動作になっている。 充放電の周期自体は、キャパシタの容量や、電圧検出ICにつけたコンデンサの容量を変えることで、ある程度調節できる。

ついでに、電圧検出ICでLi-ion/LiFePo4セルの保護回路を作ったので、今度晴れたら実験してみたい。 結局、特に違いがなかったりして…。 
 
番外
 最近は、キャパシタとリチウムイオン電池の特性のいいとこ取りをしたリチウムイオンキャパシタ(LiC)というのがあって、過充電/過放電から保護するだけで、あとはキャパシタのように扱えて便利なのであった…。容量もLi-ion電池の電圧範囲で無駄なく使いきることができる。(エネルギー密度は従来のEDLCの2倍程度)
 実際には過放電保護回路の自己消費消費電流問題があり、単体のLi-ionと同じ考えで組むと、容量の少なさから、思ったより早く過放電になってしまう。 完全に放置して動作させられる解決作とはいえないので、用途との相談になる。 

2013/06/24

TPS7A4700を試す & 電源のノイズスペクトラムを見てみる

秋月で取り扱われている TPS7A4700を使った 超ローノイズレギュレータ基板 http://akizukidenshi.com/catalog/g/gK-06194/ を買ってみた。

検索するとオーディオ用途をたくさん見かける。 低雑音が売り。 


もともとリニアレギュレータには電源電圧変動除去比(PSRR)という項目があり、ある程度電源のリップルノイズを低減してくれる。
このレギュレータはその性能が高い。

また、出力電圧可変型だが、電圧は外付け抵抗ではなくIC内部の分圧抵抗により、1.4V~20.5Vを100mV刻みで、192段階の設定ができる。
 (レギュレータなので、設定電圧+1V以上の電源が必要)。
このキットではDIPスイッチで192段階の設定を行えるようになっている。

試しにGPSの電源テストに使うと、秋月のACアダプタを使って、ほぼ電池駆動の時と同じ性能が出せた。

ちょっと電源のスペクトラムが気になったので、デカップリングコンデンサを介してPCのLINE入力につないで、WaveSpectraを使って調べてみた。

wavespectra の画面

WaveGeneと一緒に、音声帯域のスペアナとして昔から定番のソフト。まだ改良が続けられていて、かなりいろいろなことができるようになっている。 とてもありがたい。


以下のグラフはすべて100回平均した(サンプル65536 Blackman-harris7)。

測定環境のノイズレベルと、ACアダプタ+TPS7A4700
録音環境のノイズ

ACアダプタ

TPS7A4700を通した特性。 ほぼ電池と同等か


USBの電源ノイズと、TPS7A4700、比較用三端子レギュレータ(MCP1700)


USB HUBから給電した時に、GPSの初期測位がまともに出来ない組み合わせがあったので、電源ノイズがどうなっているか見てみる。その際、別のリニアレギュレータと比較してみた。ちなみに選定理由は自作FTDIアダプタに実装してあったからで深い意味は無い。


これは… 
20dB以上下がっているが…


MCP1700 高周波は除去されたが、1kHzまでの盛り上がりが出てきた。

 TPS7A4700は確かにノイズを除去する能力が高そう(当社比)。電圧の設定が簡単なので、製作時に綺麗な電源が欲しい時に便利だと思う。 マイコンのGPIOで叩いて、電圧設定を制御するというのもやってみたい。

 ちなみに、あとでデスクトップPC本体のUSB端子から直接取ってみた波形がこちら。
本体は机の下なので、機器の電源にはもっぱらUSBハブを使っていた。



外部電源ハブはだいぶ汚い…

その後、ノートPCでバッテリ駆動にすると、ノイズフロアが激減したので、測定は役目がなくなったネットブックを専用機にしてみようかと思っている。 

(ちょっと昔、複数のノートPCで録音された無線機の受信データを解析してた時、とある録音が面白い波形を定期的にとらえていたので、聞いてみたらSkypeのチャット着信音だったことがある…。マイク設定には注意だ)

2013/06/07

I2C OLED



FemtoCubeの搭載センサを増やしたので、表示部が欲しくなり、I2C接続のOLEDに目をつけた。
消費電流という観点ではI2C液晶にしたほうが良いだろうけれど…。

 本命はSharpのメモリ液晶(正方形で小さい方)
http://www.adafruit.com/products/1393 とか、小さな電子ペーパーが入手できれば…。

使ったのは小さめの128x64画素のモノクロOLED
http://www.aitendo.com/product/6279
発光色は白。
コントローラにSSD1306が使われている。  I/Fはパラレルとシリアル通信に対応している。
同系統のディスプレイ基板を起こしたことがあるので、手配線することにした。 


ディスプレイモジュールのデータシートだけだと、信号線の制御端子の接続がよくわからないので、コントローラのデータシートを参照する。今回は I2Cモードの端子設定を使用。 SSD1306は接続するOLEDが小さいので、OLED用の電源電圧は内部のDCDCで生成するようだ。

回路には3.3V電源とSDA/SCLのみで接続する。


 
ディスプレイの厚み分、基板を削り、強力な両面テープで接着した。
この基板はXBee、ST製の3軸ジャイロ、3軸加速度、3軸磁気センサ、JPEGカメラが収まる。


制御ライブラリはu8glibを使用。様々なディスプレイに対応している。ロゴはXBM形式に対応。(GIMP2で作れる)

文字表示でセンサの情報デバッグとか、GPSロガーの表示部として使う予定。


2013/06/04

Chipkit DP32(クローン)を試す

Chipkit DP32
ArduinoAPI互換(0023)で、PIC32MXをベースとするChipkitシリーズのラインナップが増え、新たにDIPタイプが加わった。


中身はPIC32MX250F128Bで、USB内蔵タイプとなる。DIPながらRAM32kB/ROM128kB、USB対応なので若干I/Oは少なめ。

ブートローダー書き込み済みのDIP単体の販売もあるようだ。

ブレッドボードで周辺回路をつくる方法も解説ページが用意されていて、DIY寄りの情報がまとめられている。http://chipkit.net/diy-chipkit-board/ 

肝心のボードの提供はもうすこし先みたいだけれど、Digirentの製品ページ下部にブートローダーを含んだプロジェクトファイルが提供されている。 これを手元にあった素のPIC32MX250F128Bに焼いて、一足先に試してみた。

 写真のボードは、Pinguinoを試した時に作ったもの。その時はUSB認識がうまく行かず、以来積み基板の仲間入りをしていた。
 ハードウェア的には、(PIC32MXの周辺回路)、8MHzの水晶発振子、USBコネクタ、3.3Vのレギュレータ、(リセットボタン)とプログラムボタンが最低限必要。

手順
MPIDEは下記より最新バージョンをダウンロードする。
hexはPICkit3をつかい、MPLAB Xで書き込む。 プロジェクトウィザードでは、既存のバイナリを焼くためのプロジェクト新規作成する。

 プログラムの書き込みは、システムのリセットボタンとプログラムボタンの2つを使う。 リセット押し→プログラム押し→リセット離し→プログラム離し、の順で押すとブートローダーが書き込み待機に入るので、IDEからスケッチを書き込む。

プログラムボタンを押しながらUSB接続することで、ブートローダーモードに入ることができるので、リセットボタンについては省くこともできる、プロトタイピング用としてはやや面倒かもしれないけども。

ということでLチカまで動作確認が出来た。

この時の石単体の消費電流は25mA程度(@40MHz)。 




Pinmap

ペリフェラル
UARTは、USB CDCの他、HWで2つ存在する。 片方はSPIとの排他利用となる。

USB CDCでプログラムとデバッグができ、更にハードウェアで2chあるので意外と便利そうだ。

Serialのポート定義は以下のようになっている。

Serial   USB CDC (USBシリアル)
Serial0 ハードウェアシリアル1
Serial1 ハードウェアシリアル2

Serial.begin()をスケッチ中で定義すると、USBのデータラインはUSBシリアルとして認識される。定義しなければ、USBポートが有効化されないので、GPIOとして使うこともできる。

I/Oは19本あるけれど、4つはクロックとUSB端子に持っていかれるため、実質15本。
足りなければバス接続のIOエキスパンダがおすすめだ。

自作基板で端子配置を共通にしてみた(FemtoCube) 

2013/06/01

FemtoCube rc2

ここ数ヶ月やっていたプロジェクトのお仕事で、北海道の大樹町に行っていた。 
十勝地方は、イギリスの気候とアメリカの田舎町の距離感を足したような雰囲気があった。
慌ただしく作業をしてきたけれど、広い景色を眺めていると色々と構想が浮かぶ。 

 1年ぶりくらいに、FemtoCube計画を再実装してみた。
いまは部品配置を決めて取り付けている段階。

ハードウェアは手実装のATmega328pからMorikawa_logベースになって、若干コンセプトが変わっているけれど、5cm角に収めるという条件は変えないでいこうと思う。



4階 : SMDタイプのGPSと人工網膜チップのモノクロ視覚(スターセンサもどき)
3階: Morikawa_Log
2階: JPEGカメラ、XBee、ジャイロセンサ(L3DG20)、磁気/加速度センサ(LSM303DLHC) 
1階: バッテリ空間(予定)

重量 100g (配線すれば増えそう)


センサと通信系はいい具合に収められたけど、バッテリの充放電管理コントローラの置き場所や、その他モニタ回路の余地についてはかなり狭い。 今回はセンサのテストベッドということで過放電防止だけにしようかと思っている。 
人工網膜チップは、Morikawaの拡張端子が足りないので、マイコンに直に配線する。
既にいろいろ足りないものが多いので、次のボードはPIC32MXあたりで設計中。


ハンズの5cm角のケースに収めたところ。