2013/12/24

XBeeタイプマイコン基板 SBXBTでHPA_Navi IIを無線化する

RunningElectronicsさんのXBeeタイプマイコン基板 SBXBTを使ってHPA_Navi IIをBluetooth化してみました。
基本的にMachineMakerさんの記事の二番煎じですが、使ったBluetoothアダプタ等の環境も異なるのでレポートしておきます。

試した環境:
OS: Windows 8.1 64bit / Windows 7 64bit
HPA_Navi II: Rev.A
PC側Blutoothアダプタ: Princeton PTM-UBT5 + 東芝Bluetoothスタック
SBXBT側Blutoothアダプタ: Buffalo BSBT4D09BK
SBXBT: Rev. 1.1

地上局ソフトでモニタ中
115200bpsで接続しています。
HPA_Navi標準の38400bpsだと少し通信速度が遅いかもしれません。

また、@fenrir_nさん作のAndroidアプリSylphideMonitorにも接続してみました。

AQUOS Phone SH-04EでBluetooth通信は確認。姿勢角がおかしい問題はチェック中
SBXBTのシリアル通信のボーレートはデフォルトで9600bps, PCから仮想COMポートの設定を行うことで通常よく使われるボーレートには設定できます。
しかし、Android端末の場合、Bluetooth APIからボーレートが設定できないため、SBXBTとの通信を行うためには、

  • デフォルトの9600bpsをつかう
  • 一度PCとペアリングしてSBXBTのボーレートを変更した後、ペアリングを切ってAndroid端末に接続し直す

のどちらかの手段を取らないといけないようですが、後者の手順を毎回踏むのは面倒です。
デフォルトの9600bpsでは少し通信速度が遅いようなので、SBXBTのファームウエア書き換えて、デフォルトの設定を変更してみようと思います。

2013/10/27

HPA_Navi II 実装完了

製作中のHPA_Navi IIですが、基板と部品が届いたので実装作業を行いました。

部品面
はんだ面
RF、デジタル、アナログに分けたグラウンドがつながっていなかったというミスはありましたが、その他の修正はなしで動きそうです。
基本的にハードウエアは無印のHPA_Naviと同じなので、センサ類のデータが取得可能なことは無印版のファームウエアで確認できています。

残りの作業は新しく追加した電源電圧等の監視機能の実装と、細かいファームウエアの改良になります。

まだ全ての機能は実装していませんが、作製している地上局ソフトと組み合わせた動作のデモをロケット交流会2013Maker Faire Tokyo 2013「はかるひと」(タイム24ビルエントランス)で行う予定です。

2013/09/22

HPA_Navi II 基板設計完了

思いの外好評で10枚ほど配布した人力飛行機etc用IMU/GPS+32chロガー基板 HPA_Naviの後継となる基板を設計し終えました。

左: はんだ面, 右: 部品面
HPA_Naviの機能はほぼそのままに、運用していて不便だった点に手を入れています。

・外形
直径80mmの円形なので、人力飛行機の桁の中やモデルロケットの中などパイプに入れやすくなった。
秋月で売っているタッパにもそのまま入るので防水も容易になった。

・電源
電源を(USB)または(1.8Vから5.5Vまでのバッテリ)の2系統に変更した。
これによってLiPoバッテリ以外のリチウム電池や乾電池での運用など、様々な運用形態に対応した。
それに伴いLiPoバッテリの充電機能は省略した。
また、バッテリ・3V3・5Vの電圧監視、バッテリ・USBの電流監視機能を追加した。

・その他
RS485機能はオプションとした。
電源スイッチを外付けにしたため、フライトピンを引き抜いて電源を入れる等の運用も可能になった。

部品代のほとんどを占める搬送波位相取得可能なGPS LEA-6T安く手に入るようになったので、前回のものよりだいぶ安く製作できそうです。

少なくともハードウエアはMaker Faire Tokyo 2013とロケット交流会に間に合わせて展示する予定です。

