Як синхронізувати два мікроконтролери до точності мікросекунди?


37

Мені потрібно синхронізувати два мікроконтролери, щоб вони могли виміряти швидкість поширення хвиль. Вимірювання затримки часу повинні мати мікросекундну точність (похибка менше 1/2 мікросекунди).

У мене є два мікроконтролери ( ATmega328 ), які використовують кристал 12 МГц.

Обидва вони оснащені приймачами Bluetooth. Приймачі Bluetooth приймають та приймають пакети з тремтінням ~ 15 мілісекунд.

Я сподіваюся синхронізувати мікроконтролери за допомогою передавачів Bluetooth або якогось іншого творчого методу.

Я намагався синхронізувати їх, торкаючись їх разом, але мені потрібно, щоб вони залишалися синхронізованими близько 10 хвилин, і їх годинник переміщувався занадто швидко. Можливо, якби вдалося точно передбачити переміщення годин, цей метод спрацював би.

Як мені піти на шляху досягнення цієї синхронізації?


2
Не могли б ви сказати нам, що ви намагаєтеся зробити, і чому одиниці повинні синхронізуватися? Можливо, специфіка вашої заявки може вказувати на рішення. Як загальна проблема, це не дуже легко, особливо для невеликих бездротових пристроїв.
Нік Алексєєв

2
Неможливо досягти синхронізації, покладаючись на Bluetooth. 15 мс джиттера - це занадто багато, щоб отримати 0,5 нас синхронізації. Вам потрібно щось із дуже низьким тремтінням та фіксованою затримкою, яке можна виправити. Було б простіше, якби ви могли дістати по одному годиннику до обох, і буфер годинника, щоб збалансувати затримки.
travisbartley

Вибачте за затримку. Мета проекту - вилучити дроти з існуючої конструкції портативних цифрових вимірювальних інструментів. Користувач хотів бездротового дизайну, оскільки вони пошкоджували поточні дроти. Агрегати вимірюють розповсюдження хвиль на стоячих деревах, які досить швидко потребують синхронізації 0,5у між обома датчиками.
Кевін

Бездротовий бездротовий доступ: інфрачервоний. Одного ІЧ-імпульсу може бути достатньо для повторної синхронізації годин, коли вони трохи розсунулися.
JimmyB

1
У цьому документі пропонується система Bluetooth 4.0 із синхронізацією ~ 10uS з експериментальним тестом.
користувач2943160

Відповіді:


23

Я не маю на увазі дощ на вашому бездротовому параді. Ви зіткнулися з жорсткою, але несподіваною вимогою. Щось таке, що вимагає переоцінки дизайну всієї системи.

Перше , що спадає на думку, - це відключити обидва пристрої від одного генератора. У вас є зв’язок Bluetooth, який натякає, що дальність дії становить близько 10 м. Ви можете підключити свої пристрої коаксіальним кабелем RG174 або оптичним волокном, яке несе годинник.

По-друге , є прецизійні осцилятори. З метою підвищення точності та витрат.

  • TCXO (кристалічний осцилятор з компенсацією температури). Відходи 1 до 3 проміле, як правило.
  • OCXO (кристалічний генератор, керований духовкою). Дрейф на порядку 0,02 ppm. Деякі OCXO знизилися до 0,0001 проміле.
  • Атомний годинник (наприклад, Rubidium ). Я згадаю атомний годинник здебільшого, щоб дати орієнтир. Більше про це тут .

3-й , прецизійний осцилятор, навчений GPS. Кожен GPS-супутник на борту має кілька атомних годин. Зазвичай є багато супутників GPS. GPS використовується для точності синхронізації часу (менш відоме використання порівняно з sat nav). Більшість GPS-приймачів мають вихід 1PPS (один імпульс в секунду), що забезпечує точність синхронізації до 50н.
Щоб проміжок 0,5 мкс перевищував 600 х (10 хв), ваш годинник (годинник 12 МГц у вашій сучасній конструкції) повинен мати дрейф менше 0,0008 ppm. Але якщо ви можете виправляти помилку синхронізації так часто з низького зовнішнього джерела дрейфу, вимога до дрейфу в годиннику може бути більш невимушеною. Якщо ви можете виправити кожну секунду, то ваш годинник може мати зсув 0,5 ppm.


Я колись працював над проектом, де нам довелося отримати таку точність на серверах, що працюють в центрах обробки даних по всьому світу. Там найпростішим способом було використання GPS. Виявилося, що не всі машини / центри обробки даних можуть отримати доступ до GPS, тому наше рішення врешті було досить складним завданням. Робити це за допомогою мікроконтролерів буде ще важче.
NomadAlien

4
+1 для "вимагає переоцінки дизайну всієї системи".

