Як би я взявся за отримання невеликого осцилятора, який працює точно на 31,891,269,116 мкГц?


15

Я шукаю побудувати модуль RTC для Arduino, який працює на час Марса. Коефіцієнт перетворення становить 1,0274912510 земних секунд до 1 Марса секунди.

Хоча мені вдалося виконати це програмно з роздільною здатністю <2 секунди (що не зовсім ідеально, я б хотів щось на зразок 300 мс точності) з використанням математики з фіксованою точкою на Arduino Uno, підключеному до звичайного модуля RTC, я цікаво, чи можна було б мати якийсь осцилятор низької напруги, що працює на точно 31,891,269,116 мкГц (31,891269116 кГц), який би більш-менш міг би бути взаємозамінним зі стандартним тактовим кристалом 32 кГц (однак, я б відкритий для інших ідей так до тих пір, поки вони не надто дорогі.)

Будь-які ідеї, як це можливо? Крім того, прийнятний також якийсь таймер, який вимикається раз на 1.0274912510 секунд.


13
Чому дивний блок (мкГц?) - це 31,891 кГц. Отже, ви, мабуть, шукаєте годинник з 32 кГц.
JRE

21
Почніть зі своїх вимог. Ви вказали надзвичайну точність. Чому? В іншому місці ви можете сказати, що ви можете зробити щось, що завгодно, з Arduino. Пробачте, що вам це скажу, але ви жартуєте самі, якщо тільки ви не використовуєте щось як критерій рубідій або цезій. Тож скажіть нам, що ви робите, і які ваші вимоги до продуктивності. Це функціональні вимоги, а не похідні показники. Якщо ви намагаєтеся створити годинник, який заблокований до іншого, скажіть це, і повідомте нам, які саме ваші вимоги (та допуски).
WhatRoughBeast

46
Ви намагаєтеся вирішити свою нестачу навичок програмування дуже дорогим та спеціальним обладнанням. Ви можете легко здійснити 256-бітне перетворення з плаваючою комою в Arduino або будь-яку точну точність.
труба

14
Я думаю, що це чудовий приклад того, чому включення більшої кількості інформації дозволяє людям направляти вас у правильному напрямку. Відповідь Брайана Драммонда зараз найкращий, або принаймні дешевий і здійсненний для любителя. Це також хороший приклад того, чому вам потрібно бути обережними, вказуючи точність та точність - існує безліч параметрів, які потенційно мають відношення до годинника. Ми ще навіть не обговорювали компенсацію температури або тремтіння.
pjc50

11
"Коефіцієнт перетворення становить 1,0274912510 земних секунд до 1 Марса секунди." - ви плутаєте різницю довжин дня між Марсом і Землею з довжиною секунди? Довжина сонячного дня на Марсі становить 88 775 років, або 1.02749 земних днів (від 86 400 сек). З іншого і другого визначається випромінювання, яке випромінює атом цезію, і навіть враховуючи дилатацію часу, вам знадобляться швидкості приблизно 0,23 с, щоб отримати цю різницю на 2,7%.
ilkkachu

Відповіді:


41

Використовуйте кристал 32768 кГц, як і всі, але розділіть на 33669, даючи помилку -5,08 ppm. (Ви можете видалити це, обрізавши завантажувальну ємність, якщо вам це подобається)

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

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

Ардуїно або подібне зробить цю роботу, але MSP можна перевести у режим сну між імпульсами, споживаючи при 1uA при запуску генератора НЧ. Ось приклад дизайну з вихідним кодом та друкованою платою для годинника - поки що лише земний час, хоча, можливо, це можна виправити, змінивши константу.


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

Майте на увазі, що ваші цифри, які ви дали, не будуть відповідати стандартному кристалу RTC. Похибка 5ppm з математики, ймовірно, буде меншою, ніж допуск кристала.
користувач2943160

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

+1 лише для "марсіанських постачальників".
Олін Латроп

41

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

Встановіть інтервал таймера на 33668 тиків, запустіть лічильник на 0, а при кожному перерві таймера збільште лічильник на 6754.

Якщо після приросту лічильник> = 8105, віднімаємо 8105 і встановлюємо інтервал таймера на наступну секунду до 33669 тиків.

В іншому випадку залиште лічильник в спокої і встановіть інтервал таймера на наступну секунду на 33668.

Це дасть вам (за умови досконалого кристала 32,768 кГц) середній інтервал в

(33668 + 6754 / 8105) / 32768 ~= 1.0274912510006

секунд (менше однієї помилки на частку на трильйон по відношенню до 1,0274912510), а не 1,0274963378906 секунд (майже 5 помилок на мільйон). Це означає, що довгострокова точність вашого годинника буде по-справжньому залежати від точності генератора; помилка, обумовлена ​​математикою, сприятиме істотно менше однієї галочки помилок на рік. Хоча довжина будь-якого синглу секунди матиме відносну помилку до 25 ppm, через більш довгі та довші інтервали усереднення помилка зникає.