2013/08/14

第36回鳥人間コンテスト

第36回鳥人間コンテストが終わりました。

作製した電装系は特にトラブルなく動き、搭載したすべてのセンサのデータを回収できました。
データの公開は9月4日の放映後にするとして、ここでは備忘録と反省を兼ねて搭載した計器の概要をまとめておきます。

1. 回転数計
クランク側、プロペラ側に光学式のものを1つずつ取り付けた。
クランク側のものは時折日光で誤動作したが、表示はプロペラ側のもので行っていたので問題なし。

2. 対気速度計
風車式、ピトー管式を併用。
ピトー管のほうが応答が早いという差が見られるものの両者でほぼ同じ値を示した。

3. 高度計
対地高度(超音波式)、気圧高度(圧力センサ)、ジオイド高度(GPS)を取得。
使用した超音波距離計MB1360は水面を相手にしてもスペック通りの10.68mまで計測が可能だった。
計測値がデータシートの上限値10.68mに張り付いていた部分があることから考えると、センサ自体のポテンシャルはさらに高いものと推測される。

4. 操舵角計
ポテンションメータを使用。
ラダーのセンサは操舵ワイヤとの干渉でコネクタが抜けることあり。

5. AHRS
TinyFeatherの9軸センサ+GPS、ディスプレイ部の9軸センサ+GPSを使用。
ディスプレイ部のものはペダリングの振動を拾うので翼胴接合部付近に取り付けたTinyFeatherのデータを主に使用。

6. GPS
TinyFeather側、ディスプレイ側の2系統を使用。
両者で搬送波位相等の生データを取得。
フェアリング内に取り付けたアンテナはSNRが悪くなる傾向あり。
電源電圧低下した場合に起動しないなどのトラブルが出やすいので電池の残量には注意。

7. ディスプレイ
表示項目は以下の通り(写真を参照)。
・回転数(上数字)
・対気速度(円型バーグラフ)
・対地高度(下数字)
・ピッチ角(縦型インジケータ左)
・エレベータ切れ角(縦型インジケータ右)
・計器ステータス
その他にも磁気方位の搭載の要請あり。



操舵角計を除いてセンサは2重化されているので、値の妥当性の評価や1系統のセンサが不調な場合のバックアップに使えます。

新しい機体(?)のロールアウトにはしばらく時間がかかると思うので、今回使用したシステムの良い部分を継承しつつシステム全体を刷新する予定です。

2013/07/13

缶サット甲子園北海道大会

植松電機の方のご厚意で電装基板を缶サット甲子園北海道大会のピギーバックペイロードとしてmini CAMUIロケットに載せて打ち上げていただきました。

基板の搭載状況その1。+X軸が鉛直下向き、+Z軸が打ち上げ方向
基板の搭載状況その2。REMOVE BEFORE FIGHTタグにはロガースタート用のピンがつながっている。引き抜くとロガースタート
人力飛行機とは正反対の高運動性環境に対応するため、加速度計のレンジは16Gに、ジャイロのレンジは2000dpsにしてあります。
GPSの設定も高運動性モードに変更したつもりでしたが、出力されたデータからするとどうも設定がうまくできていなかったようです。
ハードウエアに大きな変更点はありませんが、電源をLiPoとリチウム電池で冗長化しています。

取得したデータは以下の通りで、すべての搭載センサのデータが取得できていました。
GPST=528166: 打ち上げ、GPST=528175: パラシュート展開、GPST=528188: 着地 です。
加速度センサ
ジャイロセンサ
地磁気センサ
気圧センサ・リアルタイムGPS・後処理Kinematic GPSから得た高度の比較。x軸加速度の積分から得た最高高度は107mだった。
GPSで取得した飛行軌跡。赤: リアルタイム、青: 後処理Kinematic
可視衛星数
高度・飛行軌跡の比較からわかる通りGPSモジュールからリアルタイムで得られる座標は正しく機体の位置を表していません。
おそらくGPSモジュールの設定がデフォルトのPortableモードのままだったのが原因で、加速度4gのモードにすれば改善されるかと思います。

