2014/12/23

タカチ プロテクティブベントのテスト

5ヶ月ほど前の話になりますが、鳥人間コンテスト用に防水容器内に入れた計器で気圧高度計が使えるかどうかのテストを行いました。
防水容器内に気圧センサを入れた場合、防水性を保ちつつ容器内外の気圧を同じにしないといけませんが、タカチ電機工業取り扱いのプロテクティブベントというフィルタを使うとこれが実現できるようです。

実験はインターステラテクノロジズ社で簡易真空チャンバと真空ポンプをお借りして行いました。
テストに使った簡易真空チャンバと真空ポンプ。密閉容器のふたを解放したもの、プロテクティブベントを取り付けたものの2つを入れて実験を行った
減圧しながら測定した圧力の時間変化は以下のようになります。
簡易真空チャンバを減圧しながら測定した圧力。時刻はGPSを用いて同期してある
プロテクティブベントをつけた側に最大300 ms程度の応答遅れはありますが、時間変化はほぼ一致するという結果が得られました。

鳥人間コンテストではこのフィルタを取り付けた計器で測定を行いましたが、計器一式を主翼の中に入れたためか、残念ながら得られた気圧高度は飛行高度に対応しないものでした。
しかし、データに時間的な遅れは見られなかったので、プロテクティブベントを取り付けた効果はあったのではないかと考えています。

次回の運用がいつになるかはわかりませんが、やむを得ず気圧センサを防水容器内に閉じ込めなくてはないらない際には積極的にプロテクティブベントを使っていきたいと思います。

2014/12/21

気圧高度計の実地テスト

メーヴェのようなもの」に搭載している計器の気圧高度計を市販のスカイスポーツ用の気圧高度計と比較してみました。

使用した気圧センサは、
で、上の2つが自作の計器につながり、Digiflyのものをリファレンスとして使います。

テストは大山ケーブルで行いました。標高400 mから678 mを約6分で登るので毎秒0.8 m程度の上昇が期待できます。テストの様子は以下の動画のようになります。



Digiflyの気圧高度計にはロガーがついていないので、上の動画から表示値を読み取ることで結果を数値データ化しました。以下に自作計器とDigiflyで測定した気圧高度の表示値を示します。
計器表示から求めた気圧高度の時間変化
両者の変化の傾向はほぼ同じですが、絶対値に3%程度のずれがあります。
原因は気圧高度を求める際に使った温度のようです。
電子航法研究所報告 No.114, Vol. 3 (2005) pp. 1-13 気圧高度計による高度測定誤差とその補正にある通り、気圧高度は地上気温に依存します。
実験の結果から推測すると、DigiflyのICAO標準大気で定められる地上気温288.15 Kを用いているようですが、自作のものの温度は気圧センサの温度出力値を用いていました。

自作の計器で測定した気圧と288.15 Kを用いて求めた気圧高度を以下に示します。
地上気温288.15 Kを用いて計算した気圧高度とDigiflyの気圧高度の比較。時刻がマイナスの部分は計器のロガーはONかつ動画が撮影されていない部分
MS5611とDigiflyの気圧高度は絶対値も含めてよく一致しています。
Freescaleの圧力センサは温度補正を行っていないためか、電源ON直後に高度がドリフトするなど安定性があまりよくありません。

実際のフライトで使用した感覚からすると、圧力を変化させた際のゼロ点の安定性は大きなダイアフラムを使っているFreescaleのセンサのほうがよいようですが、Measurement Specialtiesのセンサはプリセットの校正係数でそれなりに安定した高度測定ができるようなので、今後はMS5611をメインに使っていこうと思います。

2014/06/20

u-blox NEO-M8NによるGNSS衛星の航法メッセージ出力

XBee型GPS基板の組み立てを行い、正しく動作することが確認できたので、ublox NEO-M8Nによる生データ取得を試してみました。

左からNEO-7P, NEO-M8N, NEO-6M

手始めに行ったのはTRK-SFRBX(0x030F)ページの解析です。
解析の結果は以下の通りになります。

Byte Offset Number
Format
Scaling Name Unit Description
0 U1 - reserved1 - Reserved
1 U1 - gnssId - GNSS identifier (see Satellite Numbering)
0: GPS, 1: SBAS, 2: Galileo, 3: BeiDou, 5: QZSS, 6: GLONASS
2 U1 - svid - ID of Satellite transmitting navigation message
3 U1 - reserved2 - Reserved
4 U1 - prn - PRN
5 X4 - flags? - flags?
9 U4 ? time? ? time?
13 X4[N] - dwrd - Words of Data
navigation message
(長さはGNSSにより可変
GPSの航法メッセージの格納法はRXM-SFRBと2ビットずれがあり)

