ブログ/こばさんの wakwak 山歩き Twitter

2012-07-23 若松ガイガー 20120723版 リリース!

若松ガイガー 20120723版 公開

| 若松ガイガー 20120723版 公開を含むブックマーク

 本記事には古い情報が含まれている場合があります。まとめページ を作成しましたので併せて御覧下さい。


 満を持して3ヶ月ぶりに新ファームをリリースしたつもりでしたが、早速情けないバグを出してしまい申し訳ありません。。

 savePower=2 では起動時に LAN線 が繋がってるかどうかを判定して、繋がっていないときにネットワーク関係を止めて節電させるとともに、Twitter などのネットワークに依存したサービスの実行も停止させていたのですが、このサービス停止させる部分が 20120717版 でバグってしまいました。ほんと、すみません。。


20120723版 ファームウェア一式 20120819版をお使い下さい。


20120717版との機能比較 (20120717版の仕様はこちらを参照ください)


  • savePower=2 で省電力モード移行時にネットワーク系サービスが設定されているとフリーズするバグを修正
  • 汎用アナログ信号入力時にスプライン補間を用いて測定値に変換する機能を実装

 前版から汎用アナログ入力をサポートし、温湿度センサーなどを接続させて放射線量と一緒に観測・記録する機能を追加しました。

 取り急ぎ LM35DZ などの y=ax+b 的なシンプルなセンサーにのみ対応しましたが、世の中、そんなシンプルなセンサーばかりでもなく、対数チックな出力のものもたくさんあります。


 私の手持ちセンサーの中では、HSM-20G という温湿度計がその代表例で、このセンサーの吐く値は、温度はバリバリの対数、湿度も微妙に直線じゃない、っていう難物です。

 何とか近似曲線を求めて・・・と言いたいところですが、何次方程式になるのか考えるだけで頭が痛いですよねぇ〜

 そんな時に便利な手法が スプライン補間


 詳しい原理は ここら辺 を見て頂くとして、こんな風に数カ所の点を定義するだけで途中を補間して埋めてしまおうというもので、この仕組みを mbed の中で実装してみました。


定義ファイル項目名内容指定方法
ADC 設定ファイルspline00測定値,電圧値数値,数値
ADC 設定ファイルspline01測定値,電圧値数値,数値
ADC 設定ファイルspline02測定値,電圧値数値,数値
ADC 設定ファイル

測定値,電圧値数値,数値
ADC 設定ファイルspline97測定値,電圧値数値,数値
ADC 設定ファイルspline98測定値,電圧値数値,数値
ADC 設定ファイルspline99測定値,電圧値数値,数値

 HSM-20G の湿度計を例にしてみます。

測定値(湿度)102030405060708090
電圧0.740.951.311.682.022.372.692.993.19

という表が データシート にあります。

 この電圧を ÷ 3.3 × 65535 します。

測定値(湿度)102030405060708090
電圧0.740.951.311.682.022.372.692.993.19
電圧値(16ビット変換後)149661886626015333634011547066534215937963350

 測定値と電圧値のペアを ADC設定ファイルの中で spline××=〜 と列挙します。

spline00=10,14966

spline01=20,18866

spline02=30,26015

spline03=40,33363

spline04=50,40115

spline05=60,47066

spline06=70,53421

spline07=80,59379

spline08=90,63350

 プログラムが内部でやってる仕組みは難しいのですが、使う人にとっては何も難しいことを考える必要ありません。

 「湿度10%時は14966、20%時は18866・・・」という風にファイルの中で書いておくだけでいいです。

 すばらしいでしょ!


 いちお HSM-20G の温度計を使った時の定数も HSM20G-T.CFG として同梱しておきました。

(データシートに添付の参考回路図のとおり、5.0V を 10kΩ で分圧させた結果の電圧)


 テスト機の LM35DZ と比べると HSM-20G は 最大で1℃程度の違い なので、それなりに正しく動作してそうに思います。