今後も何度か載せる機会がありそうなので、GPSのモード変更など、不具合を修正して挑みたいと思います。

2013/06/30

microSDカードを水没させる

計器の運用が始まってなかなか記事を書くネタがないのですが、生存報告代わりに簡単な実験の結果をまとめておきます。

鳥人間コンテストに出場する機体に取り付ける計器は最終的には水に浸かってしまうので防水が必須になります。
防水ケースと防水コネクタを使って対策を取れればよいのですすが、
  • 重量がかさむ
  • 水没直前まで動けば十分
  • 水没後はデータが保持できればよい
  • 計器の再利用は考えない場合が多い
等の事情があるので簡単な防水対策しか取られないことも多く、浸水を許してしまうことも多々あります。
そこで、データ記録媒体として多く使われているであろうmicroSDカードが水没した際にデータが保持できるのかを試してみました。

実験は、
  1. 通電しない状態
  2. 通電した状態
の2つの条件で行いました。
最も条件が悪いであろう海水への水没を想定し、海水より少し濃い目の約5%の食塩水を用意して1時間microSDカードを浸し、記録されたデータが保持できているかを確かめました。
microSDカードはSanDisk製2GBのものを使用しました。

1. 通電しない状態

通電せずに塩水に浸けた後にもデータを読みだすことができました。
microSDカードの外観にも変化はありませんでした。

2. 通電した状態

通電した状態での実験は、microSDカードを挿したUSBカードリーダをパソコンにつなぎ、カードリーダごと塩水に浸けて行いました。
塩水に浸けた直後から水が電気分解され、塩水から引き上げるまで泡が発生し続けました。
そのせいか、下の写真のようにカードリーダ・microSDカードの端子にはひどい腐食が発生しています。


端子の腐食のためこのカードリーダは使えなくなってしまいましたが、別のカードリーダを使ってmicroSDカードのデータは読み込むことができました。

実際に落ちることになる琵琶湖の湖水の電気伝導度は今回の実験条件より低く、計器の電源まわりもパソコンに比べればパワーがないので、端子の腐食はより少ないのではないかと考えられます。
データが保持できるかどうかは使うmicroSDカードなどの条件にもよるとは思いますが、水一滴の侵入も許さない防水をせずともデータが保持できる場合が多いのではないかと思います。

2013/05/05

プラスチック製5孔ピトー管の製作

迎え角・横滑り角の取得を目的として5孔ピトー管を作りました。
製作にあたってはUAV用のピトー管を作製している@hinokkuma氏のブログを大いに参考にしました。

試験飛行のときに作り方を何度か聞かれたので簡単にまとめておきます。

5本のパイプを十字に組む。太いパイプは外側のケースにあたる部分
太いパイプに組んだ5本のパイプを挿入、隙間をパテで埋め先端を整形する
圧力センサ基板にピトー管を取り付け、センサとつなぐ
使用した主要部品は以下の通りです。
細パイプ: evergreen scale models 3/32'' Tube
太パイプ: evergreen scale models 11/32'' Tube
チューブ: GEX スリムチューブ
圧力センサ: Freescale MPXV7002

詳しいデータの解析はまだ行っていませんが、ノイズが多いものの中央孔の圧力は対気速度に対応する値になっていそうです。
校正作業を行わないと圧力を迎え角・横滑り角の値には直せないので試験飛行の合間に進めていきたいと思います。

2013/05/01

MPU-6000のクオータニオン出力とロール・ピッチ・ヨー角の変換

タイトルの通り、MPU-6000のクオータニオン出力をロール・ピッチ・ヨー角に変換するために必要な計算のメモを作りました。
パイロットから姿勢角(特にピッチ角)表示の要望があったので、そのためにした計算をまとめたものです。
行列を含む数式が多いのでTeXで書いたものをPDFにしています。
ダウンロードは下からどうぞ。

