2012/12/30

PSoC Creator 2.2でBootloader Hostが起動しない

PSoC Creator 2.2付属のBootloader Hostは環境によっては立ち上がらないことがあるようです。
Windows 7 64bitの環境2つで試してみましたが、いずれも下のようなメッセージが出て起動しませんでした。


この問題はBootloader Hostを互換モードで立ち上げることで回避出来るようです。

Bootloader Hostのショートカット設定
問題のあった2つの環境では、この対策を行うことでプログラムが立ち上がるようになることが確認できました。

これでUSB Bootloaderを仕込む作業を再開できそうです。

2012/12/23

PSoC 5LPはじめました

PSoC 5の進化版PSoC 5LPが入手できるようになったので貼り替えて使ってみました。
100ピンTQFPタイプのPSoC 5LP。型番のマーキングが見やすくなっている
PSoC 5LPには1KBの命令キャッシュが新たに搭載され、31 %性能が向上すると謳われています。
20 us程度かかっていた処理が16 us程度で終わるようになったので、少なくとも20 %程度は性能が上がっているようです。

搭載モジュールの構成にもよりますが、PSoC 5LPは同等の性能を持つPSoC 3/5より安い場合もあるようです。
PSoC Creatorで「標準」とされているチップで比較すると、
PSoC 3: CY8C3866AXI-040 $19.46
PSoC 5: CY8C5568AXI-060 $26.79
PSoC 5LP: CY8C5868AXI-LP035 $15.38
となって、最も性能が高いものが最も安くなっています。

今後はPSoC 5LPをメインに使っていくつもりです。

2012/12/20

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

計器に搭載しているInvenSenseの加速度・ジャイロセンサですが、Digital Motion Processorと呼ばれる機能を使うと、センサの生データだけではなく6(9)軸分のセンサデータから計算したQuaternionによる姿勢出力を得ることも可能です。
Quaternion出力が得られれば、(逆)三角関数の計算数回程度で演算能力の低いマイコンでも姿勢角を得ることができます。

以下にDMPの使い方の参考になる情報源等を紹介しておきます。
DMP出力を利用するためには、センサ内蔵のプロセッサにコードを流し込む必要があります。
初期化コードは最大で3 kByteほどのようです。

1. I2Cdevlibで公開されているライブラリ

多数のI2Cデバイス用のライブラリを公開しているI2Cdevlibのライブラリを利用するのが今のところ最も簡単なDMPの使い方だと思います。
基本的にArduino向けに書かれたものですが、I2Cの足回りを変更すれば他のマイコンでも使えます。
ただし、必要に応じてCに移植する必要はあります。

ここで公開されているコードはInvenSense製の評価キットのI2Cバスの信号を解析した成果のようで、生データも公開されています。

このライブラリを計器に組み込み、バーグラフにピッチ角を表示したものを下に示します。


I2Cの足回り等のデバイス依存部をPSoC 3/5用に移植しC++で動作確認後、公式にサポートされているCに移植しました。
PSoC CreatorはオフィシャルにはC++には対応していませんが、問題なくコンパイルは行えるようです。

2. InvenSenseのDeveloper's Cornerで公開されているライブラリ

InvenSenseもDMPを使うためのライブラリを公開していますが、基本的にはI2Cdevlibのものと中身は同じです。
I2Cdevlibにはない最新版(ver. 5.1)のコードはMSP430用のものしかないので、マイコン用のライブラリよりドキュメント類や可視化プログラムのほうが有用です。
近日中にver. 5.1のデバイス非依存なコードがリリースされるとの情報がForumでは確認はできていますが、現時点では利用できないようです。

Developer's Cornerからダウンロードできる資料によると、Quaternionはジャイロの積分値を加速度センサで補正して求めているようです。
また、計算は固定小数点で行われているようです。

公開されている可視化プログラムのTeaPotデモを実行した例を下に示します。

静置試験開始時
10分後

姿勢角が正しく取得できていること、10分間の静置の後も重力加速度による補正が効かないヨー角のドリフトが少ないことが確認できています。
この実験は地磁気センサなしで行ったものですが、地磁気補正を入れればさらにヨー角の安定性は増すと思われます。

3. MotionFit SDKのバージョンに関する注意

プロセッサに流し込むコードにはver. 2.0, ver. 4.1, ver. 5.1の3種類があるようです。
これらの区別は、256バイトごとに区切られるメモリバンクの先頭を比較することで行えます。
Bank 4の先頭がver. 2.0, ver. 4.1, ver. 5.1ではそれぞれ0xB4, 0x96, 0xD8となっています。
ver. 5.1より古いものでは加速度センサ・ジャイロセンサのゲインは指定された2g/2000dpsでないとならないらしく、それ以外の設定では異常な姿勢角が出力されることが確認できています。

現時点では一般のマイコンでver. 5.1でDMPを利用できるライブラリはないので、MSP430とMPU-6000をつないだ評価キットもどきを作って、I2Cバスの信号を解析しようとも考えています。

センサの組み合わせ基本的に加速度とジャイロなので、大きな加速度がかかるような環境下では正しい姿勢角が計算できないはずです。
加速度がかかった場合にどの程度の姿勢角のずれが生じるのかをテストして、(特に人力飛行機用として)どの程度使えるかを確認するつもりです。

2012/12/08

SDカードの比較

前回行ったSDカードの書き込み速度テストですが、SDカードによって結構な差があるようなので、いくつかのものを比較してみました。
結果は下の図です。
SDカードの書き込み速度の比較。ライブラリはFatFsを使った。
以前のテスト結果と同じように、一度に書き込むサイズが小さい領域では2 GBのものより1 GBのもののほうが高速なようです。
この傾向からするとより小さい容量のカードを使えばもっと高速に書き込みができるはずです。
512 MBのカードは店頭からほとんど消えかかっていますが、手に入ったらテストしてみようと思います。

2012/12/06

FatFsとemFileの書き込み速度比較

新しい基板にSDカード書き込み機能を実装するにあたって、PSoC 3/5で使用可能な2種類のライブラリの性能を比較してみました。
ひとつはPSoC Creatorに付属のSEGGER社のemFile、もうひとつはおなじみFatFsです。
PSoC 3/5用に移植したFatFsはF-tecのページで公開されているものを使いました。

SDカード(=SPIモジュール)に与えるクロックを25 MHz、CPUクロックを50 MHzにして書き込み速度を比較したのが下の図です。
ただし、PSoC 3/5のSPIモジュールに与えられるクロックは18 MHzまでなので、オーバークロックになっています。
SDカードの書き込み速度の比較
今回はロガー用途で、比較的小さなサイズの書き込みを行うので一度に書き込むサイズは2^0から2^15までを調べました。
全体的にFatFsのほうが書き込みが速く、特に小さなサイズの書き込みでは2倍以上の差があります。

一度の書き込みにかかる時間は512 byte程度までは同じで、emFileで10 ms程度、FatFsで5 ms程度でした。
書き込みにかかる時間が5 ms程度であればデータ取得の合間に十分処理できるので、FatFsを使ってロガーのプログラムを書いていこうと思います。

2012/12/02

Maker Faire Tokyo 2012出展しました

DIY系イベントMaker Faire Tokyo 2012@fenrir_nさん@ina111さんとともに出展してきました。

展示内容は基本的に去年と同じような感じだったのですが、展示物が増えるなど多少進化はしています。

1. 姿勢表示追加

6軸加速度ジャイロセンサMPU-6050のDigital Motion Processorを使って姿勢を表示できるようにしました。
データとしてはピッチ・ロール・ヨーが出ますが、今のところは表示はピッチ角のみです。

センサ内部の姿勢計算アルゴリズムの詳細はわかりませんが、ジャイロの積分値を重力加速度の向きで補正しているようです。

2. 記録飛行の動画作成

10/22に行われた記録飛行の動画に各種計測値を入れたものを会場では流していました。
いろいろなポイントから映像を撮っていたので、4つの動画を組み合わせています。

3. 新基板作製中

新しい電装基板
一ヶ月ほど前に書いた記事の通り、新しい電装基板を作っています。
まだ届いていないGPSモジュール以外を実装して、これから各センサの動作チェックなどを行うところです。

4. ピトー管作製中

上の基板を発注するついでに、ピトー管用の圧力センサ基板を起こしました。
ピトー管用圧力センサ基板
これからピトー管の本体を作ります。
5孔のものを作って迎え角や横滑り角が測定できるかも試してみるつもりです。

展示を見ていただいた方々やその他関係者のみなさま、ありがとうございました。