2つのマイクロコントローラーをマイクロ秒の精度で同期する方法は?


37

伝播する波の速度を測定できるように、2つのマイクロコントローラーを同期する必要があります。時間遅延の測定にはマイクロ秒の精度が必要です(エラーはマイクロ秒の1/2未満)。

12MHzの水晶を使用する2つのマイクロコントローラー(ATmega328)があります。

どちらもBluetoothトランシーバーを搭載しています。Bluetoothトランシーバーは、〜15ミリ秒のジッターでパケットを送受信します。

Bluetoothトランシーバーなどの創造的な方法を使用して、マイクロコントローラーを同期したいと考えています。

それらを一緒にタッチして同期を試みましたが、約10分間同期したままにしておく必要があり、クロックのドリフトが速すぎました。おそらく、クロックドリフトを正確に予測できれば、この方法は機能します。

この同期を達成するにはどうすればよいですか?


2
何をしようとしているのか、なぜユニットを同期する必要があるのか​​教えてください。おそらく、アプリケーションの詳細が解決策を示している可能性があります。一般的な問題として、これは、特に小さなワイヤレスデバイスの場合、非常に簡単な問題ではありません。
ニックアレキセフ

2
Bluetoothに依存する同期を実現することは不可能です。0.5 msの同期を得るには15 msのジッターが大きすぎます。修正可能な非常に低いジッターと固定レイテンシーを備えたものが必要です。両方に単一のクロックを取得し、遅延のバランスを取るためにクロックをバッファリングできれば簡単です。
トラビスバートリー

遅くなってすみません。プロジェクトの目標は、ハンドヘルドデジタル測定ツールの既存の設計からワイヤを削除することです。ユーザーは、現在の配線に損傷を与えていたため、ワイヤレス設計を望んでいました。ユニットは、両方のセンサー間で0.5usの同期を必要とするのに十分な速さで、立ち木の中で波の伝播を測定しています。
ケビン

Cheap-oワイヤレス:赤外線。1つのIRパルスで、クロックが少しずれたときにクロックを再同期することができます。
JimmyB

1
このホワイトペーパーでは、実験テストを行って、約10uSの同期を実現するBluetooth 4.0システムを提案します。
user2943160

回答:


23

ワイヤレスパレードで雨が降るつもりはありません。厳しいが予期せぬ要件に遭遇しました。そのようなものは、システム設計全体の再評価を保証します。

最初に頭に浮かぶのは、1つのオシレーターから両方のユニットをクロックすることです。Bluetooth通信があり、範囲が10m程度であることを示唆しています。RG174同軸ケーブルまたは光ファイバーを使用してユニットを接続し、クロックを伝達します。

2番目、精密発振器があります。精度とコストの増加順に。

  • TCXO(温度補償水晶発振器)。通常、1〜3 ppmのドリフト。
  • OCXO(オーブン制御水晶発振器)。0.02ppm程度のドリフト。一部のOCXOは、0.0001 ppmまでドリフトします。
  • 原子時計(ルビジウム標準など)。参照のフレームを提供するために、主に原子時計に言及しています。詳細はこちら

3番目、GPSで訓練された高精度発振器。すべてのGPS衛星には、複数の原子時計が搭載されています。通常、視界には多くのGPS衛星があります。GPSは、精密なタイミングで多く使用されます(sat navと比較して使用頻度は少ない)。ほとんどのGPS受信機には1PPS出力(1秒あたり1パルス)があり、50nsまでの正確なタイミングを提供します。
600s(10min)にわたって0.5μsのドリフトを得るには、クロック(現在の設計では12MHzクロック)のドリフトが0.0008ppm未満でなければなりません。ただし、低ドリフトの外部ソースからタイミングエラーを頻繁に修正できる場合は、クロックのドリフトの要件をより緩和できます。1秒ごとに修正できる場合、クロックのドリフトは0.5ppmになる可能性があります。


私はかつて、世界中のデータセンターで実行されているサーバーでこの種の精度を得る必要があるプロジェクトに取り組んでいました。そこで最も簡単な方法は、GPSを使用することでした。すべてのマシン/データセンターがGPSにアクセスできるわけではなかったため、最終的に私たちのソリューションは非常に困難でした。これをマイクロコントローラーで行うことはさらに困難になります。
ノマドエイリアン

4
「システム設計全体の再評価を保証する」ために+1。