クオータニオン出力とロール・ピッチ・ヨー角の変換

2013/04/27

GPSスプリッタ基板発注

以前に作製したGPSスプリッタ基板ですが、仕様を少し変えたものを発注しました。
前回のものは1台の(アクティブ)アンテナに2台の受信機をつなぐことを想定していたので、片側のチャンネルにDCカット用のキャパシタが入っていました。
このスプリッタを逆に2台のアンテナを1台の受信機につなぐために使うと、キャパシタが入っている側のアンテナに給電することができません。
今回発注したものは、片側のチャンネルのキャパシタを取り除き、分岐後の2チャンネルを対称な構造にしました。
それ以外の部分の設計は前回から変えていませんが、パターン図を以下に示します。

表面
裏面
今回基板を発注するにあたって、改めてマイクロ波シミュレーションは行っていませんが、
・前回の基板の実測データが基本的に満足できるものだった
・特性を乱す原因になる非対称性がなくなった
ので、前回と同等の性能が出るのではないかと思います。

基板が届き次第コネクタ等を取り付け、特性評価を行いたいと考えています。

2013/04/23

Sylphide Tools Helper

電装基板のログ解析に使用しているいわゆるSylphide Toolsですが、操作はコマンドラインインターフェースで行わなくてはいけないため、「黒い画面」に不慣れな人には使いにくい部分もありました。
そこで、バイナリ形式のログファイルをCSV形式に変換する指令を出すGUIプログラムをC#で作りました。

以下のリンクからダウンロードできます。

SylphideToolsHelper

環境によってはMicrosoft .NET Framework 4 Client Profileが必要になるかもしれません。

動作中の様子を以下に示します。



使い方はほとんど見たままですが、
1. Tool Dirボタンを押して処理プログラムのディレクトリを指定
2. Log Fileボタンを押して処理するログファイルを指定
3. Out Dirボタンを押して出力ディレクトリを指定
4. 下段のチェックボックスで出力するページを指定
5. Convertで変換開始
です。

異なるページは異なるスレッドに投げているので、複数コアのCPUの能力を活用して処理できるはずです。
Sylphide Toolsにはこれ以外にも様々な機能があるので、操作が複雑にならない範囲で機能を追加していきたいと思います。

2013/04/21

GPSチップアンテナ基板発注

以前手焼きの基板で実験を行ったGPSチップアンテナですが、FusionPCBに基板を発注しました。
今頃になって基板を発注した理由は、様々な姿勢をとり得るロケットに向いているかもしれないと考えたためです。
モノポールアンテナの一種であるチップアンテナは無指向性なので、指向性特性に限って言えば受信に有利であると考えられます。
しかし、OSQZSSのブログで指摘されている通り、マルチパスによる測位精度の劣化を考えると偏波に対する選択性のあるパッチアンテナが有利になります。
以前の比較実験ではパッチアンテナとチップアンテナの性能に大きな違いは見られませんでしたが、マルチパスの大きさは環境依存も大きいので、同程度の性能を持っていると判断するのは早計だったのかもしれません。

ほとんどコプレーナ線路しかないパターンですが、基板のガーバーデータを以下に示します。
表面
裏面
コネクタ等、部品の入手は済んでいるので、基板が到着次第受信できるかどうかの実験を行うつもりです。

2013/04/06

[新電装基板]受注状況

最近は電装基板の実装ばかりしていて技術的なネタがあまりないのですが、生存報告代わりに記事を書いておきたいと思います。

電装基板ですが、(各所での宣伝の効果もあって?)鳥人間とロケット用に計8枚の受注をいただきました。鋭意はんだ付け中ですが、現在までに7枚が完成し、ドキュメントの整備等を行っているところです。
作製中の様子
はんだ付けは数が多いという意味で結構大変でした。
作業環境としてはリフローでの作製も可能なので、残り1枚はリフローで作製し、作業時間や手間などを比較しようと考えています。

