Управление реле с помощью Web интерфейса на Ардуино

Управление реле с помощью Web интерфейса на Ардуино

В данном примере, показано как можно управлять реле через web интерфейс используя w5100 shield.

На веб странице расположено 4 кнопки. Каждая кнопка отвечает за включение и выключение определенного реле. Все “написание” кода производится в программе FLProg.

Ниже указаны все блок схемы, которые нам понадобятся для реализации данного проекта в FLProg.

Содержание / Contents

Полезные и проверенные железяки, можно брать

Опробовано в лаборатории редакции или читателями.

Для решения задачи я решил применить микроконтроллер, который должен иметь на борту приемопередатчик UART и минимум три свободных порта для трёх каналов управления (количество их может быть увеличено и зависит от числа нагрузок). Вполне подходящим оказался микроконтроллер семейства AVR — ATMega8, как самый распространенный и недорогой.

Для создания связи устройства через USB-порт с ПК я использовал аппаратный преобразователь USB-UART с использованием микросхемы FT232RL.

Похожий контент

Olga Kovin

Реле ДП-12 п. 901. Хороший демонтаж. В наличии: 26шт. Цена: 300р/шт. Мятых и с дефектами — нет. Продажа от 3-х штук!
Саратовская обл., г. Энгельс.
Отправим: почтой, транспортной компанией.
Наличный-безналичный расчет
Контакты:
Ольга
Моб. тел.:+7904-240-51-17.
E-mail: olgalosewa86@mail.ru

Попробовал облачную EasyEDA — как у большинства свободного софта неплохая поддержка русского языка (для МикроКапа есть самопальный русификатор, я не устанавливал — поленился). Рисовать удобнее, чем в МикроКапе. Библиотека элементов огромная в сравнении с халявным учебным МикроКапом. Моделирование не проверял, так-как не смог нарисовать нужный мне трансформатор. Проблема та-же, что в предыдущем посте.

А как например в LtSpice и подобных получать АЧХ? Т.е на до как то источник переменой частоты (?) на вход схемы задавать- а где он там?
======================================================
Может в заголовке темы добавить и LtSpice?

Собрал в LTspice схему элементарного выпрямителя, вывел на графиках мощность, рассеиваемую на диоде выпрямителя. При времени моделирования 100мс все нормально, а если увеличить до 1с, то на графиках возникает вот такая хрень, мощность уходит в минус, причем на тех же самых 100мс и далее. В чем подвох?

Lexus

Лично мне очень понравился Micro – Cap. По большому счету, он «заточен» под симуляцию аналоговых схем – для этого есть все, нужно только научиться правильно пользоваться встроенными функциями.
У меня есть Micro – Cap 7 на русском языке. Честно скажу, проще работать с англоязычной восьмой версией. Не вижу смысла устанавливать приоритет на русифицированные программы, особенно если принять во внимание распространенные «кривые» переводы (как, например, в шестой версии Nero). Лучше осваивать англоязычные версии, а заодно и английский язык.
Как понять «аудиотехника, в отличие от цифры, чувствительна к внешней среде»?
В симуляторе есть SPICE модели (как идеальные, так и близкие к реальным), используя которые можно исследовать схемы на работоспособность, выявить слабые места, проверить реакцию на нештатные ситуации, получить объективные характеристики (с некоторой погрешностью, конечно) и т.п. То есть ответить на вопрос: «Как будет работать конкретная схема?». Если все эксперименты проводить на практике, никаких компонентов не напасешься. Разумеется, работа схемы в симуляторе, по части объективных характеристик, отличается от работы реальной схемы.

Таблица инструкций

Инструкция Опкод Операция Эквивалент из Brainfuck Описание
add m16 0X XX AP ← AP + m16 ‘+’ (Повторить m16 раз) Прибавляет базу к текущему значению выбранной ячейки
sub m16 1X XX AP ← AP — m16 ‘-‘ (Повторить m16 раз) Соответственно вычитает базу из числа
ada m16 2X XX AP ← AP + m16 ‘>’ (Повторить m16 раз) Увеличивает значение адреса
ads m16 3X XX AP ← AP — m16 Уменьшает значение адреса
jz m16 4X XX (*AP == 0)? IP ← IP + m16: IP ← IP ‘[‘ Идти на IP + m16 если значение текущей ячейки равно нулю
jz m16 5X XX (*AP == 0)? IP ← IP — m16: IP ← IP Нет Идти на IP — m16 если значение текущей ячейки равно нулю
jnz m16 6X XX (*AP != 0)? IP ← IP + m16: IP ← IP Нет Идти на IP + m16 если значение текущей ячейки не равно нулю
jnz m16 7X XX (*AP != 0)? IP ← IP — m16: IP ← IP ‘]’ Идти на IP — m16 если значение текущей ячейки не равно нулю
and m16 8X XX AP ← AP AND m16 Нет Логическое AND с положительным числом
and m16 9X XX AP ← AP AND m16 Нет Логическое AND с отрицательным числом (кто-то же должен сформировать старшие 4 бита)
or m16 aX XX AP ← AP OR m16 Нет Логическое OR с положительной константой
or m16 bX XX AP ← AP OR m16 Нет Логическое OR с отрицательной константой
in c0 00 *AP ← CIN ‘,’ Прочитать один m8 символ из консоли. Если входной буфер пуст — подождать его
out c0 01 COUT ← *AP ‘.’ Вывести m8 символ в консоль
clr.ap d0 01 AP ← 0 Нет Очистить AP регистр. Команда допускает комбинирование
clr.ip d0 02 IP ← 0 Нет Очистить IP регистр. Команда допускает комбинирование
clr.dp d0 04 *AP ← 0 ‘[+]’ or ‘[-]’ Очистить ячейку памяти. Команда допускает комбинирование
set.ap d0 10 AP ← *AP Нет Записать текущее значение в AP регистр
set.ip d0 20 IP ← *AP Нет Записать текущее значение в IP регистр
get.ap d1 00 *AP ← AP Нет Считать текущее значение из AP регистра
get.ip d2 00 *AP ← IP Нет Считать текущее значение из IP регистра
mode.b8 e1 00 Нет Активация 8-разрядного режима (1)
mode.b16 e2 00 Нет Активация 16-разрядного режима
halt f0 00 Нет Стоп машина
  • AP — Регистр адреса
  • IP — Регистр Инструкций
  • *AP — Текущая ячейка памяти
  • CIN — Консольный ввод
  • COUT — Консольный вывод
  1. При активации 8-разрядного режима, сумматор продолжает работать в 16-разрядном режиме. Однако условные команды (а именно тест значения текущей ячейки памяти на равенство нулю) становится 8-разрядным. (AP & 0x00FF == 0)? и (AP & 0x00FF != 0)? Консольный ввод и вывод пока решено оставить всегда 8-разрядным. Не в юникоде же печатать в конце то концов?

В этом видео я подробно(но мало понятно) рассказал о том, что делает каждая инструкция и какой brainfuck-инструкции она соответствует:

Управление силовыми нагрузками по USB (на Ke-USB24A)

Девайс на рабочем месте

Девайс на рабочем месте

С этой задачей сталкивается рано или поздно любой разработчик, который шаманит чего-нибудь на компьютере и сидит с паяльником. Рано или поздно ему приходит в голову Идея: «Управление освещением с компьютера» или что-то подобное. Кто-то хочет чайник кипятить, кликая на иконку в трее, кто-то — включать лампу, не вставая с кресла, кто-то — обогреватель… В общем, заканчивается это всё каким-нибудь iXBT, темами со схожими названиями и LPT-портом.

LPT-порт — это первое, что приходит в голову разработчикам старой закалки, заставшим ещё Windows 3.11 и 95;) Потому что он прост, как два пальца, и его пинами можно легко дёргать, просто записывая байт на выход. В общем, компьютер превращается в некий интерактивный микроконтроллер с одним двунаправленным восьмибитным портом. Но сейчас есть ноуты. Windows Seven и прочие «прелести» цивилизации… Понятие «Умный дом» всё большое входит в наши головы, и надо думать, как заменить старый LPT-порт. Наткнулся я тут, изучая этот вопрос в инете, на прикольный модуль Ke-USB24A, от KernelChip, и решил его купить и потыкать.

UPD: Добавлена схема устройства и исходники программы.

Часть 1. Тестовая сборка.

Производитель пишет столько всего вкусного про модуль, например вот, кратко:

Модуль Ke-USB24A предназначен для сопряжения внешних цифровых и аналоговых устройств, датчиков и исполнительных механизмов с компьютером через шину USB. Определяется как дополнительный (виртуальный) COM порт. Модуль имеет 24 дискретные линии ввода/вывода (либо лог. 0 либо лог. 1) с возможностью настройки направления передачи данных (вход/выход) и встроенный 10-ти разрядный АЦП. Для управления модулем предусмотрен набор текстовых команд управления (KE — команды).

В общем, получаем тот же самый LPT-порт, но управляемый по USB — отличная вещь для всяких игрушек вида «вкл-откл с компьютера». На тот момент (летом) я ваял многоканальный диммер, задачей которого было автономно и с компьютера регулировать (ну или хотя бы включать-выключать) пару ламп освещения в комнате: я люблю местное освещение и рассеянный свет — например в потолок светит лампа, удобно её врубить, когда темнеет — яркий свет не нужен, а глаза при слабом рассеянном свете лучше воспринимают светящийся монитор.

Так вот! С диммером были проблемы, и я решил собрать простейшее устройство, хотя бы «на коленках», чтобы тыкать нагрузки на 220 вольт с компа. Решил, что 4х штук мне как раз хватит, и поехал покупать модуль. Сама контора расположена в бизнес-центре, по звонку на сотик выходит их товарищ, выносит модуль, завёрнутый в полиэтилен с пупырышками (кажется, ничерта не электростатический) и забирает деньги. Цена, наверное, кусается, по меркам микроконтроллерщиков — 1350 рублей, но мне она была приемлема как для «коробочного», готового решения Plug-n-Play — в смысле, всунул USB шнур — и работай. Даже программка-терминал у них своя есть.

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

Модуль Ke-USB24A, вид сверху

Модуль Ke-USB24A, вид сверху

Заодно заскочил в КВАРЦ, где купил макетку, всяких моих любимых фенечек вроде разъёмов, клеммников на плату и реле.

Модуль Ke-USB24A, вид снизу

Модуль Ke-USB24A, вид снизу

Модуль — полная вещь в себе, сделанная на базе Microchip’овского микроконтроллера PIC18F4550. Наверное, и на AVR такое же можно лепить, но узнал я об этом уже позже, благодаря сайту одного челябинского товарища (блин, кажется я начну уважать этот город! Правда! он у меня постоянно на слуху). Торчит только тантал по питанию, кварц, несколько ёмкостей и перемычка, которой выбирается питание — от USB или внешнее.

PDFник с документацией на сайте вполне адекватный, выводы расписаны нормально и понятно, чего куда.

Установка модуля на разъёмы

Установка модуля на разъёмы

В общем, воткнул я его в плату и начал лепить выходные реле из того, что было под рукой: КТ315х 70-80х годов выпуска, каких-то помоечных светодиодов и блока питания от компьютера — так как на данный момент нету никакого лабораторного источника, питаюсь от него.

Транзисторы КТ315 79го года выпуска

Транзисторы КТ315 79го года выпуска

На плату поставил нормальный разъём, чтобы не городить скрутки из проводков, заодно напаял клеммников (синенькие) под силовые выходы реле.

Разъёмы под модуль и клеммники под сеть 220

Разъёмы под модуль и клеммники под сеть 220

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

Выходные реле и клеммники под винт

Выходные реле и клеммники под винт

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

Для пайки использовал какое-то советское подобие паяльной станции и понижающий трансформатор на 36V (у меня от него питается обычный низковольный паяльник на 36).

Рабочий инструмент

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

Готовая плата с реле

Готовая плата с реле

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

Итак, тем временем плата была готова, спаяно 4 выходных канала, и сами реле напрямую были выведены на клеммники (я взял реле с одной переключающей группой, катушка на 5V).

Подключение блока питания и USB-шнурка для теста

Подключение блока питания и USB-шнурка для теста

Всё было подключено, и для теста заведена обычная лампочка 220V 100W.

К включению готовы!

К включению готовы!

Даём команду с терминала, реле щёлкает, лампочка включается.

Выдаём команду (кусок терминала)

Выдаём команду (кусок терминала)

Заработало!

Итого, что можно отметить:

  • Простота решения — купил, воткнул, используй (обычные ТТЛ выходы);
  • При желании, схема может питаться от USB целиком, без внешнего источника питания;
  • Реле ЖРУТ безумно много! USB-порт тянет 1-2 канала одновременно. Остальным реле не хватает тока, чтобы сработать;
  • Всё это безумно прикольно и интересно, и можно как-то использовать. Хехе!

