Трехканальный термостат, терморегулятор, таймер на ATmega8. Конкурс на лучшую конструкцию на микроконтроллерах Цикличный таймер своими руками на микроконтроллере

Электронный таймер предназначен для программного управления бытовыми приборами, освещением и другими приборами. Таймер можно использовать для аквариумного и другого оборудования. Использование таймера позволит экономить электроэнергию, не понижая уровень комфорта.

Вариант 1

В состав данного устройства входит три таймера. Таймер 1.1 и таймер 1.2 каждый из них позволяет задавать время включения и выключения нагрузки, которая подключается к реле KV1. Таймер 2.1 и таймер 2.2 также позволяет задавать время включения и выключения нагрузки, которая подключается к общему реле KV2. Таймер 3 представляет собой обратный таймер, который управляет нагрузкой через KV3.

В данном устройстве применен микроконтроллер PIC16F628A. Элементы С1, С2, ZQ1 являются внешними частотозадающими элементами внутреннего тактового генератора. Для отображения информации используется индикатор HG1 с контроллером KS0066. Индикатор может отображать две строки по шестнадцать символов. Подстроечным резистором R4 можно регулировать контрастность изображения. Помощью SB1-SB5 происходит управление режимами работы и индикации, а так же настройка таймера. Через выводы 1,17,18 микроконтроллера происходит управление транзисторами VT1-VT3 и далее реле KV1-KV3, которые включают либо отключают нагрузку. При использовании реле с током катушки более 100 мА, то транзисторы КТ315В следует заменить на транзисторы максимально допустимый ток коллектора, которых больше тока катушки реле.

Режим отображения текущего времени.




Режим отображения таймера 1.1.

Если время включения установлено равным времени выключения то считается не используемым.

Назначение клавиш и управление ими такое же, как и в режиме текущего времени.

Таймеры 1.2, 2.1 и 2.2 по индикации и управлению аналогичны таймеру 1.1.

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

Таймер 3 - это обратный таймер.

Для входа в режим настройки таймера 3 необходимо нажать и удерживать, до появления мигающего курсора, кнопку SB5. В режиме настройки перемещение курсора осуществляется кнопками SB3 и SB4, а изменение значений кнопками SB1 и SB2. При отсчете времени остановить таймер 3 можно нажав SB5. После повторного нажатия SB5 таймер продолжит отсчет времени и когда его значение будет равно нулю, нагрузка отключится.

Переключение между режимами отображения осуществляется кнопками SB1 и SB2.

Биты конфигурации микроконтроллера.

Вариант 2

Режим отображения текущего времени

Назначение клавиш управления в этом режиме:
SB5 - вход/выход в режим настройки текущего времени.
SB3, SB4 – перемещение курсора влево либо вправо при настройке.
SB1, SB2 – уменьшение либо увеличение значений времени при настройке.

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


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

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

PIC16F628A

1 В блокнот
HG1 LCD 16x2 BC1602B2 1 В блокнот
ZQ1 Кварцевый резонатор 4 МГц 1 В блокнот
VD1-VD3 Диод

КД105Б

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

КТ315В

3 В блокнот
C1, C2 Конденсатор 15...30 пФ 2 В блокнот
R1, R3, R5 Резистор

1 кОм

3 В блокнот
R2, R6 Резистор

Таймер на ATmega8 простой, небольшая схема, на часовом кварце

Описание управления.

Если в работе осталось меньше десяти часов, ведущий нуль убирается, если осталось меньше часа, на индикатор выводятся ММ:СС, при настройке таймера формат времени ЧЧ:ММ.
Когда осталось меньше 20 секунд, на сигнальный вывод (РС4) подаются импульсы с периодом 0,5с.
при нажатии кнопки SW4 во время работы таймера останавливает полностью счет, последующие нажатия по очереди восстановляют предыдущую настройку или обнуляют таймер