2013/02/27

[新電装基板]説明書公開

新電装基板の説明書を公開しました。

説明書ダウンロード[PDF 1.5MB]
からダウンロードできます。
対気速度計等のセンサの情報も載せているので、この基板を使わない場合でも参考になると思います。

2013/02/03

ファームウエア開発完了

新電装基板のファームウエア開発がほぼ完了しました。
基板の核となるマイコンPSoC 5LPのアナログ・デジタルブロックの使い方を変えることで入出力ポートにさまざまな機能を割り当てることができますが、人力機向けに以下のような仕様で開発を行いました。
ほぼ電装標準化計画のビラに書いた通りの機能で、Team'F'向けに開発している計器(紹介ページ1ページ2)からディスプレイを除き、センサ接続ポートを増やしたようなものです。
センサ接続ポートにはまだ空きがあるので、さらなる機能拡張も可能かと思います。

ファームウエアがほぼ完成したので、追加のテストを行った後、基板配布を行う予定です。
興味のある方はコメント欄やTwitterなどでお知らせください。
配布終了しました。

以下の機能説明で登場するXページというのは、Sylphideデータ形式に対応しています。
それに加えて人力機用拡張のHページも使用します。

100x80x12mm, 40g

オンボード機能

加速度・ジャイロ・気圧センサ: Aページ(100Hzで取得)

・3軸加速度+3軸ジャイロセンサ: InvenSense MPU-6000
加速度フルスケール/ 4 / 8 / 16 g
ジャイロフルスケール 250 / 500 / 1000 / 2000 dps
センサの温度特性等は過去の記事を参考にしてください
・気圧センサ: Measurement Specialties MS5611-01BA03
分解能: 6.5 / 4.2 / 2.7 / 1.8 / 1.2 Pa
このセンサを使った高度測定の結果は過去の記事を参考にしてください
他のセンサを使った高度測定との比較も過去の記事にまとめてあります

地磁気センサ: Mページ(100Hzで取得)

・3軸地磁気センサ: Honeywell HMC5983
フルスケール: 0.88/1.3/1.9/2.5/4.0/4.7/5.6/8.1 gauss

姿勢角: Nページ(100Hzで取得)

・MPU-6000のQuaternion出力をピッチ・ロール・ヨー角に変換したもの
姿勢角出力のテストの様子は過去の記事(1)過去の記事(2)に動画を掲載しています

GPS情報: Gページ(5Hzで取得)

・GPSモジュール: u-blox NEO-6P
搬送波位相の取得、Precise Point Positioningに対応
搬送波位相を使った固定点の高精度測位の様子は過去の記事(1)過去の記事(2)にまとめてあります
搬送波位相を使った飛行軌跡の高精度測位の様子は過去の記事にまとめてあります
Precise Point Positiningの評価は過去の記事にまとめがあります
高運動性(1/2/4g)対応のフィルタが利用可能
他のNEOシリーズにも対応可能

電源関係

Linear Technology LTC3586による電源管理
USBまたは1セルLiPoバッテリから給電
USB経由のLiPoバッテリの充電
USBの電流リミッタは1A/500mA/100mA/0mAからディップスイッチで選択

その他

・リアルタイムOS FreeRTOSによるタスク管理
・microSDカードへのSylphide形式のログ記録
・USBブートローダによるプログラマ不要のファームウエア更新
・USB経由の取得データ送信(FTDriverによりUSBホスト搭載のAndroid端末との通信にもおそらく対応)
・ユーザースイッチ x1
・XBee型モジュール: 1ch(XBee, XBee Wifi, Bluetoothなど)
・サーボ制御: PWM 4ch(RS485用のハードウエアも搭載。ただし未テスト)
・SylphideToolsによるオフラインINS/GPS解析
RTKLIBによるGPSデータの後解析

