RTC модуль (DS1307) для Arduino своими руками

Опубликовано 11.06.2013 21:01:00


В данной статье рассмотрим нюансы из даташита, которые помогут сделать отсчет времени более точным и соберем полноценный часовой модуль, с удобной распиновкой для подключения к Arduino учитывая все эти параметры.

Встречайте новый модуль из раздела своими руками - DS1307 модуль часов реального времени

Модуль часов реального времени на микросхеме DS1307 для Arduino своими руками (DIY)

 

 

Характеристики микросхемы:

Подсчет реального времени в секундах, минутах, часах, датах месяца, месяцах, днях недели и годах с учетом высокосности текущего года вплоть до 2100 г.
56 байт энергонезависимого ОЗУ для хранения данных
2-х проводной последовательный интерфейс
Программируемый генератор прямоугольных импульсов. Может выдавать 1 ГЦ, 4.096 кГЦ, 8,192 кГЦ и 32,768 кГц.
Автоматическое определение отключения основного источника питания и подключение резервного
24-х часовой и 12-ти часовой режим
Потребление не более 500 нA при питании от резервной батареи питания при температуре 25C°


 

Микросхема выпускается в восьмипиновых корпусах. Распиновка для всех одинакова. Далее приведу строки из даташита для полноты картины.

Datasheet 

Схема к микросхеме DS1307


Описание выводов
Vcc, GND – на эти выводы подается питание.
Vcc – это вход +5 В. Когда питающее напряжение выше 1.25 * VBAT, устройство полностью,доступно, и можно выполнять чтение и запись данных. Когда к устройству подключена батарея на 3 В, и Vcc ниже, чем 1.25 * VBAT, чтение и запись запрещены, однако функция отсчёта времени продолжает работать. Как только Vcc падает ниже VBAT, ОЗУ и RTC переключаются на батарейное питание VBAT.
VBAT – вход для любой стандартной трёхвольтовой литиевой батареи или другого источника энергии. Для нормальной работы DS1307 необходимо, чтобы напряжение батареи было в диапазоне 2.0 ... 3.5 В. Литиевая батарея с ёмкостью 48 мА/ч или более при отсутствии питания будет поддерживать DS1307 в
течение более 10 лет при температуре 25°C.
SCL (Serial Clock Input - вход последовательных синхроимпульсов) – используется для синхронизации данных по последовательному интерфейсу.
SDA (Serial Data Input/Output - вход/выход последовательных данных) – вывод входа/выхода для двухпроводного последовательного интерфейса. Вывод SDA – с открытым стоком и требует внешнего подтягивающего резистора.
SQW/OUT (Square Wave/Output Driver - сигнал с прямоугольными импульсами) – когда включен, т.е. бит SQWE установлен в 1, вывод SQW/OUT выдаёт прямоугольные импульсы с одной из четырёх частот (1 Гц, 4 кГц, 8 кГц, 32 кГц). Вывод SQW/OUT – с открытым стоком и требует внешнего подтягивающего резистора. SQW/OUT будет работать как при питании от Vcc, так и при питании от VBAT.
X1, X2 – выводы для стандартного кварцевого резонатора с частотой 32.768 кГц. Схема внутреннего тактового генератора разработана для работы с кварцевым резонатором, имеющим входную ёмкость 12.5 пФ.


 

Из вышенаписанного можно подчеркнуть очень важную деталь. Для точности необходимо использовать часовой кварц со входной емкостью именно 12.5 пФ(хорошо подходят кварцы от материнских плат). Если порыться глубже в даташите можно найти информацию о том, что ножки кварца следует огородить прямоугольником соединенным с землей, а корпус кварца необходимо соединить с землей.


 

Полистав инет в поиске уже готовых решений нашел следующие интересные варианты:
http://avrdevices.ru/chasi-realynogo-vremeni-ds1307/
http://robozone.su/experiments/11-plata-chasov-realnogo-vremeni-ds1307-i2c.html

Модули сделаны добротно, однако повторять их я не стал. Для себя я решил их модернизировать, точнее заточить под свои нужды.


1) Вывод SQW/OUT я использовать не буду, модуль предназначен только для отсчета времени.
2) Сделать модуль более компактным измользуя для этого SMD компоненты. 
3) А главное, вместо стандартных штырей для подключения, вывести коннекторы по краям платы, тем самым сделав возможным вариант подключения модуля к Arduino по "шилдовой" системе.

Модуль часов реального времени на микросхеме DS1307 для Arduino своими руками (DIY)



Процесс сборки

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

Модуль часов реального времени на микросхеме DS1307 для Arduino своими руками (DIY)

Фото распаянного модуля.

Модуль часов реального времени на микросхеме DS1307 для Arduino своими руками (DIY)

Статью о подключении данного модуля и примеры программного кода можно посмотреть здесь.

Фото состыковки модуля с "Arduino PRO zelectro edition" по шилдовой системе. 

Фото состыковки модуля с "Arduino PRO zelectro edition" по шилдовой системе. 

фото состыковки модуля с "Arduino PRO zelectro edition" по шилдовой системе. 


 

Загрузить архив

В архиве лежит шаблон под ЛУТ и список деталей.

Открываем изображение => Печать => Во всю страницу


 

Для облегчения распайки smd компонентов с обратной стороны платы, где нет маркировки, приведу картинку.

Монтажная схема


А как же комментарии?