Простой таймер-термометр на PIC16F628A


Бытовой таймер и термометр на микроконтроллере PIC16F628A, датчике температуры DS18B20 и ЖК индикаторе HT1613.

Этот небольшой таймер собран на основе дешевого восьмиразрядного микроконтроллера Mucrochip PIC16F628A. Питание устройства от четырех элементов типа AA или AAA. таймер потребляет совсем небольшой ток и поэтому комплект их четырех элементов AA можно использовать в течение нескольких лет. Экономичность таймера обусловлена еще и тем, что он отображает информацию на экономичном ЖК дисплее типа HT1613 (HT1611 он же КО-4В).

HT1613 — это очень простой дисплей, который управляется от микроконтроллера через простейший последовательный интерфейс. Описание дисплея и его работы вы можете почитать в этой статье. Такие дисплеи часто используются в стационарных телефонных аппаратах для индикации набираемого номера. Такой дисплей дешев и потребляет очень мало электроэнергии, поэтому его можно с успехом использовать в самодельных цифровых устройствах. Кроме того, для подключения к микроконтроллеру требуется всего 2 порта, поэтому дисплей удобно использовать с контроллерами, у которых небольшое число выводов.

Возможности таймера:

-Максимальная выдержка — 65536 секунд или немного более 18 часов
Шаг установки выдержки времени — 1 минута или 1 секунда
-Временное прерывание обратного отсчета (пауза)
Диапазон измерения температуры -55°C до +125° (датчик 18B20)
Точность измерения температуры 0.1 ℃
-Звуковая сигнализация (двухтональная «трель»)
-Вывод для управления внешним устройством
Питание от батареи 6 вольт (4 элемента AA или AAA) . Работоспособность сохраняется при снижении напряжения питания примерно до 4.3 В

Основа таймера — микроконтроллер PIC16F628A. Это популярный восьмиразрядный микроконтроллер производства компании MICROCHIP. Для написания прошивки я использовал компилятор MikroC Pro for PIC сербской компании MiKroeleKtroniKa.

Микросхема имеет 2048 12-битных слов flash памяти программ, 224 байта оперативной памяти для и 128 байт энергонезависимой памяти пользователя (EEPROM) . Программа написана на С и занимает около 75 процентов памяти контроллера.

Простой таймер-термометр на PIC16F628A

Я собрал таймер на макетной плате, но специально для этой статьи развел для него печатную плату в программе DipTrace. Если вы захотите повторить таймер, можете использовать печатную плату или собрать устройство навесным монтажом как это сделал я. Архив с прошивкой и проект для DipTrace вы можете скачать с моего GitHub.

Простой таймер-термометр на PIC16F628A

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

Видео: Схема соединения печатной платы и внешних элементов. Если ролик не начал проигрываться автоматически, то нажмите кнопку воспроизведения)

ISCP port — это контакты на плате, предназначенные для внутрисхемного программирования микроконтроллера. Можно прошить микроконтроллер в программаторе отдельно от печатной платы и потом установить его на печатную плату. Тогда можно не устанавливать ISCP port. Микроконтроллер желательно устанавливать на печатную плату на панельку.

Источник питания — четыре элемента напряжением 1.5 В, установленные в стандартный батарейный блок. Плюсовой провод батареи питания через выключатель POWER соединяем с пином BAT-6V (здесь символ «-» не полярность, а разделитель) печатной платы. Минусовой вывод батареи подключаем к контакту GNG1 на печатной плате.

Также соединяем выводы ЖК дисплея, кнопок, динамика — зуммера (пищалки) и термодатчика с соответствующими контактами на печатной плате так, как это показано в ролике выше.

Температурный датчик 18B20 можно установить внутри корпуса, но тогда термометр сможет измерять только температуру в вашей комнате. Можно соединить датчик кабелем из 3 проводов длиной до нескольких метров. Нужно припаять провода кабеля к выводам датчика и изолировать каждый вывод датчика отрезками тонкой термоусадочной трубки. затем на всю эту конструкцию одеваем отрезок термоусадки большего диаметра. Такой датчик несколько лет измеряет температуру воздуха на улице за окном. На корпусе таймера я установил стандартное 3.5 мм аудио гнездо а на кабель датчика припаял миниджек 3.5 мм (как на наушниках для мобильного телефона).

