Двухканальный циклический таймер на Atmega8

Циклический таймер позволяет включать и выключать нагрузку, а также выдерживать паузу на заданные интервалы времени в циклическом режиме. Устройство позволяет управлять освещением, отоплением, вентиляцией и другими электроприборами в зависимости от времени. Нагрузкой могут выступать любые электрические приборы мощность нагрузки которых не превышает максимального тока реле. Принцип работы таймера показан на графике ниже.

Возможности устройства

- 2 канала;
- Максимальная установка Таймера 1, 2 и паузы по времени - 99 минут 59 секунд;
- Максимальное количество циклов - 99
- Управление подсветкой дисплея через меню;
- Сохранение настроек в памяти микроконтроллера.

Схема таймера

Двухканальный циклический таймер на Atmega8

Таймер построен на базе микроконтроллера Atmega8. Для более точного отсчета времени тактирование осуществляется от внешнего кварца на 8МГц. Дисплей на базе контроллера HD44780 или его аналога, 16 символов, 2 строки. Настройка осуществляется с помощью 4-х кнопок: "Меню/Вперед", "Назад", "+", "-". Если в режиме меню кнопки не нажимались в течение 20 секунд, таймер автоматически переходит в ждущий режим без сохранения настроек. Каждое нажатие кнопки подтверждается сигналом зуммера, зуммер применен обычный без встроенного генератора. Запускается таймер при помощи кнопки "Старт", останавливается при нажатии на кнопку "Стоп".

В режиме ожидания на дисплее высвечивается информация об установленном времени таймера 1,2 и времени паузы, а также количестве циклов. В рабочем(запущенном) состоянии на индикаторе ведется обратный отсчет времени таймера 1, затем паузы, затем таймера 2, снова паузы и количества оставшихся циклов, индикатор работы мигает 1 раз в секунду.

Режим ожидания таймера 

Настройка таймера

Для входа в меню нажмите кнопку "Меню/Вперед", далее необходимо настроить параметры Таймера 1, кнопками "+" или "-" вводим необходимое значение для минут, причем разряд минут мигает раз в 1 секунду, снова нажимаем кнопку "Меню/Вперед", вводим необходимое значение для секунд, причем разряд секунд мигает раз в 1 секунду. Таким же способом настраиваются Таймер 2 и Паузу, т.е. кнопками "Меню/Вперед" и "Назад" можно перемещаться по меню, а кнопками "+" или "-" вводить необходимые значения.

Чтобы сохранить настройки в параметре "Save Settings?" нажмите "Yes".

Внимание.

Если количество циклов равно нулю, цикл будет повторяться до бесконечности пока не будет нажата кнопка "Стоп".

Если время таймера 1 или таймера 2 равно нулю, то пауза следующая за соответствующим таймером будет пропускаться.

Установка фьюз-битов

Видео работы таймера

Архив для статьи "Двухканальный циклический таймер на Atmega8" HOT
Файлы прошивки и EEPROM микроконтроллера, проект Proteus
File Size 19.56 KB Download 1 125 Download

Метки: ATmega8, Таймер, HD44780, Циклический

Печать

Комментарии  

0 #1 snowrider 25.04.2017 05:32
Автор приветствую
Спасибо за полезную схему.
Можно сделать дороботку в прошивку?
при увеличении или уменьшении времени кнопками + и - постоянно не щелкать сделать автоповтор, скажем нажал кнопку на секунду пошло увеличение или уменьшение значения в зависимости от нажатой кнопки