Плата была собрана, потестена, и заброшена до осени: в окно светило солнце, и никакие подсветки были не нужны 😉

Часть 2. Готовый девайс.

Осень пришла внезапно) А вместе с ней, роясь в куче хлама, я выкопал свитч, на котором недрогнувшей рукой Сурового Админа Миши с одной давней конторы было написано категоричное слово «ТРУП». Его серая коробочка меня привлекла, и меня осенило: «А вот же отличный корпус для моего девайса!», и затем родился концепт устройства. Питаться и питать нагрузки оно должно было через евроразъёмы (как на компьютере и на UPS-ах), возможно иметь автономное управление и быть мелким, чтобы его можно было положить на стол/полку и забыть.

Были куплены компоненты, а в качестве блока питания использован старый зарядник от фотика Casio, который давал 5,5 вольт при токе до 0,5А. Почему-то ток у него такой же, как у USB-порта, но все-все реле он тянул без напряга, нагрева и других проблем. Модуль при напряжении 5,5 вольт вёл себя отлично — итого, за три часа прогона — никакого нагрева микросхем или других деталей схемы. На автономное управление было забито из-за нехватки места в корпусе под выключатели: хотел, чтобы реле их шутнтировали, или сделать аналог «проходного выключателя», но в итоге забил, решив, что ноут у меня и так постоянно работает всё время — подойти и тыкнуть мышкой кнопку — нет никаких препятствий.

Окраска корпуса на лестнице

Окраска корпуса на лестнице

В корпусе были проточены все необходимые дырки и прорези (мелкие — напильником, крупные — элекролобзиком с тонкой пилкой), после чего корпус был покрашен чёрной краской из баллончика прямо на лестнице подъезда 🙂 Газетки помогли мало, и там до сих пор следы 😉

Окрашенный корпус, вышло неплохо!

Окрашенный корпус, вышло неплохо!

Евророзетки не влезали в корпус, и крепить их за «ушки» и на винты не получилось.

Заготовка для монтажа выходных розеток

Заготовка для монтажа выходных розеток

Пришлось делать ужасную порнографию: вырезать кусок макетки, припаять их туда, а макетку на втулках на винтах закрепить к корпусу и улить это всё суперклеем. Усилие на вынимание вилки пережили — держаться будет! 😉

Установленные выходные розетки

Установленные выходные розетки

Последние фотки платы перед установкой в корпус девайса.

Внешний вид итогового монтажа реле и USB-модуля

Внешний вид итогового монтажа реле и USB-модуля

Напаял туда ещё КРЕНку, потом вспомнил, что она всё равно ничего не будет стабилизировать, так как 0,5 вольта (5,5 — 5,0) ей не хватит для работы. КРЕНку так и оставил, но отключил.

Сзади вышел трэш-монтаж.

Кошмарный монтаж соединений на макетной плате

Кошмарный монтаж соединений на макетной плате

Не буду больше макетки использовать. Или буду использовать в разумных пределах.

Блок питания от зарядника

Блок питания от зарядника

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

Монтаж светодиодов цветным кабелем

Монтаж светодиодов цветным кабелем

Обратите внимание, я перешёл на использование плоского цветного кабеля и разъёмов серии BLS-, кажется — кабель удобно на них паять, разъём отламывается на столько пинов, насколько надо, и выглядит красиво.

Вид монтажа спереди

Вид монтажа спереди

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

Итак, вот что получилось в итоге.

Плата USB-модуля, установленная на своё место

Плата USB-модуля, установленная на своё место

Макетка прикрепелена к корпусу (опять на втулках), в неё воткнут USB-модуль, справа торчит блок питания, выключатель и светодиоды. Сзади (по компоновке) торчат розетки питания.

Выключатель сети 220 и блок питания

Выключатель сети 220 и блок питания

К выключателям я паяюсь, а соединения изолирую термоусадкой — получается красиво и аккуратно.

А вот что получилось перед закрытием корпуса.

Готовый монтаж схемы

Готовый монтаж схемы

Проводка 220, конечно жесть, и мне за неё стыдно.

Трэшовое подключение выходных розеток

Трэшовое подключение выходных розеток

Ипнет — переделаю. Не ипнет — пусть работает. Была мысль залить это всё термоклеем из пистолета, но в три ночи было на всё наплевать.