1
Залежно від вашого бюджету, ви можете придбати GPS-пристрої, які виводять програмовану частоту (0-10 МГц), яка фазово вирівнюється до сигналу GPS за ~ 150 доларів США. Подивіться на uBlox LEA-6T. Вони стверджують, що 30 nS RMS помилок виводить час імпульсу, 99% <60 nS.
Коннор Вольф

9

GPS-модулі з 1pps виходами легко доступні та недорогі.

Насправді не потрібно дисциплінувати генератор процесора до GPS (наприклад, з PLL). Поки ви можете "відмітити" зовнішні події відносно тактового процесора, інтерполювати час передачі хвилі та отримувати події між будь-якими двома подіями PPS порівняно просто.

Ви можете часто використовувати комбінацію апаратного таймеру на мікроконтролері разом із програмним лічильником для його переповнення, щоб створити лічильник циклу процесора довільної ширини. Правильно поводитися з подіями перекидання, як з апаратним лічильником, так і з програмним лічильником, може бути складним, але врешті-решт, у вас може бути 32-бітний лічильник, який рахується за швидкістю тактового процесора (даючи високу роздільну здатність ) і перевертається з періодом, більшим за інтервали, які ви намагаєтеся виміряти (наприклад, 429 секунд при 10 МГц).

Ви можете використовувати цей лічильник, щоб позначити різні зовнішні події. Якщо однією з таких подій є імпульси на 1 pps від GPS-приймача, то основна довгострокова точність тактової частоти процесора стає небайдужою. Єдине, що має значення, - це його короткочасна стабільність. Ви можете зберігати часові позначки GPS у буфері FIFO та порівнювати часові позначки інших подій зі значеннями цього буфера. Оскільки ви знаєте, що GPS-імпульси розташовані рівно на одну секунду, ви можете знайти точний час будь-якої іншої події, інтерполюючи.

GPSnGPSn+1TimenTimen+1ExtGPSnGPSn+1

Timen+ExtGPSnGPSn+1GPSn

Нарешті, якщо ця установка працює на двох окремих системах, кожна з яких має власний GPS-приймач, ви можете з високою точністю порівняти час, обчислений для різних подій на двох системах (як правило, порядку ± 100 нс), навіть якщо Годинники процесора двох систем не синхронізовані.


Не могли б ви бути трохи більш чіткими щодо того, як це буде працювати? У мене виникають проблеми з розумінням із теперішнього пояснення.
NickHalden

@NickHalden: Гаразд, готово.
Трейд Дейва

Гммм добре, хіба це не покладається на частоту процесорного годинника, яка є постійною між двома імпульсами 1 секунди? Наприклад, візьміть особливо жахливу схему кристалічного осцилятора, де 99% імпульсів трапляються між 0,00 та 0,05 секунди, а потім кінцеві 1% трапляються між 0,05 та 1,00 с. Невже цей патологічно сконструйований приклад це не викрутить, чи я все одно щось пропускаю?
NickHalden

Так, саме це означає «короткочасна стабільність».
Трейд Дейва

О, поступки це було там, коли я коментував? Ха-ха, це бентежно. У будь-якому випадку, дякую за пояснення +1 від мене.
NickHalden

8

Я раніше реалізував бездротову синхронізацію годинників для мікроконтролерів, але лише з точністю до мілісекунд, що було досить добре для програми. З мого читання цей документ досить добре пояснює мікросекундну синхронізацію: http://www.math.u-szeged.hu/tagok/mmaroti/okt/2010t/ftsp.pdf

По суті, якщо ви знаєте про подію передачі та подію прибуття радіопакету відповідно на передавач і приймач, у вас є спільна спостережувана подія (якщо ви ігноруєте час поширення радіохвилі) між двома системами, які можуть бути використовується як еталон. Інша акуратна особливість, згадана в роботі, - оцінка тактового перекосу за допомогою лінійної регресії.


Точність 1,5 мкс у сценарії одинарного стрибка та середня точність 0,5 мкс на стрибок у мультиплікаційному випадку були показані шляхом надання експериментальних результатів. Приємно.
Li-aung Yip


3

Ознайомтеся з протоколом синхронізації годинника Bluetooth (CSP), який є необов'язковою частиною профілю пристроїв охорони здоров’я (HDP). Розділи в цьому документі, які стосуються CSP, складають 2.1 та 8.

У мене ще не було можливості спробувати його, але, наскільки я можу сказати, BlueZ (офіційний стек протоколу Bluetooth Bluetooth) просто додав підтримку HDP , включаючи підтримку CSP. Тож незважаючи на те, що ви не працюєте на платформі, що підтримує стек BlueZ, але, можливо, код забезпечить принаймні хорошу реалізацію.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.