DS3231 DTCXO и GPS
Я экспериментирую с этой идеей: синхронизировать DTCXO с каким-нибудь стандартом частоты. У меня есть все необходимые детали, но я не могу придумать, как это реализовать.
У меня есть: Arduino Leonardo, GPS-модуль на базе u-blox 6010 с выходом PPS и плата расширения Proto Shield с установленным чипом DTCXO DS3231.
Моя главная идея заключается в том, что у DS3231 есть регистры старения, которые могут влиять на тактовую частоту. Постоянно подсчитывая прямоугольные импульсы частотой 8192 Гц с выхода DS3231 и синхронизируя их с сигналом частотой 1 Гц от GPS-модуля, я могу синхронизировать DTCXO с опорным тактовым сигналом. Это, в свою очередь, даст мне относительно хорошую опорную частоту 32768 Гц, на которой я смогу построить частотомер.
Оба режима: 8192 Гц и PPS — управляются прерываниями.
Есть ли у кого-нибудь идеи, как это сделать? Это означает искусственный интеллект на AVR, как предполагает мой инструктор?
@Maxthon Chan, 👍0
Обсуждение1 ответ
Знаю, что вопрос старый, но дополню его на случай, если кому-то будет интересно: я тестировал DS3231, синхронизированный с передним фронтом GPS-импульса, и регистр старения в DS3231 настроен на уменьшение дрейфа. Я собрал три разных скетча утилиты, чтобы можно было проверить процесс без использования стандартных настольных инструментов: https://thecavepearlproject.org/2024/10/22/setting-accurate-rtc-time-with-a-gps-the-ds3231-aging-offset-to-reduce-drift/
Итог: большинство часов реального времени с индексом SN имеют дрейф 1 ppm, если только не настроить регистр возраста, что определённо стоит сделать. Не используйте варианты микросхем памяти с индексом SN для проектов, требующих краткосрочной точности, поскольку их джиттер составляет 2 ppm.
- Преобразование в Unix Timestamp и обратно
- GPS-модуль uBlox Neo 6M не отвечает
- Разница между «time_t» и «DateTime»
- Создание таймера с использованием часов реального времени с указанием времени начала и остановки
- Самое дешевое решение Arduino GPRS или 3G
- Модуль SIM808 GSM работает нормально, GPS не работает (нет сообщения о готовности GPS при включении питания)
- DS1307RTC Выводит загадочную дату 165/165/2165. Какие возможны исправления?
- Как отправить данные из Arduino Uno с SIM900 GPRS в Firebase
Возможно, использовать сигнал 8192 Гц в качестве сигнала синхронизации таймера?, @Ignacio Vazquez-Abrams
@IgnacioVazquez-Abrams Думаю, это не сработает. Leonardo отсчитывает эти 8192 Гц и сверяет их с 1 Гц PPS от GPS-модуля, уменьшая тактовую частоту, если отсчётов слишком много, и увеличивая, если слишком мало., @Maxthon Chan
И почему нельзя использовать сигнал частотой 1 Гц в качестве прерывания для подсчета импульсов таймера?, @Ignacio Vazquez-Abrams
@IgnacioVazquez-Abrams Я делаю это, тактирую микроконтроллер на частоте 16 МГц, одно прерывание подсчитывает 8192 Гц, а другое прерывание отслеживает 1PPS., @Maxthon Chan
Эх. Наверное, проще использовать таймер., @Ignacio Vazquez-Abrams
Эээ... Я, по сути, калибрую DTCXO, так что таймер — не самая лучшая идея..., @Maxthon Chan
Зачем? Он просто считает пульс., @Ignacio Vazquez-Abrams
Подсчитывая импульсы, я изменяю «регистр старения» DTCXO и пытаюсь дисциплинировать его с помощью GPS., @Maxthon Chan
Да, и вместо того, чтобы создавать отдельное прерывание для сигнала частотой 8192 Гц, вы позволяете таймеру считать его за вас., @Ignacio Vazquez-Abrams
Итак, ваше предложение заключается в том, чтобы подать 8192 Гц на вход счетчика, прерваться по PPS, позволить счетчику обрабатывать 8192 Гц и реагировать на основе значения счетчика (и сбрасывать его) при срабатывании прерывания PPS?, @Maxthon Chan
Да. Конечно, поначалу может возникнуть небольшая неравномерность, но умный алгоритм с ней справится., @Ignacio Vazquez-Abrams
Ну, я бы не стал использовать счётчик, пока GPS не определится, а это может занять несколько минут. Так что, на самом деле, это не такая уж и проблема. Пожалуйста, опубликуйте это как ответ, чтобы я мог его принять., @Maxthon Chan
Это интересный проект. У Arduino Leonardo достаточно портов ввода-вывода и возможностей обработки прерываний для решения этой задачи. Благодаря мониторингу и регулировке частот в реальном времени, его можно считать простой системой адаптивного управления, но без использования сложных алгоритмов искусственного интеллекта., @Hugh Davenport