Если джампер Jmp1 замкнут, то при появлении питания, таймер продолжает отсчет. Если разомкнут, то отсчет пока питания нет, не идет (пауза). При резервном питании, индикация отсутствует. Точка около единиц часов мигает.
При нажатии на кнопку СБРОС таймер отключает нагрузку, останавливается и обнуляется, при еще одном нажатии восстанавливается предыдущая настройка. Точка мигает только когда идет счет.

точки индикатора:

Не мигают: таймер остановлен
- мигает средняя - таймер запущен

Индикаторы ОА .

Автор проекта VasylYE найти его можно здесь http://elektron.ucoz.ru/forum/

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

Компактные размеры

Видео проверки таймера

Сердцем данного таймера является очень популярный и уже не дорогой микроконтроллер Atmega8. Вы можете сказать, что для прошивки нам потребуется программатор которого нет, но это не так, для прошивки Atmega достаточно всего пять коротких 10-15 см. проводков подключенных через резисторы 150-200 Ом. напрямую к LPT порту по этой схеме.


Вот по этой причине, эти микроконтроллеры стали самыми популярными у радиолюбителей.

На этом рисунке Вы видите: Схему распиновки ножек МК для подключения и прошивки.

Пункт 1. Подготовим все необходимое для изготовления таймера.

Самые обязательные радиодетали схемы, остальное обычно можно подобрать у себя дома, самая маленькая микросхема, это часы DS1307.

Нам потребуются такие радиоэлементы:

Интегральные часы DS1307
LCD жидкокристаллический индикатор
Стабилизатор 7805
500-1000 Мф - 16 вольт.
Реле или электронный ключ (в зависимости от нагрузки которая планируется подключаться).
сопротивлением 5,1ком - 3 шт., резистор переменный (по мануалу LCD дисплея).
Кварц часовой 32768 Гц.
Кнопки без фиксации - 4 шт.
Батарейка таблетка на 3 вольта.
Текстолит для платы.
Небольшой трансформатор ~220в. -> ~6-12в.
Коробка распаечная для корпуса.
+ Для программатора: резисторы 150-200 Ом. - 4 шт., разъем LPT порта (для удобства, не обязателен).

Обязательные инструменты каждого радиолюбителя:
Паяльник для пайки микросхем, паяльник для пайки пассивных радиодеталей и проводов.
Тестер для прозвонки дорожек и проверки радиодеталей.
Олово, канифоль.
+ Принтер лазерный (для изготовления платы или другой способ).

Пункт 2. Приступим к изготовлению.

Таймер будем делать по этой главной схеме.


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

Лично я своем таймере применил вот такую схему БП и исполнительное устройство на транзисторе и реле.


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



Они более компактные (без радиатора), но менее мощные, чем простое реле.

В соответствии с главной принципиальной схемой + БП + ИУ и анализом монтажных габаритов вашей коробки для корпуса, а также размеров подобранных радио элементов, проектируем форму, размер и рисунок дорожек на плате. Для этого удобно пользоваться программой Sprint Layout.

Для моего устройства получилась вот такая простая плата.


