У кормушки из прошлого урока обнаружилась вторая серия: после переезда на модуль с DS1307 слот 7:00 начал уезжать. Первая неделя — незаметно. Месяц — ужин кота сдвинулся к 19:04, и он возмущённо смотрел на пустую миску. Два месяца — 19:07. Часы исправно тикали, батарейка была живая, а время утекало по семь-восемь секунд в сутки. В партии эти модули я уже разбирал в сравнительном тесте DS1307 и DS3231, а здесь раскладываю сам уход по источникам: сколько секунд в месяц теряют дешёвые часы и почему.
Числа из моего журнала тем временем складывались в закономерность: неделя — минута, месяц — четыре минуты. По одному дню это неуловимо: часы показывают 22:41:07 вместо 22:41:00, и глаз ничего не подозревает. Дрейф потому и коварен, что расплачиваться приходится не сегодня: расписание недели живёт, расписание квартала — уже нет. Поэтому первое, что я советую после сборки любого прибора на DS1307, — завести тетрадный журнал сверки и собрать свои цифры, а не форумные.
Вопрос не риторический: от ответа зависит, как часто подводить часы и годится ли модуль для вашего расписания. В этом уроке — бюджет дрейфа из четырёх статей, таблица перевода в секунды за месяц и симулятор-гонка, где константа ppm меняется из монитора порта, а движок честно пересчитывает таблицу по неделям.
Из чего складывается уход
Первая статья — паспорт кварца. На модулях с DS1307 стоит часовой кварц на 32768 Гц, цилиндр размером с рисовое зерно. Типовой допуск у таких — ±20 ppm: столько кварцу разрешено врать от частоты. Двадцать миллионных звучат безобидно, пока не умножишь на месяц: 20 ppm — это до 52 секунд за тридцать дней. И главное условие: это допуск партии. Конкретный экземпляр может сидеть у нижней кромки, у верхней — или за ней.
Вторая статья — конденсаторы нагрузки. Кварц 32768 Гц хочет видеть строго определённую ёмкость обвязки, у типовых это 12,5 пФ, и рассогласование на единицы пикофарад сдвигает частоту на десятки ppm. На дешёвых модулях стоят два фиксированных конденсатора «для всех сразу» — подгонять их под каждый кварц никто не будет. Отсюда разброс внутри одной коробки: платы из одной партии уезжали на разные минуты в месяц.
Третья и четвёртая — температура и старение. У часового кварца зависимость от температуры квадратичная: точка минимума около +25 °C, и уход на десять градусов в любую сторону добавляет порядка трёх-четырёх ppm — считанные секунды в месяц, но верните модуль с холодной веранды в комнату и посмотрите, как слот приползает обратно. Старение — медленный дрейф самого кристалла: единицы ppm за первый год, дальше тише. Сумма четырёх статей и даёт знакомые по форумам цифры: от десятков секунд до пары минут в месяц, у каждого экземпляра свои.
Разложить уход своего экземпляра по этим статьям можно без лаборатории, обычной сверкой с телефоном раз в неделю. Две недели на столе при комнатных +24 °C покажут паспорт плюс обвязку: у моего худшего модуля вышло около сорока ppm, у лучшего — двадцать с небольшим. Потом переставьте модуль на холодный подоконник: если недельная разница выросла на секунды — это температура, и добавка исчезнет при возврате в комнату. Остаток, который плавно растёт неделя за неделей, — старение. За месяц такой журнал даёт фактический ppm экземпляра точнее любого обещания продавца.
| Источник ухода | Механика | В пересчёте на месяц |
|---|---|---|
| Паспорт кварца ±20 ppm | частота врёт в пределах допуска всей партии | до 52 секунд, у конкретного экземпляра — от нуля и выше |
| Конденсаторы нагрузки «для всех» | рассогласование на единицы пФ — десятки ppm | десятки секунд, у неудачных экземпляров минуты |
| Температура ±10 °C от +25 °C | квадратичная добавка 3–4 ppm | 8–11 секунд, больше на веранде и в щитке |
| Старение, первый год | медленный дрейф кристалла 1–3 ppm | 3–8 секунд, дальше год от года меньше |
Когда это становится заметно? Кормлению кота — не сразу: пять секунд в месяц он не отличит от пятиминутной задержки с вашим участием. Полминуты в месяц — и через два месяца слот уехал на минуту, через полгода напоминание в телефоне и ужин кота живут в разных часовых поясах. Журналам хуже всего: два логгера с расхождением в минуту за месяц в одну хронологию не сшиваются — я это разбирал в уроке про логирование на SD, там таймштампы и есть полпродукта. И заметьте: порог проявляется не мгновенно — первые дни расхождение прячется в секундах, и поймать его можно только журналом с фиксацией раз в неделю, где разница видна как тренд, а не как случайный сбой.
Лечение для DS1307 — периодическая подводка: раз в месяц сверить с точным источником и вызвать adjust. Там, где плата с интернетом, это автоматизирует NTP — в разделе про ESP32 есть готовый рецепт с configTime и NTP-серверами. DS3231 подводки не требует годами: термокомпенсация держит ±2 ppm, и как она устроена внутри — тема урока про точность и компенсацию DS3231. И держите интервал подводки честным: написали «раз в месяц» — ставьте напоминание, а не «как вспомню». Модуль без подводки не испорчен, он просто возвращается к своему естественному дрейфу, и каждая забытая сверка оплачивается минутами на журнале.
Гонка часов на одной константе
Секунды дрейфа считаются одним делением: секунды = ppm × время / 1 000 000. Подставили 20 и месяц в тридцать дней — получили 51,84 секунды. Подставили 2 — пять секунд с копейками. Вся гонка часов ниже — эта арифметика: константа ppmDeshevye задаёт паспорт дешёвых часов, точные часы живут при 2 ppm, а движок пересчитывает таблицу по неделям каждый раз, когда вы меняете число из монитора порта — от первой недели до месяца, чтобы видеть не финальную цифру, а скорость накопления.
Порог для гонки я ставлю из практики: минута — уровень, на котором слот 7:00 уже конфликтует с будильником хозяина. Считайте от своего допуска в обратную сторону: если проекту всё равно до пяти минут в месяц, ему хватит 10 ppm; если нужна точность до десяти секунд — верхняя планка 3-4 ppm, и это уже территория DS3231, та самая, на которой стоит кормушка из первого урока. Формула одна и та же, меняется только разрешённая цифра справа. Честная проверка своего экземпляра: сверка с телефоном раз в неделю, четыре недели подряд; как поставить такой журнал на плату — в скетче ниже.
#include <Wire.h>#include <RTClib.h> RTC_DS1307 rtc; // тот же код для DS3231: меняем только классunsigned long lastPuls = 0; void setup() { Serial.begin(9600); rtc.begin(); Serial.println("Zhurnal hoda: stroka kazhdyj chas"); Serial.println("Raz v nedelyu sverjajte vremya s telefonom"); Serial.println("ppm po faktu = raznica_sek / (7*86400) * 1000000");} void loop() { DateTime now = rtc.now(); if (millis() - lastPuls >= 3600000UL) { // пульс раз в час lastPuls += 3600000UL; Serial.print("puls unixtime="); Serial.print(now.unixtime()); Serial.print(" h="); Serial.print(now.hour()); Serial.print(" m="); Serial.print(now.minute()); Serial.print(" s="); Serial.println(now.second()); } delay(500);}- Введите 47 ppm и посмотрите, когда дешёвые часы впервые уедут на минуту: с таким допуском это случается раньше конца месяца.
- Введите 2 ppm — колонки сравняются: при равных паспортах гонка заканчивается вничью, и вердикт меняется.
- Перепишите вердикт под свой проект: замените порог 60 секунд на свой максимум и найдите ppm, при котором он ломается первым.
- Добавьте в таблицу строку «год» с множителем 365.0 и сравните результат с обещаниями «минута в год» из урока про точность DS3231.
- Уход дешёвых часов — сумма четырёх статей: паспорт ±20 ppm, конденсаторы нагрузки, температура, старение
- 20 ppm — это 52 секунды в месяц; конкретный экземпляр бывает и лучше, и заметно хуже допуска, знак случайный
- Температура добавляет 3–4 ppm на каждые 10 °C от +25 °C; старение — единицы ppm за первый год
- Секунды дрейфа = ppm × время / 1 000 000 — считается в уме за десять секунд
- DS1307 лечится подводкой раз в месяц или NTP на ESP32; DS3231 при ±2 ppm не трогают годами
- 1. Сколько секунд за 30 дней накопит кварц с уходом ровно 20 ppm?
- 2. Чем объясняется разброс ухода между двумя экземплярами из одной партии дешёвых модулей?
- 3. DS1307 уполз на 4 минуты за месяц. Какое обслуживание вернёт ему точность?
- 4. Уход на 10 °C в сторону от +25 °C добавляет часовому кварцу…
- 5. Когда дрейф дешёвых часов впервые ломает расписание с допуском в одну минуту?
Теперь за каждым «минуты в месяц» стоит бюджет из четырёх статей, а за каждой секундой — деление на миллион. И когда на форуме в очередной раз спросят «на сколько уедет DS1307» — не отвечайте «по-разному»: дайте формулу и попросите паспорт кварца конкретного модуля. Осталось навести порядок в самой единице: ppm — не украшение даташита, а переводной курс между паспортной цифрой и отставанием вашей кормушки. Практический итог для ленивых: посчитайте бюджет своего проекта в секундах за месяц — и паспорт нужного модуля выберется сам, без форумов и споров о брендах. Следующий урок — про кварц 32768 Гц, формулу и калькулятор дрейфа, который переводит любое ppm в секунды за месяц и минуты за год.
Частые вопросы по теме урока
- Сколько секунд за 30 дней накопит кварц с уходом ровно 20 ppm?
- 20 × 86 400 × 30 / 1 000 000 = 51,84 с. Движок в симуляторе считает ровно эту формулу — введите 20 и сверьте строку «mesyac». Около 52 секунд
- Чем объясняется разброс ухода между двумя экземплярами из одной партии дешёвых модулей?
- Кварц требует своей ёмкости нагрузки, а модули собирают с обвязкой «для всех сразу»: рассогласование на единицы пикофарад обходится в десятки ppm, и у каждого кристалла оно своё. Фиксированные конденсаторы нагрузки не подогнаны под каждый кварц
- DS1307 уполз на 4 минуты за месяц. Какое обслуживание вернёт ему точность?
- Чип исправен — врёт внешний кварц, поэтому лечится подводкой. Автоматизировать её умеет NTP-синхронизация на ESP32, а вручную хватает месяца между сверками. Сверка с точным источником раз в месяц и rtc.adjust
- Уход на 10 °C в сторону от +25 °C добавляет часовому кварцу…
- Зависимость квадратичная с минимумом около +25 °C: десяток градусов даёт единицы ppm, то есть секунды в месяц. Резонатору Uno полпроцента даже не снилось. Порядка 3–4 ppm, то есть секунды за месяц
- Когда дрейф дешёвых часов впервые ломает расписание с допуском в одну минуту?
- 52 секунды за месяц — минута набегает к двадцатому дню. Таблица гонки показывает неделю, на которой порог пробит: смотрите строки, где desh больше 60. На второй-третьей неделе при типовых 20 ppm