Це алгоритм Брезенама, застосований до хронометражу, і частка 6754/8105 була знайдена таким чином:

32768 * 1.027491251 = 33668.833312768

Точна тривала фракція для 33668.833312768 становить [33668; 1, 4, 1, 1349, 1, 7].

Випадання останнього терміну дає приблизний 33668 + 6754/8105, який має всі частини, які акуратно вписуються в 16 біт.


16

10-1010-14


Я сподівався уникнути дорогого обладнання, якщо можливо. Зараз я досягаю цього за допомогою звичайного модуля RTC і Arduino, і я можу зробити перетворення від 1000 мс до 1027,4912510 мс, однак у мене є лише приблизно 1-2 секундна роздільна здатність, це означає, що воно самокоригується, але не дуже точно .
ренегати

12
@renegadeds, тоді ви повинні чітко уточнити, яка точність є прийнятною. І будь ласка, надайте трохи контексту: один тег [arduino] був би гарним натяком на те, що ви не будуєте високоточну лабораторну стійку.
Дмитро Григор’єв

1
Помітив, я оновив питання і додав тег Arduino.
ренегади

15

Це можна зробити за допомогою рубідію або іншого атомного опорного тактового сигналу на 10 МГц, можливо, PLL, щоб дати (скажімо) 100 МГц, а потім порахувати з ~ 36-бітовим фазовим акумулятором, щоб отримати роздільну здатність 0,001 Гц. Останнє можна зробити за допомогою невеликої FPGA.

Можна прочитати методи прямого цифрового синтезу (DDS). Є мікросхеми, які роблять DDS, але, можливо, не з такою широкою бітовою шириною.

Модулі годинника Rubidium доступні на ринку надлишків або у виробників, таких як Microsemi.


7

Ви не визначаєте "дорого", тож це щось з пострілу в темряві.

Почніть з комерційного (включаючи eBay) генератора 10 МГц. Рубідій на вибір, але яка б точність ви не могли отримати, визначає вашу ефективність.

Тепер побудуйте розбірний подільник довжиною 28 біт. На частоті 10 МГц ви можете піти з логікою 74HC CMOS, але вам потрібно використовувати конфігурацію швидкого перенесення. Вихід також запускає ділення на два тригери, що забезпечує біт 29.

Дільник може працювати у співвідношенні 10,274,912 або 10,274,913, залежно від стану біта 29. Для ідеального входу 10 МГц ефективний період виходу для біта 28 тоді становитиме 1,02749125 секунд, що приблизно точно до 1 ppb, або приблизно 30 мсек / рік Менш точний вхід, звичайно, дасть менш точний вихід.

Використовуючи стандартні 74HC161 богоматеріали, ви можете зробити це за допомогою 8 ІС, і якщо ви будете обережні, можливо, вам вдасться використати стандартну планку для прототипування смужок, хоча ви хочете бути дуже обережними щодо покращення наземної системи. Паркетна дошка буде дешевшою, компактнішою і довговічнішою, але електропроводка буде менш зручною, оскільки вам потрібно буде паяти з'єднання. Потім ви можете поставити його в щось на кшталт електроніки RTV (НЕ RTV, який ви отримуєте в магазині обладнання), для остаточного розміру модуля в діапазоні 2 х 2 х 1/2 дюйма, не рахуючи генератора.

EDIT

Зауважте, що ваш стандарт продуктивності, пов’язаний із "звичайними" RTC, насправді знаходиться в межах точності 1 сек / день, що в 30 разів гірше, ніж цей підхід. Отже, по-перше, ви можете покінчити з етапом біт 29 або, як варіант, розділити свої 10 МГц на 5 МГц і використовувати співвідношення 5137456. Ця нижча тактова частота на лічильниках дозволить спростити структуру перенесення, уникаючи швидкого перенесення, який був би необхідний на 10 МГц. Ваша точність зараз на порядку 60 мсек / год для ідеального годинника.

ДОПОМОГА редагування

Швидкий огляд eBay показує велику кількість OCXO 10 МГц менш ніж за 20 баксів. Вони, як правило, мають стабільність 1 проміле або більше, при цьому 0,2 ppb є досить поширеною специфікацією. Отримайте одне з них, і ви повинні бути в хорошій формі. Ви хочете запозичити вимірювач частоти / періоду досить високої роздільної здатності, щоб визначити фактичну вихідну частоту, а потім відрегулювати коефіцієнт поділу відповідно до.


Погоджено, і навіть якщо OCXO не входить в бюджет харчування, TCXO є і може ще вдосконалитись на годинниковому кристалі.
варення

4

Годинники "Стратум 1" походять від 10-11Вирізані SC кристали, що використовуються в ~ 250 VC-OCXO (наприклад, Vectron), якщо ви не купуєте використовувані. Потім налаштування для синхронізації з глобальними тактовими годинниками, такими як WWV, VLF, GPS 10 МГц або тактовою частотою 1 піксель в секунду, які в свою чергу синхронізуються з10-14атомні годинники через "заблокований до 3 супутників". Потім ви можете відкалібрувати10-11 помилка.

