Как бы я мог получить небольшой генератор, работающий точно с 31,891,269,116 мкГц?

15

Я ищу, чтобы построить модуль RTC для Arduino, который работает на время Марса. Коэффициент преобразования составляет от 1,0274912510 секунд Земли до 1 секунды Марса.

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

Есть идеи, как это возможно? В качестве альтернативы, также может быть использован таймер, который срабатывает один раз каждые 1,0274912510 секунд.

renegadeds
источник
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.08ppm. (Вы можете удалить это, подрезав нагрузочную емкость, если хотите).

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

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

Arduino или аналогичный будет делать эту работу, но MSP можно усыплять между импульсами, потребляя менее 1 мкА при работающем генераторе LF. Вот пример дизайна с исходным кодом и печатной платой для часов - пока только время Земли, хотя это, вероятно, можно исправить, изменив константу.

Брайан Драммонд
источник
1
Спасибо! Основываясь на других отзывах, я думаю, что это выглядит как наиболее жизнеспособный вариант без необходимости углубляться в область атомных часов, поэтому я выбрал его в качестве решения своего вопроса. Я также особенно ценю дизайн, который вы связали.
отступники
Имейте в виду, что значимые цифры, которые вы дали, не будут встречаться со стандартным кристаллом RTC. Ошибка 5ppm от математики, вероятно, будет меньше, чем допуск кристалла.
user2943160
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 частей на миллион, в течение более длинных и длинных интервалов усреднения ошибка исчезает.

Это алгоритм Брезенхэма, применяемый к хронометражу, и фракция 6754/8105 была найдена следующим образом:

32768 * 1,027491251 = 33668,833312768

Точная непрерывная фракция для 33668,833312768 составляет [33668; 1, 4, 1, 1349, 1, 7].

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

Hobbs
источник
16

10-1010-14

Дмитрий Григорьев
источник
Я надеялся избежать дорогостоящего оборудования, если это возможно. Прямо сейчас я достигаю этого с помощью обычного модуля RTC и Arduino, и я могу сделать преобразование от 1000 мс до 1027,4912510 мс, однако у меня есть разрешение примерно 1-2 секунды, что означает, что оно самокорректируется, но не очень точно ,
отступники
12
@renegadeds, тогда вы должны уточнить в своем вопросе, какая точность приемлема. И, пожалуйста, предоставьте некоторый контекст: один тег [arduino] будет хорошим намеком на то, что вы не создаете высокоточный лабораторный стенд.
Дмитрий Григорьев
1
Заметил, я обновил вопрос и добавил тег Arduino.
отступники
15

Это можно сделать с помощью рубидиевых или других атомных эталонных часов с частотой 10 МГц, возможно, с ФАПЧ, чтобы дать (скажем) 100 МГц, а затем посчитать с помощью 36-битного фазового аккумулятора, чтобы получить разрешение 0,001 Гц. Последнее может быть сделано с небольшой FPGA.

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

Модули рубидиевых часов доступны на избыточном рынке или от производителей, таких как 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 микросхемами, и если вы будете осторожны, вы сможете использовать стандартную макетную плату для макетирования, хотя вам нужно быть очень осторожным в усилении наземной системы. Perfboard будет дешевле, компактнее и долговечнее, но проводка будет менее удобной, так как вам придется паять соединения. Затем вы можете поместить его в нечто вроде RTV для электроники (НЕ RTV, которое вы получаете в магазине бытовой техники) для конечного размера модуля в диапазоне 2 x 2 x 1/2 дюйма, не считая генератора.

РЕДАКТИРОВАТЬ

Обратите внимание, что ваш стандарт производительности, связанный с «обычными» RTC, в действительности находится в диапазоне точности 1 секунда / день, что в 30 раз хуже, чем этот подход. Итак, во-первых, вы можете покончить со ступенью бита 29 или, в качестве альтернативы, разделить свои 10 МГц на 5 МГц и использовать соотношение 5,137,456. Эта более низкая тактовая частота на счетчиках позволит упростить структуру переноса, избегая быстрого переноса, который был бы необходим при 10 МГц. Ваша точность теперь составляет порядка 60 мсек / год для идеальных часов.

ДАЛЬНЕЙШЕЕ РЕДАКТИРОВАНИЕ

