KEEN SIDE успешно заменяет аналогичные продукты таких известных брендов, как Phoenix Contact, Weidmueller, Degson, Winstar, Hsuan Mao, KLS, G-NOR, Mean Well и др.

Программируемый таймер на PIC16F628A

Цифровой программируемый таймер – это устройство для управления включением/выключением внешних устройств по заданной программе.

Цифровой таймер на микроконтроллере PIC16F628A

Устройство собрано на 8-разрядном микроконтроллере Microchip PIC16F628A. Пользователь программирует устройство на включение и выключение нагрузки в определенное время. Другими словами, пользователь может указать время включения устройства и продолжительность его работы. Максимальный временной интервал для каждой операции (включение/выключение) составляет 99 часов 59 минут.

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

В устройстве для управления используется 4-х кнопочная клавиатура, для отображения текущих настроек и параметров установлен 2-строчный ЖК дисплей на базе контроллера HD44780.

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

Принципиальная схема: Цифровой таймер на PIC16F628
Кликните для увеличения

Для управления нагрузкой в устройстве используется 5 В реле, управляемое транзистором PN2222. В свою очередь, транзистором управляет микроконтроллер по линии ввода/вывода RB3. Клавиатура подключена к выводам порта RA2, RA3, RA4 и RB0. Назначение кнопок мы рассмотрим ниже.

ЖК дисплей используется для отображения текущего статуса устройства, времени, меню и параметров. Подключен и работает в 4-битном режиме, поэтому для управления дисплеем потребуется лишь 6 выводов микроконтроллера. Пьезоэлектрический звуковой излучатель предназначен для звукового оповещения при включении и выключении нагрузки, а также при включении и выключении самого таймера.

Установлен интегральный регулятор напряжения LM7805, для питания таймера используется внешний 9 В блок питания.

Схема питания для цифрового таймера на PIC16F628

На схеме видно, что выводы 15 и 16 ЖК индикатора не подключены. Они используются в индикаторах с фоновой подсветкой. Если вы будете использовать индикатор с подсветкой, то вы можете подключить ее к источнику питания через гасящий резистор номиналом 39 Ом.

Внешний вид платы: цифровой таймер на PIC16F628A
Внешний вид устройства собранного на макетной плате

Настройка и работа с устройством

Как уже было отмечено выше, все настойки таймера выполняются с клавиатуры.

Функции кнопок:

  • кнопка «ON/OFF Time»
    Таймер позволяет устанавливать время включения и время выключения. При включении таймера проходит инициализация, и оба временных параметра (время включения и время выключения) имеют значение 0. Нажимая на данную кнопку, можно переключаться между этими параметрами;
     
  • кнопка «Select»
    С помощью данной кнопки пользователь может переключаться между значениями выбранного параметра (часы, минуты времени включения и выключения). Инкрементирование значения происходит по нажатию кнопки «ON/OFF Time»;
     
  • кнопка «Enter»
    Когда нужные значения параметров установлены, данной кнопкой пользователь подтверждает их сохранение;
     
  • кнопка «Start/Stop»
  • Кнопка предназначена для запуска/остановки таймера. Если таймер включен, то нажатием этой кнопки его можно остановить в любой момент времени.

Демонстрация работы таймера.

В этом ролике мы видим, что пользователь задает временной интервал выключенного состояния внешнего устройства - 2 минуты, а временной интервал включенного состояния – 20 минут. По нажатию копки «Start/Stop» таймер начинает отсчет времени выключенного состояния. По окончании этого интервала срабатывает реле и начинается отсчет времени включенного состояния.

Программное обеспечение для микроконтроллера разработано с применением компилятора MicroC Pro для PIC микроконтроллеров.

Загрузки

Исходный код – скачать
HEX файл для прошивки микроконтроллера – скачать

Перевод: Vadim по заказу РадиоЛоцман

