Часы с термометром и таймером на PIC-микроконтроллере PIC16F873A

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

В продаже имеются различные устройства отображающие время, температуру в помещении и на улице Но практически все они выполнены на ЖКИ, которые необходимо освещать в темное время суток.

А встроенную подсветку, если она есть, в приборах с автономным (батарейным) питанием не рекомендуется использовать длительное время. Небольшие размеры цифр не позволяют разглядеть показания с расстояния более одного метра Кроме того в таких приборах применяются в основном многовыводные БИС для поверхностного монтажа, которые очень трудно заменить в случае неисправности.

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

Описания подобных конструкций можно найти, например. в [1.2]. Но они либо содержат слишком много деталей, либо выполнены на микроконтроллерах фирмы Atmel, а я предпочитаю работать с микроконтроллерами фирмы Microchip.

Принципиальная схема

Схема разработанного устройства на микроконтроллере PIC16F873A-I SP изображена на рис. 1. Тактовую частоту задает кварцевый резонатор ZQ1 с частотой 8.192 МГц Отсчет базовых интервалов времени ведет встроенный в микроконтроллер восьмиразрядный таймер-счетчик TMR0.

Принципиальная схема часов с таймером и термометром на микроконтроллере PIC16F873A

Рис. 1. Принципиальная схема часов с таймером и термометром на микроконтроллере PIC16F873A.

Резисторы R1-R4 поддерживают высокий логический уровень ча входах RA1. RA3. RC1.

RC3 микроконтроллера, когда кнопки SB1-SB4 не нажаты Пятиразрядный семиэлементный светодиодный индикатор зеленого цвета свечения собран из двух: четырехразрядного HG1 и одноразрядного HG2.

Вывод значений температуры на индикатор

Рис. 2. Вывод значений температуры на индикатор.

Варианты вывода значений на цифровой индикатор

Рис. 3. Варианты вывода значений на цифровой индикатор.

Температуру измеряют широко известные датчики DS18B20, не требующие калибровки и с погрешностью измерения не более ±0,5 С в интервале температуры от -10 С до +85 С. Каждый из этих приборов имеет индивидуальным 64-разрядный двоичный код. Перед считыванием измеренных значений температуры микроконтроллер считывает коды датчиков и тем самым проверяет их наличие.

Если датчик отсутствует, неправильно подключен или неисправен, то вместо числового значения температуры на индикатор будут выведены два "минуса" (рис. 2). Таким же останется изображение на индикаторе некоторое время после включения устройства до получения первых отсчетов температуры Это не является признаком неисправности.

Детали и печатная плата

Датчик ВК1 располагается внутри устройства и измеряет температуру от + 10 С до +40 °С. Датчик ВК2 вынесен на улицу, он измеряет температуру от -40 °С до +40 °С. Длина проводов, соединяющих его с микроконтроллером, - до 12 м. Если в корпусе устройства нет достаточного числа вентиляционных отверстий. то датчик ВК1 рекомендуется также вынести за его пределы.

Информация отображается на индикаторе циклически: 10с - время (рис. З. а), 5 с - температура, измеренная в помещении датчиком ВК1 (рис. 3,6), 5 с - температура, измеренная на улице датчиком ВК2 (рис. З.в).

Каждую секунду микроконтроллер проверяет состояние входов RA1, RA3, RC1, RC3. Когда какая-либо из кнопок SB1-SB4 нажата, уровень на соответствующем входе становится низким.

Печатная плата для схемы часов на микроконтроллере

Рис. 4. Печатная плата для схемы часов на микроконтроллере.

На рис. 4 показана печатная плата устройства. Все установленные на ней конденсаторы керамические: С1, С2 - с диэлектриком NP0, а СЗ и С4 - с диэлектриком Y5V. Резисторы - МЯТ, С1-4 и их аналоги.

Транзистор КТ503А можно заменить другим кремниевым структуры n-p-n с максимальным постоянным током коллектора не менее 100 мА. Вместо светодиодов L-53SGD и L-53SRD/D подойдут и другие соответственно зеленого и красного цветов свечения. Реле К1 - WJ105-1А 5V 5А, его контакты рассчитаны на ток до 5 А, а обмотка при напряжении 5 В потребляет ток 90 мА.

Плата помещена в корпус G413 фирмы GAINTA С его лицевой стороны сделано окно для индикатора. В верхней панели просверлены отверстия для толкателей кнопок SB1-SB4 и для светодиодов. С тыльной стороны корпуса установлены гнезда, соединенные с контактами реле К1, а также предназначенные для подключения источника питания и датчика температуры ВК1.

Для установки точного времени нажимают на кнопку SB1. На индикатор выводятся цифры, соответствующие числу часов. Удерживая нажатой кнопку SB4. устанавливают нужное значение. Второй раз нажимают на кнопку SB1 На индикатор выводятся цифры, соответствующие числу минут Удерживая нажатой кнопку SB4, устанавливают нужное значение.

Третий раз нажимают на кнопку SB1. На индикатор выводятся цифры, соответствующие текущему числу секунд. Нажатием на кнопку SB4 это значение обнуляют. Четвертое нажатие на кнопку SB1 возвращает устройство в рабочий режим.

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

После этого нажимают на кнопку SB2 На индикаторе появляется надпись. показанная на рис. 5,а. Если часы отставали, то, нажав и удерживая кнопку SB4, вводят число секунд отставания. В противном случае (часы спешили) еще раз нажимают на кнопку SB2 Когда на индикаторе появится надпись, показанная на рис. 5,6 с помощью кнопки SB4 вводят число секунд, на которое часы ушли вперед Нажатием на кнопку SB2 возвращают устройство в рабочий режим. Введенное для корректировки число секунд сохраняется в EEPROM микроконтроллера.

Надписи на индикаторе

Рис. 5. Надписи на индикаторе.

Программирование таймера

Рис. 6. Программирование таймера.

Таймер можно запрограммировать на выдержку максимум 900 мин. Чтобы задать ее продолжительность, нажимают на кнопку SB3. На индикаторе появляется надпись, показанная на рис.

6. После этого, нажав и удерживая кнопку SB1, вводят число сотен минут Затем кнопкой SB2 вводят число десятков, а кнопкой SB4 - число единиц минут выдержки. Еще одним нажатием на кнопку SB3 возвращают устройство в рабочий режим. Заданная продолжительность выдержки сохраняется в EEPROM микроконтроллера.

Запускают таймер в любой момент нажатием на кнопку SB4. При этом уровень на выходе RA5 микроконтроллера становится высоким, реле К1 срабатывает По истечении выдержки уровень вновь станет низким, а контакты реле К1 разомкнутся. Если необходимо разомкнуть их ранее запланированного времени, следует еще раз нажать на кнопку SB4.

Прошивка для микроконтроллера PIC16F873A - Скачать (14кБ).

П. Кожухин, г. Курган. Р-2010-05.

Литература:

  1. Ревич Ю. Часы с термометром и барометром. Р-2003-04, 05, 07.
  2. Суворов В. Часы-термометр. Р-2003-10.
1 192 На микроконтроллерах
часы термометр таймер микроконтроллер PIC микроконтроллер
cashback