2017/07/25

独立電源の実験


リトープスという多肉植物を昨年から育てている。基本放置なのでよく世話を忘れてしまい、枯死寸前になっていることが度々あった。なんとか徒長(日照が足りず背が伸びる現象)だけは防げている。

 話は変わって、OBC644基板用の独立電源を試作してみた。これも基本放置を目指したい。
蓄電はスーパーキャパシタのみの簡素な構成にした。圧倒的にエネルギー密度が低く、リーク電流も多めと、蓄電系として見た場合のデメリットは多い。しかし代わりに過放電による永久故障はなく、温度条件なども緩めだ。
 便利なエナジーハーベスト用電源ICを使ってもいいけれど、今回は自由度の高いディスクリート構成にした。 といっても、ソーラー目覚ましキーホルダー(2012)に毛が生えた程度だ。

容量違いで2種類のキャパシタ系統を組み合わせた。
基本的なモードとして、
(初期充電)完全放電からの復帰
・コンデンサバンクの充電判断
・コンデンサバンクの電源系統への接続
・過充電抑制
がある。マイコン側では2つのコンデンサの電圧を監視している。 電圧のみで残量推定ができるので、エネルギー管理はとても簡単だ。

 太陽電池はダイオードORで小容量のEDLCを充電する。光が当たれば、数分後にマイコンが起動する。
 大容量EDLCは上流、下流ともデフォルトでは切り離されている。主系統への接続と充放電管理はソフトウェアで行う。
下流側は電圧降下を抑えたいため、あえてダイオードORしていない。
簡素化のためにレギュレータの降圧モードのみなので、マイコンのBOR電圧を下限として、コンデンサバンクから使える電位差分の静電容量は約150クーロンほど。だいたいコイン電池くらいになる。
 とりあえず日照がある間は、時折GPSを作動させたり、カメラ撮影するといったミッションをこなせる規模になる。 

無線モジュールで定期的にテレメトリを送信するところまでは実装して、日中は屋外に放置してみた。快晴では満充電に到達するが、曇った日でもテレメトリ送信に支障がないレベルの発電ができている(下グラフは薄曇りの日のテレメトリより)小型筐体なので日照を浴びると50℃付近まで上がってしまう。
テレメトリ(午後から開始)
電圧トレンドを判断させれば、放電抑制を行って夜を超えたり、数日間動く設定もできるだろう。完全放電しても、光が当たれば生き返るわけなので、宵越しの電力は持たないというのも潔いかもしれない。

2017/07/03

デスクトップの更新(Ryzen5)

そろそろメインマシンの更新時期だったので、今回はコストパフォーマンスで話題のRyzenで組んでみた。
 ZenにするならAPUが出るまで待とうと思っていたけど、グラボは最初から外付けだったと思い直し…。

AMD Ryzen5 1600
ASRock AB350M Pro4
CORSAIR DDR4-2666 16GB (8GB x2)
Crucial MX300  1TB
GTX960 4GB(使いまわし)
ケース、電源 (Antec EA-380 Green 使いまわし)


 前のCPUはIvyBridgeな i5-3470だった。Ryzen5 1600とクロック定格/ターボブースト値も一致しているけれど、PassMark値で見ると、ちょうど倍のスコアになる。これがコアとスレッド数の差なのかな。
 TDPは77Wから65Wへ低下しており、入れ替えにあたって冷却系と電力系統はそのまま使えると判断した。EA-380は8ピンCPU電源も備えているし、12Vデュアルレーンで強い。

  SSDはCドライブに重たい開発環境とDropboxフォルダを置くことを想定して1TBにした。 残り領域が少ないとSSDの寿命にも影響してくるので、あまりケチらない方向で。

 ポリタンクMacの改造ケースなのでCPUクーラーの背丈に制限があり、かっこいいリテールクーラーは悲しいことに高さオーバーで使えない。
 昔の自作機に使っていた サイズの手裏剣(リビジョンB)がギリギリ使えることがわかり、同時に購入した。 Socket AM4が新しいこともあって対応製品が少ないのが懸念だったが、爪で引っ掛けるタイプならそのままAM4にも対応している様子。


気づいたこと
・メモリの差し方は指定があるので従う。数字の大きいスロットから埋めるようだ。
・UEFIでの設定中はCPU温度が60℃まで上昇していて焦った。OSインストール後はほぼマザボ温度付近まで下がったのでヒヤヒヤした。アイドル中はおよそ室温+7~10℃台をキープ。
・最近のマザボはLED設定まであって面白いなぁ…
・AB350M Pro4の蟹サウンド(ALC892)はノイズも乗っておらずなかなか良い感じだ。
GNDプレーンの分離帯が当たり前になっている

