Консольное приложение synchroTime для калибровки RTC DS3231 (ZS-042) модулей.
- Войдите на сайт для отправки комментариев
Пнд, 14/09/2020 - 17:38
В общем, предыстория проекта такова.. Еще весной я приобрел у китайцев более 20-ти модулей RTC DS3231 (ZS-042) тремя партиями. После краткого теста оказалось, что половина из модулей негодные. Один модуль вообще никак не определяется, еще 5-ть отстают более чем на одну секунду в час. Остальные тоже врут, но не так нагло. В чем там дело выяснять не стал, благо цена была копеечная. Меня интересовал другой вопрос: Как отсортировать годные модули от бракованных? По ТХ DS3231 дрейф времени не должен превышать +-2ppm, но Как измерить дрейф за самое короткое время? Сколько нужно для этого ждать? Можно ли откалибрировать осциллятор часов?
Так родилась идея написать небольшую тулзУ, чтобы она могла тестить модули и время по эталонним часам сверяла, и автоматически модули калибровала (в известных пределах).
В общем, то что у меня получилось, я выношу на суд community. Пользуйтесь и не забывайте оставлять ваши feedbackИ.
Здесь страничка с моим проектом на GitHub.com. Здесь же ссылки на скетч и на консольный вариант тулзы: под линукс 32-бит и 64-бит, и под 32-х битные винды. Да, для точности измерений, а это порядка 1-й - 2-х микросекунд, важна постоянная синхронизация с серверами точного времени. Для счастливых обладателей линукса нет никаких проблем. синхронизация происходит автоматически по протоколу ntp. Для сторонников Гейтса придется синхронизировать время каждый раз вручную или лезть в системный реестр. Мне было очень интересно видеть в живую, как быстро уплывает время на виндовс-машине. На винде заявленная точность калибровки не гарантируется.
Пока всё, остальное найдете в документации на странице проекта SynchroTime.
интересно, спасибо!
сразу возникает мысль - а накой тут линукс? Время с серверами и крохотный ESP синхронизировать умеет - получился бы мобильный девайс...
интересно, спасибо!
сразу возникает мысль - а накой тут линукс? Время с серверами и крохотный ESP синхронизировать умеет - получился бы мобильный девайс...
точная синхронизация на удалённом NTP? Это навряд ли, даже локальному NTP чтобы войти в синхронизм с определённой точностью (зависит от марки сервера) нужны сутки... да и в локальной сети время прохождения пакета конечно... оно конечно меньше 1 мс, а вот насколько - вопрос...
А в часовых девайсах частота кварцевого генератора 32768 выгоняется простым частотомером с периодом счёта 10 секунд, так на стадии калибровки часов в СССР было...
я для своих модулей брал системное время компьютера, точности для бытовых нужд хватает, модулей было 5, брака не было
Сутки? Не многовато-ли? У ntpdate что-ли... есть ключик для форсажа.
Сутки? Не многовато-ли? У ntpdate что-ли... есть ключик для форсажа.
Это у меня сейчас Дэлы, а раньше было интелеевское железо от РС, там сутки как раз, пока устаканится прыгать, про ключики не знал и, не пробовал, надо поэкспериментировать...
Всё таки одна микросекунда очень высокий показатель, интересно, зачем ТСу такая точность потребовалась?
PS DS3231 похоже не калиброванные к нему пришли
"к пище и бабам неприхотлив" ... видимо )))
на линуксе есть служба ntpd и консольные утилиты, которые показывают статистику по синхронизации с серверами точного времени. На самом деле здесь точной синхронизации не требуется, достаточно знать смещение и дисперсию (offset и jitter) для NTP сервера, отмеченного звездочкой. Если в сумме ошибка укладывается в интервал 10-ть мс, можно калибровать не меняя параметров. Если смещение + дисперсия превышает этот порог, нужно пересчитать время для накопления дрейфа.
покупал из принципа, что это был единственный продавец, который гарантировал доставку за 17-ть дней, не смотря на пандемию и ограничения. вопрос цены вторичен, тем более, что деньги за бракованные китаец вернул. Самые дорогие предложения отнюдь не гарантируют, что со временем частота вашего кварца поплывет, что побежите в гешефт покупать новый? А здесь же можно просто еще раз откалибровать и все дела.
Где Вы их такие берёте? Сколько ни покупал - никогда ни одного нарекания. Выбирал чаще всего по принципу "если на рубль дешевле, значит лучше". Я что-то не так делаю?
Эххх, если нужны, могу поделиться :-)
Купил в корпусе so8, 2 партии 10 и 5 штук, у разных продавцов, и все бракованные. Те что в корпусе so16 все нормальные.
В so8 сразу видно что косячные, если получить температуру от "встроенного термометра", то она или 8 градусов или 46. Может как раз в этом и есть косяк, отбраковку продали.
Под ядром Гавера один килобайт памяти программ экономится, просто реплика
а разве кварц уже не считается диоксидом кремния?
а разве кварц уже не считается диоксидом кремния?
Не знаю. Я последние поправки к конституции так и не удосужился прочитать, а там до хрена чего нового ввели.
не нужно ничего там видеть, достаточно посмотреть даташит на DS3231S/SN. Там все черным по белому написано, что за технологии применяются и что стоит внутри чипа:
The DS3231 is a low-cost, extremely accurate I²C real-time clock (RTC) with an integrated temperaturecompensated crystal oscillator (TCXO) and crystal...
Описание технологии TCXO (temperature compensated crystal oscillator):
Термокомпенсированные генераторы (TCXO) — это кварцевые генераторы, температурный уход частоты которых скомпенсирован специальной схемой. Коэффициент компенсации составляет обычно 10…30, что позволяет получить температурную нестабильность в пределах от ±0,5х10-6 до ±5х10-6 в широком интервале температур.
Термокомпенсированные кварцевые генераторы применяются в устройствах, где требуется быстрый выход в рабочий режим и повышенная стабильность частоты (радиолокационные станции, опорные генераторы мобильных и переносных радиопередающих устройств и т. п.
1) вопрос, как говорится сходу, вы какую батарейку поставили? диод выкусили? какой номинал сопротивления на подзаряде?
у всех без лития, нужно либо диод выкусывать, либо сопротивление менять на 0,5М и выше (только для компенсации токов утечки... ).
2) какая буковка на корпусе (пост 1031)?
Если вопрос ко мне, то:
to (1) Батарейки ставил литиевые CR2032. Оба сопротивления (по 100 Ом) на светодиод и в цепи подзарядки выпаял. Диоды оставил на месте.
to (2) DS3231SN
DS3231М это совсем иная технология - MEMS осциллятор, на поликристалле кремния.
пост 17...
это печально... теперь и эти микросхемы покупать с большой оглядкой... как косоглазые достали, специально косячат. Пишут одно, а лепят другое.
DS3231SN из старых запасов четко работают, а вот с новой некоторые трудности, аналогично вашим. Думал мой косяк, выходит китайсы гады, не я один попался на брак...
после калибровки модуля уход времени не превышает 3 мс в сутки
No Longer Available (NLA)The product has been discontinued and is not available for purchase. We list recommended replacements when possible.
А есть принципиальная разница MZ+ и SN? У меня почему-то MZ+ не желает программироваться на выход прерывания, с SN проблем нет.
какое у вас исполнение модуля? Насколько я знаю, на микро модулях выход SQW может быть не соединен с ногой чипа (Pin 3).
В принципе, у DS3231SN сигнал должен быть явно активирован при инициализации RTC модуля и может быть параметризован на разные частоты 8k, 4k и 1kHz. На DS3231M он жёстко установлен на 1 Гц и не может быть изменен.
А никакое. Просто микросхема, подключение по даташит. Связь есть, сигнала прерывания нет.
Просто из 16 ног всё равно 8 лишних, на одной платке можно уместить и часы и атмегу.
P.S. Добавлена новая 2.0.0 версия приложения:
https://github.com/SergejBre/SynchroTime/releases
скетчи для ардуино:
https://github.com/SergejBre/SynchroTime/blob/master/arduino/synchro_RTC.ino
https://github.com/SergejBre/SynchroTime/blob/master/arduino/synchro_RTC_MINI.ino
Уважаемый SergejEU! Большое спасибо за ваш труд.
На github Добавлен GUI версии 1.1.2 для Линукса. Какое отличие от версии 1.1.0 и стоит ли ожидать релиз для Виндоус?
p.s. Программу версии 1.1.0 я опробовал, модуль синхронизируется и калибруется. Завтра хочу разработать и сделать модули с ZIF панельками для 16 и 8 ногих чипов, чтобы можно было до монтажа на плату отбраковывать микросхемы.
Уважаемый SergejEU! Большое спасибо за ваш труд.
На github Добавлен GUI версии 1.1.2 для Линукса. Какое отличие от версии 1.1.0 и стоит ли ожидать релиз для Виндоус?
SergejEU, спасибо за ответ.
Хочу сделать макеты для отдельных чипов с панелями. Можно ли как то обойтись на этих макетах без м/с памяти? Например, запомнить время, в которое сделали синхронизацию и посчитать коррекцию вручную?
Можно ли как то обойтись на этих макетах без м/с памяти? Например, запомнить время, в которое сделали синхронизацию и посчитать коррекцию вручную?
SergejEU, можно вас попросить добавить в приложение выбор часового пояса (TIME_ZONE), чтобы не изменять его в скетче?
SergejEU, можно вас попросить добавить в приложение выбор часового пояса (TIME_ZONE), чтобы не изменять его в скетче?
В версии 2.0 реализована возможность выбора часового пояса в настройках программы. Модифицировать скетч для ардуино больше не нужно, но скетч придется обновить на новый!
Хороший проект!
Один из модулей показал великолепный результат:
Уход часиков за период с 08.07.22 по 21.08.22 составил - (минус) 34 миллисекунды (после калибровки)
Не трогай линь , Линь это вам не винда.
Согласен
Один модуль из имеющихся очень даже ничего!
-65 миллисекунд за без малого 3 месяца...