Дайте немного космоса или микроконтроллер как частотомер

в 9:05, , рубрики: diy или сделай сам, gps-приемник, stm32, измерения, микроконтроллер, программирование микроконтроллеров, стабильность, схемотехника, частотомер

Все знают о спутниковых системах определения координат. Они также позволяют узнать скорость и текущее время. На основе таких систем строят серверы точного времени, о которых уже много раз здесь говорилось, и не только здесь. Точность этих систем растет, цена падает, короче, прогресс не стоит на месте. Совсем, казалось бы, недавно речь шла о миллисекундах, и вот уже микросекунды никого не удивляют. И недалек тот день, когда...

Честно говоря, этот день уже настал для меня. Не так давно попалась на глаза информация о том, что один из производителей для своих модулей обещает точность интервала выходного сигнала PPS порядка десятков наносекунд.

Другими словами, появился эталон секунды с очень приличной точностью. Правда, он не всегда под рукой, и часто зависит от внешних обстоятельств, но вы можете добиться благоприятных условий и получить его. И, главное, как бы скопировать себе.

На всякий случай я посмотрел, как идут дела у других производителей подобной продукции и обнаружил примерно такие же технические характеристики. “Тенденция, однако” — пронеслась мысль в моей голове, примерно, как у Штирлица. Надо было что-то делать.

Те из читателей, кто знает, как отпаять резистор от печатной платы или как припаять микросхему и даже умеют это делать, мысленно согласятся со мной, что иметь в хозяйстве частотомер, который обеспечивает точность 7-8 знаков, никогда не помешает. Особенно, если он будет занимать мало места, а вам не придется занимать много денег на его покупку. А те, у кого мысль не любит останавливаться могут подумать о часах, которые ошибаются на несколько секунд в год (в седьмом знаке, Клара). Поклонники любительской радиосвязи вспомнят, наверное, о конструировании хорошего самодельного узкополосного фильтра на кварцевых резонаторах.

Первое, что надо было сделать — это найти подходящее “железо”. Мне приглянулась простая оценочная плата с небольшим модулем Teseo-LIV3F от известной компании. Ниже показано, как она выглядит.

Дайте немного космоса или микроконтроллер как частотомер - 1

Эта штука продается с выносной активной антенной, которую можно установить ближе к окну, чтобы хорошо “видела” спутники. Перемычки (jumpers) выставлены на плате так, как требуется для нашего дальнейшего повествования и успешного программирования. На фото также присутствуют схемотехнические доработки в виде одного диода с хорошим быстродействием.

Схема доработок будет показана ниже. Производителем предусмотрено, что эту плату можно вставить в подходящую оценочную плату Nucleo с микроконтроллером на борту (на самом деле это разъемы для Arduino, но с 32-ух бит не хочется уходить). В описании самого GPS/GNSS модуля я нашел следующее.

Дайте немного космоса или микроконтроллер как частотомер - 2

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

Подходящая плата из серии Nucleo построена на STM32L476RG. Она поставляется без кварцевого резонатора (часовой – не в счет). Ниже на фото показаны стрелками места, куда пришлось припаять недостающие элементы.

Дайте немного космоса или микроконтроллер как частотомер - 3

Этот вариант платы выбран по трем соображениям. Первое, генератор микроконтроллера с внешним резонатором работает от 4 до 48 МГц. Такие допуски есть не у всех микроконтроллерных плат Nucleo. Этот генератор мы и будем запускать с нашими кварцами. Второе, последовательный порт (UART) можно тактировать от отдельного встроенного RC-генератора с точностью 1% на частоте 16 МГц. Следовательно, не надо будет менять настройки и делители в конфигурации UART с изменением частоты внешнего генератора. И самое главное, для кварцевого резонатора предусмотрено место под навесной монтаж, куда можно установить разъемы, чтобы не припаивать каждый раз очередной резонатор.

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

Дайте немного космоса или микроконтроллер как частотомер - 4

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

Сразу захотелось сделать так, чтобы не усреднять несколько секундных измерений, а мерить частоту за десять секунд, то есть, более точно. Для этого, собственно, и потребовалось добавить в схему диод и поддержать эту мысль программным путем. Доработка схемы показана ниже.

Дайте немного космоса или микроконтроллер как частотомер - 5

На следующих диаграммах показано, как из секундного интервала сделать десятисекундный.

Дайте немного космоса или микроконтроллер как частотомер - 6

Сигнал PPS подается на таймер через диод, а на дополнительный вход внешнего прерывания – напрямую. В прерывании от таймера разрешается внешнее прерывание, которое, досчитав до десяти, запрещает себя и меняет подтягивающий резистор с верхнего на нижний.

Красными стрелками показаны моменты срабатывания прерывания таймера, а зелеными отмечены моменты запуска внешнего прерывания, по которому считаются требуемые секундные интервалы. Синим показано включение-выключение подтягивающих резисторов. Проект сделан в IAR и посмотреть его можно здесь. На фото ниже показан результат работы программы контроллера совместно с эмулятором терминала, на котором видно установившееся состояние.

Дайте немного космоса или микроконтроллер как частотомер - 7

Чтобы увидеть график, а не сухие строчки значений частоты, пришлось сочинить небольшую утилиту под Windows. Ее тушка находится там же где и проект прошивки.

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

Хорошие резонаторы вели себя хорошо, то есть в соответствии с графиком температурной зависимости AT среза кристалла. Эти графики (или многочисленные копии?) легко отыскать в сети. Ниже показаны результаты измерений трех резонаторов на 16 МГц.

Дайте немного космоса или микроконтроллер как частотомер - 8

Потом оказалось, что бывают исключения из привычной картины поведения. Ниже показаны данные двух кварцев одинакового вида и, скорее всего, одного происхождения, которые повели себя по-разному.

Дайте немного космоса или микроконтроллер как частотомер - 9

На резонатор, который ведет себя привычно, я просто подышал немного, а второй решил нагреть сильнее, поскольку он показал себя иначе. Как легко видеть зависимость от температуры у него или сдвинута, или просто другая.

Еще одно интересное наблюдение. После воздействия по температуре, резонатор не возвращается к прошлым значениям частоты, или у меня не хватило терпения дождаться. В любом случае, это не важно, если вас не волнуют знаки после шестого.

Вот еще одно наблюдение. Это один и тот же резонатор, который пришлось замерить дважды, поскольку он вызвал удивление. Я пока объяснения такому поведению не нашел и не придумал.

Дайте немного космоса или микроконтроллер как частотомер - 10

Полезно было бы снять индивидуальную зависимость частоты от температуры для отдельного резонатора. Тогда можно сделать высокостабильный генератор секундных интервалов используя хороший датчик температуры и зная температурную кривую резонатора. Однако, для этого уже понадобится термокамера. Интересно, какие датчики температуры сегодня можно считать хорошими?

Автор: Сергей

Источник


* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js