Таймер на PIC16F84
А. МУРАВЬЕВ, пос. Лесной Рязанской обл.
Таймер — одна из наиболее популярных радиолюбительских конструкций. Вниманию читателей предлагается еще один вариант В отличие от других подобных устройств на микроконтроллерах, здесь выдержку устанавливают не нажатиями на кнопки, а обычным переменным резистором.
Простота управления, цифровая индикация возможность быстрой установки нового значения выдержки делают этот таймер удобным для применения в качестве кухонного. Продолжительность выдержки может быть любой в пределах 1...85 мин.
Схема таймера показана на рисунке. Микроконтроллер DD1 работает по программе, коды которой приведены в таблице. После включения питания и инициализации регистров микроконтроллера программа конфигурирует вывод RA2 как выходной и устанавливает на нем высокий логический уровень. После первоначальной зарядки конденсаторов С2 и С3 программа переходит в фазу установки продолжительности выдержки. Циклически выполняется подпрограмма "OneShot", заимствованная из статьи А Долгого "Аналоговое управление в микроконтроллерном устройстве" ("Радио", 2005, № 4, с 33), а также проверяется состояние кнопки SB1. Светодиод HL1 погашен.
Полученное в результате работы подпрограммы число в зависимости от положения движка переменного резистора R1 может находиться в пределах 1...254. Программа преобразует его в продолжительность выдержки в минутах, причем каждым трем последовательным значениям этого числа соответствуют одинаковые выдержки. Таким образом, максимальная выдержка — 255/3 = 85 мин.
Установленное значение программа выводит на двухразрядный цифровой индикатор HG1, HG2.
Обнаружив нажатие на кнопку SB1, программа переходит в фазу отсчета выдержки, сигнализируя об этом включением светодиода HL1. Фактически идет подсчет прерываний от таймера TMR0 Так как он настроен (вместе с предварительным делителем) на ко эффициент пересчета 4000, а период повторения счетных импульсов при частоте кварцевого генератора 4 МГц равен 1 мкс, прерывания происходят каждые 4 мс.
Как только их число достигнет 15000 (это значит, что прошло 0,004х 15000 = 60 с), программа уменьшает выведенное на индикатор значение на единицу и начинает подсчет прерываний заново.
Когда заданное число минут пройдет, с выхода RA4 микроконтроллера через усилитель на транзисторе VT1 на динамическую головку ВА1 поступит прерывистый сигнал частотой 1000 Гц. Через 6 с сигнал прекратится и программа таймера вернется в фазу установки выдержки.
Если кнопка SB1 нажата до истечения установленной выдержки, таймер прекращает ее дальнейший отсчет и, не подавая звуковой сигнал, переходит в фазу установки. При переходах из одной фазы в другую программой предусмотрены секундные паузы, до истечения которых кнопку SB1 необходимо отпустить
Налаживание таймера сводится к подборке конденсатора СЗ. Его емкость должна быть такой, чтобы при максимальном сопротивлении переменного резистора R1 на индикатор было выведено число 85.
Подбирая резистор R16, устанавливают необходимую громкость звукового сигнала.
Питать таймер можно от любого источника постоянного напряжения 3...5 В, желательно стабилизированного Потребляемый ток не превышает 100 мА Переменный резистор должен быть с линейной характеристикой регулирования. Светодиодные индикаторы АЛС324Б можно заменить другими с общим анодом, а микроконтроллер PIC16F84A — более ранней моделью PIC16F84.
Прошивка микроконтроллера - timer_pic16f84.zip
Радио 7-2006