РадиоКот :: Бытовой таймер
Например TDA7294

РадиоКот >Конкурсы >Поздравь Кота по-человечески 2021! >

Теги статьи: Добавить тег

Бытовой таймер

Автор: tess
Опубликовано 30.09.2021
Создано при помощи КотоРед.

Поздравляю Кота с шестнадцатилетием! Желаю успехов и процветанию сайту!
Таймер предназначен для отсчета временных интервалов. Таймер может работать в двух режимах – режим 0 и режим 1. В режиме 0 таймер может отсчитывать временные интервалы в диапазоне от 1 минуты до 99 часов 59 минут. В режиме 1 отсчитываются интервалы в диапазоне от 1 секунды до 99 минут 59 секунд. В каждом режиме можно выбирать 8 предустановленных временных интервалов, которые можно редактировать. Управление осуществляется четырьмя кнопками (Enter, Down, Up, Cancel), кнопкой энкодера и энкодером. Индикация обеспечивается «часовой платкой» на базе микросхемы TM1637 и светодиодом. Звук обеспечивается зуммером со встроенным генератором (буззером) . Таймер имеет прямой (PC3) и инверсный (PC4) выходы, что дает возможность подключения исполнительных устройств. Если прямой выход находится в выключенном состоянии (логический ноль на выходе), то инверсный находится во включенном состоянии (логическая единица на выходе), и наоборот. Таймер выполнен на базе микроконтроллера (MK) Atmega8a. Принципиальная схема приведена ниже.

При включении таймера считываются данные с энергонезависимой памяти (EEPROM) MK, в том числе яркость индикатора и режим работы. На экране отображается первое предустановленное значение. Назову его условно Pz_1. Если в EEPROM еще ничего не записано, то отображаются цифры 99:59, таймер находится в режиме 1. Перемещение по меню производится кнопками Down и Up. Структуру меню можно назвать горизонтальной : End, Pz_8, Pz_7, Pz_6, Pz_5, Pz_4, Pz_3, Pz_2, Pz_1, PY: 3, Pr: 1. При нажатии кнопки Down и достижении конца меню отображается надпись End – конец меню. Пункт меню PY: 3 устанавливает яркость дисплея, цифра 3 означает текущую яркость, возможный диапазон значений от 0 до 7. Чтоб изменить яркость вращайте ручку энкодера. Пункт меню Pr: 1 устанавливает режим работы 0 или 1. Чтобы его изменить вращайте ручку энкодера. Если есть необходимость сохранить измененные значения яркости и режима работы (при следующем включении таймера), нажмите и удерживайте кнопку энкодера до появления символов “--:--“,затем отпустите кнопку. Если значения были изменены, то они запишутся в EEPROM.
Работа с таймером. Выберите кнопкой Up пункт “Pr”:. При необходимости измените его. (Эти действия могут быть пропущены). Кнопками Down и Up выберите требуемый номер временного интервала. Вращайте ручку энкодера для изменения значения. Нажатием на кнопку энкодера можно менять изменяемые величины - в режиме 0 часы и минуты, в режиме 1 минуты или секунды. После установки требуемого значения, нажмите кнопку Enter. начнется обратный отсчет, двоеточие на индикаторе начнет мигать в такт секундам, загорится светодиод HL1. Выход PC3 установится в единицу, выход PС4 установится в 0. Во время отсчета таймера, его можно остановить. Для этого нажмите кнопку Cancel. Таймер остановится. Выходы переключатся в состояние отключено. Для продолжения отсчета нажмите кнопку Enter. При нажатии на кнопку Cancel два раза таймер прекращает отсчет и возвращается в меню. Введенное значение времени не сохраняется. По окончанию отсчета таймера выходы переходят в состояние отключено, мигает светодиод HL1, буззер издает прерывистый звуковой сигнал. При нажатии любой кнопки данные, которые изменялись, будут записаны в EEPROM, таймер возвратится в основное меню.
При необходимости есть возможность корректировать скорость отсчета таймера. На данный момент это число 1000 (ограничено по верхней границе числом 2000) Это возможно тремя способами. Первый способ: в файле main_tim.c в строке 35 присвойте значение переменной chislo_tikov_ee, например uint16_t EEMEM chislo_tikov_ee=998; откомпилируйте проект, “зашейте” получившийся файл main_tim_eep в EEPROM MK. При этом, если в EEPROM уже находились какие-то константы, то они затрутся. Второй способ: в файле global_tim.h измените константу VREMYA_SECUNDI , например #define VREMYA_SECUNDI 998//до 0xFFFF, откомпилируйте проект. Запишите получившейся hex в флешь память MK. Третий способ: считайте память EEPROM. Например, Вы хотите записать число 998. Переведите его в шестнадцатеричный вид (например с помощью калькулятора Windows). Получится число 3E6, т.е. 03E6. Измените порядок следования байтов. Получится число E603. Запишите это число в нулевую и первую ячейку файла. Запишите получившийся файл в EEPROM.
Конструкция и детали. Микросхема U1 – микроконтроллер Atmega8A. Светодиод любой маломощный, у меня применен синего цвета свечения диаметром 5 мм. Кварцевый резонатор ZQ1 на частоту 8 МГц. Энкодер BL1 на 20 “тактов” за оборот, с кнопкой, “no name”.Кнопки любые тактовые. Резисторы любые маломощные. Конденсаторы керамические.
Принципиальная схема (в Dip Trace, jpg), прошивка, исходники, детали, фьюзы, фото деталей находятся в архиве. Программа написана на языке C в WinAVR-20100110. Печатную плату не привожу, т.к. считаю ее неудачной. Описание кнопок находится в файле button_avr.h.


Файлы:
Архив таймера


Все вопросы в Форум.




Как вам эта статья?

Заработало ли это устройство у вас?

8 19 7