Простой электронный таймер на PIC16F628A. Схема

Это очередная поделка из хлама - таймер для кухни, хотя и не обязательно для кухни. В ход пошли детали которые валялись без дела, в частности старые индикаторы АЛСки, резисторы выпаянные из старых плат и т.д. Основа устройства микроконтроллер PIC16F628A , один из самых распространенных и дешевых. Управление таймером осуществляется с помощью валкодера и одной кнопки. Диапазон выдержки времени от 1 до 99 минут. По окончанию цикла отсчета времени подается прерывистый звуковой сигнал. А архиве лежит две прошивки, первая просто таймер, а вторая с некоторыми наворотами, об этом ниже.

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

После включения питания на индикаторах высвечивается заданное время, светодиод не горит. Вращая валкодер можно изменить установку времени от 1 до 99 минут. Когда время установлено, нажимаем кнопку - раздается короткий звуковой сигнал и таймер начинает отсчет времени, светодиод мигает, а время на индикаторе уменьшается каждую минуту. Когда время дошло до нуля, таймер издает прерывистые звуковые сигналы, светодиод светиться постоянно. Теперь нажатием кнопки снимается звуковой сигнал и девайс возвращается в исходное состояние - режим установки времени. Так работает первая версия прошивки.

Вторая версия прошивки работает также как и первая, но имеет несколько дополнений. В режиме установки времени, если к валкодеру не прикасаться несколько секунд, на дисплее начинает бегать анимационная заставка. нажатие кнопки или вращение валкодера отключит анимацию и вновь отобразит режим установки времени. Во время отсчета времени, если осталась одна минута, на дисплее индицируются секунды от 60 до 00. Когда сработал звуковой сигнал, звучать он будет не бесконечно, а около 20 секунд. Далее дисплей начинает индицировать анимационную заставку (отличную от той, которая в режиме установки). А также, через каждую минуту будет напоминать коротким звуковым сигналом. Нажатием кнопки также, как и в первой прошивке таймер сбрасывается в режим установки времени. Когда до срабатывания таймера остается 3 секунды, таймер издает на каждую секунду короткий звуковой сигнал, т.е. 3...2...1 и далее срабатывает как обычно. Обе прошивки доступны и лежат в архиве вместе с рисунком печатной платы.

Звуковой сигнал реализован с помощью аппаратного ШИМ встроенного в микроконтроллер. Динамическая головка должна иметь сопротивление порядка 50 ом. Можно применить и низкоомные динамические головки (4 или 8 ом), но в данном случае лучше установить малогабаритный выходной трансформатор, т.к. через 4 омную головку будет протекать большой ток, который может вызвать перегрузку блока питания и спровоцировать сброс микроконтроллера.

Печатная плата, вариант Алексея Антонова

Комментарии

1 2

0 #21 kaktuss 14.06.2015 16:08

Цитирую AntonChip:

Можно глянуть скриншот установки битов конфигурации при программировании


Спрашивал автора какую конфигурацию при прошивке, он ответил, что все есть уже в прошивке. Поэтому ничего не устанавливал, просто залил прошивку.
Я бы выложил скриншоты, но не знаю как. Может на почту Вам скинуть?

Этот простой таймер на PIC16F628A можно использовать на кухни, да и не только на кухне, а везде где необходимо отсчитать промежуток времени от 1 до 99 минут. Основой является микроконтроллер PIC16F628A – достаточно популярный и не дорогой. В предыдущих статьях были рассмотрены различные конструкции на данном микроконтроллере, к примеру, .

Органами управления таймера являются одна кнопка и валкодер. По завершению отсчета времени раздается прерывистый акустический сигнал.

Описание работы простого таймера на PIC16F628A

После подачи питания на схему таймера на светодиодных индикаторах высвечивается установленное время, светодиод не светится. Путем вращения ручки валкодера возможно поменять установку времени от 1 до 99 минут.

Схема таймера — индикаторы с общим катодом

Схема таймера — индикаторы с общим анодом

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

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

Вторая версия функционирует так же, как и первая, однако снабжена небольшими дополнениями. В состоянии выбора времени, если валкодер не крутить 2-3 секунды, на индикаторе появится анимационная заставка. Вращение валкодера или нажатие кнопки отключает заставку и снова активизируется режим выбора времени.

В микроконтроллерах есть полезная вещь – таймер. Таймер можно использовать как счётчик или с его помощью формировать импульсы заданной длины (ШИМ). С использованием таймера можно, например, построить часы или генератор.

В микроконтроллера 16 семейства есть 3 таймера: TRM0, TRM1 и TRM2. Каждый из них больше подходит для определённого типа работы. Рассмотрим эти таймеры подробнее:

  • 8-битный таймер (считает от 0 до 255)
  • тактируется от системной частоты или от внешнего источника
  • считает по переднему или заднему фронту сигнала
  • 8-битный предделитель
  • прерывание генерируется при переполнении (при переходе от 255 к 0)
  • таймер работает постоянно

