두 개의 마이크로 컨트롤러를 마이크로 초 정확도로 동기화하는 방법은 무엇입니까?


37

전파 속도를 측정 할 수 있도록 두 개의 마이크로 컨트롤러를 동기화해야합니다. 시간 지연 측정에는 마이크로 초 정확도 (마이크로 초의 1/2 미만의 오류)가 필요합니다.

12MHz 크리스탈을 사용하는 두 개의 마이크로 컨트롤러 ( ATmega328 )가 있습니다.

둘 다 Bluetooth 송수신기가 장착되어 있습니다. Bluetooth 송수신기는 ~ 15 밀리 초의 지터로 패킷을 송수신합니다.

Bluetooth 송수신기 또는 다른 창의적인 방법을 사용하여 마이크로 컨트롤러를 동기화하고 싶습니다.

함께 터치하여 동기화를 시도했지만 약 10 분 동안 동기화 상태를 유지해야하며 시계가 너무 빠르게 표류했습니다. 클럭 드리프트를 정확하게 예측할 수 있다면이 방법이 효과가있을 것입니다.

이 동기화를 달성하려면 어떻게해야합니까?


2
무엇을하려고하는지, 왜 기기를 동기화해야하는지 알려주시겠습니까? 응용 프로그램의 세부 사항이 솔루션을 가리킬 수 있습니다. 일반적인 문제로, 이것은 특히 작은 무선 장치의 경우 쉽지 않습니다.
Nick Alexeev

2
블루투스에 의존하여 동기화를 달성하는 것은 불가능합니다. 15ms 지터는 0.5 us 동기화를하기에는 너무 길다. 지터가 매우 낮고 수정 가능한 대기 시간이 필요한 것이 필요합니다. 둘 다 단일 클록을 얻을 수 있고 클록을 버퍼링하여 지연의 균형을 맞추는 것이 더 쉬울 것입니다.
travisbartley

지연에 대한 유감. 이 프로젝트의 목표는 기존 핸드 헬드 디지털 측정 도구 설계에서 전선을 제거하는 것입니다. 사용자는 현재 전선을 손상시키는 무선 설계를 원했습니다. 이 장치는 스탠딩 트리에서 파도의 전파를 측정하고 있는데, 이는 두 센서 사이에서 0.5us 동기화가 필요할 정도로 빠릅니다.
Kevin

저렴한 무선 : 적외선. 하나의 IR 펄스는 클럭이 약간 떨어져있을 때 클럭을 다시 동기화하기에 충분할 수 있습니다.
JimmyB

1
논문은 ~ 10uS 동기화, 실험 테스트를 통한 블루투스 4.0 시스템을 제안한다.
user2943160 2016 년

답변:


23

당신의 무선 퍼레이드에 비가 오는 것은 아닙니다. 힘들지만 예상치 못한 요구 사항이 발생했습니다. 이와 같은 것은 전체 시스템 설계에 대한 재평가를 보증합니다.

1 떠오르는 것은 시계 하나의 오실레이터 오프 모두 단위입니다. 범위가 10m 정도임을 나타내는 Bluetooth 통신이 있습니다. 시계를 운반하는 RG174 동축 케이블 또는 광섬유로 장치를 연결할 수 있습니다.

둘째 , 정밀 발진기가 있습니다. 정밀도와 비용을 높이기 위해.

  • TCXO (온도 보상 수정 발진기). 전형적으로 1 내지 3 ppm 드리프트.
  • OCXO (오븐 제어 크리스털 발진기). 0.02ppm 정도의 표류. 일부 OCXO는 0.0001ppm으로 드리프트되었습니다.
  • 원자 시계 ( 예 : 루비듐 표준 ). 나는 원자 시계를 언급하여 주로 참조 프레임을 제공합니다. 그것에 대한 자세한 내용은 여기참조하십시오 .

GPS로 훈련 된 3 차 정밀 발진기. 모든 GPS 위성에는 여러 개의 원자 시계가 탑재되어 있습니다. 일반적으로 GPS 위성이 많이 보입니다. GPS는 정밀한 타이밍을 위해 많이 사용됩니다 (sat nav와 비교하여 알려진 사용법은 적음). 대부분의 GPS 수신기는 1PPS 출력 (초당 한 펄스)으로 50ns까지 정확한 타이밍을 제공합니다.
600 초 (10 분) 동안 0.5μs 드리프트를 유지하려면 시계 (현재 설계의 12MHz 클럭)가 드리프트가 0.0008ppm 미만이어야합니다. 그러나 드리프트가 낮은 외부 소스에서 타이밍 오류를 자주 수정할 수 있다면 클럭 드리프트에 대한 요구 사항이 더 완화 될 수 있습니다. 매 초마다 수정할 수 있으면 시계에 0.5ppm 드리프트가있을 수 있습니다.


한 번은 전 세계 데이터 센터에서 실행되는 서버에서 이러한 종류의 정확성을 얻어야하는 프로젝트를 수행했습니다. 가장 쉬운 방법은 GPS를 사용하는 것입니다. 모든 머신 / 데이터 센터가 GPS에 액세스 할 수있는 것은 아니라는 결론을 내렸고 결국 우리의 솔루션은 상당히 어려운 과제였습니다. 마이크로 컨트롤러로이를 수행하는 것은 더욱 어려워 질 것입니다.
NomadAlien

4
"전체 시스템 설계의 재평가 보증"에 대해 +1

1
예산에 따라 ~ 150 달러에 GPS 신호에 위상 정렬 된 프로그램 가능 주파수 (0-10Mhz)를 출력하는 GPS 장치를 구입할 수 있습니다. uBlox LEA-6T를보십시오. 그들은 30 nS RMS 오류 타임 펄스 출력, 99 % <60 nS를 요구합니다.
코너 울프

