こんにちは、
手動でキャリブレーションを行い、キャリブレーションデータ(10要素)を保存しました。電源を入れると保存したデータを使い始め、正常に動作します。
その後、短時間(20M)実行した後、ヘッディングがずれていることがわかり、現在は4要素のリアルタイムデータが使用されていることを確認しました。
長時間(約 1 時間)走行した後、方向が正常に戻っていることがわかります。今度は 10 要素を再度使用します。
新しい調整済みデータをいつ使用するかを制御する方法はありますか?リアルタイム キャリブレーションは現在と同じように実行されるはずです...
ありがとうございます
クリスティ
ありがとう、マイク。
クリスティ、
1) はい、環境干渉によりキャリブレーションが狂う可能性があります。キャリブレーションルーチンでは、周囲の磁場が一定であり、地球の磁場と等しいと想定します。それが一定でない場合は、物事がうまくいかなくなる可能性があります。
2) 温度変化による方位誤差の量は方向に依存すると予想されます。磁気センサの X チャネルと Y チャネルは本質的に同一の要素ですが、90 度回転しています。したがって、デバイスが水平の場合、1 次項はキャンセルされます (比率の逆正接を見ていることを思い出してください)。Z軸要素は構造が異なります。水平からの回転では、測定されたフィールドに Z コンポーネントが含まれるため、それらが同じように変化するとは期待できません。上記のすべては、多くのアプリケーションが他のコンポーネント(つまり温度依存のフィールドを生成するスピーカー。バリエーションは無限にあり、一般的なケースを簡単に特徴付けることはできません。つまり、特定のデザインを評価して、それがどの程度うまく機能するかを確認する必要があるということです。
よろしくお願いいたします。
Mike
こんにちは、Mikeさん
MAG バックグラウンド キャリブレーションをオフにすると、システムを長時間 (24 時間以上) 実行した後でも方位は良好になります。
その後、電源を再度オフ/オンしても、方向に大きな違いはありません。
1) 環境干渉により、バックグラウンド キャリブレーションによって問題が発生する可能性はありますか?
2) Freescale MAG チップに基づく温度によって発生する最大の方位誤差はどれくらいですか?
ありがとうございます
クリスティ
クリスティ、
mqx_tasks.c の Fusion_task() 関数新しい磁気キャリブレーションを開始するコードが含まれています。変数名「initiatemagcal」を探します。このコードセクションを微調整することで、磁気キャリブレーションをいつ開始するか、あるいは開始しないかに関する独自の戦略を作成できるはずです。
Mike
マーク様へ
どうすればいいか分かりますか?
別の質問: キャリブレーション ルーチンの実行を停止すると、コンパスの読み取りは最後にキャリブレーションされたデータに基づきます。保存したキャリブレーションを使用していて、キャリブレーション ルーチンを実行しない場合、保存したキャリブレーション データが常に使用されて方位が計算されますか?
MAG の仕様を確認しましたが、ゼロオフセットと温度ドリフトに大きな違いはなく、同じ環境で使用してデータを調整した場合、10 度以上の差は発生しないでしょうか?
私のアプリケーションでは、3 軸で完全なキャリブレーションを行う方法はありません。そして、3軸で完全な回転を行わないと、状況が悪化することがわかりました。完全なキャリブレーションを行うと、キャリブレーション済みデータを使用した場合とほぼ同じ結果が得られます。
ありがとうございます
クリスティ