Беглый взгляд на eBay показывает большое количество OCXO 10 МГц менее чем за 20 долларов. Они обычно имеют стабильность 1 ppb или лучше, с 0.2 ppb довольно распространенная спецификация. Получить один из них, и вы должны быть в хорошей форме. Вы хотите заимствовать измеритель частоты / периода с довольно высоким разрешением, чтобы определить фактическую выходную частоту, а затем отрегулировать коэффициент деления для соответствия.

WhatRoughBeast
источник
Согласен, и даже если OCXO не входит в бюджет энергопотребления, TCXO есть и все еще может улучшиться в часовом кристалле.
Хоббс
4

10-11SC ограненные кристаллы, используемые в ~ 250 $ VC-OCXO (например, Vectron), если вы не покупаете подержанные. Затем с настройкой для синхронизации с глобальными часами, такими как WWV, VLF, GPS 10 МГц или 1pps, которые в свою очередь синхронизируются с10-14атомные часы через «запертые на 3 спутника». Затем вы можете откалибровать10-11 ошибка.

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

ФАПЧ типа «дробный N-синтезатор» используется для получения любого отношения эталона, такого как 10 МГц, от некоторых единиц GPS.

Если генератор TCXO имеет стабильность 1ppm, он может быть настроен только немного больше, чем это, а не смещение 2,07% от 1 pps или 1,0274912510 Гц, так что ФАПЧ с дробным N-чипом (-ами) является одним из способов сделать это с VC-OCXO или механический колпачок с настройкой OCXO.

добавлено - для генерации 1pps по времени MAR, коэффициент деления равен 26 337,44856 с использованием 5 целых цифр и остатка из 5 цифр.

  • Если вы можете настроить Xtal на 0,01 ppm, он будет стабилен, как правило, только до 1 ppm, если только микро-печь не приготовлена ​​при температуре ~ 30 ° C, так как Tempco обычно имеет нулевую температуру вокруг тела для некоторых XTALS, не обязательно MEM. Если Vcc и температура не будут находиться в пределах 0,1 градуса Цельсия, все попытки исправить ошибку остатка лучше, чем 0,01 ч / млн, невозможны, даже 0,1 ч / млн является жестким краткосрочным периодом, а длительное старение будет составлять не менее 1 ч / млн в год.

  • Таким образом, теоретически, если бы у вас были откалиброванные часы с частотой 1 стр. / Мин от GPS для настройки времени Земли на 1 стр. / Мин, было бы невозможно ожидать лучшей коррекции точности для остатка.

  • Значение ошибки остатка делителя в сек. 44856/100000 (+26,337)

  • Преобразование 44856 в двоичный файл = 1010111100111000
  • Это требует счетчика остатков для переключения между / 44856 и 45857

  • Мы выполняем это деление остатков, обрезая двоичное число остатков до 8 битов, а затем вращая биты, чтобы MSB стал LSB.

  • 10101111 становится 11110101

  • Каждую секунду счетчик остатков от 11110101 и где каждая битовая позиция «n» = 1 является значением счетчика в двоичном n ^ 2, где целочисленное отношение деления равно 45857 вместо 44856. Поскольку LSB = 1, это означает, что каждый второй счетчик переключается до 101 секунда, затем выбор делителя переключается для следующего подсчета 1pps. Это повторяется, чтобы выбрать, какой делитель будет использоваться в течение следующей секунды, затем увеличить указатель до тех пор, пока указатель не достигнет конца, и дождаться следующего тактового импульса 1pps.

  • Этот процесс повторяется для всего счетчика этого повернутого двоичного остатка или 10101111> 11110101 = 245 секунд, так что дробный N-синт-делитель 1 ппс Марсового времени создается каждую секунду с корректировками, вносимыми в каждый 245-секундный цикл, чтобы оставаться вовремя. на длительный срок.

- возможно, соотношение делителей с плавающей запятой для часов проще.

Тони Стюарт Sunnyskyguy EE75
источник
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.pdf Небольшой PIC может сделать это на оборудовании с разрешением 20 бит (1 стр / мин), от 32 кГц xxtal или от точной 10 МГц печи.

Генри Крун
источник
0

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

D Duck
источник