外部センサ

Hページ(25spsで取得)

・対気速度計・回転数計用16bitタイマ: 直接計数式x1 + レシプロカル式x2
直接計数式とレシプロカル式は切り替え可能
・超音波高度計用UARTポート
MaxBotixの超音波距離計に対応。機種によるフォーマットの違いにはソフトウエアが自動対応
・アナログ電圧入力: 16bit x8
入力電圧範囲は切り替え可能。デフォルトは0-1.024V
・アナログ基準電圧出力: 1.024V x4
電圧は変更可能

Fページ(25spsで取得)

・サーボに出力したパルス幅。ログは8ch分


2013/02/02

MS5611の読み込みエラー

計器の気圧センサにはMeasurement Specialties製のMS5611-01BA03を採用していますが、データの読み込みかたによってはたまにエラーが出るようです。
OSR=4096、100spsとセンサの限界に近いスピードで気圧と温度を交互に読み込んでいますが、下図のように気圧または温度のADC出力に0x000000がたまに出力され、次のAD変換データも異常な値を示します。
SPIバスをロジックアナライザで観察した結果。パケットリストの赤枠内が0x000000の異常値。青枠内には前回の結果と全く異なる値が見える
この現象はI2C、SPIの両方で起こり、バススピードによらず起こるようでした。

異常値対策のため0x000000の無視とその次のデータの読み飛ばしを行うようにしたところ、安定した気圧・温度の値が取得できるようになりました。

2013/01/26

Windows8でPSoC 3/5/5LPを使う

先日Bootloader Hostが起動しない、という記事を書きましたが、互換モードの設定を行っても起動しなくなってしまったので、Windowsの再インストールを行いました。

せっかくの再インストールの機会なのでWindows8を導入したのですが、ドライバ周りの対応が完全ではないらしく、いくつか注意する点があります。

1. MiniProg3のドライバがインストールできない

通常は自動でインストールされるMiniProg3のドライバがインストールされないので、手動で組み込む必要があります。
Cypress開発者コミュニティに対処方法が書いてあったので、その手順に従ってインストールを行いました。
この内容は近いうちにKnowledge Baseで公開されるようです。

2. USBUARTのドライバがインストールできない

USBUARTのドライバのinfファイルに署名がないせいで、インストールが途中で止まってしまいます。
Windowsをテストモードに入れることでこれは回避できます。
ベストテクノロジーのブログに同様のドライバのインストール手順が書いてあったので、参考にしてインストールを行いました。

今のところ上の2点以外は問題なく動作しています。
少なくともMiniProg3の問題はCypressで認識しているようなので、次のバージョンのPSoC Creator/Programmerでは改善されているのではないかと思います。

2013/01/23

InvenSense製慣性センサでのDigital Motion Processorの使い方II

InvenSenseからDigital Motion Processor(DMP)ライブラリが公開されました。
Developer's Cornerからダウンロードできます。
I2Cdevlibのライブラリではquaternion出力のみが利用可能でしたが、今回公開されたライブラリでは、歩数計、タップ検出、Android端末用方向検出も利用可能になっています。

これまで公開されていたライブラリとは違い、コードはすべてANSI Cで記述されているのでほとんどのマイコンで使えるはずです。
ダウンロードできるサンプルコードはMSP430向けのものですが、I2C周りの関数の追加すればDMPを利用することができます。

以下にPSoC 5LPに移植する上で気になった点をまとめておきます。

1. i2c_write, i2c_read関数

ドキュメント類に特に指定はありませんでしたが、MSP430のコードを参考にすると符号付き16ビット整数の戻り値が必要なようです。
0で正常終了、それ以外(サンプルコードでは-1)でエラーありを表しているようです。
この部分をSPIに書き換えればMPU6000等をSPI接続で使うこともできます。
SPI接続を行う場合には、読み込みを行う場合にレジスタアドレスのMSBを1にしておく必要があり注意が必要です。

