回答:
私はここで多くのことを言いますが、そのうちのいくつかはpingsweptに同意することを含み、いくつかはペンジュインに同意することを含みます。
16ビット、100 Hzでのcr3000サンプリングは、データからノイズを簡単に除去するために少し遅くなりますが、それよりもはるかに高い精度で使用できます。優れたフィルタリングアルゴリズムを使用しなくても、13ビットまたは14ビットの精度が得られるとは思いません。加速度計は、振動が悪魔である爆破されたフォノンであることを教えてくれました。
データシートに示されているように、理論的に示されているように、確認する必要があります。データシートを引用するには:
これは、レートを50Hz未満に保つためにコンデンサを選択する必要があることを意味します。これより上に配置すると、エイリアシングを得ることができ、エイリアシングにより、振動ノイズが契約に署名した悪魔になります。デバイスからのノイズレベルの計算方法が記載されており、50Hzの帯域幅で.006 *のピークツーピークノイズがある場合、振動があるデバイスでこれを検出しても重力は気づかれません。
これはおそらくあなたが最も興味を持っていることであり、比較的簡単に実行できます。デバイスがニュートラルである時間をタグ付けする必要があります。これは、デバイスがフラットで比較的静止している場合です。この時点で1〜2秒待ってから、このデータの中央値を取得して、非G電圧を決定できます。次に、これをデバイスを比較するポイントとして使用できます。さて、この時点から、データシートを直接引用できます。
したがって、あまり傾けない場合はこの近似値を使用できますが、極端に小さくない方向と角度の両方に傾ける場合はジオメトリを使用する必要があります。
あなたが大きくなるつもりなら、彼らは方程式を次のように綴っています:
私が電話できる限り、あなたのデバイスはそれに置かれた加速度の1Gごとに1Vの変化を与えます。キャリブレーションフェーズを完了したら、測定を行い、オフセットを差し引くことができ、経験したGの数が得られます。
急速に変化するシステムや、サンプルを実行するデバイスをプログラムするシステムのアプローチを改善するために、他のアプローチや方法についてもう少し話を加えました。
1秒間に20〜30回方向を測定する必要があるため、デバイスが加速する方向を変更する速度よりもかなり速くサンプリングする必要があります。他の影響による振動ノイズと加速度を除去するのに十分な速さで測定できるようにする必要があります。これは、加速度計を使用するときに非常に大きいことがわかっています。
第二に、3軸の加速度計がある場合、1つの軸が重力のために加速度の一部を失っていることを非常に簡単に認識することができます(つまり、z軸の振幅が2m / s ^ 2になると、あなたが他の軸で見たゲインは重力です)。これは依然として厄介ですが、一般に、方向を変更するために必要な速度を与える加速度が追加され、その後、方向の変更による加速度の変化があり、多くの場合、方向を認識できます。
これは、ペンジュインが言ったように、2軸の加速度計ではほとんど不可能であり、1秒間に20〜30の異なる方向を持つことができるシステムがある場合、または正確な方向の測定が必要な場合常時。修士課程の学生はこれについてかなり良い論文を書くことができ、博士号はこのアルゴリズムの改善に関する論文を書くことができると確信しています。
さらに追加すると、デバイスをデバイスの動きに静的にロックし、振動を減衰させるものの上にデバイスを置くことができれば、はるかに優れた数値が得られ、ソフトウェアフィルタリングはそれほど必要ありません。加速度計とデバイスの間にいくつかの単純なフォームタイプのパッドを配置できます。デジタルの場合、電気ノイズが増加せず、振動ノイズの吸収に役立ちます。これは、振動ノイズに問題がある場合にのみ行う必要があります。
SPIを使用して接続できるデジタル加速度計をお勧めします。データは非常に高いレートでクロックアウトでき、SPIが次の値のセットをロードする一定の作業を行うため、バックグラウンドで作業できます。デジタルで行うには、素敵なマイクロコントローラーが必要です。あなたが何をしたいのかについてより良い詳細を私に与えることができれば、私はより良いフィードバックを与えることができます。傾斜検出に基づく警告が必要な場合は、すべてのアナログで非常に簡単に行うことができますが、操作中に機器の位置と角度を測定したい場合は、いくつかの作業の準備をします。
この回答をより明確にするため、または探しているものに適用できるようにするために追加できるものがあるかどうかをお知らせください。
私はこの答えを何度もクレイジーな数学的アイデアで書き、書き直しましたが、正直に言ってこれが正確にできるとは思いません。ベクトル演算を実行できますが、次の場合はどうなりますか?
この種のことを行うためのクレイジーな回避策があると確信していますが、それが価値があるかどうかはわかりません。加速度計はこのタスク用に設計されていません(少なくとも私の知る限り)。あなたが達成しようとしているものについては、これらのいずれか を 使用したジャイロスコープのアプローチをお勧めします。これらはすべて、上記の問題のすべてに対してかなり耐性があります。
データシートを正しく理解している場合、各軸の出力は、軸を中心に傾けると1.5 V〜3.5 Vの間で変化します。デバイスがフラットの場合(±1度のパッケージアライメントエラーを無視)、両方の出力は2.5 Vを読み取る必要があります。
一方向の傾斜のみを測定する必要がある場合は、2.5 Vからの偏差のアークサインを取得してラジアン単位の角度を取得し、度に変換できます。デバイスが任意の方向に傾斜できる場合、2つの角度を計算し、それらから複合角度を計算できます。
明確にする:1つの軸の周りの角度=(180 /π)* arcsin(Vout-2.5)
良好な周波数応答を得るには、小さな出力コンデンサCxとCyが必要です。脚注6から データシートの3では、0.02 uFが250 Hzの帯域幅を提供するように見えますが、これはおそらくサンプルレートにほぼ適しています。おそらく帯域幅を50 Hzに制限して、0.1 uFまで上げることができますが、信号は減衰し始めます。
私の2番目の答えは大きいため、2番目の答えを追加します。
エイリアシングレート(50Hz)を下回るようにするには、フィルターキャップを0.10 uF以上にする必要があります。Z方向のすべての重力加速度で、デバイスの座位レベルで数秒のキャリブレーションフェーズを与える必要があります。これは、ゼロGポイントを決定するためです。
ゼロGポイントで測定する電圧は、おそらくX方向とY方向で異なり、何も表しません。あなたが得るどんな電圧でもそれからそれを差し引くだけです。オフセットを差し引いたこの電圧は、その方向に到達しているGの数です。
弧を描いて、その方向に角度を付けます。
これは、ノイズやその他の加速を無視します。NaNが完全に傾いていてノイズがある場合、NaNが結果になるように準備してください。
角度を取得するには、X方向とY方向の両方の重力加速度を測定する必要があります。中間電圧(2.5V)を差し引くと、ゼロは「加速なし」になります。
これで、arcsin(y / x)で角度を見つけることができます。しかし、それは除算のため、また符号があいまいであるため、C関数atan2(y、x)が本当に必要なものを使用するのは面倒です。atan2()は、360度すべてに対して正しい符号を取得します。
マイクロを使用していないため、トピック外:マイクロコントローラーで使用するatan2()を探している場合、私のWebサイトにatan2()ジェネレーターがあります:http : //vivara.net/cgi-bin/ cordic.cgi