9

1pps 출력의 GPS 모듈은 쉽게 구할 수 있으며 저렴합니다.

CPU의 오실레이터를 GPS로 훈련시킬 필요는 없습니다 (예 : PLL). CPU 클록과 관련하여 외부 이벤트를 "타임 스탬프"할 수있는 한, 두 PPS 이벤트 사이에서 웨이브 전송 및 수신 시간을 보간하는 것이 비교적 간단합니다.

종종 오버 플로우 이벤트를위한 소프트웨어 카운터와 함께 마이크로 컨트롤러의 하드웨어 타이머 조합을 사용하여 임의 폭의 CPU주기 카운터를 만들 수 있습니다. 하드웨어 카운터와 소프트웨어 카운터 모두 롤오버 이벤트를 올바르게 처리하는 것은 까다로울 수 있지만 결국 CPU 클록 속도로 계산되는 32 비트 카운터를 가질 수 있습니다 (고해상도 제공). )를 측정하려는 간격보다 긴 기간 (예 : 10MHz에서 429 초)으로 롤오버합니다.

이 카운터를 사용하여 다른 외부 이벤트를 타임 스탬프 할 수 있습니다. 이러한 이벤트 중 하나가 GPS 수신기의 1-pps 펄스 인 경우 CPU 클록의 기본 장기 정확도는 중요하지 않습니다. 중요한 것은 단기적인 안정성입니다. GPS 타임 스탬프를 FIFO 버퍼에 저장하고 다른 이벤트의 타임 스탬프를 해당 버퍼의 값과 비교할 수 있습니다. GPS 펄스가 정확히 1 초 간격임을 알고 있기 때문에 보간을 통해 다른 이벤트의 정확한 시간을 찾을 수 있습니다.

및 이 2 개의 연속 GPS 펄스에 대한 CPU 클럭 타임 스탬프 라고 가정 합니다. GPS 메시지의 각 펄스와 관련된 실제 (원자 클럭) 시간, 및 있습니다. 경우 당신이 사이에 떨어지면 그 측정하고자하는 일부 외부 이벤트의 CPU 클럭 타임 스탬프입니다 및 , 정확한 시간은 다음과 같습니다 G P S n + 1 T i m e n T i m e n + 1 E x t G P S n G P S n + 1GPSnGPSn+1TimenTimen+1ExtGPSnGPSn+1

Timen+ExtGPSnGPSn+1GPSn

마지막으로, 각각 자체 GPS 수신기가있는 두 개의 개별 시스템에서이 설정을 실행하는 경우 두 시스템에서 다양한 이벤트에 대해 계산 된 시간을 높은 정확도 (일반적으로 ± 100ns 정도)로 비교할 수 있습니다. 두 시스템의 CPU 클럭은 동기화되지 않습니다.


이것이 어떻게 작동하는지 좀 더 명확하게 설명해 주시겠습니까? 현재 설명을 이해하는 데 문제가 있습니다.
NickHalden

@NickHalden : 알았어.
Dave Tweed

흠, 이것은 CPU 클럭의 주파수가 두 개의 1 초 펄스 사이에서 일정하다는 것에 의존하지 않습니까? 예를 들어, 펄스의 99 %가 0.00 초와 0.05 초 사이에 발생하고 마지막 1 %가 0.05와 1.00 초 사이에 발생하는 특히 끔찍한 수정 발진기 회로를 사용하십시오. 병적으로 구성된 예제가 이것을 망치지 않습니까? 아니면 여전히 뭔가 빠졌습니까?
NickHalden

예, 그것이 "단기 안정성"의 의미입니다.
Dave Tweed

아, 내가 주석을 달았을 때 저것이 거기에 있었습니까? 부끄러운 하하. 어쨌든, 설명을 +1 해 주셔서 감사합니다.
NickHalden

8

이전에는 마이크로 컨트롤러를위한 무선 클록 동기화를 구현했지만 밀리 초 정확도로만 구현되어 애플리케이션에 충분했습니다. 필자가 읽은 바에 따르면이 백서는 마이크로 초 동기화에 대해 잘 설명합니다. http://www.math.u-szeged.hu/tagok/mmaroti/okt/2010t/ftsp.pdf

기본적으로 송신기와 수신기에서 무선 패킷의 전송 이벤트 및 도착 이벤트에 대해 알고있는 경우 두 시스템간에 공통 관찰 가능 이벤트 (무선 전파 시간을 무시한다고 가정)가있을 수 있습니다. 참조로 사용됩니다. 이 논문에서 언급 된 또 다른 깔끔한 특징은 선형 회귀를 이용한 클록 왜곡 추정입니다.


단일 홉 시나리오에서 1.5µs의 정밀도와 다중 홉 경우 홉당 평균 0.5µs의 정확도는 실험 결과를 통해 보여졌습니다. 좋은.
Li-aung Yip


3

HDP ( Health Device Profile )의 선택적 부분 인 CSP (Bluetooth Clock Synchronization Protocol)를 확인하십시오. CSP 와 관련된이 문서의 섹션은 2.1 및 8입니다.

아직 직접 시도해 볼 기회는 없었지만 BlueZ (공식 Linux Bluetooth 프로토콜 스택) 는 CSP 지원을 포함 하여 HDP에 대한 지원을 추가했습니다 . 따라서 BlueZ 스택을 지원하는 플랫폼에서 실행되는 것처럼 들리지 않지만 코드는 적어도 훌륭한 참조 구현을 제공합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.