Сейчас на рынке доступно множество модулей часов реального времени (RTC), таких как DS1307 и DS3231. Но когда дело доходит до оценки энергопотребления, их энергопотребление окажется немного выше чем хотелось бы, что может быстро разрядить батарею в случае, если мы работаем с устройствами с питанием от батареи. Поэтому в подобных устройствах оправдано использование модуля часов реального времени, энергопотребление которого значительно меньше — это модуль PCF8563. Дополнительное отличие данного модуля от других подобных является то, что этот модуль работает по интерфейсу I2C.
PCF8563 — это КМОП (CMOS) часы реального времени (Real-Time Clock, RTC) и календарь, оптимизированные для низкого энергопотребления. Также предусмотрены программируемый выход часов, выход прерывания и детектор низкого напряжения. Все адреса и данные передаются последовательно через двухпроводную двунаправленную шину I²C. Максимальная скорость данной шины составляет 400 кбит/с.
В данной статье мы рассмотрим подключение модуля часов реального времени PCF8563 к плате Arduino UNO. Считываемые с модуля значения даты и времени мы будем отображать на ЖК-дисплее 16×2. Ранее на нашем сайте мы рассматривали аналогичный проект на основе модуля DS1307.
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress).
- Модуль RTC PCF8563.
- ЖК дисплей 16х2 (купить на AliExpress).
- Потенциометр 10 кОм (купить на AliExpress).
- Макетная плата
- Соединительные провода.
Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158
Модуль часов реального времени PCF8563
Данный модуль часов реального времени основан на чипсете NXP PCF8563T — программируемом чипсете часов реального времени высокой точности с интерфейсом I2C и частотой обмена данными до 400 кГц / 400 Кбит/с.
Он предлагает множество функций, таких как внешний программируемый выход часов, будильник, таймер и лучшую резервную батарею. Он более устойчив и точен, чем DS1302 или DS1307. Плата RTC PCF8563 обеспечивает функцию часов реального времени/календаря, которая может работать от батареи на плате и работает независимо, даже когда микроконтроллер выключен . Это недорогой, чрезвычайно точный модуль часов реального времени (RTC), работающий по интерфейсу I2C .
Более подробную информацию можно найти в техническом описании PCF8563.
Характеристики PCF8563
1. Отображает год, месяц, день, день недели, часы, минуты и секунды на основе кварцевого кристалла 32,768 кГц.
2. Флаг столетия.
3. Рабочее напряжение часов: от 1,0 В до 5,5 В при комнатной температуре.
4. Низкий ток резервного питания; типично 0,25 мкА при VDD = 3,0 В и температуре = 25 °C.
5. Двухпроводной интерфейс шины I2C 400 кГц (при VDD = 1,8 В до 5,5 В).
6. Программируемый выход часов для периферийных устройств (32,768 кГц, 1,024 кГц, 32 Гц и 1 Гц).
7. Функции будильника и таймера.
8. Встроенный конденсатор генератора.
9. Внутренний сброс при включении питания (POR).
10. Адрес подчиненного (slave) устройства шины I2C: чтение A3h и запись A2h.
11. Контакт прерывания с открытым стоком.
Распиновка PCF8563
Модуль часов реального времени PCF8563 — это модуль I2C, т.е. он работает по двухпроводному протоколу. Он имеет выводы SDA и SCL, которые можно легко подключить к любому микроконтроллеру. Он считывает адрес I2C A3h и записывает адрес I2C как A2h .
Он имеет 4 контакта:
КОНТАКТ 1: VCC — от 1 В до 5,5 В.
КОНТАКТ 2: GND — GND.
КОНТАКТ 3: SDA — Последовательные данные.
КОНТАКТ 4: SCL — Контакт синхронизации.
Схема проекта
Схема подключения модуля часов реального времени PCF8563 к плате Arduino представлена на следующем рисунке.
Подключите контакты SDA и SCL модуля PCF8563 к контактам Arduino A4 и A5. Подключите его контакт VCC к 5 В или 3,3 В, а GND к GND. Аналогично подключите контакты 1, 5, 16 ЖК-дисплея к GND, а 2, 15 к VCC. Подключите потенциометр 10 кОм к контакту 3 ЖК-дисплея для регулировки контрастности. Контакты ЖК-дисплея 4, 6, 11, 12, 13, 14 должны быть подключены к цифровым контактам Arduino 12, 11, 5, 4, 3, 2.
Исходный код программы
Ниже представлен исходный код для подключения модуля часов реального времени PCF8563 к плате Arduino и получения времени и даты. Но перед этим вам нужно установить библиотеку для работы с ним. Загрузите библиотеку по следующей ссылке.
Теперь скопируйте код ниже и загрузите его на плату Arduino. Обязательно измените дату и время в коде на текущее время/дату.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
#include <Wire.h> #include <Rtc_Pcf8563.h> #include <LiquidCrystal.h> //init the real-time clock Rtc_Pcf8563 rtc; LiquidCrystal lcd(12 ,11 ,5 ,4 ,3 ,2); void setup() { // set up the LCD's number of rows and columns: lcd.begin(16, 2); lcd.setCursor(4, 0); lcd.print("PCF8563"); lcd.setCursor(0, 1); lcd.print("Real Time Clock"); delay(4000); lcd.clear(); //clear out all the registers rtc.initClock(); //set a time to start with. //day, weekday, month, century, year rtc.setDate(20, 3, 1, 20, 20); //hr, min, sec rtc.setTime(16, 38, 48); } void loop() { lcd.setCursor(0, 0); lcd.print("Time:"); lcd.setCursor(6, 0); //lcd.print(rtc.formatTime(RTCC_TIME_HM)); lcd.print(rtc.formatTime()); lcd.setCursor(0, 1); lcd.print("Date:"); lcd.setCursor(6, 1); //lcd.print(rtc.formatDate(RTCC_DATE_ASIA)); lcd.print(rtc.formatDate()); // delay(1000); } |
После загрузки кода на ЖК-дисплее начнет отображаться текущее время и дата с указанием прошедшего времени.
36 просмотров
Вам бы нанять переводчика, который разбирается в электронике. И переводит без Гугла.
Вот что это: "Низкий ток резервного копирования; типично 0,25 А"? Во-первых, это ток резервного питания, а не копирования. Во-вторых, ток 0.25А посадит резервный элемент питания всего-то за 1 (один) час. Это не резерв! Если почитать даташит, то там указан ток резервного питания 0.25 микроамперa, так что ваш "переводчик" ошибся. Так, совсем чуть-чуть, всего-то в миллион раз.
Почему так получилось? а потому, что не во всех шрифтах есть греческая буква "мю", которая используется в качестве сокращения для "микро".
Был бы переводчик более внимательным и ответственным, он написал бы так:
"Низкий ток резервного питания; типично 0,25 мкА".
А вообще сайт хорош! Читаю с удовольствием и интересом.
Удачи!
Спасибо, исправил отмеченную вами опечатку. И спасибо что оценили мой труд.
Раньше я все статьи на сайт переводил вручную и большая часть статей на сайте переведена именно так, но в последнее время стал прибегать и к услугам гугл переводчика (его переводы стали сейчас значительно лучше чем раньше) чтобы сэкономить время, но я обязательно читаю его перевод и поправляю вручную все неточности в его переводе. А опечатку, которую вы нашли, да, к сожалению, я пропустил из-за невнимательности. Но, надеюсь, таких опечаток на сайте сейчас все же мало.
Ну и в программировании мне, конечно, легче находить неточности в переводе гугла чем в электронике потому что программирование я знаю лучше чем электронику, хотя изначально у меня диплом по специальности "Инженер радиосвязи" и, конечно же, определенные знания по электронике у меня еще остались.