少なくともGPSの航法メッセージが正しいことはNEO-7Pとの比較で確認できています。

航法メッセージが取得できたので、擬似距離・搬送波位相・ドップラーシフト等のデータがあれば測位が可能になります。
これらのデータはTRK-MEASメッセージから出力されるようなので、こちらの解析も進めたいと思います。

2014/06/02

フライトログのグラフ化スクリプト

Team'F'で使っているフライトログのグラフ化スクリプトを公開しました。

LogViewer

CSV形式のフライトログから以下のようなグラフを生成します。

スクリプトはPythonを使って書きました。
使い方の説明はReadme.mdを見ていただければおおむね把握できるかと思いますが、基本的にはログ解析用にデータの補間をscipyで行い、matplotlibで表示しているだけです。
使用しているセンサによってキャリブレーション定数が異なると思いますが、そのあたりはcalibration.pyを書き換えることで対応できると思います。

スクリプトのテスト用にTeam'F'の第36回鳥人間コンテストでのフライトログも同じ場所にアップロードしています。
こちらもご自由にお使いください。



2014/05/25

WeatherFlow製WindMeterがAQUOS PHONE SH-04Eで使えない

テストフライト時の風況把握や人力飛行機の対気速度計に使えることを期待してWeatherFlow製のWindMeterを買ってみたのですが、手持ちのAndroid端末SH-04Eで試してみたところ、正常な動作が確認できませんでした。
購入したWeatherFlow製WindMeter
対応Andoroidアプリの評価は5か1の真っ二つに割れていて、うまく使えれば便利なツールであるものの、全く使えないこともあることを想像させる結果です。

せっかく買ったものが使えないのは悔しいので、原因を調べてみました。
アプリのダウンロードページにある動画からわかる通り、センサはAndroid端末のイヤホンジャックに挿入して使います。
センサから出るパルスをマイク端子に入力し、その周波数から風速を求めるものと動作原理を予想して実験を行いました。

実験には以下のようなケーブルを使いました。

実験用のケーブル。1kOhmの抵抗でマイク挿入検知をごまかし、PCから出力したパルスを入力する
マイク入力<->GND間に1kOhmの抵抗をつなぎマイク検出をごまかし、PCのヘッドフォン出力からWaveGeneを使って生成したパルスをAndroid端末のマイク端子に入力します。
その結果、
  • パルス入力直後はWindMeterアプリに数値が表示される
  • しばらくすると表示が0.0m/sになる
という挙動が観測できました。

おそらくこれはマイク入力に自動ゲイン調整(AGC)がかかっているためだと思われます。
マイク端子に入力された波形を表示するAndroidアプリ 音声波形を使い、WageGeneで生成したパルスがAndroid端末でどのように見えるかを確かめてみましたが、過大な入力を与えた場合でも一定時間で波形がクリップすることがない程度まで入力アンプのゲインが落ちることがわかりました。
一部のSharp製端末の場合、マイク入力のAGCはアプリ側から制御できないようで、この類の端末を使っている場合にはWindMeterアプリ側からの対策はできないということになります。

また、数人の方に協力していただいて、いくつかの端末でWindMeterがうまく動くか検証してみました。
結果は下の表なります。

端末名 Androidバージョン マイク端子電圧
(1kOhm負荷時)
動作可否
Nexus 7 (2013) 4.3 0.99V ×
AQUOS PHONE
SH-04E
4.1.2 0.80V ×
Xperia Z
SO-02E
4.2.2 0.82V ×
AQUOS PHONE
ISW16SH
4.0.4 0.80V

公式アプリのページには「オーディオジャックを通して十分な電力を提供する任意のAndroidデバイスで動作します」という文言がありますが、この結果から電力以外の原因でも動作しなくなることがあることがわかります。

以上より、WeatherFlow製WindMeterのセンサにはAndroid端末との相性問題があり、ソフトウエア側からの対策も不可能な場合があることがわかりました。
WeatherFlow製WindMeterの購入を考えている方は、事前に情報収集を行って動作しそうかどうかを確認することをおすすめします。

2014/05/24

ublox製GPS-XBee変換基板

様々な用途に使えると一部で評判ublox製GPSですが、未評価のNEO型モジュールが手元にたまってきたので手軽に使えるXBee型の変換基板を起こしてみました。

似たような基板にはSeeedStudioGPSBeeがありますが、
  • USB接続可
  • バックアップバッテリ搭載
  • 設定記録用EEPROM搭載
という点で、作製したモジュールのほうが高機能になる予定です。

発注した基板のパターンを以下に示します。
ほぼモジュールのデータシート通りの回路ですが、部品の取り付け方を変えることでublox6, 7, 8の各世代で使えるようになっています。

評価しようと考えているのは、
  • NEO-6M (格安かつ搬送波位相出力のhackあり)
  • NEO-7P (キャリアスムージングによる(?)精密単独測位)
  • NEO-M8N (GPS/GLONASS/QZSS/BeiDou/(Galileo)のGNSS対応)
の3種類のモジュールです。
特に搬送波位相とGNSS対応周りの性能を重点的に評価したいと考えています。

2014/05/13

GPSのバックアップバッテリ

手元に未評価の(ublox製/NEOフォームファクタの)GPSモジュールがたまってきたので、そろそろ腰を上げて評価用基板を作製しようと考えています。
評価用基板には各種コネクタ等の他にもバックアップ用の電源を取り付けるつもりですが、ボタン電池と電気二重層コンデンサが主な候補です。

電気二重層コンデンサには電池交換の手間も省けるというメリットがありますが、容量とバックアップ電流によってはバックアップ時間が十分に取れないことも考えられます。
そこで、バックアップ時間がどの程度取れるのか測定してみることにしました。

実験はHPA_Navi(無印)で行いました。
バックアップ回路は、電気二重層コンデンサ(0.22F)を逆流防止用のダイオード1ss400を通して3V3につないだだけの単純なものです。
以下に測定の様子を示します。

測定の様子。Agilent U1253Bの入力インピーダンスは10MOhmなので、測定系に流れ出る電流は無視できる程度
充電・放電時のバックアップキャパシタの電圧変化
使用したGPSモジュールNEO-6Pのバックアップ端子の最低電圧は1.4Vなので、1.5時間程度のバックアップ時間が確保できることがわかります。
また、放電開始直後には急に電圧が降下しており、その後ほぼ定電流で放電する様子が見て取れます。
この傾きから(バックアップ回路全体の)消費電流は32uA程度と求まります。
データシートによればNEO-6Pのバックアップ電流は典型値で22uAなので、ダイオードや測定系に流れ出る分を考えてもこの値は少し大きめと言えそうです。

通常の運用であれば1.5時間程度のバックアップ時間が取れれば十分なので、製作する評価基板のバックアップ系には0.22Fの電気二重層コンデンサを採用したいと思います。

2014/03/26

HPA_Naviとちょっとすごいロガーの比較

作製しているHPA_Naviシリーズとよく似た機能を持つちょっとすごいロガーが購入できるようになりました。
作っている側としてはこの2つは全く別のコンセプトの2つのロガーという印象を持っているのですが、どうもそのあたりの差がわかりにくいらしいので主要部品と機能などを表にまとめてみました。

HPA_Navi II
(無印の機能もほぼ同じ)
ちょっとすごいロガー備考
マイコンCypress
PSoC 5LP
(80 MIPS)
Silicon Laboratories C8051F381
(48 MIPS)
GPSublox LEA-6T
(搬送波位相取得可能)
ublox NEO-6M
(搬送波位相取得可能なものも製作予定)

慣性センサMPU-6000
(DMP有効)
MPU-6000
(DMP無効)
3軸加速度+3軸ジャイロ
地磁気センサHMC5983MAG3110性能差は不明
気圧センサMS5611MS5611
電源LTC4415+TPS6300X
USB/1.7-5.5Vの電池
USB経由の充電機能はなし
LTC3550
USB/リチウムポリマ電池
USB経由の充電機能付き
HPA_Navi IIの電源回路はリチウム1次電池の使用も想定
ログ記録媒体microSDmicroSD
デジタル入出力5V系 8ch, 3.3V系 8chなし?GPIO x2, I2C 1ch, UART 1ch対気速度・回転数・高度センサ等
サーボ出力8chなし
アナログ入力8chなし操舵角センサ・ピトー管等
アナログ出力4chなし
XBeeスロット 2chなしXBeeの他にBluetoothなども
サイズ直径80mm = 5027 mm^226 x 36 mm = 936 mm^2
サポートソフトウエア3Dモデルを表示する地上局
データ変換ツール類
(Chrome Apps)
グラフを表示する地上局
データ変換ツール類
(C#)

表からわかる通り、搬送波位相・DMPの項目を除いて慣性・地磁気・気圧センサ・GPSのデータを取得・記録するロガーとしての機能はほぼ同じです。

大きな違いは外部入出力の有無にあります。
HPA_Naviは人力飛行機用として設計されていて、対気速度センサ等を最大36chまで入出力できるようになっています。
このためサイズがちょっとすごいロガーに比べて大きくなっているので、シンプルな慣性・GPSロガー機能のみが必要な場合には、基板の取り付け等を考えるとちょっとすごいロガーのほうが便利です。

シンプルでコンパクトな慣性・GPSロガーが欲しい方はちょっとすごいロガーをどうぞ!

2014/03/20

伊豆大島打ち上げ実験場のGPS予報

伊豆大島で行われるロケット打ち上げイベントでHPA_Navi IIが使われるということで、期間中である3/21-3/23のGPS予報をしてみました。


運が悪くなければ7-9基の衛星が仰角15度以上に見えそうです。

また、搬送波位相を使った精密解析を行う際に必要になる電子基準点の座標と射点の距離を求めてみました。
射点、電子基準点の座標は以下の通りです。

射点: 34.73420833, 139.41766666
大島1: 34.784418191, 139.381393752
大島2: 34.686785321,  139.433217263
大島3: 34.761543312,  139.434017151
大島4: 34.737613049,  139.358585849

ここから射点との距離をNGSのツールで求めると、

射点<->大島1: 6485 m
射点<->大島2: 5450 m
射点<->大島3: 3382 m
射点<->大島4: 5424 m

となりました。
大島3の電子基準点を使えば基線長3.4 kmですが、1周波でFix解を求めるのは厳しいかもしれません。

2014/02/23

図解(拡張)Sylphideフォーマット

電装基板のデータ記録フォーマットとして採用しているSylphide形式を図解してみました。

フォーマットの1次情報は以下のリンク先に記述があります。
ninja-scan-lightのものは他の形式と一部互換性がないので注意が必要です。

Sylphide形式のログファイルをバイナリエディタで見ると以下のようになります。

Sylphide形式のデータをバイナリエディタで見たもの。A, H, Nなどのページ名を先頭にする32バイトごとのまとまりが1つのデータ単位を構成する。
エディタの表示と対応するようにSylphide形式を図解したものが以下の図です。
PDF版はこちら
Sylphide形式データを吐く計器のデータ確認やSylphide形式を使うロガーの開発に役立てば幸いです。

2014/01/26

XBeeタイプマイコン基板 SBXBTのデフォルト通信速度を変更する

以前、HPA_Navi IIのBluetooth化の記事を書きましたが、Android端末との接続はシリアルポートのボーレートの関係で事前の設定なしには行えませんでした。
そこで、設定なしでAndroid端末との接続が可能になるように、SBXBTのデフォルトのボーレートを固定しました。

SBXBTにはプログラム書き込み端子用のピンヘッダが付属しますが、頻繁にプログラムを書き換える予定はないのでピンヘッダをはんだ付けはせず、サンハヤトのスルーホール用テストワイヤでプログラム時のみPICkit 3とSBXBTを接続しました。

スルーホール用テストワイヤでPickitとSBXBTを接続
SBXBTのユーザーズマニュアルにある通り、global.hに手を加えることでボーレートの変更は可能です。
変更箇所は2箇所です。
global.hの20行目でボーレートを指定、21行目で指定したボーレートを有効にします。

この変更を行ったことで、Android端末との接続がスムーズになりました。
AndroidアプリSylphideMonitorには人力飛行機用の表示項目がないので、今後付け加える作業を行おうと思います。

2014/01/06

HPA_Navi II配布開始

予告より少し遅くなって年が明けてしまいましたが、HPA_Navi IIの配布を始めたいと思います。
HPA_Navi IIでできることは以前のブログの記事HPA_Naviの説明書等を参照してください。

HPA_Navi IIの基板はElecrowに注文し11枚届きましたが、
  • Team'F'使用分 2枚
  • 予約分 1枚
  • 保存用 1枚
を引いて最大7台の配布になります。
部品代はおおよそ15000円でしたので、諸経費込みで2万円弱で配布できるかと思います。

ご希望の方はコメント欄、E-mailTwitter等、都合のよい方法で連絡をいただければと思います。
配布終了しました。