新しく作ったボードでSAM3Nを使ったLチカができたので、今度はSAM3Sの方を使って加速度センサーとSPIフラッシュを使ってみました。
SPIフラッシュにはFatFsを使ってファイル書き込みができますので、加速度変化のログを記録する実験をやってみました。これまで、MMA8452QやMMA8652FCではイベント検出の実験ばっかりやっていて、加速度データを直接読み出すような「普通の使い方」をまったくやっていませんでした。今回はMMA8652FCのFIFOとHPFを有効にして、取得した加速度データを記録してみました。
MMA8652FCではMMA8451Qと同じように32サンプル分のFIFOが用意されています。12ビットの分解能で使用した場合には、実際のデータは2バイトになりますが、このデータをX, Y, Z軸の各軸毎に32サンプル分FIFOに貯めておくことができますので、2×3×32=192バイトの容量のFIFOを持っていることになります。今回はデータの出力レートを200Hz、FIFOの動作モードをFillモードに設定。この設定だと32サンプル分のFIFOが一杯になると割り込みで知らせてくれますが、それには160msかかることになります。そのため、読み出したデータをSPIフラッシュに書き出していても充分に時間に余裕があります。そこで、取得したデータは、FatFsのf_printf()関数を使ってCSV形式で書き込むことにしました。
データが記録できたら、MSCを有効にしてボードを再起動。記録したファイルを読み出してGoogole DriveのSpread sheetでグラフ化してみました。縦軸の値は12ビットのデータを16ビットに左づめしていますので、実際の値を16倍したものになっています。
ダブルタップを3回行った様子です。タップ操作では、急峻な加速度変化が生じていることが良くわかります。
こちらは、基板を縦に持った腕を振り下ろしてみました。しっかりと振り止めたつもりでもタッピングと違って反動が続くことがよくわかります。
どちらの例もハイパスフィルタ(HPF)を有効にしていますので、静的に加わる重力加速度成分が打ち消されたデータを読み取ることができています。そうは言っても、HPFが重力加速度を消し去るにはいくつかサンプリングしてみなければならないはずです。ダブルタップの例ではZ軸、振り下ろしの例ではX軸の加速度値が最初に下がってほぼゼロになっているのが読み取れます。これは、タッピングではZ軸を上にて基板を置き、振り下ろしではX軸を上にして実験を開始した事実と符号しています。この立ち下がり時間が、HFPが働いて重力成分を消し去るのに要している時間なのでしょう。
SPIフラッシュにはFatFsを使ってファイル書き込みができますので、加速度変化のログを記録する実験をやってみました。これまで、MMA8452QやMMA8652FCではイベント検出の実験ばっかりやっていて、加速度データを直接読み出すような「普通の使い方」をまったくやっていませんでした。今回はMMA8652FCのFIFOとHPFを有効にして、取得した加速度データを記録してみました。
MMA8652FCではMMA8451Qと同じように32サンプル分のFIFOが用意されています。12ビットの分解能で使用した場合には、実際のデータは2バイトになりますが、このデータをX, Y, Z軸の各軸毎に32サンプル分FIFOに貯めておくことができますので、2×3×32=192バイトの容量のFIFOを持っていることになります。今回はデータの出力レートを200Hz、FIFOの動作モードをFillモードに設定。この設定だと32サンプル分のFIFOが一杯になると割り込みで知らせてくれますが、それには160msかかることになります。そのため、読み出したデータをSPIフラッシュに書き出していても充分に時間に余裕があります。そこで、取得したデータは、FatFsのf_printf()関数を使ってCSV形式で書き込むことにしました。
データが記録できたら、MSCを有効にしてボードを再起動。記録したファイルを読み出してGoogole DriveのSpread sheetでグラフ化してみました。縦軸の値は12ビットのデータを16ビットに左づめしていますので、実際の値を16倍したものになっています。
ダブルタップを3回行った様子です。タップ操作では、急峻な加速度変化が生じていることが良くわかります。
こちらは、基板を縦に持った腕を振り下ろしてみました。しっかりと振り止めたつもりでもタッピングと違って反動が続くことがよくわかります。
どちらの例もハイパスフィルタ(HPF)を有効にしていますので、静的に加わる重力加速度成分が打ち消されたデータを読み取ることができています。そうは言っても、HPFが重力加速度を消し去るにはいくつかサンプリングしてみなければならないはずです。ダブルタップの例ではZ軸、振り下ろしの例ではX軸の加速度値が最初に下がってほぼゼロになっているのが読み取れます。これは、タッピングではZ軸を上にて基板を置き、振り下ろしではX軸を上にして実験を開始した事実と符号しています。この立ち下がり時間が、HFPが働いて重力成分を消し去るのに要している時間なのでしょう。