Будильник для птичника я собрал на DS3231 и привык, что время стоит как вкопанное: обещанные пара промилле точности — тема урока про точность DS3231. На четвёртую зиму экран отрапортовал 00:00 1 января 2000 года и дальше не поехал. Схему я не менял, скетч не трогал, питание было стабильным — сдалась батарейка. Таблетка CR2032 из комплекта модуля честно отработала свой срок, и никакой мистики в её смерти не было: чистая математика микроампер, которую я теперь считаю до покупки модуля, а не после вскрытия устройства.
Разбираем ресурс таблетки по-взрослому: откуда берутся обещания про десять лет, почему на практике выходит вдвое-втрое меньше и по каким признакам понять, что замена назрела, не дожидаясь 2000 года на экране. Отдельно — процедура замены без потери времени и калькулятор в симуляторе: подставляете ток резервного питания, получаете срок в годах. Бонусом — правило приёмки нового модуля, которое сэкономит вам вечер диагностики. А про родственную таблетку-аккумулятор LIR2032 и её зарядные цепи поговорим в следующем уроке про LIR2032 — там же разберём, почему некоторые модули травят обычную CR2032.
Откуда берутся обещанные годы
Приборная база простая. Свежая CR2032 хранит 220–240 мА·ч при трёх вольтах; производители модулей DS3231 обещают 8–10 лет резерва при +25 °C. Проверим арифметикой: DS3231 в резервном режиме ест по паспорту 0,84 мкА — это ход часов без обмена по шине. Делим 220 000 мкА·ч на 0,84 мкА, получаем 262 000 часов — почти тридцать лет. Цифра честная и при этом лукавая: она предполагает, что таблетка не стареет сама, а держатель контактов идеален.
Реальность режет ресурс по трём фронтам. Саморазряд литиевой первичной ячейки — около одного процента в год, это мелочь. Контакт в дешёвом пружинном держателе — уже не мелочь: микрокоррозия лепестков добавляет утечки и пропадания, и держатель умирает раньше химии. А на части модулей таблетку круглосуточно подпитывает 5 вольт через зарядную ветку — об этом разговор впереди. Мой практический итог после нескольких устройств: на даче, где зимой минус, а летом жара под навесом, таблетка живёт 4–6 лет; в квартире считайте 6–10. Форумное правило «менять каждые 3–5 лет превентивно» я поддерживаю для всего, что отвечает за расписания и безопасность.
Соседние чипы считаются по той же формуле с поправкой на аппетит. DS1307 в резерве берёт не больше полмикроампера — бумажный ресурс выходит ещё длиннее, чем у DS3231, но обычный кварц без термокомпенсации не умеет править частоту по температуре, и уход времени от вас не спрячешь. Другие собраться из этого семейства живут по своим паспортным токам — приём везде один: ток из даташита делите на ёмкость таблетки и помните, что ответ «на бумаге» всегда красивее реального. И хитрость для хозяйства с несколькими часами: если модули покупались одной партией, таблетки меняю пачкой, пока даты установки не разъехались, — раз в три-четыре года один вечер на все устройства сразу.
Температура — второй нож. Скорость саморазряда растёт с нагревом: таблетка в неотапливаемом сарае переживает зиму без потерь, но то же устройство в котельной или на солнцепёке стареет заметно быстрее. Глубокий холод саморазряд душит, зато под нагрузкой напряжение проседает сильнее — для микроамперных часов это некритично. Отсюда моя привычка: дата установки таблетки, написанная маркером на корпусе модуля. Через три года вопрос «а что там с батарейкой» решается одним взглядом, а не демонтажом узла.
Теперь про выбор из таблицы ниже. CR2025 и CR2016 прилично экономят место, но RTC-держатель рассчитан на двадцатимиллиметровую толщину: тонкая таблетка сидит с перекосом, лепесток жмёт на край, контакт гуляет от температуры. Если CR2032 в вашем держателе болтается — лечится подгибанием лепестка, а не покупкой более тонкой таблетки. И ещё одна закономерность из практики: дешёвые модули приезжают с таблеткой, которая уже год-два провела на складе, поэтому приёмку нового модуля я начинаю с замера напряжения, а чаще просто ставлю свою, свежую, из только что вскрытого блистера.
| Таблетка | Напряжение | Ёмкость | Суть |
|---|---|---|---|
| CR2032 | 3,0 В | 220–240 мА·ч | стандарт для RTC: DS3231 и DS1307, ресурс — годы |
| CR2025 | 3,0 В | 150–160 мА·ч | на 0,5 мм тоньше: лепесток держателя жмёт слабо, контакт гуляет |
| CR2016 | 3,0 В | 75–90 мА·ч | вдвое тоньше: проваливается и поджимается, срок втрое короче |
| LIR2032 | 3,6 В (до 4,2) | 40–45 мА·ч | аккумулятор: только для плат с зарядной веткой, тема следующего урока |
Как понять, что пора менять
Симптомы умирающей таблетки предсказуемы. Первый: время замирает на моменте отключения питания и дальше не идёт — резерв кончился, счёт остановился. Второй: на экране 00:00 1 января 2000 года, стартовое значение чипа. Третий ловится скетчем: флаг lostPower(), который в норме поднимается только после честного пропадания питания, начинает срабатывать после каждого выключения — значит, резерв не вытянул перерыв. Тест отключением на две минуты я описывал в уроке про подключение DS1307 — он одинаково работает для обоих чипов.
Мультиметр добавляет уверенности. Свежая CR2032 без нагрузки показывает 3,2–3,3 В; рабочая — от 3,0; ниже 2,8 В таблетка идёт под замену, даже если часы формально тикают. Хитрость в том, что у плохой таблетки напряжение без нагрузки выглядит прилично, а под током проваливается: коснитесь щупами лепестков держателя прямо в плате и посмотрите, держится ли число. Спорный контакт лечится механикой — подогнуть лепесток помогает чаще, чем кажется; порядок измерений я подробно разбирал в уроке про мультиметр. Ещё одна тонкость замера: дешёвые мультиметры сами подгружают щупами микроамперы, поэтому на особо сомнительных таблетках я сверяюсь вторым прибором — расхождение больше десятой доли вольта само по себе приговор.
Диагностику ведите по порядку, чтобы не заменить живое. Сначала скетч-полисмен ниже: он печатает флаг и дату. Дата до 2020 года — счёт стоял, подозревайте резерв. Время идёт, но уползает на минуты в неделю — это кварц, а не таблетка: DS1307 и DS3231 в этом плане сильно отличаются, я сводил их в уроке-сравнении. И классика из урока про первый скетч: строка adjust с временем компиляции, оставленная в финальном скетче, имитирует потерю времени при каждой загрузке — проверьте её до того, как обвинять батарейку.
#include <Wire.h>#include <RTClib.h> RTC_DS3231 rtc; void setup() { Serial.begin(9600); if (rtc.begin() == false) { Serial.println("RTC molchit: proverte provodku"); while (1) { } } int lost = rtc.lostPower(); DateTime now = rtc.now(); Serial.print("lost="); Serial.println(lost); Serial.print("y="); Serial.print(now.year()); Serial.print(" mo="); Serial.print(now.month()); Serial.print(" d="); Serial.println(now.day()); if (now.year() < 2020) { // стартовое значение чипа: резерв давно не тянет Serial.println("chasy stoyat na 2000 godu: menayte tabletku"); rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); } else { if (lost) { rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); } }} void loop() { DateTime now = rtc.now(); Serial.print("h="); Serial.print(now.hour()); Serial.print(" m="); Serial.print(now.minute()); Serial.print(" s="); Serial.println(now.second()); delay(1000);}Сама замена — пять минут и две привычки. Первая: берите таблетки в блистере с датой выпуска. Первичная литиевая ячейка лежит на складе до десяти лет, и дата на упаковке объясняет, почему «новая» таблетка из лотка у кассы сдаётся вдвое быстрее ожидаемого: полгода на прилавке плюс пара лет на складе — и треть срока уже потрачена без вас. Вторая привычка: бренд против noname. На бумаге ёмкости близки, в жизни Panasonic или Renata ровнее держат напряжение на склоне жизни, а безымянные экземпляры грешат завышенной маркировкой. Запас держите в ящике с расходниками: одна и та же CR2032 живёт в напольных весах, материнских платах и брелоке сигнализации — пригодится.
Отдельно про то, чего делать нельзя. Первичную CR2032 заряжать нельзя ни при каких условиях: закрытая ячейка не отводит газ, при заряде он раздувает корпус — от горбатой таблетки до треснувшей с вытекшим электролитом. Не поможет и «слегка подзарядить»: порог, за которым первичный элемент начинает газить, лежит ниже всяких полезных напряжений. Хочется перезаряжаемости — это отдельный класс таблеток, аккумуляторы, и их разбор целиком уйдёт в следующий урок. По той же причине обходитесь без «улучшений» вроде подпаивания дополнительных батареек параллельно: две первичные ячейки в одной цепи начинают перераспределять заряд между собой, и ни одна не живёт обещанного срока.
Эксперименты
- Введите 0.84 — паспортный ток DS3231: почти 30 лет на бумаге. Подумайте, что срезает их до 8–10 на практике.
- Введите 3 — ток с запасом на утечки держателя и тепло: срок падает до восьми лет.
- Введите 100 — утечка уровня «таблетку подключили в активную цепь»: три месяца, и резерв исчерпан.
- Перезапустите симуляцию: lost=0, а время продолжилось с той же секунды — так выглядят часы, у которых резерв в порядке.
- DS3231 в резерве ест 0,84 мкА: 220 мА·ч дают почти 30 лет на бумаге, реально 5–10 из-за саморазряда, держателя и тепла
- Для ответственных устройств таблетку меняют превентивно раз в 3–5 лет; дату установки пишите маркером на корпусе
- Признаки смерти: время замирает после выключения, на экране 2000-й, lostPower() срабатывает после каждого перерыва питания
- Мультиметр: свежая таблетка 3,2–3,3 В, замена ниже 2,8 В; смотрите напряжение под нагрузкой, прямо в держателе
- Меняйте таблетку при включённом питании модуля — счёт времени не остановится
- 1. Сколько DS3231 потребляет от батарейки в резервном режиме?
- 2. Сколько прослужит CR2032 в устройстве на даче — с жарой летом и морозом зимой?
- 3. Часы показывают 00:00 1 января 2000 года. Что это чаще всего значит?
- 4. Как заменить батарейку, не потеряв время?
- 5. Мультиметр показывает 2,6 В на таблетке в держателе. Ваши действия?
Частые вопросы по теме урока
- Сколько DS3231 потребляет от батарейки в резервном режиме?
- Паспорт называет типовой ток хода часов 0,84 мкА. Обмен по шине I2C идёт от основного питания, батарейка работает только в резерве. 0,84 мкА
- Сколько прослужит CR2032 в устройстве на даче — с жарой летом и морозом зимой?
- Тепло, саморазряд и контакт держателя срезают бумажные десятилетия до 4–6 лет; в отапливаемой комнате выходит 6–10 лет. 4–6 лет
- Часы показывают 00:00 1 января 2000 года. Что это чаще всего значит?
- 2000-й — стартовое значение чипа после полной потери резерва. Первый подозреваемый — таблетка, второй — контакт её держателя. Батарейка разрядилась и счёт остановился
- Как заменить батарейку, не потеряв время?
- Пока на VCC есть питание, чип ест от шины и счёт не останавливается. Одновременная потеря обоих источников поднимает флаг потери времени. При включённом питании модуля: старую вынуть, новую вставить плюсом наружу
- Мультиметр показывает 2,6 В на таблетке в держателе. Ваши действия?
- Низкое напряжение предупреждает об остановке раньше, чем она случится: при 2,6 В резерв протянет считанные недели. Подзаряжать первичную CR2032 нельзя, а CR2016 тоньше и хуже держится в пружине. Заменить таблетку: ниже 2,8 В резерв на исходе