На английском языке: Programmable digital timer switch using a PIC Microcontroller

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя
Фрагменты обсуждения:Полный вариант обсуждения »
  • Здравствуйте всем! Спаял,прошил, включаю, после задания времени пишет на дисплее копирайт и ссылка на офф сайт :(
  • На исходной схеме [url]http://www.rlocman.ru/shem/schematics.html?di=76296[/url] опечатка - конденсаторы С1 и С2 должны быть по 22pF, а не uF. Микрофарады – слишком много, если Вы не обратили внимание. В любом случае проверьте, как тактируется микроконтроллер. Должен быть внешний кварц 4МГц и ёмкости 15-22пФ. В остальном – вроде бы такого «зависания» на сообщении быть не должно. В проект включён исходный код, посмотрите. Ниже фрагмент кода, где появляется сообщение о Copyright. Если уж программа и останавливается на нём – это, скорее всего, в следующем за сообщением цикле while(). Может, кто-то пошутил при компиляции :-). [code]Lcd_Init(); // Initialize LCD Lcd_Cmd(_LCD_CLEAR); // Clear display Lcd_Cmd(_LCD_CURSOR_OFF); // Cursor off Lcd_Out(1,1, "Copyright @"); Lcd_Out(2,1, "Embedded-Lab.com"); i=0; while(i<4) { debounce(); i ++; }[/code] Варианта два: 1) скачайте «свежую» прошивку со страницы проекта [url]http://embedded-lab.com/blog/?p=1378[/url], или 2) скомпилируйте проект самостоятельно в оригинальном компиляторе MicroC, или в среде MPLAB.
  • В схеме действительно опечатка, однозначно 22 мкФ это много, должно быть 22 пФ. Если вы поставили 22 мкФ - возможно этим объясняется некорректное поведение... В исходном коде прописано появление "сообщение об авторстве", но оно должно появляться на пару секунд (а точнее на 1 секунду) и то после включения устройства (после инициализации дисплея), затем устройство переходит в рабочий режим...
  • C этим разобрался. Добавил конденсатор по питанию. От нажатия на кнопки контроллер сбрасывался и появлялась эта заставка. А то, что на кварце кондеры пикофарадные, так эт само собой:) Bcе равно разочарование, т.к. таймер нужен циклический. Этот только раз отрабатывает. Знаю, что нужно код подправить, да только вот не силен в этом деле. Уже много раз пытался ассемблер выучить, да видать когда за 50, это сложно. Может Flowcode попытаться осилить? В его библиотеках будет 2х16 дисплей? Да, и спасибо за отклики!
  • Обратите внимание на [B]Arduino[/B]. И не сложно, и возможностей много, и доступно!
  • IMHO, вся "конструкция" сделана "через задницу". Касается это и принципиальной схемы, и программы. А вообще, это - не программа, это "индусский код" в чистом виде, но оно и понятно, уж коли автор "этого" Rajendra Bhatt. Перепишите с нуля, толку больше будет, но только не на FlowCode и уж не с использованием Arduino, конечно. Возьмите относительно нормальный XC8, а не MikroC, или CCS. Хотя, если хочется повторять имеено это, может быть и лучше, Вам будет взять Arduino.
  • а ардуино разве не под авр? во флокоде я уже хоть осмысленно научился управлять линейкой светодиодов :) , про XC8 и CCS даже не слышал. Надо уж как то определиться, и долбить что-нибудь одно...
  • Спасибо за замечание, опечатка в схеме исправлена.
  • IMHO, от конечной цели всё зависит. Хотите сделать какой-то наколенный "самопал" для себя - изучайте Arduino ( они уже есть для разных MK, суть у всех одна ) , но ни электронике, ни программированию Вы не научитесь. FlowCode - вообще путь в никуда, промышленному программированию, Вы тоже не научитесь, но и не найдёте ничего вразумительного для повторения. Единственный путь для начинающего - изучать Application notes, для целевого МК, там, как правило и теория разжёвана, и конкретные примеры от профессионалов есть, какой это будет МК - неважно. Лично мне всегда нравился подход Microchip в этом смысле. Ну и раз вы сейчас "копаете" в сторону PIC, то очень странно, что Вы не знаете о самых распостранённых инструментах для работы с ним, зато знакомы с экзотическим FlowCode. Ещё раз повторюсь, всё это - IMHO.
  • :confused: Индикатор WH1602A-NGG-CT# в програмируемом таймере на PIC16F628 будет работать?
Полный вариант обсуждения »