Спасибо
Александр
Сообщить модератору
+2 #2 AntonChip 28.04.2017 10:57
Добавил в архив тестовую прошивку с автоповтором кнопок
Сообщить модератору
0 #3 snowrider 28.04.2017 12:44
Антон
глюки в прошивке на выборе количества циклов
весь экран покрывается восклицательным и знаками
Сообщить модератору
+1 #4 Андрей1111 18.05.2017 16:00
Есть глюк. При прохождении нескольких циклов, при заданном параметре С00 таймер сам останавливается . Второй глюк при работе в течении времени экран становится нечитабельным, индицируются разные знаки. Прошу Вас исправить. :sad:
Сообщить модератору
0 #5 AntonChip 20.05.2017 07:11
Тестовую прошивку обновил, проверяйте
Сообщить модератору
0 #6 snowrider 20.05.2017 08:05
Вообще тишина (( на экране пусто ((
Сообщить модератору
+1 #7 AntonChip 20.05.2017 19:32
Забыл сообщить, линию R/W дисплея подключить к PD1
Сообщить модератору
0 #8 snowrider 21.05.2017 19:25
Цитирую AntonChip:
Забыл сообщить, линию R/W дисплея подключить к PD1

Спасибо !!! Но н меня все в железе ((( можно это реализовать програмно. Если нет, то нет.
Сообщить модератору
0 #9 AntonChip 23.05.2017 10:12
Цитирую snowrider:

Спасибо !!! Но н меня все в железе ((( можно это реализовать программно. Если нет, то нет.
Программно нет, линия необходима для проверки занятости дисплея
Сообщить модератору
0 #10 snowrider 23.05.2017 14:34
Цитирую AntonChip:
Цитирую snowrider:

Спасибо !!! Но н меня все в железе ((( можно это реализовать программно. Если нет, то нет.
Программно нет, линия необходима для проверки занятости дисплея

Печально ((
Сообщить модератору
0 #11 Андрей1111 24.05.2017 12:16
Спасибо. Проверю. Так и думал что проблема с занятостью дисплея. Сам писать не умею, к своему стыду.
Сообщить модератору
0 #12 Андрей1111 04.06.2017 13:10
Здравствуйте. Проблема с дисплеем исчезла. Спасибо. Но таймер все равно зависает. У меня для проверки выставлено так: Т1 01:00 Р 02:00, Т2 00:00, С --. Тамер отрабатывает несколько циклов (по-разному) и зависает. На кнопки не реагирует. Заметил, что когда пауза доходит до нуля начинается еще дополнительный отсчет с 99:95 отсчитывает несколько секунд и включает Т1. Может я неправильно прошиваю контроллер? Шью мини про, два файла HEX и EEP. Подскажите пожалуйста где косяк?
Сообщить модератору
0 #13 snowrider 04.06.2017 13:23
Цитирую Андрей1111:
Здравствуйте. Проблема с дисплеем исчезла. Спасибо. Но таймер все равно зависает. У меня для проверки выставлено так: Т1 01:00 Р 02:00, Т2 00:00, С --. Тамер отрабатывает несколько циклов (по-разному) и зависает. На кнопки не реагирует. Заметил, что когда пауза доходит до нуля начинается еще дополнительный отсчет с 99:95 отсчитывает несколько секунд и включает Т1. Может я неправильно прошиваю контроллер? Шью мини про, два файла HEX и EEP. Подскажите пожалуйста где косяк?

А зачем два файла HEX? один HEX второй EEP
Сообщить модератору
0 #14 Алексей234 04.06.2017 14:36
Извините за вопрос, я только начинаю, а как сделать чтобы сигнал на нагрузку появлялся только после окончания отсчета?
Сообщить модератору
0 #15 snowrider 04.06.2017 15:13
Цитирую Алексей234:
Извините за вопрос, я только начинаю, а как сделать чтобы сигнал на нагрузку появлялся только после окончания отсчета?

Вопрос не по теме. Нужен другой таймер
Сообщить модератору
+1 #16 AntonChip 04.06.2017 20:01
Цитирую Андрей1111:
Здравствуйте. Проблема с дисплеем исчезла. Спасибо. Но таймер все равно зависает. У меня для проверки выставлено так: Т1 01:00 Р 02:00, Т2 00:00, С --. Тамер отрабатывает несколько циклов (по-разному) и зависает. На кнопки не реагирует. Заметил, что когда пауза доходит до нуля начинается еще дополнительный отсчет с 99:95 отсчитывает несколько секунд и включает Т1. Может я неправильно прошиваю контроллер? Шью мини про, два файла HEX и EEP. Подскажите пожалуйста где косяк?

Сутки гонял в режиме бесконечность, проблем не обнаружил, но были другие настройки Т1 и Т2, попробую еще с вашими настройками запустить
Сообщить модератору
0 #17 Андрей1111 05.06.2017 14:07
snowrider Вы неправильно поняли меня. :-)
Сообщить модератору
0 #18 Андрей1111 05.06.2017 18:11
Я понял. Косяк в питании. МК виснет при отключении или включении нагрузки (лампочка). Надо это будет мне как-нибудь устранить. Так что косяк мой. Буду смотреть. Без нагрузки работает нормально.
Сообщить модератору

Советуем посмотреть...

Авторизация