こんにちは、
MMA841加速度センサを使用しています。
安定した状態では、X、Y、Z 軸でより高い値のデータを取得できます。
安定した状態で X、Y、Z 軸のデータがゼロとして読み取られるように加速度センサを調整したいと思います。
これについては、アプリケーション ノート AN-4069 を参照してください。AN-4069 の手順に従いました。
キャリブレーションには次の手順を使用し、Accel_offset_X、Accel_offset_Y、Accel_offset_ZはAN-4069に示されているとおりに計算されます。
MMA8451_WriteReg(MMA8451_CTRL_REG_1, 0x018);
MMA8451_WriteReg(0x2F, アクセルオフセットX);
MMA8451_WriteReg(0x30, アクセルオフセットY);
MMA8451_WriteReg(0x31、アクセルオフセットZ);
MMA8451_WriteReg(0x2A, CTRL_REG1_Data);//アクティブモードを設定
これにより、キャリブレーション プロセスが機能するようになります。
しかし、上記の手順を無効にしてデバイスを再プログラムすると、キャリブレーション前の元のデータが表示されます。
間違った方向に進んでいる場合は助けてください。
-アムリーン
アムリーン、
1.組み込みのモーション検出機能は、過渡検出機能のようにハイパスフィルタリングされたデータを使用しないため、モーション検出のしきい値を設定する際には、重力による静的加速度を考慮する必要があります。
2. 動きが検出されていないことを確認してください。動き検出にZ軸も有効にして、しきい値を例えば次のように設定すると、0.5g の場合、デバイスの向きに応じて Z 軸が +1g または -1g になるため、デバイスは水平で静止した状態で常に Z 軸上の動きを検出します。
よろしくお願いいたします。
トーマス
こんにちは、トーマス。
先ほどの返信ありがとうございます。
キャリブレーションに関して2つの質問があります。
1) Z 軸をキャリブレーションすると、1G より上または 1G 近くに設定されます。動きについて (X、Y、)Z 軸を監視する必要がある場合は、Z 軸の基本値が 1G であるため、しきい値を 1G より上に設定する必要があります。
2) しきい値を 1G 未満に保ち、X、Y 軸でモーション検出を有効にすると、動きが検出されますが、動きがしきい値を超えていても、X、Y とともに Z 軸も有効になっている場合は、モーションが検出されないことが確認されました。予想通りの動作ですか?
アムリーン、
部品の電源が切断されると、オフセット レジスタ (0x2F - 0x31) に書き込まれた値は保持されないため、表示されている内容は正しいです。MMA8451Q の電源を入れ直すと、オフセット レジスタはデフォルト値の 0x00 に戻ります。
したがって、キャリブレーション値を MCU フラッシュ メモリまたは外部不揮発性メモリに保存し、起動シーケンス時にオフセット レジスタに書き込むことをお勧めします。
よろしくお願いいたします。
トーマス