Часы на DS3231

2018-07-29

Часы на DS3231 – статья, в которой расскажу, как сделать часы реального времени на DS3231 с функцией напоминания. Вся информация будет выводиться на Oled-дисплей 128х64. Ну, а теперь обо всём по порядку…

Описание задумки.

Здравствуйте, знакомые поинтересовались можно ли сделать часы - будильник с одновременной установкой нескольких сигналов и выводом небольшого сообщения. Данное устройство должно послужить чем-то вроде таймера для таблетницы. Мне идея понравилась, и решил взяться за разработку. Так на свет появилась схема часов-будильника, которая показана на рисунке 1.

Принципиальная схема часов на DS3231

Рисунок 1.

О схеме.

Сердцем данного устройства является модуль часов DS3231 (рисунок 2),

Модуль часов DS3231

Рисунок 2

а управляет всем микроконтроллер PIC16F877A, в основном, его выбор обусловлен числом портов. Данные выводятся на Oled-дисплей с разрешением 128х64. Дисплей на контроллере KS0108. Питание осуществляется от литиевого аккумулятора емкостью 3000 мА. Кому интересно - вот ещё одна моя конструкция с литиевыми аккумуляторами - FM приёмник на RDA5807.

В качестве зарядного устройства применён модуль с защитой от КЗ на ТР4056 (рисунок 3).

Модуль зарядного на tp4056

Рисунок 3

Индикатором разряда аккумулятора служит супервизор LM809M3-2.93, срабатывающий при напряжении на аккумуляторе в районе 2.93 вольта. Одного заряда аккумулятора, при работе будильника только на светодиод, хватает на 7-8 дней.

Чтоб запустить дисплей пришлось прибегнуть к помощи ноунеймовского китайского повышающего преобразователя 2.5-5 вольт(рисунок 4).

Модуль повышающего преобразователя

Рисунок 4

При работе часы в среднем потребляют 14 мА до преобразователя напряжения и 8 мА после. Ток потребления зависит от: тока подсветки дисплея, тока активного спикера и светодиода будильника. В моем случаи при включенном спикере, светодиоде и будильнике, ток достигал 18 мА до преобразователя напряжения.

Доработка модуля DS3231.

Модуль часов реального времени рассчитан на установку аккумулятора или ионистора, в качестве источника аварийного питания. В модуле предусмотрена цепочка для их заряда. Если вместо аккумулятора воткнуть простую батарейку (типоразмер CR2032), то она может раздуться и перестать работать или вообще загореться. В своём модуле цепь заряда исключил. Ещё исключил светодиод по питанию и его токоограничивающий резистор. Изменения можно увидеть на рисунке 5.

Доработка модуля на DS3231

Рисунок 5

О печатной плате.

Печатную плату разрабатывал в Sprint-Layout. Плата получилась односторонняя, но с перемычками, размерами 95х85мм (рисунки 6-8). На рисунке 8 - красным – это перемычки.

Низ платы

Рисунок 6 - Низ платы.

Низ платы

Рисунок 7 - Низ платы.

Верх платы

Рисунок 8 - Верх платы.

Что умеют.

В данный часах можно запрограммировать до 8 будильников с 16-ти значным текстовым сообщением, алфавит может быть, как русским, так и английским.

Часы имеют два вида индикации срабатывания будильника: световая (светодиод) и звуковая (активный пьезоизлучатель). Звуковую индикацию можно, как включить, так и отключить. Для включения служит кнопка (в замкнутом состоянии звуковая индикация - включена).

В ночное время подсветка отключается (время включения и отключения подсветки можно настроить при программировании EEPROM).

При срабатывании супервизора на дисплей выведется сообщение - «Аккумулятор РАЗРЯЖЕН».

Первое включение и настройки.

Часы, собранные из заведомо рабочих деталей, не нуждаются в наладке и начинают работать сразу же.

Внимание! После сборки часы запускаются без батарейки, как только на дисплее пошёл отсчет времени, ее можно установить!

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

Настройка самих часов.

Удерживаем нажатой кнопку SB4 (установка часов) не менее 1 сек, при этом должны замигать секунды, их изменение осуществляется кнопкой SB3 (кнопка установки). Для изменения значений минут, часов, дня недели и т.д. просто снова нажимаем кнопку SB4, для выхода удерживаем нажатой кнопку SB1 (сброс будильника) не менее 1 сек.

Настройка будильников.

Удерживаем нажатой кнопку SB1 не менее 1 сек, при этом на экране должен отобразится номер изменяемого будильника и его время. Перебор будильников осуществляется кнопкой SB2 (изменения текста напоминаний), кнопкой SB4 выбираем что поменять – часы или минуты, а также включить или выключить будильник. Для смены значений используется кнопка SB3, для выхода удерживаем нажатой кнопку SB1. Если в текущем номере будильника были какие-то изменения, то они запишутся в EEPROM микроконтроллера и выведется сообщение о сохранении.

Внимание! В текущей версии прошивки время будильников должно настраиваться от большего к меньшему, в случаи несоответствия выведется предупреждение об ошибке и произойдет переход на изменение первого будильника.

Настройка текста напоминания.

