Схема. Часы-будильник и термометр с бегущей строкой на шестнадцатиэлементных индикаторах
В предлагаемом устройстве используются символьные светодиодные шестнадцатиэлементные индикаторы PSA08-11 с общими анодами. Выбор пал именно на них из-за невысокой стоимости, большого размера отображаемого символа и высокой яркости. Для того чтобы выводить максимум полезной информации, текст перемещается справа налево. На шести знакоместах поочерёдно отображаются текущее время, температура в помещении, температура вне его, число, день недели и месяц прописью, например, «18 МАРТА ЧЕТВЕРГ.
Счёт времени ведёт микросхема DS1307. Она представляет собой часы реального времени (Real Time Clock -RTC) со встроенным календарём. При выключенном общем питании эта микросхема продолжает работать от резервного источника — литиевого элемента CR2032 напряжением 3 В. Поскольку при отсутствии внешних обращений потребляемый микросхемой DS1307 ток не превышает 300 нА, счёт времени в таком режиме может продолжаться до десяти лет. Тактовый генератор этой микросхемы построен с применением внешнего кварцевого резонатора частотой 32768 Гц, что обеспечивает высокую точность хода. Микросхема отсчитывает секунды, минуты, часы, дни месяца (с учётом високосных лет), месяцы, дни недели и годы. Её календарь действителен до 2100 г. Более подробную информацию о ней можно получить в [1].
Для измерения температуры в устройстве применены цифровые термодатчики LM75, имеющие погрешность не более 2 °С в интервале температуры от -25 до +100°С. Более подробную информацию о них можно найти в [2].
Схема часов и термометра с бегущей строкой показана на рис. 1. Все функции, за исключением счёта времени, выполняет микроконтроллер DD2 (PIC16F873A-20I/P), тактируемый встроенным генератором с кварцевым резонатором ZQ2. Для управления устройством предназначены кнопки SB1—SB5. Когда их контакты разомкнуты, резисторы R4—R8 обеспечивают высокий логический уровень на соответствующих входах микроконтроллера. Резистор R11 поддерживает высокий уровень на входе начальной установки микроконтроллера, предотвращая перезапуск программы случайными помехами.
Для питания часов необходим стабилизированный источник напряжения 5 В с максимальным током нагрузки не менее 600 мА. Его подключают к разъёму XS1. В авторском варианте используется зарядное устройство от сотового телефона. Конденсаторы С1 и С2 — сглаживающие, причём ёмкость конденсатора С1 должна быть не менее 1000 мкФ.
В часах предусмотрен будильник. Его звуковой сигнал подаёт пьезоизлучатель со встроенным генератором НА1 (НРА24АХ). По сигналам микроконтроллера им управляет ключ на транзисторе VT7. Подбирая резистор R18 в цепи базы этого транзистора, можно в некоторых пределах регулировать громкость звука.
Для индикации режимов работы предназначены светодиоды HL1—HL3 красного цвета свечения. Их яркость изменяют, подбирая резисторы R15— R17.
Для программирования микроконтроллера, установленного на плату, на ней имеется разъём ХР1. На время выполнения этой операции к нему присоединяют программатор, например, PICkit2, EXTRAPIC или другой подобный [3]. В действующем устройстве этот разъём не нужен. Его можно не устанавливать, если до монтажа на плату запрограммировать микроконтроллер в панели программатора.
Программирование микроконтроллера заключается в загрузке программного кода из НЕХ-файла в его FLASH-память. Для этого требуется управляющая программатором программа, например WinPic800, которая находится в свободном доступе по адресу www.winpic800.com/descargas/WinPic800.zip в сети Интернет. Подробную инструкцию по программированию микроконтроллера также можно прочитать в [3].
Для упрощения программы микроконтроллера и устройства в целом микросхема RTC DD1 и датчики температуры ВК1 и ВК2 связаны с микроконтроллером по одной и той же шине I2C. Датчик ВК2 подключают к разъёму ХР2 кабелем длиной до нескольких метров по схеме, изображённой на рис. 2.
Резисторы R2 и R9 соединяют линии SCL и SDA шины I2C с плюсом питания, поддерживают на них высокий уровень в паузах передачи информации, как того требует спецификация шины. Более подробно об использовании этой шины можно узнать из [4]. Адресные входы датчиков температуры ВК1 и ВК2 по-разному соединены с плюсом питания и общим проводом, что даёт микроконтроллеру возможность программно различать датчики.
Шестнадцатиразрядные параллельные коды для вывода информации на индикаторы образуются на выходах микросхем DD3 и DD4. Микроконтроллер DD2 заносит информацию в эти микросхемы последовательным кодом, используя для этого всего три линии своих портов В и С. Установив на линии RC6 и информационном входе сдвигового регистра микросхемы DD3 уровень, соответствующий значению (0 или 1) очередного разряда кода, он формирует на линии RC7 и тактовых входах обеих микросхем нарастающий перепад уровня. При этом уже содержащийся в соединённых последовательно сдвиговых регистрах код перемещается на одну позицию в сторону старшего разряда регистра DD4, а в освободившийся младший разряд регистра DD3 записывается значение, установленное микроконтроллером на его входе.
После шестнадцати таких операций весь код записан в образованный микросхемами DD3 и DD4 шестнадцатиразрядный сдвиговый регистр. Однако на выходах микросхем этот код ещё не появился, на них продолжает действовать тот, что был выведен в предыдущем цикле. Чтобы обновить состояние выходов, микроконтроллер формирует нарастающий перепад уровня на своей линии RB0 и входах записи кода из сдвиговых регистров микросхем DD3 и DD4 в их регистры хранения. Более подробно с работой микросхемы преобразователя последовательного кода в параллельный 74НС595 можно ознакомиться, прочитав [5].
После записи кода в микросхемы DD3 и DD4 микроконтроллер подаёт команду включить тот из шести индикаторов, для катодов элементов которого этот код предназначен. Чтобы не перегружать выходы микроконтроллера, аноды индикаторов соединены с ними через ключи на транзисторах VT1—VT6. Схема платы индикаторов показана на рис. 3, а условные обозначения элементов индикатора PSA08-11SRW — — на рис. 4. Разъёмы ХР1 и ХР2 платы индикаторов соединяют соответственно с разъёмами XS3 и XS2 основной платы.
Чертежи основной платы и размещения элементов на ней приведены на рис. 5. Она изготовлена из фольгированного с одной стороны стеклотекстолита. Плата рассчитана на установку датчика температуры ВК1 в корпусе DIP8, однако датчик LM75AD выпускают в корпусе SO8 для поверхностного монтажа, поэтому устанавливать его следует через плату-переходник (рис. 6). На рис. 5 контур переходника показан штрихпунктирной линией. В соответствующие отверстия переходника и платы вставляют и пропаивают с обеих сторон отрезки провода. Можно, конечно, изменив топологию печатных проводников на основной плате, обойтись и без переходника.
Двусторонняя печатная плата индикаторов показана на рис. 7. Обратите внимание, что разъёмы на ней устанавливают со стороны, противоположной той, где находятся индикаторы. При сочленении разъёмов обе платы располагаются одна над другой «этажеркой», как можно видеть на фотоснимке рис. 8.
Транзисторы КТ502Б можно заменить любыми той же серии. Вместо светодиодов АЛ307БМ подойдут и другие маломощные красного цвета свечения, например АЛ310А.
Правильно собранное устройство с корректно запрограммированным микроконтроллером в налаживании не нуждается и начинает работать сразу после включения.
После подачи питания первым на индикаторы выводится приветственное сообщение. За ним следует время в 12- или 24-часовом формате, который можно выбрать в соответствующем пункте меню. Далее бегущая строка с текущим временем на 10с останавливается. По их истечении выводятся температура в помещении (показания датчика ВК1), температура на улице (показания датчика ВК2) и выдерживается ещё одна десятисекундная пауза, в течение которой индикатор показывает уличную температуру. После этого выводится число, за ним месяц и день недели прописью, после чего цикл (за исключением приветственного сообщения) повторяется.
Для установки текущего времени и других параметров переходят в режим «Меню» кратковременным нажатием на кнопку SB3 «М». Включается светодиод HL2, показывая, что этот режим включён. На индикаторе после сообщения «НАСТРОЙКА» выводится и останавливается строка «ЧАС XX», где XX — текущее значение часа, которое можно увеличить нажатием на кнопку SB1 «+» или уменьшить нажатием на кнопку SB5 «-«.
Для того чтобы перейти к следующему пункту меню, нажимают на кнопку SB2 «>». С её помощью меню можно «листать» в указанном далее порядке, с помощью кнопки SB4 «<» — в противоположном. После первого нажатия на кнопку SB2 «>» выводится строка «МИН XX», затем «ГОД 20ХХ» (по умолчанию 2011), далее «МЕСЯЦ XX», «ЧИСЛО XX», «ДЕНЬ НЕДЕЛИ XX», «БУД_ЧАС XX» (час срабатывания будильника), «БУД_МИН XX» (минуты срабатывания будильника).
Затем на индикаторе появляется одна из строк «БУД ВЫКЛ» или «БУД ВКЛ», отображая текущее состояние будильника. Его можно менять, нажимая на кнопку SB1 «+» или SB5 «-«. Когда будильник включён, горит светодиод HL1, сигнализируя об этом.
Далее выводится строка «ФОРМАТ XX», где XX равно 12 или 24 в зависимости от выбранного нажатиями на кнопку SB1 «+» или SB5 » формата отображения времени. После очередного нажатия на SB2 «>» выводится строка «ПОКА», выключается светодиод HL2, часы переходят в обычный рабочий режим.
Когда текущее время совпадает с заданным временем срабатывания будильника, включаются светодиод HL3 и излучатель звука НА1. Чтобы отключить световую и звуковую сигнализацию, достаточно нажать на любую кнопку. Электрический сигнал для управления внешним исполнительным устройством при необходимости можно снять с выхода RB5 микроконтроллера, к которому через резистор R17 подключён светодиод HL3.
При выключенном внешнем питании устройство продолжает счёт времени — микросхема DD1 работает от литиевого элемента G1.
Прилагаемые файлы: source.zip
ЛИТЕРАТУРА
1. DS1307 — 64 X 8 часы реального времени с последовательным интерфейсом. — www.piclist.ru/D-DS-DSB1 «+»307-RUS/D-DS-DS1307-RUS.html
2. LM75A Digital tem- perature sensor and thermal watchdog. www.alldatasheet.com/datasheet-pdf/pdf/100962/PHILIPS/LM75AD.html
3. Долгий А. Программаторы и программирование микроконтроллеров. — Радио, 2004, № 1, с. 53.
4. Семёнов Б. Ю. Шина I2C в радиотехнических конструкциях. — М.: «СОЛОН-Р», 2002.
5. 74НС595; 74НСТ595 8-bit serial-in, serial or parallel-out shift register with output latches; 3-state. — www.nxp.com/documents/data_sheet/74HC_HCT595.pdf
В. БАЛАНДИН, с. Петровское Тамбовской обл.
«Радио» №9 2012г.