2011/06/27

キャリブレーション用治具の製作

加速度・ジャイロ・地磁気センサの校正に使う直交治具を作りました。
キャリブレーション用治具
ジュラルミンの板を3枚貼り合わせています。
直交しないと治具の意味がないので、端面はすべてフライスで仕上げました。

本当ならば、アルミのブロックから削り出しで作ればよかったのですが、大きなブロックは高価なのでこのような作り方にしました。

そろそろ6軸センサのMPU-6050が入手できるようになりそうなので、センサを貼りかえたあとにこの治具を使ってキャリブレーション作業を行うつもりです。

2011/06/19

SDカードのテスト

前回の記事で、ロガーのサンプルレートがSDカードの書き込み速度に影響を受けていて、SDカードによって個体差が見られると書きました。

サンプルレートに影響を与えると考えられるパラメータは、SDカードの書き込みスピード、特に小さなファイルの書き込み能力であると考えられます。
そこで、SDカードの書き込み速度をCrystalDiskMarkを使って測定してみました。

SDカードの書き込み速度の比較


上の図が測定結果です。
CrystalDiskMarkでは書き込み速度の最大値を記録するので公平な比較ではないかもしれませんが、カードによって10倍以上の差が見られます。
特に性能が高い、Panasonic 2GBとToshiba 2GBはClass4のカードでした。

これらのカードにデータを記録し、サンプル間の間隔を測定し、ヒストグラムにしたものが下の図です。
きちんと100spsが出ていれば、0.01秒のところに記録した15000点がすべて集まるはずです。

サンプル間の時間のヒストグラム
ヒストグラムにはカードごとに癖が見られ、サンプルレートはカードによって10sps程度の差が見られます。
全体的な傾向としては、1GBのカードのもののほうが高いサンプルレートが得られるようですが、CrystalDiskMarkで測定した書き込み速度とはあまり相関がないように見えます。

カードの容量は1GBで十分なので、今回一番高いサンプルレートが出たKingmax 1GBのカードを主に使用したいと思います。

2011/06/04

PSoC3でI2C通信

作製している電装系の基板には、
を搭載しています。

これらのセンサのログは100spsで取得するように設定していたのですが、実際に動かしてみると65sps程度しか出ませんでした。
搭載しているマイコンPSoC3の行っている仕事は、センサからのデータ読み出しの他にも、ディスプレイ表示やSDカードへの記録がありますが、調べてみるとデータ読み出しの部分がサンプルレートを制限していることがわかりました。
そこで、データ取得プログラムのどこがボトルネックになっているか調べてみました。

先に挙げたセンサ類はすべてデジタル出力タイプで、PSoC3とは400kbpsでI2C通信しています。
一度に取得するデータは高々20バイト程度なので、正しく通信が行われていれば100spsでのサンプリングには十分に余裕があるはずです。
実際に通信の様子がどうなっているのかをロジックアナライザで調べてみたのが下の図です。
  
2バイトずつ読み込みを行ったときのI2C通信の様子
一番下が40ミリ秒間のデータですが、長いACK(青緑色)が送られているせいで、かなり通信に時間がかかっていることがわかります。
この原因が何なのかはわからなかったのですが、2バイト単位のセンサのデータを一度に読み込まず1バイトずつ読み込むことで、このような問題が起きないことがわかりました。
下の図に1バイトずつデータを読んだときの通信の様子を示します。
1バイトずつ読み込みを行ったときのI2C通信の様子
先ほどと同様に、一番下が30ミリ秒間のデータで、長いACKは姿を見せず、きちんと通信ができていることがわかります。
このときのサンプルレートは92spsになりました。
100spsに届かなかったのは主にSDカード書き込みの部分によるもので、SDカードによって個体差があることまではわかっています。
この部分の対策はなかなか難しそうなので、何枚かSDカードを比較して、一番よい結果が出たものを使うことで対応しようと考えています。