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

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

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

     

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

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

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

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

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

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

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

    Описание

    Таймер v1

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

    Таймер v2

    Управляется таймер так же тремя кнопками:

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

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

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

    Возможно через меню настроек:

    • Включение/Отключение звука
    • Включение/Отключение активности модуля реле
    • Установка яркости индикатора [0...7]

    По нажатию на кнопку MODE происходит переход в настройки. Каждое нажатие – переход к следующему параметру. В крайнем левом разряде выводится номер пункта меню настройки. Так на индикаторе будет выводится следующая информация:

    • Индикация текущего времени: hh.mm(.) | mm.ss(.) (зависит от настройки в mode=1)
    • Выбран режим hh.mm (часы.минуты) - на индикаторе: 10.00(.)[1.00(.)]
    • Выбран режим mm.ss (минуты.секунды) - на индикаторе: 10.01(.)[1.01(.)]
    • Установка часов|минут   – на индикаторе: 20.хх [2.xx(.)], где хх = 0...99
    • Установка минут|секунд – на индикаторе: 30.хх [3.xx(.)], где хх = 0...59
    • Активность реле включена  – на индикаторе: 40.01. [4.00.] - свечение точки DIG4
    • Активность реле отключена – на индикаторе: 40.00 [4.00] - точка DIG4 не светится
    • Активность зуммера включена – на индикаторе: 50.01(.)[5.01(.)]
    • Активность зуммера отключена – на индикаторе: 50.00(.)[5.00(.)]
    • Яркость индикатора – на индикаторе: 60.0х[6.0x(.)], где х = 0...7

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

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

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

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


    Схема

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


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

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

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

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

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

    Индикатор LN-5644-11Q был использован для создания модуля индикации на TM1637, который применил в макете универсального таймера v2. Модуль реле изготовлен с управляющим LOWIN. Светодиод его включения красный.

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

    Ниже на фото модули реле своего изготовления с управляющими HIGHIN и LOWIN. Светодиод включения у HIGHIN зелёного цвета, а у LOWIN – красного цвета.

    Модули реле
    Pic 9. Модули реле

    Пробовал использовать индикатор 51936N с высотой символов 9,2 мм (0.36'). Он установлен в панельку стенда проверки индикаторов.

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

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

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

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

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

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

    Скетч

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


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

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

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

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

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



    Приложение

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

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

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