|
Цель этого проекта - освоить работу с модулем часов реального времени (Real Time Clock) на базе чипа DS1302 от компании Maxim Integrated.
Модуль часов реального времени DS1302
На выходе проекта мы получим часы-будильник, на экране которого можно увидеть текущее время, дату и день недели, а также комнатную температуру. Функция будильника имеет широкий спектр настроек : от одиночного включения до срабатывания в определенный день недели. В качестве источника сигнала используется пьезопищалка и светодиод. Система позволяет настраивать все необходимые параметры и записывать их в память Arduino.
СОСТАВ СИСТЕМЫ
PLC Arduino UNO с шилдом Sensor Shield v 5.0 (питание 7-12 В постоянного тока), LCD-дисплей с шиной I2C, DC-DC конвертер для питания дисплея, пьезопищалки и светодиода, кнопочный пост с тремя кнопками и модуль часов реального времени. Для работы этого модуля нужна батарейка CR2032 на 3 вольта. Измерение температуры производится самодельным температурным преобразователем.
КАК РАБОТАЕТ
При подаче питания на Arduino во время приветственной заставки вы услышите проверочный сигнал зуммера и увидите, как загорится светодиод. Если это самое первое включение, вам надо зайти в настройки часов и выставить текущую дату и время. Далее вы можете пользоваться устройством, как обычными часами, включая функцию будильника.
Часы-будильник на базе RTC DS1302
КНОПКИ УПРАВЛЕНИЯ
Управлять системой можно с помощью трех кнопок : НАСТРОЙКИ, ВВЕРХ и ВНИЗ. Рассмотрим их функции подробно :
Кнопка НАСТРОЙКИ
При нажатии этой кнопки вы попадете в меню настроек и будете циклично переходить по пунктам меню. После последнего пункта меню вы снова вернетесь на основной экран (время, дата и температура). Так как количество пунктов меню довольно много, все они разбиты на четыре логические группы : установка будильника, настройка часов и даты, калибровка термодатчика и сохранение/загрузка. Каждый блок предваряет приветственный экран, от куда вы можете сразу перейти к следующей группе настроек (кнопка ВВЕРХ) или выйти из настроек (кнопка ВНИЗ).
Все цифровые параметры имеют верхнюю и нижнюю границы, за которые вы выйти не сможете. Изменения параметров будильника и термодатчика сразу принимаются системой, подтверждение не нужно. Обратите внимание, верхнюю и нижнюю границы, а также значения по умолчанию вы можете сами изменять в скетче. Имейте в виду, на время нахождения в настройках будильник отключается.
Пройдемся по пунктам меню Настройки.
- Alarm Settings : приветственный экран группы настроек будильника.
- HourNow HH:MM:SS / HourNew HH:MM:SS : настройка часов будильника (верхняя строчка - текущее время, нижняя - вновь устанавливаемое).
- Min_Now HH:MM:SS / Min_New HH:MM:SS : настройка минут будильника.
- Sec_Now HH:MM:SS / Sec_New HH:MM:SS : настройка секунд будильника.
- Day_Now DD.MM.YY / Day_New DD.MM.YY : настройка дня будильника (верхняя строчка - текущая дата, нижняя - вновь устанавливаемая).
- Mon_Now DD.MM.YY / Mon_New DD.MM.YY : настройка месяца будильника.
- YearNow DD.MM.YY / YearNew DD.MM.YY : настройка года будильника.
- Week Mode : режим будильника по дням недели. Имеются следующие варианты :
- Only One Time - будильник срабатывает только один раз в установленное время (здесь играет роль и дата).
- Every Day - в этом режиме сигнал подается каждый день в одно и то же время (настройки даты значения не имеют).
- From Mon to Fri - в этом режиме сигнал подается в будние дни (понедельник - пятница) в одно и то же время (настройки даты значения не имеют).
- Only Sat and Sun - здесь сигнал подается в выходные (суббота и воскресенье) в одно и то же время (настройки даты значения не имеют).
- Only Xxxxxxxx - в этом режиме сигнал подается в определенный день недели в одно и то же время, например, только по вторникам (настройки даты значения не имеют).
- Buzzer Time : продолжительность звонка в секундах. Звонок можно остановить и раньше, нажав кнопку ВНИЗ.
- Alarm ON/OFF : включение - выключение будильника. Если будильник включен, то на экране за днем недели появится буква "А".
- Buzzer Check : проверка звонка и светодиода. Нажмите кнопку ВВЕРХ для проверки.
- Save Alarm Sett. : сохранение настроек будильника в память контроллера. Все настройки будильника хранятся в оперативной памяти, поэтому при обесточке они будут стерты (вернутся к заводским). Чтобы после восстановления питания Arduino не настраивать будильник вновь, сохраните параметры в энергонезависимую память.
- Time Settings : приветственный экран группы настроек времени и даты.
- HourOld HH:MM:SS / HourNew HH:MM:SS : установка часов (верхняя строчка - текущее время, нижняя - вновь устанавливаемое).
- Min_Old HH:MM:SS / Min_New HH:MM:SS : установка минут.
- Sec_Old HH:MM:SS / Sec_New HH:MM:SS : установка секунд.
- Day_Old DD.MM.YY / Day_New DD.MM.YY : установка дня месяца (верхняя строчка - текущая дата, нижняя - вновь устанавливаемая).
- Mon_Old DD.MM.YY / Mon_New DD.MM.YY : установка месяца.
- YearOld DD.MM.YY / YearNew DD.MM.YY : установка года.
- WeekOld Xxxxxxxx / WeekNew Xxxxxxxx : установка дня недели.
- Save Time Setin : сохранение настроек времени и даты в память контроллера, а также перепрошивка модуля часов реального времени DS1302.
- Temperature Set. : приветственный экран группы настроек термодатчика. Эти настройки сразу принимаются системой, подтверждение не нужно. Но они хранятся в оперативной памяти, поэтому, чтобы не потерять, сохраните их в энергонезависимую память.
- Temp Correction : поправка температуры в ºC. Значение по умолчанию - 0ºC. Нижняя граница -100ºC, верхняя +100ºC. Эта поправка добавляется к замеренной температуре. Если поправка отличается от нуля, то на экране за температурой появится восклицательный знак.
- Min_Volt нижняя граница вольтажа с аналогового порта датчика Pt100, переведенная в цифровой вид. Значение по умолчанию - 39. Нижняя граница 0, верхняя 1023. Эта величина и далее необходимы для калибровки самодельного преобразователя термосопротивления Pt100.
- MinPt соответствующая нижней границе температура в ºC. Значение по умолчанию - 0ºC. Нижняя граница 0ºC, верхняя +1000ºC.
- Max_Volt верхняя граница вольтажа с аналогового порта датчика Pt100, переведенная в цифровой вид. Значение по умолчанию - 546. Нижняя граница 0, верхняя 1023.
- MaxPt соответствующая верхней границе температура в ºC. Значение по умолчанию +100ºC. Нижняя граница 0ºC, верхняя +1000ºC.
- Read/Save/Defual : приветственный экран группы сохранение - загрузка.
- Read Settings : чтение настроек из энергонезависимой памяти Arduino. При нажатии кнопки ВВЕРХ настройки из памяти PLC перейдут в оперативную.
- Save Settings : запись настроек в энергонезависимую память Arduino. При нажатии кнопки ВВЕРХ текущие параметры запишутся в постоянную память PLC. При перезагрузке контроллера (выключение - включение) именно эти настройки загрузятся в программу. Обратите внимание, при сохранении параметров модуль RTC DS1302 не перепрошивается, время и дата не меняются. В память будут занесены цифры, которые вы подставляли при последней настройки часов и даты. Это сделано для удобства, чтобы заново не вбивать параметры. Если вы хотите установить новые дату и время, зайдите в соответствующий пункт меню настроек.
- Load Default : загрузка значений по умолчанию. При нажатии кнопки ВВЕРХ параметры, определенные в начале скетча, загрузятся в оперативную память PLC (в текущие настройки). Эта функция может быть полезна, когда вы запутались в регулировках и хотите все вернуть в исходное положение. Но есть и еще одна причина ее использования. Если вы на одну и ту же плату Arduino постоянно записываете скетчи разных проектов, возможна ситуация, когда параметры одного проекта запишутся в настройки другого. Конечно, это можно исправить, но представьте, что в параметре, где должно быть, например, число 10, стоит 32000. Вручную кнопками ВВЕРХ или ВНИЗ корректировать это очень долго, проще сбросить настройки к заводским, а уже затем их подправить. Здесь также модуль RTC DS1302 не перепрошивается, время и дата не меняются.
Кнопки ВВЕРХ-ВНИЗ
В настройках этими кнопками меняются значения параметров.
В основном экране при нажатии кнопки ВВЕРХ вы увидите настройки будильника, а кнопкой ВНИЗ можно остановить сигнал будильника.
ИНДИКАЦИЯ LCD
- Верхняя строчка :
- "HH:MM:SS TT,TºC" - текущее время и температура
- Если введена поправка температуры, появится восклицательный знак
- При нажатии кнопки ВВЕРХ - уставка будильника
- В режиме настроек : пункты меню настроек
- Нижняя строчка :
- "DD.MM.YY Www" - текущая дата и день недели
- Если включен будильник, появится буква "А"
- В режиме настроек : значение пункта меню настроек
Индикация LCD
ПОДКЛЮЧЕНИЕ
Здесь приведено соединение всех элементов системы управления, Arduino (через шилд), модуля часов и датчика температуры. В виде схемы подключение представлено ниже.
Плата Arduino и Sensor-shield
- питание Arduino : от адаптера 7-12 В постоянного тока (2A)
- питание шилда (перемычка убрана) : 5 В постоянного тока. Можно от того же адаптера 7-12 В через понижающий DC-DC преобразователь типа LM2596 (не менее 2А)
- LCD-дисплей 1602 + модуль I2C : питание от шилда (подсоединяем GND и VCC к любым свободным пинам G и V цифровых входов), SDA (I2C) - A4 (шилд), SCL (I2C) - A5 (шилд)
- зуммер будильника : сигнал от Arduino - цифровой пин 10, земля - к пину G пина 10 шилда. Помните про полярность зуммера
- светодиод будильника : сигнал от Arduino - цифровой пин 8, земля - к пину G пина 8 шилда. Не забудте поставить резистор 220 Ом на линии светодиода. Помните про полярность светодиода
- сигнал от кнопки НАСТРОЙКИ : вход в Arduino - цифровой пин 7. Пины + и - кнопочного поста, общие для всех кнопок НАСТРОЙКИ, ВВЕРХ, ВНИЗ, подсоединяем к любым свободным пинам V и G цифровых входов. Линию сигнала и земли шунтируем резистором 10кОм
- сигнал от кнопки ВВЕРХ : вход в Arduino - цифровой пин 6. Линию сигнала и земли шунтируем резистором 10кОм
- сигнал от кнопки ВНИЗ : вход в Arduino - цифровой пин 5. Линию сигнала и земли шунтируем резистором 10кОм
- сигнал от преобразователя Pt100 к Arduino - аналоговый пин A0. Питание к любым свободным пинам G и V цифровых входов
- Термодатчик Pt100 - к клеммам на самодельном термопреобразователе
Часы реального времени RTC DS1302
- питание (VCC и GND) : к любым свободным пинам G и V цифровых входов шилда
- пин RST : к цифровому пину 2
- пин CLK : к цифровому пину 3
- пин DAT : к цифровому пину 4
Схема подключения будильника
ПЛАТА ДЛЯ ДАТЧИКА
Для удобства использования сигнального зуммера и светодиода вы можете собрать небольшую плату. Схема монтажа представлена ниже.
Схема пайки сигналки на макетной плате
Примечания :
- Все подводы и отводы выполнены в трех вариантах : клеммница, штыревой соединитель "папа" и "мама" для проводов Dupont.
- Мощность резистора 0,25 ватт.
ЧТО НУЖНО ДЛЯ ПРОЕКТА
- PLC Arduino UNO - 1 шт
- Sensor Shield v 5.0 - 1 шт
- понижающий DC-DC преобразователь типа LM2596 (не менее 2А) - 1 шт
- LCD-дисплей 1602 + модуль I2C - 1 шт
- модуль часов DS1302 - 1 шт
- батарейка CR2032 на 3 вольта - 1 шт
- кнопка тактовая с колпачком - 3 шт
- резистор 220 Ом (0,25 Вт) - 1 шт
- резистор 10 кОм (0,25 Вт) - 3 шт
- зуммер (пищалка) - 1 шт
- светодиод 5 мм - 1 шт
- макетная плата под пайку 30х55 - 1 шт (для монтажа кнопок)
- макетная плата под пайку 35х25 - 1 шт (для монтажа зуммера и светодиода)
- клеммница тройная - 1 шт
- стойка мама-мама М3х15 - 7 шт (для монтажа LCD-дисплея и сигналки)
- гайка М3 - 50 шт и более в зависимости от способа крепления вышеуказанных элементов
- болт М3х15, М3х10 - 20 шт и более
- провод Dupont мама-мама или папа-мама (20 см) - 30 шт и более в зависимости от типа пинов соединяемых элементов
- провод типа AWG - 50 см (соединение штекер - DC-DC преобразователь - Sensor Shield)
- штыревой соединитель 40pin - 1 шт
- разъем PBS 40pin - 1 шт
- штекер питания DC 2.1 мм с клеммной колодкой папа и мама - 1 пара (для подключения шилда)
- кусок оргстекла или т.п. - 20х30 см (для монтажа всех элементов)
- болт М6х15 и гайка - 4 шт (ножки оргстекла)
|