Щоб зробити інший f, наприклад, для частоти, потрібно зміщення 2,07% від 1 pps, тому цього неможливо виконати, налаштувавши годинний кристал на 10-6 стабільність.

PLL типу "фракція N синтезу" використовується для отримання будь-якого відношення посилання, такого як 10 МГц, з деяких GPS-блоків.

Якщо генератор TCXO має стабільність 1ppm, він може бути налаштований лише трохи більше, ніж це, а не 2,07% зміщення від 1 pps або 1,0274912510 Гц, тому PLL з дробовими N мікросхемами - це один із способів зробити це VC-OCXO або механічний ковпачок, налаштований OCXO.

додано - Щоб генерувати 1 pps за час MAR, тоді коефіцієнт ділення становить 26,337,44856, використовуючи 5 цілих цифр і залишок 5 цифр.

  • Якщо ви можете налаштувати Xtal до 0,01 проміле, він буде стабільним лише до 1 проміле, якщо мікрохвильова піч не робиться при ~ 30 ° C, оскільки Tempco зазвичай не має значення температури тіла для деяких XTALS, не обов'язково MEM. Якщо Vcc і темп не дотримуються в межах 0,1 град. C, неможливо нічого виправити помилку залишків, що перевищує 0,01 проміле, навіть 0,1 ppm важко короткотерміновий, а довготривале старіння становитиме щонайменше 1 ppm на рік.

  • Таким чином, теоретично, якби у вас був калібрований тактовий 1ppm від GPS для налаштування 1ppm земного часу, неможливо було б очікувати кращої корекції точності на залишковий.

  • Значення помилки залишку дільника на секунду становить 44856/100000 (+26,337)

  • Перетворення 44856 у двійковий = 1010111100111000
  • Для цього потрібен лічильник залишків для перемикання між / 44856 та 45857

  • Ми робимо це поділ залишків, обрізаючи двійкове число залишку до 8 біт, потім обертаючи біти, щоб MSB став LSB.

  • 10101111 стає 11110101

  • Кожну секунду лічильник залишків від 11110101 і де кожна бітова позиція "n" = 1 - це значення відліку у двійковій n ^ 2, де коефіцієнт ділення ціле число становить 45857 замість 44856. Оскільки LSB = 1, це означає, що кожен другий підрахунок перемикається до 101 секунду, тоді вибір дільника змінюється для наступного підрахунку 1 pps. Це повторюється, щоб вибрати дільник, який буде використаний на наступну секунду, а потім наріст покажчика, поки покажчик не досягне кінця і чекати наступного земного годинника 1 піксель в секунду.

  • Цей процес повторюється протягом усього підрахунку цього обертового бінарного залишку або 10101111> 11110101 = 245 секунд, так що дробовий N-синтезатор ділиться на 1 pps Марсового часу створюється щосекунди з виправленнями, що вносяться кожні 245 сек циклу, щоб залишитися на часі. на тривалий термін

-можливо, коефіцієнт поділки з плаваючою комою для годинника простіше.


2

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

Що б ви зробили, - це змінити переривання таймера, щоб накопичитися у дуже широкому регістрі, і на кожен переривання додайте досить довге значення, яке є настільки точним, як відношення співвідношення мілісекунди Землі до "мілісекунди Марса", скільки ви хочете.

Скажімо заради аргументу, що ви хотіли 32-розрядної роздільної здатності для конверсії. Ви можете використати 64-розрядний акумулятор, причому нижні 32 біти, що представляють собою дріб, що ви б зробили, це з'ясувати відповідне значення, трохи менше 2 ^ 32, що являє собою коефіцієнт перетворення. Кожен раз, коли ваш Мільсекунд перериває пожежу, ви додаєте це значення до акумулятора. Кожен раз, коли ви хочете запитати годинник, ви повертаєте верхні 32 біти, тобто кількість минулих цілих мілісекунд Марса, тоді як нижні 32 біти зберігаються лише внутрішньо, щоб уникнути помилки округлення.

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

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

Ви також можете розглянути можливість перетворення, змінивши відношення дільника з 8 або 16 МГц системного тактового сигналу до переривання мілісекунди, перемістивши його ближче до інтервалу "Марса мілісекунди". Особливо, якщо ви хочете чогось більш точного, ніж дешевий кристал, ви можете мати справу зі звичною 10 МГц посиланням, дисциплінованим GPS або більш безпосередньо атомним годинником, так що ви можете замінити це звичайним джерелом тактової частоти AVR 8/16 МГц і перерахувати коефіцієнти дільника відповідно.


0

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

У такому підході у вас є фазовий акумулятор високої роздільної здатності. Кожен цикл навколо вас додає приріст фази, який також має чітку роздільну здатність. Вихід - це найвищий біт акумулятора.

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

Це можна зробити в програмному забезпеченні досить легко (наприклад, на AVR), а деякі мікросхеми тепер мають апаратне забезпечення NCO. http://ww1.microchip.com/downloads/en/AppNotes/90003131A .


0

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

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