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

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

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

     

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

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

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

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

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

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

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

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

    Описание

    Таймер v1

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

    Таймер v2

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

    • MODE  – Выбор параметра настройки
    • MINUS – Убавить     [–]
    • PLUS   – Прибавить [+]

    С помощью этих кнопок теперь возможно устанавливать время в двух режимах:

    1. hh.mm(.) – часы.минуты(.)
    2. mm.ss(.) – минуты.секунды(.)

    Запуск таймера производится кнопкой PLUS.

    Остановка запущенного таймера на паузу производится кнопками PLUS, MINUS. При работе таймера кнопка MODE блокируется. Настройка таймера возможна только при остановленном таймере.

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

    Управление достаточно интуитивное и позволяет легко настраивать и пользоваться таймером.

    Таймер v3

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

    • Индикация текущего времени*: hh.mm(.) | mm.ss(.)
    • Выбран режим hh.mm (часы.минуты) - на индикаторе: 1.00(.)
    • Выбран режим mm.ss (минуты.секунды) - на индикаторе: 1.01(.)
    • Установка часов|минут   – на индикаторе: 2.xx(.), где хх = 0...99
    • Установка минут|секунд – на индикаторе: 3.xx(.), где хх = 0...59
    • Активность реле включена  – на индикаторе: 4.00. - свечение точки DIG4*
    • Активность реле отключена – на индикаторе: 4.00 - точка DIG4* не светится
    • Активность зуммера включена – на индикаторе: 5.01(.)
    • Активность зуммера отключена – на индикаторе: 5.00(.)
    • Яркость индикатора – на индикаторе: 6.0x(.), где х = 0...7
    • Активность циклического режима включена  – на индикаторе: 7.01(.)
    • Активность циклического режима отключена – на индикаторе: 7.00(.)
    • Установка* часов|минут   – на индикаторе: 8.хх, где хх = 0...99
    • Установка* минут|секунд – на индикаторе: 9.xx(.), где хх = 0...59

    Схема

    Основой универсального таймера является плата Ардуино (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


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

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

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

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

    Универсальный таймер<br>Макет схемы 2
    Pic 8. Универсальный таймер
    Макет схемы 2
    Универсальный таймер<br>Макет схемы 2
    Pic 9. Универсальный таймер
    Макет схемы 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

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

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

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

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

    Универсальный таймер<br>Модуль электроники, вид снизу
    Pic 13. Универсальный таймер
    Модуль электроники, вид снизу
    Универсальный таймер<br><q>Начинка</q> в нижней части корпуса
    Pic 14. Универсальный таймер
    Начинка в нижней части корпуса
    Универсальный таймер<br>Корпус собран
    Pic 15. Универсальный таймер
    Корпус собран

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

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

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

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

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

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


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

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

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




    Таймер v3.1

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

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

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

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


    Приложение

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

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

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

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

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


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

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


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