Полученный рисунок переносим с помощью специального маркера или по технологией ЛУТ (с помощью лазерного принтера и утюга) на медный слой текстолита. Если у вас принтер лазерный Brother (как у меня), то идею с ЛУТ лучше сразу забросить, по причине используемого в нем тугоплавкого тонера ~400C вместо обычных~200С, я кстати когда-то по глупости купил этот принтер именно для ЛУТ:(., поэтому в результате моя плата рисована маркером.
Нанесенный на медь рисунок вытравливаем в ванночке с хлорным железом или любым другим специальным раствором.


На готовую плату припаиваем детали согласно схеме, особое внимание обращаем при монтаже и пайке микросхемы часов и кварцевого элемента. Длина дорожек между ними должна быть минимальной, а лучше использовать микро кварц из наручных часов и припаять его непосредственно к ножкам МС часов. Все свободное пространство рядом с МС часов и кварца заполняем площадками корпуса (GND). Батарея необходима для поддержания часов в рабочем состоянии во время отключения от сети. Если по какой-то причине вы не стали устанавливать эту батарейку, то посадите плюсовой провод на корпус, иначе часы просто не пойдут.

Микроконтроллер прошиваем программатором или с помощью 5 проводков.

*Прошивка* (скачиваний: 1394)

Автор прошивки специально для удобства (за что ему спасибо) и не стал изменять заводские фьюзы, что очень сильно облегчает, без заморочки, прошивку для начинающего радиолюбителя. Если МК еще не использовался, новый из магазина, то просто заливаете прошивку и все, но если уже есть изменения в фьюзах, то надо выставить их так CKSEL=0001. Все остальное просто и не нуждается в пояснении.

Пункт 3. Сборка.

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




В прорезанную ножом крышку, при помощи термоклея из пистолета, закрепляем LCD экран., прорезаем отверстия под кнопки управления и кнопку питания.



Подрезаем выступающий клей.

Предлагаю к повторению несложную схему бытового (кухонного) таймера на 99 минут собственной разработки. Идея заключалась в простоте управления, чтоб буквально любая (тупая) домохозяйка без проблем могла им пользоваться. Достаточно просто набрать 2 цифры минут и нажать кнопку "Старт". При необходимости можно установить и секунды. Также имеется скрытое "сервисное меню", где "спрятано" несколько фич - отображение прямого/обратного отсчета времени при работе таймера и несколько различных вариантов световых и звуковых эффектов по окончании отсчёта времени. Еще одной особенностью таймера (правда только на уровне программирования контроллера) является возможность выбора варианта управления ногой RC5 - появление на ней "1" либо во время счета времени, либо после окончания счета. Эту ногу можно использовать, например, для управления нагрузкой или как нибудь по своему усмотрению. Я в своем варианте сделал включение дополнительного усилителя звука по окончании счета.

В начале я разработал "дизайн" табло. В таймере применен индикатор на 2 цифры с двоеточием слева, а вокруг него расположены 6 светодиодов. При отсчете времени они показывают десятки секунд, а при окончании счета изображают бегущий огонь. Двоеточие тоже выполняет функцию визуального конроля режима. При установке времени в режиме минут оно погашено, а в режиме секунд - горит. Когда таймер запущен, начинается отсчет времени. Если время меньше одной минуты, на индикаторе отображаются секунды и двоеточие горит постоянно. Когда "натикало" больше минуты - на индикаторе высвечиваются минуты, а двоеточие начинает мигать. Десятки секунд, как писал выше, показывают светодиоды. Сейчас при чтении этого текста кажется что слишком все намудрено, но в реале все очень просто и логично.

Поскольку я предполагал встроить этот таймер прямо в стену, питание ему сделал от сети с настоящим выключателем. Никаких спящих и дежурных режимов! Не люблю я их. Только полное выключение! Блок питания - простейший импульсный, по типу китайской зарядки. За особой точностью хода я не гнался, так как для приготовления всяческих кулинарных изделий точность даже плюс/минус пару минут не так уж и критична. Да и образцового секундомера у меня тоже не было. На глаз при установке максимального интервала в 99 минут по сравнению с "эталонными" часами разницы практически не было. Ну может там каких пол секунды и было, но на глаз это отследить трудно. Так что если Вас все устраивает, можете приступить к повторению девайса. Вот его схема:

На время прошивки МК перемычки JP1 и JP2 снимаются. Для экономии места на схеме ключи VT5, VT6, VT9 и VT10 не показаны. Индикатор взял из старого компьютерного корпуса. В нем в качестве двоеточия используется левая 1. Только при окончательной сборке эти сегменты надо немного закрасить чтоб получилось 2 точки (я просто заклеил ненужные участки черной изолентой). Еще особенностью этого индикатора является то, что сегменты этой левой единицы соединены последовательно внутри индикатора и выведены как сегмент H (запятая) от второй цифры. Поэтому обратите внимание, что номинал R22 меньше, чем у резисторов для других сегментов. Вообще же можно просто использовать обычный индикатор на 2 цифры и 2 последовательно соединенных светодиода для двоеточия. Я взял такой индикатор просто потому, что он у меня уже был. На всякий случай дам его распиновку.

Установка времени происходит следующим образом. По умолчанию (при включении) таймер находится в режиме ввода минут, при этом двоеточие погашено. Цифровыми кнопками набираем сколько надо минут и нажимаем кнопку "Старт" (S12 по схеме). Вводимые цифры по ходу нажатия сдвигаются влево, какие цифры на индикаторе горят - столько минут в данный момент и установлено. Например, если на индикаторе горит 23 (установлено 23 минуты), а надо поставить 6 минут, то просто нажимаем "0" и "6". Если надо установить и секунды - нажимаем кнопку "Сек" (S10 по схеме), при этом зажигается двоеточие. Ставим сколько надо секунд точно также, как и минуты. Если набранное число получилось больше 59 секунд, старшая цифра начинает мигать, символизируя ошибку, и сбрасывается в 0. Запустить таймер можно как из режима минут, так и из режима секунд. После запуска таймера, остановить его досрочно можно повторно нажав кнопку "Старт".

На принципиальной схеме слева виден коннектор X3 с надписью "Out". Это тот самый выход управления чем-нибудь, про который я писал в начале. В исходном состоянии там "0". На этапе программирования МК можно задать, когда там будет появляться уровень "1" - во время отсчета времени или по окончании отсчета и до возвращения таймера в исходное положение. Задается это в памяти данных EEPROM, в ячейке по адресу 0x2105 (на рисунке квадратик 1). Записав туда значение 0x01, на выходе будет логическая "1" во время работы таймера. Записав 0x00 - после окончания отсчета времени. Вот скриншот программы при программировании МК.

По адресу 0x2107 (квадратик 2) находится значение числа коррекции при отсчёте времени (отстают-уменьшить, спешат-увеличить). Изменять число желательно в небольших пределах и без особой надобности лучше не трогать. Не ставить числа, равные 0 и 0FFh. По адресу 0x2109 (квадратик 3) находится число, определяющее сколько минут будет работать звуковой сигнал при окончании отсчета, если таймер не сбросили в исходное состояние нажатием кнопки.

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

Если нагрузка не очень мощная (несколько десятков Ватт), тиристор можно даже не ставить на радиатор. При опытах я подключал лампу накаливания 25W и все детали были холодные, как труп.

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

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

Сам таймер собран на двухсторонней печатной плате, нарисованной в . Архив приложен в конце статьи. Плата разведена под PIC в корпусе TSSOP с шагом 0,65мм.

Фото платы в процессе сборки/отладки.

Для питания таймера использовал простейший импульсный блок питания, собранный по этой схеме (саму схему взял готовую где-то в интернете). Подробно писать про него здесь нет никакого смысла, ибо это тема для отдельной статьи про импульсные блоки питания. Приведу лишь данные по намотке трансформатора. Сам каркас подходящего размера берется из энергосберегающей лампы или из сгоревшего китайского БП. Также его можно выдрать из цепи дежурки компьютерного БП или из монитора, но по размерам они будут немного больше. Для беспроблемной разборки каркаса и сердечника трансформаторов, я их окунаю в кипящую воду на 3-4 минуты и потом аккуратно, без больших усилий, разбираю. Дальше снимаем все старые обмотки и мотаем новые. Обмотки: 1-2 - 600 витков диаметром 0,08 - 0,1мм; 3-4 - 23 витка диаметром 0,3 - 0,55мм; 5-6 - 10 витков диаметром 0,08 - 0,1мм. Обмотка 1-2 намотана внавал, остальные виток к витку. Все обмотки необходимо хорошо заизолировать друг от друга. При намотке соблюдать направление и начало обмотки по точкам. Две половинки Ш-образных сердечников стыкуются через изоляционную прокладку (воздушный зазор ~ 0,1 мм).

Но можно поступить проще, взяв любой готовый китайский блок питания с напряжением 8-9 вольт на выходе.

Несколько фоток изготовления корпуса (небольшой ворклог). Особое внимание было уделено оформлению дисплея.

Ну и готовое устройство в сборе.

И напоследок про "сервисное меню", о котором упомянуто в начале текста. Если из режима установки секунд набрать "1", "1", "1", "1", "1" и "Старт", то кнопками "1" и "2" можно выбрать прямой или обратный отсчет времени. На индикаторе будет высвечиваться "Cu " (Count Up) или "Cd " (Count down). Выход из меню с сохранением настроек в EEPROM кнопкой "Старт".

Если набрать последовательность "2", "2", "2", "2", "2" (также из режима установки секунд) и "Старт" - кнопками "1" - "4" можно выбрать один из четырех вариантов звукового сигнала при срабатывании таймера. На индикаторе будет высвечиваться "A1 " -"A4 " (Alarm). Выход с сохранением настроек в EEPROM так же кнопкой "Старт".

Набрав "3", "3", "3", "3", "3" и "Старт" кнопками "1" - "4" можно выбрать один из четырех вариантов "бегущего огня" круговых светодиодов при срабатывании таймера. На индикаторе будет высвечиваться "E1 " -"E4 ".

Набрав "4", "4", "4", "4", "4" и "Старт" кнопками "1" - "4" можно выбрать один из четырех вариантов мигания семисегментных индикаторов при срабатывании таймера. На индикаторе будет высвечиваться "L1 " -"L4 ".

В архиве приложены платы таймера и блока питания (если кому надо) и прошивка контроллера. Фьюзы уже указаны в прошивке, ничего менять не надо. На плате таймера присутствует несколько керамических конденсаторов 0,1мкФ по питанию, не показанных на принципиальной схеме. Также есть пару деталей, обозначенных FB (ferrite bead) - это просто так называемые ферритовые бусинки, используемые в качестве перемычек.

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

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

PIC16F636

1 В блокнот
IC2 Кодер, декодер

SN74LS155A

1 В блокнот
IC3 Регистр сдвига К561ИР2 1 В блокнот
IC4 Линейный регулятор

L78L05

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

КТ3107БМ

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

КТ3102БМ

29 В блокнот
D1-D4 Выпрямительный диод

1N4148

4 В блокнот
Q1 Кварцевый резонатор 20 МГц 1 В блокнот
C1, C2, C4 220 мкФ 3 В блокнот
C3, C5, C8 Электролитический конденсатор 100 мкФ 3 В блокнот
C6, C7 Конденсатор 22 пФ 2 В блокнот
C9 Конденсатор 0.1 мкФ 1 В блокнот
R1-R3 Резистор

1 кОм

3 В блокнот
R4-R6 Резистор

680 Ом

3

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

Таймер отсчитывает секундные интервалы времени, выполнен на микроконтроллере PIC 16F 886 фирмы Microchip. Максимальное время - 999 секунд. Управление осуществляется тремя кнопками. Таймер имеет возможность сохранения 7 временных интервалов, в энергонезависимой памяти.

Для индикации применен семисегментный индикатор с общим катодом и высотой символа 14 мм. Коммутирующим элементом является реле.

Кнопками S1 и S3 устанавливают необходимый временной интервал, Кнопка S2 - служит для запуска/останова таймера и выбора режима работы. По окончании отсчета, таймер подает звуковой сигнал, каждые 10 сек. до нажатия кнопки S2. Кнопки S1 и S3 имеют режим автоповтора.

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

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

Для отсчета секундных временных интервалов применен алгоритм Брезенхема.

Подключение таймера:

Порядок подключения сети 220 В и нагрузки указан на фото.

Работа с таймером:

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

Кратковременное нажатие кнопки S2, запускает отсчет времени, повторное нажатие останавливает отсчет. Длительное нажатие (более 2 с.) кнопки S2, дает возможность выбора временных интервалов сохраненных в памяти «Р1…Р7». Для редактирования временных интервалов, выбираем одну из ячеек «Р1…Р7» и длительным нажатием кнопки S2 входим в режим редактирования. Режим «РУ» - позволяет непосредственно устанавливать временные интервалы при работе таймера.

Вы не можете скачивать файлы с нашего сервера прошивку, исходник MPLAB, печатку Eagle

Что еще почитать