RTC модуль DS1307 подключение к Arduino

Опубликовано 04.07.2013 12:20:00


Модуль рассматриваемый в статье содержит в себе сразу две микросхемы: DS1307 (часы реального временис I2C- интерфейсом) и AT24C32 (микросхема памяти EEPROM на 32K bit).

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

Иллюстрация подключения RTC модуля к Ардуино

 

 

Основные технические характеристики:

• Подсчет реального времени в секундах, минутах, часах, датах месяца, месяцах, днях недели и годах с учетом высокосности текущего года вплоть до 2100 г.

• 56 байт энергонезависимого ОЗУ для хранения данных

• 2-х проводной последовательный интерфейс

• Программируемый генератор прямоугольных импульсов. Может выдавать 1 ГЦ, 4.096 кГЦ, 8,192 кГЦ и 32,768 кГц.

• Автоматическое определение отключения основного источника питания и подключение резервного

• 24-х часовой и 12-ти часовой режим

• Потребление не более 500 нA при питании от резервной батареи питания при температуре 25C°


 

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

Документация на микросхему (datasheet)

Распиновка выводов микросхемы DS1307

 

Назначение выводов:

X1, X2 –  Служат для подключения 32.768 кГц кварцевого резонатора

Vbat – Вход для любой стандартной трёхвольтовой литиевой батареи или другого источника энергии. Для нормальной работы DS1307 необходимо, чтобы напряжение батареи было в диапазоне 2.0 ... 3.5 В. Литиевая батарея с ёмкостью 48 мА/ч или более при отсутствии питания будет поддерживать DS1307 в
течение более 10 лет при температуре 25°C.

GND – общий минус

Vcc – Это вход +5 В. Когда питающее напряжение выше 1.25 * VBAT, устройство полностью,доступно, и можно выполнять чтение и запись данных. Когда к устройству подключена батарея на 3 В, и Vcc ниже, чем 1.25 * VBAT, чтение и запись запрещены, однако функция отсчёта времени продолжает работать. Как только Vcc падает ниже VBAT, ОЗУ и RTC переключаются на батарейное питание VBAT.

SQW/OUT – Выходной сигнал с прямоугольными импульсами.

SCL – (Serial Clock Input - вход последовательных синхроимпульсов) – используется для синхронизации данных по последовательному интерфейсу.

SDA – (Serial Data Input/Output - вход/выход последовательных данных) – вывод входа/выхода для двухпроводного последовательного интерфейса. 


 

Работа с выводом SQW/OUT.

Для начала рассмотрим структуру регистров DS1307.

Структура регистров микросхемы DS1307

структура регистров DS1307

 

Нас интересует "Управляющий регистр" находящийся по адресу 0x7, т.к. он определяет работу вывода SQW/OUT.

Если бит SQWE = 1. то начинается формирование прямоугольных импульсов, если SQWE = 0, то на выходе вывода будет значение бита OUT.

За частоту импульсов отвечают биты RS0 и RS1, а именно:

     RS0           RS1           Частота     
     0      0      1 Гц
     0      1      4.096 кГц
     1      0      8.192 кГц
     1      1      32.768 кГц

 

 

 

 

 

Приведем пример:

Если нам нужно начать формирование прямоугольных импульсов с частотой 1  Гц, то необходимо в 0x7 регистр микросхемы, которая имеет адрес 0x68 отправить байт 00010000 или 0x10 в шестнадцатиричной системе счисления.

При помощи библиотеки Wire.h, это можно сделать следующим образом:

Wire.beginTransmission(0x68);
Wire.write(0x7);
Wire.write(0x10);
Wire.endTransmission();


 

Подключение к Arduino:

 

Выводы отвечающие за интерфейс I2C на платах Arduino на базе различных контроллеров разнятся.

 RTC модуль  На базе ATmega 328  Leonardo  MEGA, ADK, DUE
 SCL  A5  D3  D21
 SDA  A4  D2  D20
 VCC  +5V  +5V  +5V
 GND  GND  GND  GND

Иллюстрация подключения RTC модуля к Ардуино

 

Необходимые библиотеки:

для работы с DS1307: http://www.pjrc.com/teensy/td_libs_DS1307RTC.html
для работы со временем: http://www.pjrc.com/teensy/td_libs_Time.html


 

Установка времении

 

• Вручную в коде 

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

 
Пример программного кода


 

• Установкой из  "Монитора порта"

Более точный вариант установки времени. Время задается через "монитор порта" по ходу работы контроллера.

Открываем монитор, вводим данные в нужном формате, смотрим на эталонные часы, подлавливаем момент и шелкаем "отправить".

 
Пример программного кода



 

Статьи в похожей тематике:

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


 

Купить Купить в России  Модуль RTC (DS1307) + EEPROM (AT24C32)


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