若松ガイガー 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 の湿度計を例にしてみます。
測定値(湿度) | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 |
電圧 | 0.74 | 0.95 | 1.31 | 1.68 | 2.02 | 2.37 | 2.69 | 2.99 | 3.19 |
という表が データシート にあります。
この電圧を ÷ 3.3 × 65535 します。
測定値(湿度) | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 |
電圧 | 0.74 | 0.95 | 1.31 | 1.68 | 2.02 | 2.37 | 2.69 | 2.99 | 3.19 |
電圧値(16ビット変換後) | 14966 | 18866 | 26015 | 33363 | 40115 | 47066 | 53421 | 59379 | 63350 |
測定値と電圧値のペアを 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 の接続回路図を参考までに載せておきます。
若松ネットガイガーの中には 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 で利用するにあたっては線の色の順番が少々気に入らないですが。