Этот таймер можно использовать для генерации импульсов заданной длины или для подсчёта входящих импульсов.

OPTION_REG (OPTION в программе).

  • 16-битный таймер (0..65535)
  • может тактироваться как от внешнего источника сигналов, так и от
  • дополнительного часового кварца
  • максимально предделитель - 1:8
  • таймер считает только передние фронты сигнала
  • таймер может использоваться модулем CCP
  • таймер можно отключать

Применения аналогичные TMR0.

Управление таймером осуществляется регистром T1CON .

  • 8-битный таймер
  • тактируется только от системной частоты
  • предделитель 1:1 , 1:4 , 1:16
  • таймер можно отключать

Этот таймер имеет другой принцип работы. Таймер считает импульсы от нуля до заданного PR2 . После совпадения TRM2 и PR2 сигнал поступает на 4-битный постделитель и генерируется прерывание. Такая система позволяет генерировать частоты с минимальным шагом. Таймер может посылать сигналы на CCP в качестве базы тайминга ШИМа.

Управление таймером осуществляется регистром T2CON .

Пример

Перейдём к коду прошивки. В примере задействованы два счётчика TRM0 для счётчика входных импульсов и TRM1 для мигания 2-мя светодиодами.

Включим таймеры TRM0 для счётчика и TRM1 для мигания 2-мя светодиодами.

INTCON=0b11100000; // Настройка прерываний OPTION=0b00101000; // Настройка TMR0 T1CON =0b00110001; // Настройка TMR1 TMR1IE=1;

В основном коде программы только вывод значения счётчика на дисплей.