Virtualboxで構築してあったVMを引っ越して実行させたり、3DCADを開いてレンダリングさせたり、ソースをコンパイルしてみると、当然ながら早くなっている。
コア数が多いと並行していろいろ開いても重くならない。
 軽いと思っていたマイクラをやってみても、以前の構成でラグが発生していたらしいということを気づかされる。


 このG4ポリタンクケース、幼い頃にナショジオの広告で見て以来、かっこいいと刷り込まれ今に至っている。曲線的なポリカーボネートで覆われたblobject時代の形状を伝える一品だ。
 改造した汎用ケースとしては、電源ユニットが背面ファン方式しか取り付けられないという点が足かせとなり、今後の延命は高くつくだろう。

 最初の自作機も高校時代にソケットAのSempronで作ったもので、ケース代をケチるためベニヤ製の自作ケースに入れて動かしていた。技術系サイトを巡りつつ、出来たばかりのGoogleEarthやYoutubeに入り浸っていた記憶がある。久しぶりにAMD機を組んで、今も昔も基本行動はあまり変わってないことに気づく。コンピュータ支援を受けた人生はこれからも続いていく…のかな。

2017/06/06

Arduino互換汎用データロガー 2017



4年目のArduino互換データロガー基板。第三世代ということで、今までのプロジェクトで載せたことのある機能を盛り込んで、独立動作する汎用的なオンボードコンピューターとして使えるようにしてみた。
スリープ機能を重視し、目標消費電流は平均3mW以下。


システムブロック図



 今回はATmega644PA/1284Pを8MHzで動作させて、3.3V単電源とした。
オンボードの機器として、MPU-9250とRTCに加えて、気圧センサ(MS5611)とシャントモニタ(INA226)を追加。

 外部電源出力は、この基板では主にGPSやUART接続の通信モジュール等の接続を想定している。
基板の電源と独立した2つのレギュレータを載せ、マイコンから個別に出力をONOFFできるようにした。 EN出力付きのレギュレータは、ロードスイッチとしても使うことができる。レギュレータの各種保護機能により、下流での電源異常時の波及故障を分離できるのも良い。 とショートモードばかり気にするお仕事の癖が出てしまった…。 いろいろな故障モードを発生させることで、システムは強くなっていく。

 また、SPI接続の各種ROMに対応。SO-8サイズのFlashROMやFRAMを搭載できる。
microSDカードでも、ブランド製品は初期化後アクセスしない期間の待機電流は100μA程度まで下がるが、大容量のデータを貯める必要が無ければ、オンボードのメモリは電力的に有利だ。


 初めて素子を45°配置してみたが、なかなかかっこいい。
基板はelecrowにいくつかの基板を一緒に発注している。発注して6日で届くので便利だ。(輸送はShenzenDHL)年々品質が上がっているような気がする。

 実装が一通り終わったところで、スリープモードに移行した場合の消費電流を調べた。
MPU-9250やINA226はデフォルトだと電源投入後すぐに動作を始めるため、何もしなくても数mA消費してしまう。こうしたセンサはパワーダウンを有効化するためにコマンド送信が必要だ。センサをシャットダウンすることで、基板全体での待機電流値は200μA程度にまで落ちた。

消費電流の調査(デバッグ)

200μAは小さいほうだけど、想定よりかなり多い。
ためしに設計的には共通な第二世代のロガー基板を使って同じコードを走らせたところ、こちらは79μAだった。実装途中のマイコンとレギュレーターだけ載せた基板でも200μAとなる。原因を探ると実装したレギュレーターの消費電力にあった。 試作で安く手に入る型番を使っていたけれど、これがかなり自己消費していた様子だ。

いつも使うLT1761に交換してみると、待機時の電流は72μAまで落ちた。一個で安いレギュレータが10個買える値段なのだけれど、逆電流防止機能もあるので使っている。
とりあえず、常時通電するマイコンの系統だけは自己消費の少ないものにするのがよさそうだ。TIのTPSシリーズでは500nAレベルのものもある。効率を目指すのであれば、昇降圧DC/DCも視野に入ってくる。

せっかくなので段階的に部品を実装しながら調べてみた。
マイコンは端子の初期化とデジタルICのスリープコマンドを送った後、WDTで指定時間経過で間欠駆動するコードを入れたもの。(RAMが保持されているので、完全なディープスリープではない)

レギュレータ無しで電源装置から3Vを与えたとき、
・ATmega1284P 8MHz 23uA
・ATmega644AP 8MHz 23uA

LT1761ES5を実装し、3.7Vで動作させたとき
・ATmega1284P 8MHz +LT1761ES5    45uA
・第三世代 フル実装基板     72uA

参考 第二世代基板(ATmega644AP 16MHz)
3.7V時 79uA
5V時    110μA

20μAほどは、RTCの動作電流、FlashROMやセンサの待機電流などが現れているようだ。
・ATmega1284P 8MHz +LT1761ES5    45uA
+MPU-9250                                       55μA (データシートでは8μA)
+MS5611                                          55μA

第二世代は5V系なので、第三世代で追加した機能以上に増えてしまっているようだ。第二世代まではArduino互換であることを重視していたので、電源系統は単純な常時供給としていた。

 RTCの割り込み出力はATmegaのINT2に接続されており、外部割込みをつかうことで、長期間にわたり正確なタイミングで動作させられる。
時折、GPSから時刻情報を得てRTCを補正するという運用なら、かなりの省電力化になる。
実験用に特小長距離無線機とGPSを組み込んだ例