2. 時間管理関数

ディレイ用の関数delay_msが必要ですが、必要なのは50 msまででした。
今回はCyDelayを利用しました。
また、内部時刻取得用の関数get_msも要求されていますが、データ取得のタイムスタンプ用なので用意しなくても問題はないかもしれません。
ここにはFreeRTOSのTick取得関数を使いました。

3. 数学関数

labs, fabsf, minが必要です。
math.h, stdlib.hで定義済みでないかを確認し、必要に応じて追加します。
GCCを使っている場合、fabsf, labsの追加は不要です。

4. ログ出力関数

log_i(...), log_e(...)というログ出力関数がありますが、利用しない場合は空関数をdefineしておきます。

5. 割り込み制御関数

これが最もプラットホームに依存する部分だと思います。
割り込みを利用するポート、ピン、コールバック関数がreg_int_cbの引数です。
PSoC 5LPとは相性が悪いので空関数として、割り込み処理は他の部分に記述しました。

テストプログラムmotion-driver-clientを動作させた動画を以下に示します。


以前に示したピッチ角表示と同じようなものですが、きちんと3軸が動作しているのがわかります。

実際に動作させていくつか気になった点があったのでまとめておきます。

1. SPIバスのスピード

DMP出力は1024バイトのFIFOから読み出しますが、SPIクロックが高くなると読み出しが不安定になる傾向がありました。
また、内蔵プロセッサにコードを流し込む際にも、クロックが高いと失敗することがありました。
動作が不安定な場合はクロックを下げてみるとよいかもしれません。

2. FIFOリセット関数

内部に50 msのソフトウエアディレイが入っているので、FIFOリセット関数mpu_reset_fifoが頻繁に呼び出されるとサンプルレートを上げることができません。
FIFOがオーバーフローしないように必要最小限のDMP出力レートをdmp_set_fifo_rateで設定する必要があります。

3. ジャイロのフルスケールレンジ

DMPは2000 dpsのレンジを仮定して計算を行うようで、それ以外のレンジだと異常なquaternionが出力されます。
加速度のレンジは2, 4, 8, 16 gのどれでも構わないようです。

ライブラリの公開でDMPはかなり利用しやすくなりました。
現在作製している電装基板にはquaternionから求めた姿勢角のリアルタイム出力、ログ機能も追加し、機体に搭載してどの程度使えるものなのかを調べてみるつもりです。

2013/01/19

BGAのリフローはんだ付け

XBee型GPSモジュールの基板が届いたので組み立てを行いました。
BGAパッケージのGPSチップを使ったので、はんだ付けにはリフローが必須になります。
1mmピッチBGA99パッケージのGPSチップ
以前LGAのリフローはんだ付けを行いましたが、はんだマスクの作製などの条件がより厳しくなっています。
基本的にはSwitchScienceのページと同じ手順で作業を行っています。

1. はんだマスクの切り出し

SwitchScienceのページにある手順に従って、CraftROBOでポリプロピレン合成紙を切り出しました。
切り出したはんだマスク。左側が今回使うもので、右側は一緒に作った電装基板用マスク
きれいに切り抜けるのは0.65mmピッチ程度までです。
QFP100の部分を見てわかるとおり、0.5mmピッチでは切り出す方向によって差があり、成功率は半々といったところです。
0.4mmピッチの部分はほぼ全滅でした。

SwichScienceのページには「セロハンテープで、切った部分を取り除く」とありますが、何度もテープをくっつけるとポリプロピレン合成紙の表層をはがしてしまうことがあるようです。
一度で取り除けない箇所はきちんと切り抜かれているかを確認したほうがよさそうです。

2. クリームはんだの塗布・部品のマウント

作製したマスクを使ってクリームはんだを塗布します。
クリームはんだ・スキージは以前にLGAで使ったものです。
クリームはんだ塗布
きちんと塗布できているかを確認した後、部品を載せます。
部品マウント完了


