Блок с датойБлок с временемБлок с возрастом сайта
Mr.ALB

    Анатолий Беляев (aka Mr.ALB). Персональный сайт

    Да пребудут с вами Силы СВЕТА!

     

    Ардуино (Arduino). #24

    Универсальный таймер

    Давно было намерение сделать универсальный таймер, который можно было бы использовать для разных процессов, где требуется выдержка определённого времени и, который бы мог включать/отключать, по истечении времени, различную нагрузку, вплоть до устройств на ~220 В. Время пришло. Схема и программа разработаны. Основой этого таймера послужили проекты Таймер для катушки Мишина и МТР-1.2 (термометр-регулятор).

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

    Начиная с версии v2.2 дополнительно применена условная компиляция, что позволило легко выбирать вариант логики управления кнопками: HIGH или LOW.

    Начиная с версии v2.4 появилась возможность выбирать количество разрядов в индикаторе (3 или 4).

    Начиная с версии v3 появился циклический режим работы. Можно задавать время паузы.

    Версия v4 – минималистичная. Как версия v1, но код улучшен. Индикатор семисегментный часовой покупной, кнопки простые.

    Универсальный таймер v3
    Универсальный таймер v4

    Описание

    Таймер v1

    Описание управления таймером версии v1...

    Таймер v2

    Управляется таймер так же тремя кнопками, но их значение другое:

    Таймер v3

    Эта версия имеет некоторое дополнение для активизации циклического режима работы, поэтому добавлены ещё три пункта в меню настройки. Для совместимости с трёхразрядным индикатором, в меню настроек значение mode выводится во втором разряде для 4-х разрядного индикатора и в первом разряде трёх разрядного индикатора. Теперь на индикаторе выводится следующая информация:

    Таймер v4

    Описание управления таймером версии v4...


    Схема

    Основой универсального таймера является плата Ардуино (Arduino Uno, Arduino Nano, Arduino Pro Mini и подобные). Управление осуществляется сенсорными кнопками TTP223, конечно можно вместо них использовать и обычные кнопки.

    Индикация таймера осуществляется на четырёх разрядном семисегментном светодиодном индикаторе. В первом варианте схемы (только для версии v1) используется индикатор с общим катодом, который управляется сдвиговым регистром SN74HC595N. В настоящее время это вполне рабочий бюджетный вариант.

    Исполнительным устройство является модуль реле K1, с управляющим сигналом высокого уровня (только для версии v1). У меня самодельный модуль, но возможно использование любого модуля и покупного в том числе.

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

    Питание таймера осуществляется от внешнего источника питания +5В.

    Схема электрическая принципиальная. Вариант 1
    Pic 1. Схема электрическая принципиальная. Вариант 1

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

    Схема электрическая принципиальная. Вариант 2
    Pic 2. Схема электрическая принципиальная. Вариант 2

    В версии v2 программы таймера используется логика управления низким уровнем выходными устройствами. Кнопки имеют несколько другие функции, поэтому схема изменилась. Попутно отпала необходимость в выключателе звука SA2. Для совместимости вариантов, управляющие пины остались прежними. Исходя из логики управления низким уровнем выходными устройствами, изготовил модуль реле, который управляется (включается) подачей на вход сигнала низкого уровня - LOW.

    Схема электрическая принципиальная. Версия v2
    Pic 3. Схема электрическая принципиальная. Версия v2

    С версии v2.2 программы таймера сделана возможность выбирать логику управления кнопками. Возможно использовать сенсорные кнопки типа TTP223 (с логикой HIGH), или обычные кнопки (с логикой LOW). Так же для совместимости вариантов, управляющие пины остались прежними. Реализация совместимости программная.

    Схема электрическая принципиальная. Версия v2.2
    Pic 4. Схема электрическая принципиальная. Версия v2.2


    В версии v3.1 программы таймера использован покупной 4-х разрядный индикатор часового типа. Поэтому для индикации активности реле используется дополнительный светодиод HL1. Схема подключения немного упрощена. Подключения идут на пины последовательно.

    Схема электрическая принципиальная. Версия v3.1
    Pic 5. Схема электрическая принципиальная. Версия v3.1

    Ниже вариант схемы с использованием обычных кнопок и логикой управления LOW. Описание смотрите ниже на странице Таймер v3.1.

    Схема электрическая принципиальная. Версия v3.1
    Pic 6. Схема электрическая принципиальная. Версия v3.1


    Так же как и в версии v3.1 в версии v4 программы таймера использован покупной 4-х разрядный индикатор часового типа и для индикации активности реле используется дополнительный светодиод HL1. Буззер, он же Биппер, подключен через транзистор BC547, можно 2N2222, КТ3102, КТ315 и им подобные. Реле можно ставить с любой логикой управления, выбирается в скетче через условное программирование. В данном случае реле с логикой управления HIGH.

    Схема электрическая принципиальная. Версия v4
    Pic 7. Схема электрическая принципиальная. Версия v4


    Макетирование схемы

    Вначале программа отлаживалась на макете. Ниже фото макета схемы 1. На фото модуль с кнопками снят. Программа проверялась на Arduino Pro Mini.

    Универсальный таймер<br>Макет схемы 1
    Pic 8. Универсальный таймер
    Макет схемы 1

    Далее отлаживалась программа для схемы 2. Модуль индикатора собран на четырёх разрядном индикаторе LN-5644-11Q (общий анод). Микросхема TM1637 припаяна к плате стенда проверки индикаторов. В момент запуска таймера включается модуль реле. На фото видно свечение зелёного светодиода на модуле реле (управление высоким уровнем). Подключение модуля реле указывается свечением точки четвёртого разряда (DIG4).

    Универсальный таймер<br>Макет схемы 2
    Pic 9. Универсальный таймер
    Макет схемы 2

    Универсальный таймер<br>Макет схемы 2
    Pic 10. Универсальный таймер
    Макет схемы 2

    Скетч

    Ниже приводится скетч версии v1 второго варианта схемы с индикатором на TM1637. Скетч версии v1 первого варианта схемы на индикаторе с управлением через сдвиговый регистр SN74HC595N можно скачать в Приложении.



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

    В итоге получилось создать меню настроек в котором 7 пунктов mode =

    1. Индикация текущего времени: hh.mm(.) | mm.ss(.) (зависит от режима 1)
    2. Режим hh.mm (часы.минуты) - 0 | режим mm.ss (минуты.секунды) - 1
    3. Установка часов|минут – 0...99
    4. Установка минут|секунд – 0...59
    5. Активность реле – 0|1 => 0 – [0]0.00 | 1 – [0]0.00. - свечение точки DIG4
    6. Активность зуммера – 0|1
    7. Яркость индикатора – 0...7

    Версия v2.4 не имеет циклического режима, просто таймер. Скетч этой версии можно посмотреть ниже по нажатию на соответствующую кнопку (скрыл, чтобы не загромождать страницу). Новинка этой версии: применена условная компиляция, чтобы легко можно было перейти на логику управления кнопками либо LOW, либо HIGH. Дополнительно, используя условную компиляцию, удалось быстро перенастраивать скетч на использование индикатора, имеющего всего три разряда. Модуль индикатора смотрите по ссылке: Модуль на TM1637, модификация платы v4.



    Версия v3

    Как и хотел, сделал новую версию v3, в которой реализован циклический режим работы.

    В меню настроек добавилось ещё три пункта и теперь всего 10 пунктов mode =

    1. Индикация текущего времени: hh.mm(.) | mm.ss(.) (зависит от режима 1)
    2. Режим hh.mm (часы.минуты) - 0 | режим mm.ss (минуты.секунды) - 1
    3. Установка часов|минут – 0...99
    4. Установка минут|секунд – 0...59
    5. Активность реле – 0|1 => 0 – [0]0.00 | 1 – [0]0.00. - свечение точки DIG4
    6. Активность зуммера – 0|1
    7. Яркость индикатора – 0...7
    8. Активность циклического режима – 0|1
    9. Установка паузы: часов|минут   – 0...99 (при mode=7 и выбрано 1)
    10. Установка паузы: минут|секунд – 0...59 (при mode=7 и выбрано 1)

    Стоит отметить, что если в пункте 7 не установлена активность циклического режима, то пункты 8 и 9 не выводятся. Если в пункте 7 установлена активность циклического режима, но значения времени для паузы не установлены, то при запуске таймера значения времени для паузы будут как и в активном режиме, т.е. длительность паузы будет равна длительности активного режима.

    Скетч v3 можно посмотреть ниже по нажатию на соответствующую кнопку.



    Конструкция v3.0

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

    Собрал вариант на покупном модуле индикатора с TM1637 и обычных кнопках. На стенде с кнопками используются три левых кнопки. Общий у них GND. Логика управления кнопками переключена в скетче на LOW.

    В качестве МК использован китайский вариант LGT8F328, который установлен на плату подобную Arduino Nano. Попутно стоит заметить, что эта плата очень капризная и всё время виснет, особенно в режиме отладки, когда необходимо контролировать процессы через монитор последовательного порта. Для устранения этого недостатка были дополнительно припаяны два SMD конденсатора ёмкостью по 100nF между выводами платы IN (Внешнее питание) и GND и между +5V и GND. После такой небольшой доработки плата с LGT8F328 работает без сбоев.

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

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

    Универсальный таймер<br>Макет схемы 2.2
    Pic 10. Универсальный таймер
    Макет схемы 2.2

    Конструкция таймера представляет из себя модуль электроники, где собраны в этажерку плата с модулем индикатора и плата с Arduino. В моём варианте использовал плату WAVGAT Pro Mini. Обращу внимание, что контакты для программирования у неё зеркальные по сравнению с Arduino Pro Mini на контроллере AVR ATMega328P. На основной плате установлен зуммер и небольшая плата с панелькой для сенсорных кнопок. Отдельно от основной платы имеется модуль реле. Он закреплён на держателе из пластика ABS. Соединения между модулями и платой с кнопками с помощью шлейфов на разъёмах. Корпус сделал из пластмассы ABS толщиной 2 мм. Он состоит из двух частей: нижней и верхней. Соединяются они между собой защёлками.

    Универсальный таймер<br>Части конструкции
    Pic 11. Универсальный таймер
    Части конструкции

    Универсальный таймер<br>Модуль электроники и модуль реле
    Pic 12. Универсальный таймер
    Модуль электроники и модуль реле

    Универсальный таймер<br>Модуль электроники и модуль реле
    Pic 13. Универсальный таймер
    Модуль электроники и модуль реле

    К модулю электроники подпаяна плата с разъёмом microUSB, через который осуществляется питание таймера.

    Универсальный таймер<br>Модуль электроники, вид снизу
    Pic 14. Универсальный таймер
    Модуль электроники, вид снизу

    Универсальный таймер<br><q>Начинка</q> в нижней части корпуса
    Pic 15. Универсальный таймер
    Начинка в нижней части корпуса

    Универсальный таймер<br>Корпус собран
    Pic 16. Универсальный таймер
    Корпус собран

    Опробовал таймер. Установил в параметре 4 активность реле. На фото ниже видно, что при работе таймера светится индикатор включения реле в нижнем правом углу.

    Универсальный таймер<br>Таймер в работе
    Pic 17. Универсальный таймер
    Таймер в работе

    Для удобного пользования наклеил поясняющие этикетки. Файл с этикетками смотрите в Приложении.

    Универсальный таймер<br>Наклеены этикетки
    Pic 18. Универсальный таймер
    Наклеены этикетки

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

    Универсальный таймер<br>Вид слева
    Pic 19. Универсальный таймер
    Вид слева


    Проверка работы Универсального таймера v3.0

    Продолжительность фильма 3:59 [мм:сс]

    Проверка работы таймера в сборе. Питание осуществляется от зарядного устройства на 5В для телефона через разъём microUSB. Описание параметров см. выше в подразделе Версия v3. Осталось наклеить этикетки с надписями.




    Таймер v3.1

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

    Так как этот таймер ещё писал и под свою Ардуино на микроконтроллере ATTiny44A, в которой применял разные ухищрения по снижению размера кода и оптимальности его написания, то решил и версию v3.1 написать аналогично, используя для управления индикатором оптимизированные функции.

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

    Схема этой версии размещена на странице выше Схема электрическая принципиальная v3.1. Скетч и схемы в Приложении ниже.


    Конструкция v4.0

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

    Схема таймера собрана на монтажной плате размерами 40*60 мм. Модуль реле собран сразу на этой плате. Ардуино использовано Pro Mini на ATMega168P, хоть оно и избыточно, так как сам скетч использует 3220 байт, но это сделано для простоты повторения проекта, можно поставить и Pro Mini на ATMega328P, для схемы и скетча это не принципиально. Кнопки управления припаяны на этой основной плате. Плата индикатора подключается через разъём. Так же через разъём подключается и светодиод активности реле.

    Универсальный таймер v4.0<br>Вид на плату
    Pic 20. Универсальный таймер v4.0
    Вид на плату

    Разъём питания MicroUSB установлен на переходной плате, она припаяна на основную плату.

    Универсальный таймер v4.0<br>Вид с обратной стороны платы
    Pic 21. Универсальный таймер v4.0
    Вид с обратной стороны платы

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

    Универсальный таймер v4.0<br>Вид платы сбоку
    Pic 22. Универсальный таймер v4.0
    Вид платы сбоку

    Плата помещается в корпус изготовленный из пластика ABS толщиной 2,5мм. Размеры корпуса 67*48*40 мм. Он состоит из двух половин. В верней половине установлена плата с индикатором на TM1637 и светодиод активности реле. В нижнюю половину установлена основная плата. В корпусе имеются отверстие под разъём питания слева в нижней половине, на лицевой панеле верхней половины корпуса есть отверстие для звука зуммера и отверстие для отвертки на клеммник реле.

    Универсальный таймер v4.0<br>Реле не активно
    Pic 23. Универсальный таймер v4.0
    Реле не активно

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

    Универсальный таймер v4.0<br>Реле активно
    Pic 24. Универсальный таймер v4.0
    Реле активно

    Приложение

    Материалы для повторения проекта:

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

    Анатолий Беляев.

    На развитие сайта и проектов Arduino

    Ниже на форме выберите/укажите сумму и источник перевода:
        Кошелёк Ю-money или
        Карта банка: Visa, MasterCard, МИР, Alfa-bank


    Yoomoney.ru (Яндекс.Деньги)  
    9516

    Другим способом оказать помощь на развитие сайта.


    . Mr.ALB
    Предыдущая страница Страница 25 Далее