Девайс вид спереди

Девайс вид спереди

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

Вид подключений сзади

Вид подключений сзади

Схема и программа управления

Схема управления очень напоминает такой же модуль, но с релюшками (Ke-USB24R). На выходы модуля, которыми мы управляем через USB, совершенно тупо навешаны транзисторы (из тех, что попались под руку) — КТ315 в ключевом режиме. В коллекторную цепь транзистора включено реле с защитным диодом, спасающим транзистор от напряжения самоиндукции при коммутации реле. Ну дополнительно в моём блоке ещё навешаны обычные светодиоды с ограничительными резисторами, которые светятся и показывают какой канал включён.

Простейшая схема блока управления нагрузками 220 на Ke-USB24A

Дополнительно на схеме дорисовал пример какого-нибудь контактного входа, типа кнопки: внешний резистор подтяжки на +5 вольт ставлю обычно всегда, привычка от микроконтроллеров семейства ВЕ51 (8051). Соответственно на данном примере вход работает инверсно: «0» означает замкнутую кнопку. ИМХО этот способ немного более помехоустойчив ко всяким импульсным выбросам.

Питание в моей схеме бралось от первого попавшегося под руку источника +5V, и реле, соответственно, тоже были с катушкой на 5V. Внешний источник питания нужен лишь тогда, когда мы не укладываемся в выдаваемые USB штатные 500мА. Ток потребления схемы будет равен (4*ТокРеле) + ТокМодуля. В моём случае USB тянуло пару реле из 4х, поэтому я не парился особо (всё равно схема коммутирует 220 — значит там оно есть!) и воткнул сетевой источник питания (перемычку на плате модуля СНЯТЬ!). Особо извращённые люди могут покопать в сторону твёрдотельных реле, которые потребляют гораздо меньше обычных электромагнитных.

Программа управления модулем была такой примитивной, что писалась на Visual Basic 6 за 1 час вместе с отладкой. Кнопки «открыть/закрыть» порт, и четыре кнопки на 4 выхода. Рядом с ней лежит текстовый конфиг-файл (Ke-USBControl.Conf), откуда она при запуске считывает названия этих кнопок — можно менять их без перекомпиляции проги. Первая строка — номер COM-порта, выбираемого по умолчанию для железки (как сменить ей правильный COM-порт — читать вот тут: Изменение номера COM-портов / Отображение скрытых устройств). В планах сделать автопинг модуля и реконнект к нему (см. выводы).

Программу управления модулем (исходники и EXEшник) можно скачать по этой ссылке (~22 кБ). Поставляется As IS. Или Ass IS 😉

Выводы

  • Модуль — забавная игрушка и не более. На самом деле — полное ГАВНО, и использовать можно только как красивый заменитель LPT-порта для старых игрушек или разработок типа моей — ткнул кнопку, включилась лампочка.
  • Теперь я знаю про симисторы и оптопары. Можно сделать так, чтобы питалось только от USB и коммутировало до 2х кВт на канал 220.
  • Протокол управления модулем — тоже гавно. Самое дерьмовое, чего они не сделали, и что вылезло в процессе эксплуатации, это то, что нельзя прочитать состояние пина модуля, настроенного на выход, как в микроконтроллере. Оно обычно и не нужно, но вот даже сам модуль не может выдать информацию — какие пины сейчас «включены». Зачем нужно? Простой пример: у вас что-то включено из программы. Программа так и отображает: это вкл, это — выкл. Тут вам нужен USB-порт. Вы выдрали шнур, закрыли программу (или вообще винды перегрузили), поюзали, сунули назад, запустили программу. И всё. Она не знает, что было включено, а что нет — и получить эту информацию НИКАК нельзя!
  • Дополение к предыдущему. Если дёрнуть шнур и вставить его назад, девайс определяется, но криво. Нужно закрыть порт в программе, ещё раз передёрнуть шнур, и открыть порт. С каким-то полудохлым конвертором USB<>RS-232, у меня такого не наблюдается.

Это так и останется игрушкой, в основном из-за отсутствия обратной связи по выходам — никуда её не применить. Будет включать-выключать лампы, а потом подарю кому-нибудь.

UPD: Вышла новая версия модуля с возможностью определения состояния пинов (включён или нет)!

Оцените статью
Fobosworld.ru
Добавить комментарий

Adblock
detector