Void main() { low_init(); // инициализация МК InitLCD(); // инициализация дисплея TMR0=0; // обнуляем таймер TMR0 LED=0; // обнуляем переменную отвечающею за светодиоды while(1==1) { IntToLCD(0,0,TMR0); // вывести на дисплей содержимое таймера delay(1000); // задержка } }

Основное же действие разворачивается в обработчике прерываний.

Void interrupt isr(void) { if(T0IF) // при переполнение TMR0 { T0IF=0; // сбрасываем флаг о его переполнение } if(TMR1IF) // при переполнение TMR1 { LED++; // управление светодиодами if(LED>3) { LED=0; } PORTA=LED; TMR1IF=0; // сбрасываем флаг } }

В обработчике первого таймера TRM0: при его переполнение нечего полезного не происходит, только сбрасывается флаг переполнения. При переполнение второго таймера TRM1: светодиоды зажигаются по-новому (на них выводиться двоичный счётчик), и сбрасывается флаг переполнения второго таймера.

Ниже приведены фотография и видео работы таймеров из примера.

Случилось так, что в связи с болезнью пришлось оставить домик в поселке без присмотра. Нужен таймер, который в течении 2-3 недель (а получилось 2,5 месяца) создавал эффект присутствия в доме, не взирая на нестабильное напряжение и частое отключение сети. Из продающихся за разумную цену ничего не подошло. Интернет и радиотехническая литература тоже не удовлетворила меня полностью. Пришлось творить самому. За пару вечеров собрал простенький таймер с часами, который по вечерам с 18-00 до 21-00 включал свет. В случае отключения напряжения часы не сбивались: индикатор отключался, а микроконтроллер продолжал работать от аккумуляторов, которые потом заряжались малым током. Время такое выбрал потому что был январь месяц. В конце февраля перевел часы на полтора часа назад. Теперь хотя на таймерных часах было 18-00 и включалась лампа, реально было 19-30 вечера. К концу марта необходимость в таймере отпала, но думаю он мне еще пригодится на период отпуска. Возможно дойдут руки до усовершенствования, ну а пока делюсь тем, что есть.

Схема простая, подобна тем часам, которые я выкладывал на этом сайте. Там же и блок питания с резервными аккумуляторами. Добавлен только узел включения лампы. Сначала я его сделал на симисторе ВТВ-16. Но экономка вспыхивала при включении в сеть (иногда). Чем бороться с переходными процессами, поставил реле, думаю для лампы-экономки это безопаснее. К плате я не подводил 220 вольт, поэтому симистор (а впоследствии – реле) с транзистором и диодом закрепил отдельно.

Также в корпусе установил и патрон под лампу. Для охлаждения в боковых и задней стенке корпуса просверлил по 8 отверстий d=5мм: по 4 в нижней части и по 4 в верхней. Но нагрев не ощущается.

Часы выставляются двумя кнопками: часов и минут. Программа написана на Ассемблере. Программа проверяет соответствие часов установленным (запрограммированным) значениям. Сейчас в программе установлены 18, 19 и 20 часов. Но при программировании можно изменить время работы таймера. На примере IC Prog (в других программах - аналогично) нужно найти по адресу 0013h значение 3012, по адресу 0017h значение 3013, по адресу 0021h значение 3014. Первые две цифры значений (30) - это код команды, а вторые две - это значение часов в шестнадцатеричном коде: 12 соответствует десятичному числу 18, 13 -19 и т.д. Для изменения нужно дважды кликнуть левой кнопкой по значению того адреса, который хотите изменить. Откроется окно редактирования, в котором значение 3012 меняете на другое, например 3005. Теперь таймер будет включен утром с 5-00 до 6-00 и вечером с 19-00 до 21-00. Так-же можно установить любое другое время.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
МК PIC 8-бит

PIC16F628A

1 В блокнот
VR1 DC/DC импульсный конвертер

LM2575

1 В блокнот
VT1-VT4 Биполярный транзистор

КТ3102

4 В блокнот
VT5 Биполярный транзистор

КТ315А

1 В блокнот
VD1-VD3 Диод Шоттки

1N5819

3 В блокнот
VD4 Выпрямительный диод

1N4004

1 В блокнот
VS1 Диодный мост

DB157

1 В блокнот
C1, C2 Конденсатор 20 пФ 2 В блокнот
С3, С6 Конденсатор 0.1 мкФ 2 В блокнот
С4 330мкФ 25В 1 В блокнот
С5 Электролитический конденсатор 100мкФ 25В 1 В блокнот
R1, R3, R6, R7, R11, R12 Резистор

300 Ом

6 В блокнот
R2, R4 Резистор

10 кОм

2 В блокнот
R5 Резистор

360 Ом

1 В блокнот
R8-R10, R13 Резистор

1.5 кОм

4 В блокнот
R14 Резистор

100 Ом

1 В блокнот
R15 Резистор

6.2 кОм

1 В блокнот
R16 Резистор

2 кОм

1 В блокнот
R17 Резистор

1 кОм

1 В блокнот
F1 Предохранитель 100 мА 1 В блокнот
L1 Катушка индуктивности 330 мкГн 1

Это очередная поделка из хлама - таймер для кухни, хотя и не обязательно для кухни. В ход пошли детали которые валялись без дела, в частности старые индикаторы АЛСки, резисторы выпаянные из старых плат и т.д. Основа устройства микроконтроллер PIC16F628A, один из самых распространенных и дешевых. Управление таймером осуществляется с помощью валкодера и одной кнопки. Диапазон выдержки времени от 1 до 99 минут. По окончанию цикла отсчета времени подается прерывистый звуковой сигнал. А архиве лежит две прошивки, первая просто таймер, а вторая с некоторыми наворотами, об этом ниже.

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


После включения питания на индикаторах высвечивается заданное время, светодиод не горит. Вращая валкодер можно изменить установку времени от 1 до 99 минут. Когда время установлено, нажимаем кнопку - раздается короткий звуковой сигнал и таймер начинает отсчет времени, светодиод мигает, а время на индикаторе уменьшается каждую минуту. Когда время дошло до нуля, таймер издает прерывистые звуковые сигналы, светодиод светиться постоянно. Теперь нажатием кнопки снимается звуковой сигнал и девайс возвращается в исходное состояние - режим установки времени. Так работает первая версия прошивки.

Вторая версия прошивки работает также как и первая, но имеет несколько дополнений. В режиме установки времени, если к валкодеру не прикасаться несколько секунд, на дисплее начинает бегать анимационная заставка. нажатие кнопки или вращение валкодера отключит анимацию и вновь отобразит режим установки времени. Во время отсчета времени, если осталась одна минута, на дисплее индицируются секунды от 60 до 00. Когда сработал звуковой сигнал, звучать он будет не бесконечно, а около 20 секунд. Далее дисплей начинает индицировать анимационную заставку (отличную от той, которая в режиме установки). А также, через каждую минуту будет напоминать коротким звуковым сигналом. Нажатием кнопки также, как и в первой прошивке таймер сбрасуется в режим установки времени. Когда до срабатывания таймера остается 3 секунды, таймер издает на каждую секунду короткий звуковой сигнал, т.е. 3...2...1 и далее срабатывает как обычно. Обе прошивки доступны и лежат в архиве вместе с рисунком печатной платы.

Звуковой сигнал реализован с помощью аппартаного ШИМ встроенного в микроконтроллер. Динамическая головка должна иметь сопротивление порядка 50 ом. Можно применить и низкоомные динамические головки (4 или 8 ом), но в данном случае лучше установить малогабаритный выходной трансформатор, т.к. через 4 омную головку будет протекать большой ток, который может вызвать перегрузку блока питания и спровоцировать сброс микроконтроллера.




Скачать дополнения

Похожие статьи