3. リフロー

リフローはアイロンとホットエアを併用して行いました。
アイロン単体でのリフローも行えるようですが、手元にあったもの(EPI International, EP-A1001)では温度が十分上がらなかったので、プリヒートをアイロン単体で行い、本加熱にはホットエアを併用しました。

使用した電気二重層コンデンサELNA DCK-3R3E224-Eがリフローに対応していなかったようで、加熱中に電解液が漏れだしてしまいました。
すぐに取り除いたのでその後の作業に影響はありませんでしたが、事前にリフロー対応か否かを確認しておくべきでした。

手はんだでコネクタ等を取り付けて完成です。
完成した基板
テスターで導通を確認した結果、チップから外に引き出した信号線にはすべて導通があり、GPSモジュールの基本的な動作も確認できました。

このモジュールを使って搬送波位相を取得し、u-bloxのモジュールとの比較を行いたいと思います。

2013/01/15

LEA-6TとNEO-6Pの単独測位精度の比較

u-bloxのGPSモジュールNEO-6Pを手に入れたので、これまで使っていたLEA-6Tと測位精度を比較してみました。
NEO-6PにはPrecise Point Positioning (PPP)という機能がついていて、位置出力のばらつきが小さくなると謳われています。

以前に作製したGPSスプリッタで受信した信号を2台のモジュールに分岐し、5Hzで12時間分のデータを取得、平均座標を中心にばらつきをプロットしたものが下の図です。
PPPの効果は確かにあるようで、NEO-6Pでは測位解が中心付近に集まっています。

中心からの距離を横軸にして、累積比率をプロットしたものが下の図です。
赤: LEA-6T, 青: NEO-6P
この図から平均誤差半径(CEP)はLEA-6Tで3.9m、NEO-6Pで3.8mとなりました。
これはNEO-6Pのデータシートにある、CEP=1mより大きな値です。
今回の測位では、
  • さまざまなGPS衛星の配置に対する評価を行うために長時間のデータを取得した
  • 空が完全には開けていない場所で測位を行った
ので、データシートでの測位条件を満たしていなかったことが原因として考えられます。

NEO-6PはLEA-6Tと同じ値段かつ小型で、LEA-6Tの特徴である高精度クロックは不要なので、今後はNEO-6Pをメインに使っていくつもりです。

2013/01/09

XBee型GPSモジュールの設計

搬送波位相が取得できるGPSモジュールとしてこれまでu-bloxLEO-6T/NEO-6Pを使用してきましたが、入手先はほぼメーカー直販に限られ、メーカーサンプル価格も179USDとかなり高価でした。

u-blox以外で搬送波位相が取得できるモジュールにはNVS Technology AGNV08Cがあります。
入手性はu-bloxのものより良好で、Leocomではチップ単体で3200円、モジュールで5600円程度で購入可能です。
u-blox等のGPSモジュールとの比較レポートを見ると、品質はu-bloxに比べて劣るもののきちんと搬送波位相が取得できているようです。
また、ファームウエア更新で搬送波位相の品質が向上したようなので、u-bloxのものと同程度のデータが取得できると予想できます。
新しいバージョンのRTKLIBではNV08Cの独自フォーマットBINからRINEXへの変換も可能で、ソフトウエアの整備も徐々に進んできているようです。

そこで、電装基板にこのモジュールを簡単に載せられるようにXBeeとピン配置互換の基板を起こしてみました。
XBee-USB変換基板を使えばパソコンを使ったテストも簡単にできるはずです。
GPSチップのパッケージはBGAですが、外周2列以外はほとんど無接続端子なので2層基板でも配線を引き出すことが可能です。

部品代5000円程度で搬送波位相が取得可能なGPSモジュールが作れるので、搬送波位相を利用する上での障壁はだいぶ低くなると思います。