非常に正確な時間測定


13

できるだけ正確に非常に短い時間を測定します。このデバイスは、最初に1パルスを取得し、150マイクロ秒以内にさらに6パルスを取得します。それぞれが独自のワイヤ上にあります。最初の信号と他の6つの信号のそれぞれの間の時間は、可能な限り正確に測定する必要があります。精度は少なくとも100ナノ秒である必要がありますが、それ以上の方が優れています。

どのマイクロコントローラーがこれに最適でしょうか?これを見つけまし。4ナノ秒の周期のタイマーがあるようです。それは私にとって十分に正確だろう。

これを行うには他のマイクロコントローラーが良いでしょうか?これはAVRで実行できますか?


2
正確さではなく、正確さについて話していると思います。ナノ秒の精度はあるが、基になるクロックが10%オフの場合はどうなりますか?その場合、測定値は正確ではありません。
カズ

6つのパルスはどのくらい離れていますか?それらは共通の入力で到着しますか、それとも6つの別々の入力で到着しますか?
スターブルー

それらにはすべて独自の入力があります。パルスはすべて同時に発生することもありますが、通常は異なる時間に発生します。
ケスティス

回答:


8

マイクロコントローラーの速度は、常に制限要因ではありません。MSP430は、最大25MHzでしか動作しないためではなく、複数のMSP430デバイスが最大4nsの期間(256MHz)を有効にするタイマーD周辺機器を備えているため、適切なソリューションになります。これは、ほとんどすべてのマイクロコントローラーよりも高速です。STM32の最新バージョン(F4)でも、180MHzしか実行できません。

タイマーDは、MSP430F511などのMSP430F51x1およびMSP43051x2デバイスで使用できます。

ただし、それは時間をキャプチャできることを解決するだけです。大きな問題は、処理自体が遅くなるため、それをどうするかです。2つのパルス間の時間をサンプリングすることはできますが、それが意味することであれば、パルス間の処理を行うことはできません。


私の悪いのは、主にTIのWebサイトがパブロフの憎悪の痙攣を引き起こすため、MSP430の完全なRTFMではありませんでした。
ジョンU

@JohnU:その反応はなかった。真実は、OPが彼が何をしているかについて多くの情報を指定しなかったので、適切な提案をするのは難しいです。
グスタボリトフスキー

処理は問題ありません。時間がキャプチャされ、アルゴリズムが複雑にならない場合、計算を行うのに何秒もかかります。1つのMSP430で6つのパルスすべてを処理できますか?
ケスティス

@Kestis:タイマーDには6つのキャプチャ比較レジスタが含まれ、一部のMSP430には複数のタイマーDモジュールがあるため、要件に適合する必要があります。
グスタボリトフスキー

4

100nsの分解能へのタイミングには、10MHzで動作するタイマーが必要です。多くのマイクロコントローラは、高速でタイマーを実行できる必要があります。

問題は、6つの信号の到着時間を計ろうとするときに発生します。これらの信号はすべて同じワイヤ上にありますか、それともそれぞれ異なるワイヤ上にありますか?

それらがすべて同じワイヤ上にある場合、単一の10MHzタイマーを備えたMCUでこれを正確に行うことが可能かもしれません。単純に、これを行うコードは次のようになります。

wait for trigger signal
reset timer

wait for first signal
save timer value
reset timer

....

wait for sixth signal
save timer value
reset timer

問題は、タイマーをリセットするのに有限の時間がかかることです。これにより、2つの問題が発生します。

  1. 実装に応じて、測定される時間は数100ns間違っています。ただし、それらは常に間違っているはずです。毎回まったく同じ量のIEが間違っています。これは、各測定に少量を追加することで簡単に補正できることを意味します。

  2. 測定できる最小時間があるでしょう。いずれかのパルスが前のパルスの100ns後に到着した場合、おそらくそれを逃すことになります。ソフトウェアでそれについて何かできることがあるかどうかはわかりません。ハードウェアで複数のパルスを処理できるマイクロコントローラーを見つける必要があります。


ハードウェアで複数のパルスを処理できるマイクロコントローラーはどれですか?サイプレスのPSoC!これは、構成可能なデジタルブロックも含むマイクロコントローラーです。つまり、それぞれが60MHzで動作する6つの独立したタイマーを簡単に実行でき、20nsを超える分解能を実現できます。

6タイマーPSoC Cypress

これを使ってできることを示すために、すぐにノックアップした例を示します。私は6個の個別のタイマーを持っています。それらはすべてバスクロックで動作し、最大67MHzになります。実行中のすべてのタイマーを開始するトリガーピンと、タイマーでキャプチャイベントを発生させる他の6つのピンがあります。ステータスレジスタを使用すると、コードでパルスをキャプチャしたタイマーを監視できます。コードはタイマーから値を読み取ることができます。


そのPSoCは非常に興味深いようです。ただし、AVRまたはMSP430の方がはるかに一般的であるため、こちらをお勧めします。
ケスティス

0

修正された回答:高速デジタルストレージオシロスコープまたは周波数カウンターデバイス。

古い答え

簡単に言えば、「あなたが見つけることができる最速のマイクロコントローラ」、クロック/サンプリングが高速であるほど、より正確になるという理由で。MSP430は高速デバイスではありません。

STM32は32ビットであり、より高速に動作し、同様に安価な開発ボードとツールを利用できますが、それでもいくつかのより強力なもの(Raspberry Pi @ 800MHz-1GHz(Overclocked))と比較して非常に遅いです。ただし、一般的には、処理速度が速くなるほどプロセッサが複雑になり、学習曲線にトレードオフが生じる可能性があります。

追加: Benjiは正しい。非常に正確な測定が必要な場合は、マイクロ用の正確なオシレーターが必要になる場合があります(質問で実際にエラー範囲を指定しないでください)。


基本的に、マイクロコントローラーがループで信号をサンプリングする以外に、他のタイプのタイマーがあります。
ニックアレキセフ

また、マイクロコントローラに非常に正確な外部発振器/水晶が接続されている場合に役立ちます。
BenjiWiebe

あなたは両方とも正しい、私は編集した。
ジョンU
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.