Графическое приложение synchroTime для калибровки RTC DS3231 ZS-042 и MINI модулей

Графическое приложение synchroTime для калибровки RTC DS3231 ZS-042 и MINI модулей v1.1.0-beta

Приложение позволяет:
  • Синхронизировать время RTC DS3231 с эталонным временем компьютера;
  • Автоматически корректировать дрейф частоты осциллятора DS3231. Алгоритм выполняет коррекцию в диапазоне от -12,8 до +12,7 ppm;
  • Корректировать дрейф частоты вручную в диапазоне от -12,8 до +12,7 ppm;
  • Приложение позволяет оценить точность и корректность работы осциллятора для конкретного образца RTC, а также оценить шансы на успешную коррекцию в случае значительного дрейфа частоты;
  • Автоматическое сохранение параметров калибровки в энергонезависимой флэш-памяти типа AT24C256 (для ZS-042). В случае сбоя питания модуля.
app.gif

Кроссплатформенная разработка для Linux 64-bit и 32-bit и Windows 32-bit (Win7/8/10).
Проект доступен по ссылке: https://github.com/SergejBre/SynchroTime
Последний релиз v2.0.0

Замечание к версии ⩾ 2.0.0: Необходимо обновить скетч на ver 2.x.x
скетч для RTC DS3231 ZS-042 найдете здесь synchro_RTC.ino
скетч для RTC DS3231 MINI - synchro_RTC_MINI.ino
альтернативный скетч от @poty - synchro_RTC_alt.ino (позволяет обходиться без подключения к прерыванию SQW)

Инструкция по использованию приложения SynchroTime

1
. Во-первых, вам необходимо загрузить скетч в Arduino UNO/Nano из директории проекта arduino/synchro_RTC.ino, если у вас модуль DS3231 ZS-042 или arduino/synchro_RTC_MINI.ino, если у вас DS3231 MINI. Затем подключите модуль RTC DS3231 к Arduino в соответствии со схемой, указанной в Specification. Подключите Arduino к компьютеру через свободный USB порт. Если в системе установлен необходимый драйвер, в диспетчере устройств появится новый виртуальный последовательный порт (под Linux это будет /dev/ttyUSBx, под Windows - COMx). Чтобы узнать имя порта, раскройте список Serial Port в настройках программы и выберете нужный порт. Так же необходимо ввести в настройки программы ваш часовой пояс и при необходимости подтвердить переход на летние время. Подтвердите ваш выбор кнопкой Ok.

2. Используйте команду Information, чтобы получить текущую информацию из RTC DS3231. Если все подключено правильно, вы получите текущее время обоих часов, а также разницу между RTC и системными часами в миллисекундах (с точностью ±2мс), а также значение, записанное в регистре старения, и значение дрейфа частоты RTC рассчитанное в ppm. Если регистр старения и дрейф частоты равны нулю, это означает модуль DS3231 еще не откалиброван (см. Пункт 4).

3. Чтобы установить точное время, используйте команду Adjustment. Часы модуля будут синхронизированы с системным временем компьютора с точностью до ±1мс. После успешного обновления времени, метка времени будет записана в память модуля, что позволит позже определить дрейф частоты осциллятора.

4. Чтобы откалибровать осцилятор модуля DS3231, введите команду Calibration. Для успешного выполнения этой процедуры модуль должен быть активирован (см. Пункт 3), и необходимо, чтобы прошло достаточно времени, чтобы рассчитанное значение ухода частоты было хорошо отличимо от ошибки вычислений/округления (это около 55 часов или 2,3 дня, см. раздел Discussion). Алгоритм программы рассчитает величину отклонения частоты и поправочный коэффициент, которые будут записаны в регистр старения. Время на часах также будет актуализировано. Если калибровка прошла успешно, отобразятся текущее время, дрейф частоты и поправочный коэффициент, как на скриншоте.
Примечание: Этот метод медленный, но его преимущество заключается в том, что он не требует каких-либо ручных усилий, кроме установки и считывания текущего времени. Нужно просто дать модулю спокойно поработать на полке день или два. Преимущество этого метода заключается еще в том, что часы проходят несколько дневных и ночных циклов, где они подвержены суточным колебаниям температуры. И поэтому этот метод помогает лучше спрогнозировать долгосрочную стабильность часов.

5. Чтобы сбросить регистр старения до значения по умолчанию (0x00) и очистить память модуля от данных калибровки, введите команду Reset. Значение по умолчанию будет записано в регистр, а ячейки памяти будут перезаписаны байтами 0xFF.

6. Используйте команду Set Register, чтобы добавить новое значение (например, -12,8) в регистр старения RTC DS3231. Новое значение перезапишет старое значение регистра. Результат ввода ограничен значениями между -12,8 и 12,7. Предупреждение: эту операцию имеет смысл выполнять только в случае сброса всех данных калибровки (см. Пункт 5).
Автор
SergejEU
Скачивания
2,556
Просмотры
9,010
Первый выпуск
Обновление
Оценка
4.67 звёзд 3 оценок

Последние обновления

  1. Добавлена новая v2.0.0 версия приложения

    Добавлено/Исправлено: Управление часовыми поясами перенесено из скетча в пользовательское...
  2. Добавлена новая v1.1.5 версия приложения

    Использование приложения: по мимо выбора настроек последовательного порта есть еще три фичи...
  3. Добавлен вывод цветного текста в консоль

    В версии v1.1.4 добавлен вывод цветного текста в консоль для улучшение восприятия информации.

Последние рецензии

DS3231 MINI Win11 - помог альтернативный скетч и режим совместимости с win7.
Идея отличная, только вообще не понятно, кто и как прописывает поправочный коэффициент в регистр микросхемы??? Программа на ПЦ это делает автоматически? После 2х дней? Или после 2х дней надо что-то нажать, отобразится коэффициент и его нужно будет самостоятельно руками прописать в регистр микросхемы??? Дополните статью собственной инструкцией с последовательностью действий, а не переводом с гитхаба, пожалуйста!
S
SergejEU
У программы есть Помощь на русском "Инструкция по использованию приложения SynchroTime", там описывается по шагово пользовательские кейсы под номерами 2, 3,... 6.

Вообще есть две возможность калибровки:

Чтобы автоматически откалибровать модуль, вам нужно следовать пункту инструкции под номером 3 "Настройка времени" (для подготовки модуля и синхронизации времени с PC). А через определенную паузу (чем больше пауза - тем точней!) следовать исключительно пункту 4 "Калибровка". При выборе команды Калибровка "поправочный коэффициент" будет записан в регистр IC, а время модуля будет актуализовано с PC! При повторной калибровке нет необходимости повторять всю процедуру снова, т.е. пункт 3 "Настройка времени".

Чтобы вручную записать "поправочный коэффициент", вам нужно выбрать пункту 6 "Записать в регистр"
программа полезная, но немного не ясен алгоритм. есть ли тут где-то ветка обсуждения и задавания глупых вопросов?
S
SergejEU
в основном комментарии и ответы на вопросы к программе разбросаны по ветке форума https://community.alexgyver.ru/threads/chasy-na-gri-v2-obsuzhdenie-proekta.1130/

Что касается алгоритма. Программа использует системное время ПК для калибровки модулей, поэтому основная работа/точность алгоритма зависит от синхронизации вашего ПК со службой точного времени Network Time Protocol (NTP). Подробности на странице проекта https://github.com/SergejBre/SynchroTime#System-Requirements