ファームウエア開発完了

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分