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

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


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


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


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


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


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



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


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



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


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



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


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



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


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



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



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


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



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


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


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



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



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


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


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



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

    Поддержать автора
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 14

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


      Не знаю, какие в GPS сервера, но на спутниках атомные часы. Хотя, мне нужно точно вспомнить, насколько точно получается определять задержку сигнала без отправки инфы на спутник — все равно нужны весьма точные часы в приемнике.
        0
        Не знаю, какие в GPS сервера, но на спутниках атомные часы.

        Речь идёт о серверах точного времени, принимающих сигналы ГНСС и отдающих время по, к примеру, NTP.
        Хотя, мне нужно точно вспомнить, насколько точно получается определять задержку сигнала без отправки инфы на спутник — все равно нужны весьма точные часы в приемнике.

        Зачем определять задержку сигнала? Об отправке какой инфы на спутник идёт речь? Имеет значение только разность моментов прихода сигналов от разных спутников, потом решается система уравнений (по факту методом последовательных приближений) и находятся координаты и время. Тут важна стабильность часов приёмника только на очень коротких промежутках времени.
          0
          По разности времени навигатор тогда будет искать пересечение 3-4 гиперболоидов типа (x/a)^2 -(y/b)^2 = 1.
            0
            Почему гиперболоидов? Сфер, в центре которых находятся спутники. С поправкой на ионосферные задержки и эффект Доплера.
              0
              Я значит неправильно сказал. Мы знаем точное время прихода сигнала, это значит сферы.
              А, вспомнил. Разницу расстояний мы знали бы в системе типа LIGO, тогда искали бы точку пересечения гиперболоидов (или точнее — их половинок, если точность не попала на случай «t1>t2 с вероятностью 95%»). Здесь мы знаем расстояния, это будут сферы.
        0
        Там ещё в самом приёмнике надо вводить поправку в наносекунах на длину кабеля от приёмника до антенны.
          0
          Думаю, секундный интервал от кабеля не испортится.
            0
            Интервал — да, не поменяется )
            0
            Зачем? На расстояние между отсчетами это не влияет.
            +1
            Полезно было бы снять индивидуальную зависимость частоты от температуры для отдельного резонатора. Тогда можно сделать высокостабильный генератор секундных интервалов используя хороший датчик температуры и зная температурную кривую резонатора.

            Дак у вас уже есть высокостабильный генератор секундных интервалов на основе PPS, не отключайте антенну и все =)
            Не забывайте про старение генератора, какие бы double oven VCOCXO не были точные (смотрите например Морион или magic Xtal), у них старение уже тех же порядков что и стабильность. приходится их «застаривать» на заводе (заказ до полугода) либо гонять в печке самому.
            У дешевого кварца, даже с термокоррекцией, например датчиком STS35-DIS (меньше 0.1 градуса) старение будет вносить куда большие проблемы, ибо оно определяется качеством производства кварца насколько я понял. Диффузия материалов контактов кристалла.
              0

              Про термокоррекцию кварца.
              Видел такое художество:
              Утепленная камера из текстолита, там внутри кварц и резистор для подогрева подключенный через регулятор тока, и ещё что-то.
              Так понимаю это такой способ термостабилизации резонанса кварца был. :)

                0

                Да, термостатирование лучше термокомпенсации. Можно могуглить "Гиацинт-М"

                  0
                  Вполне себе штатная штука на точных приборах.
                  Одна проблема — выход на режим требовал времени.
                    0
                    И не только точных приборах, но и ТВ передатчиках ). Там нужно получить несущую частоту укладывающуюся в 100 Гц

                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                Самое читаемое