※ ADC0 = LM35DZ(気温)、ADC1 = HSM-20G(気温)、ADC2 = HSM-20G(湿度)


 ちなみに LM35DZ も同じようにスプライン補間を使って定義することも出来ます。

 0℃のとき0、100℃のとき 1.0V(19860)ですから

spline00=0,0

spline01=100,19860

という定義にしておいても大丈夫です。

※ ADC設定ファイル中で spline×× を利用している場合は caribration、offset での設定は無視します


 もう スプライン補間バンザイ♪ って感じです。


 ガイガー管の校正も、今は2点校正ですけど5箇所くらいで校正してスプライン補間すれば、むちゃくちゃ精度が上がるはず。

 需要あればガイガー管の校正にもスプライン補間処理を追加しますけど、どうしましょ?


追記(2012/07/24)

HSM-20G の接続回路図を参考までに載せておきます。


http://dl.ftrans.etr.jp/?680b521b2e2a4f28b66bbf447d5b83580c8702cf.png


 若松ネットガイガーの中には HSM-20G が必要とする 5.0V という精度の電源ラインが存在しないので、ACアダプタ 〜 Mark2 の間から電気を拝借するようにしました。(あのACアダプタは5.2Vくらいの電圧が出てるので分岐して横取り)

 電位差 120mV で作動する超低損失レギュレータ S-812C50AY-B-G に 5.0V を作らせました。


 それ以外は概ねデータシートどおりですが、温度計(サーミスタ)の出力のところ 10kΩ で GND 側に引っ張って分圧させてますが、それだけではインピーダンスが高すぎるように思うので 0.1μF を抱えさせてます。

 湿度側の 47μF はデータシートどおり(こんな巨大なものが本当に必要なのか分からないですけど)


(追記)

 HSM-20G のコネクタは 2mmピッチの PHR コネクタ出しの状態で、ケーブルは付いてきません。

 コネクタの基板面にリード線を半田付けして取り出してもいいですが、HSM-20G をアイテンドーで買われる方 は一緒に コネクタ付きケーブル も買われるとキレイに仕上がるかなぁと思います。

 HSM-20G で利用するにあたっては線の色の順番が少々気に入らないですが。

うろたんうろたん 2012/07/24 14:36 こばさん、こんにちは。
スプライン補間すごい、かなり本格的な校正ができますね。

当方ではOSコンの2.2uFを電源と温度センサーラインに付けて一晩様子をみましたが、ゆらぎが解消しなかったためLM35DZに比べ精度が劣るものの
安くて低消費電力なMCP9700-Eをつけてみました、これは0℃→500mVのためoffset=-56.5で落ち着けそうです。
センサーもLAN横の増設スイッチの上に張り付けました、携帯性をとるか精度をとるかは悩みどころです。

ここ最近CosmのページをFirefox(win32)で開くとエラー404になってしまのが気になります。

こばさんこばさん 2012/07/25 13:05 ゆらぎ解消せず・・・ですか
信号線の途中でノイズってるのでしょうかねぇ

別に車のダッシュボード上に放置気味に測定してるのもあって、そちらのほう炎天下では60℃を超える状態で半ば耐熱テスト状態やってる感じ(笑)ですが、屋内設置のほうよりもブレ幅は大きいです。
窓を5cmくらい空けてて、たまたま風が吹き込んだタイミングで下がったり上がったりしてるのかなぁ〜と好意的に受け止めてますが。

Pachubeも十分に重かったですが、Cosmのページは更に見にくいですね。
以前のほうが見やすかったような気も。。


HSM-20G で湿度も測ってるつもりなんですが、24時間にわたって64±2%
湿度計の出力にテスター当てて息を吹きかければ電圧(湿度)が上がってしばらくして戻るので、きちんと動いてそうな気もしますが60%台で湿度一定って本当なのか?と疑わしいところなのですが、いかんせん我が家には湿度計がなく。。