1
予算に応じて、プログラム可能な周波数(0〜10 Mhz)を出力するGPSユニットを購入することができます。この周波数は、GPS信号に約150ドルで位相調整されます。uBlox LEA-6Tを見てください。彼らは、30 nS RMSエラータイムパルス出力、99%<60 nSを主張しています。
コナーウルフ

9

1pps出力のGPSモジュールはすぐに入手でき、安価です。

CPUの発振器をGPSに制御する必要はありません(たとえば、PLLを使用)。CPUクロックに関連する外部イベントを「タイムスタンプ」できる限り、2つのPPSイベント間でイベントの送信および受信イベントの時間を補間するのは比較的簡単です。

多くの場合、マイクロコントローラのハードウェアタイマーとそのオーバーフローイベント用のソフトウェアカウンタの組み合わせを使用して、任意の幅のCPUサイクルカウンタを作成できます。ハードウェアカウンターとソフトウェアカウンターの両方のロールオーバーイベントを正しく処理するのは難しい場合がありますが、最終的には、たとえば、CPUクロックのレートでカウントする32ビットカウンターを使用できます(高解像度を提供します) )、測定しようとしている間隔よりも長い期間(たとえば、10 MHzで429秒)でロールオーバーします。

このカウンタを使用して、さまざまな外部イベントにタイムスタンプを付けることができます。これらのイベントの1つがGPS受信機からの1 ppsパルスである場合、CPUクロックの基本的な長期精度はドントケアになります。重要なのは、その短期的な安定性だけです。GPSタイムスタンプをFIFOバッファーに保存し、他のイベントのタイムスタンプをそのバッファーの値と比較できます。GPSパルスは正確に1秒離れていることがわかっているので、補間することで他のイベントの正確な時間を見つけることができます。

GPSnGPSn+1TmenTmen+1EバツtGPSnGPSn+1

Tmen+EバツtGPSnGPSn+1GPSn

最後に、それぞれが独自のGPSレシーバーを備えた2つの別々のシステムでこのセットアップを実行している場合、2つのシステムでさまざまなイベントに対して計算された時間を高精度(通常±100 ns程度)で比較できます。 2つのシステムのCPUクロックは同期していません。


これがどのように機能するかについてもう少し明確にできますか?現在の説明から理解できない。
ニックハルデン

@NickHalden:OK、できました。
デイブツイード

なるほど、これはCPUクロックの周波数が2つの1秒パルス間で一定であることに依存していないのですか?たとえば、パルスの99%が0.00〜0.05秒で発生し、最後の1%が0.05〜1.00sで発生する特にひどい水晶発振器回路を考えてみましょう。その病理学的に構築された例はこれを台無しにしないでしょうか、それとも私はまだ何かを逃していますか?
ニックハルデン

はい、それが「短期安定性」の意味です。
デイブツイード

ああ、それは私がコメントしたときにそこにあったのですか?恥ずかしいです。とにかく、私からの説明+1に感謝します。
ニックハルデン

8

マイクロコントローラのワイヤレスクロック同期をこれまでに実装しましたが、ミリ秒の精度でしか実現できず、アプリケーションには十分でした。私の読書から、このペーパーはマイクロ秒同期を非常によく説明しています:http : //www.math.u-szeged.hu/tagok/mmaroti/okt/2010t/ftsp.pdf

基本的に、送信機と受信機での無線パケットの送信イベントと到着イベントの知識がある場合、2つのシステム間で共通の観測可能なイベント(電波の伝搬時間を無視すると仮定)があります。参照として使用されます。論文で言及されているもう1つの優れた機能は、線形回帰を使用したクロックスキュー推定です。


実験結果を提供することにより、シングルホップシナリオでの1.5µsの精度と、マルチホップケースでのホップあたり0.5µsの平均精度が示されました。いいね
李アウンイップ


3

Health Device Profile(HDP)のオプション部分であるBluetooth Clock Synchronization Protocol(CSP)を確認してください。CSPに関連するそのドキュメントのセクションは2.1と8です。

私はまだ自分で試してみる機会がありませんでしたが、私が知る限り、BlueZ(公式のLinux Bluetoothプロトコルスタック)は、CSPのサポートを含むHDPのサポートを追加しました。そのため、BlueZスタックをサポートするプラットフォームで実行しているようには見えませんが、コードは少なくとも優れたリファレンス実装を提供するでしょう。

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