Удерживаем нажатой кнопку SB2 не менее 1 сек, при этом на дисплее отобразится номер напоминания и его текст. Для изменения символа в напоминании используется кнопка SB3, для перемещения по тексту служит кнопка SB4, для изменения номера напоминания жмем кнопку SB2. При нажатии кнопки SB1 микроконтроллер проверит, были ли изменения в последнем выбранном напоминании, если изменения были - данные запишутся в EEPROM микроконтроллера.

Что можно настроить в EEPROM.

Время включения и отключения подсветки можно настроить при программировании микроконтроллера. Для этого достаточно изменить значения соответствующих ячеек EEPROM. На рисунке 9 время включения подсветки будет соответствовать 6 часам, а отключение - 21 часу.

Настройка времени включения и отключения подсветки

Рисунок 9.

Показания температуры с DS3231 так же можно скорректировать при программировании (корректировка с шагом 1 градус). На рисунке 10 показаны калибровочные константы.

Корректировка показаний температуры

Рисунок 10.

Немного фоток.

Печатная плата(вид снизу)

Рисунок 11 – Печатная плата(вид снизу).

Тестовая сборкаРисунок 12 – Тестовая сборка.

Оформил часики в китайский корпус.Рисунок 13 – Оформил часики в китайский корпус.

Вывел кнопки на отдельную плату.Рисунок 14 – Вывел кнопки на отдельную плату.

Часы в работе.

О деталях.

Всё, что потребуется для сборки часов свёл в таблицу 1.

Таблица1 – перечень компонентов.

Позиционное обозначение

Наименование

Аналог/замена

B1

357090, 3000 мА

C1, C3, C5 - C7,

Конденсатор керамический 100нФ x50B

C2, C11, C14

Конденсатор танталовый TECAP 25 В тип D 10мкФ x25В

C4, C12, C13

Конденсатор керамический 100нФ x50B SMD

C8, C9

Конденсатор керамический 27пФ

C10

Конденсатор электролитический 470мкФ x 25В

DA1

Супервизор питания LM809M3-2.93

DD1

Микроконтроллер PIC16F877А

HL1

Светодиод BL-L522URC Красный

Любой с током до 20 мА

M1

Модуль контроллера заряда на микросхеме TP4056

https://ru.aliexpress.com/item/1PCS-5V-1A-Micro-USB-18650-Lithium-Battery-Charging-Board-Charger-Module-Protection-Dual-Functions/32467578996.html

M2

Повышающий DC-DC преобразователь.

M3

Модуль часов реального времени на микросхеме DS3231

https://ru.aliexpress.com/item/DS3231-AT24C32-IIC-Module-Precision-Clock-Module-without-battery-DS3231SN-for-Arduino-Memory-module/32822420722.html

R1, R11

Резистор 10к SMD

R2

Резистор подстроечный многооборотный 3296W 100к

R3

Резистор 680 Ом

R4 - R7, R10

Резистор 1к SMD

R8

Резистор 330 Ом SMD

R9

Резистор 2,5 Ом SMD

R12

Резистор 3,3к SMD

R13

Резистор 100к SMD

R14

Резистор 20к SMD

SA1-SA3

Кнопка B170G

SB1-SB4

Кнопка тактовая FSM103

SP

Speaker no name 5В

VD1 - VD3

Диод импульсный 1N5819

VT1-VT3

Транзистор BC817

VT4

Транзистор BC847

Oled-дисплей 128х64 на контроллере KS0108

ZQ1

Кварц 4МГц

Некоторые планы.

В скором будущем хочу перенести данные будильников и текста напоминания микросхему EEPROM модуля часов реального времени. Это позволит увеличить число знаков в тексте напоминания, а также добавить количество будильников. Также планирую внести однократный будильник.

Подведу итог. В статье рассказал, как сделать точные часы-будильник на модуле DS3231. В качестве индикатора использовал O-led дисплей 128х64. Часы умеют выводить текстовое напоминание. В качестве источника питания выбрал литиевый аккумулятор на 3000мА, что позволило сделать часы более автономными. Печатная плата у меня получилась односторонней. Часы не содержат дефицитных деталей и не нуждаются в наладке. К статье прилагаются все исходники.

Спасибо, что дочитали до конца! Буду рад обсудить статью в комментариях. Всем удачных разработок!

Файлы к статье:

DS3231 datasheet.

KS0108 datasheet.

PIC16F877A datasheet.

TP4056 datasheet.

LM809 datasheet.

Печатная плата часов.

Проект часов.

Прочитано 11328 раз

Понравилась статья? Помоги и остальным о ней узнать! Это просто.

Комментарии  

 
0 # Олег 13.08.2019 08:35
Решил повторить,но самой прошивки в архиве проекта не нашел.А где HEX файл ? :o
 
 
+1 # Ерёмин Антон 01.09.2019 19:58
Добрый день. HEX есть в архиве. Запрятан в одной из папок. Вот путь - dist\default\production\. Если не подойдёт, то свяжусь с автором и попрошу перекомпилировать
 

Добавлять комментарии могут только зарегистрированные пользователи.

Все права защищены. При указании активной, индексируемой ссылки на сайт MICROPAS.RU, полное или частичное использование материалов разрешается. Уважайте чужие труды! Не забывайте проставлять ссылки! Правообладателям
© Ерёмин Антон Юрьевич 2013-2021гг.