Если вам не нужно измерение температуры, то термодатчик можно не использовать. Функционирование в режиме таймера от этого не изменится.

Таймер умеет управлять каким либо внешним устройством. Это может быть электромотор, лампа для засветки фоторезиста или какое-то другое устройство, которое необходимо включить на заданное время. Для этого предусмотрен контакт CONTROL на печатной плате. При старте отсчета времени на контакте CONTROL появляется высокий уровень напряжения, а по завершении выдержки времени — низкий уровень.

Для подключения внешнего устройства необходимо использовать ключ на транзисторе и электромагнитное реле. Схема подключения изображена на рисунке ниже:

Простой таймер-термометр на PIC16F628A

Каскад реле необходимо питать от внешнего источника питания. Напряжение источника должно соответствовать номинальному рабочему напряжению используемого реле.

Для программирования («прошивки») микроконтроллера PIC16F628 можно использовать клон программатора PicKit2, описанный в этой или этой статье.

Работа устройства

В момент включения устройство находится в режиме таймера. После первого включения питания (после прошивки контроллера) на экране мы увидим следующее:

00-00-00

мы видим три двузначных числа, разделенных символом .
Первое число — это часы, второе — минуты и третье — секунды, то есть можно записать так: ЧЧ-ММ-СС. В последствии после включения питания на экране будет восстановлена выдержка времени, которая была использована последний раз.

Установленная выдержка времени сохраняется в EEPROM памяти микроконтроллера. Это происходит при запуске таймера на отсчет времени. Иными словами, для того чтобы таймер запомнил установленную выдержку времени, нужно хотя бы один раз нажать кнопку S.

Таймер управляется четырьмя кнопками. Кнопки помечены буквами S, M, U, D

Простой таймер-термометр на PIC16F628A

S — (Start/Stop) Старт и останов отсчета времени / установка с точностью секунда
M (Mode) — переключение режима работы таймер/термометр, в режиме отсчета — функция «Пауза».
U — (Up) Увеличение выдержки времени
D — (Down) Уменьшение выдержки времени

Для перехода в режим термометра нажимаем кнопку M.

Для перехода обратно в режим таймера нужно нажать кнопку M, удержать ее нажатой около секунды и отпустить. Устройство вернется в режим таймера.

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

Для увеличения выдержки времени на одну минуту нажимаем кнопку U.
Для уменьшения выдержки времени на одну минуту нажимаем кнопку D.

Для увеличения выдержки времени на одну секунду удерживаем нажатой кнопку S и нажимаем кнопку U.
Для уменьшения выдержки времени на одну секунду удерживаем нажатой кнопку S и нажимаем кнопку D.

Для быстрой установки удерживаем в нажатом состоянии кнопку U или D.

Для сброса времени (обнуления) нажимаем кнопку S и удерживая ее в нажатом состоянии нажимает кнопку M. Дисплей вернется в состояние 00-00-00.

Для старта выдержки времени нажимаем кнопку S. Нужно иметь в виду что старт отсчета времени произойдет в момент отпускания кнопки. Начнется обратный отсчет времени и включится высокий уровень на контакте платы CONTROL, который вы можете использовать для управления каким либо внешним устройством.

Для досрочной остановки таймера нужно еще раз нажать кнопку S. При этом отсечёт времени остановится и дисплей вернется к исходному состоянию (установленное время)

Для временного прерывания таймера в процессе отсчета нажмите кнопку M. Это — режим «Пауза«. Отсчет времени прекратится а на дисплее останется момент нажатия на кнопку M. Для продолжения отсчета еще раз нажмите кнопку M.

После окончания отсчета времени таймер подаст звуковой сигнал. Звуковой сигнал можно выключить, нажав кнопку S, иначе он будет продолжаться примерно 25 секунд.

Скачать файл прошивки, исходники и проект печатной платы для DipTrace

См. также:
Универсальный адаптер для программирования PIC контроллеров…
Клон программатора PicKit2 своими руками…
Программирование AVR контроллеров программатором PicKit2

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *