Суббота, 27.04.2024
Мой сайт
Меню сайта
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа

Управление водяным клапаном на 24 вольта от 7 вольт с помощью ESP32.

Задача - дистанционное управление электромагнитным водяным клапаном на 24В для полива огорода.

Сначала об электро-технической части.

Моменты которые требуется решить:

1) При 24 вольтах клапан потребляет около 1А, нужен мощный  БП минимум 24Вт на 24В.

2) При длительной работе,  катушка клапана сильно греется.

3) Из 24В нужно снизить напряжение до 3.3В, для питания платы ESP32.  Линейный стаб - горячо, импульсный - сложно.

Решение. Ток включения у клапана 1А, ток удержания  намного меньше, 250-300мА. Делаем повышающий преобразователь, который заряжает большую емкость >4700мкФ до 24В. При включении разряжаем конденсатор на клапан, далее клапан питается от  низкого напряжения.  Ничего не греется. Блок питания нужен с напряжением не ниже 24Ом*0,3А= 7 вольт и с рабочим  током  от 500мА.

Схема.

Ключи Q1 Q2 для включения 24В. Ключ Q3 - включение клапана, он должен  управляться от логических уровней, такие можно найти  на старых материнках или видеокартах, правда у них низкое напряжение сток-исток обычно 25 или 30 вольт. Что бы обойти этот момент в программе предусмотрено предварительное включение Q3 и только затем последующее включение (на несколько секунд ) Q1 и Q2. При этом исключается высокое напряжение на стоке Q3.

Для дистанционного управления приобрел  плату ардуино на esp32. И да, это мой первый проект на ардуино.


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

Вообще тема веб очень объемна и подробно изучать ее ради одного проекта нецелесообразно, знания без дальнейшего применения в голове не задерживаются. Поэтому не стал тратить время на изучение как делать "правильно". Для написания кода на esp32 использовал Visual Studio Code c platformio. Библиотека для веб сервера - ESPAsyncWebServer.

Так как esp32 требуется в основном для веб проектов, ее изучение и надо начинать с веб, надо будет немного изучить JavaScript. Самое трудное, для меня, после небольших знаний по си, было привыкнуть к стилю функций на js с их вездесущими коллбэками. Но зато, после них, проще вникнуть в лямбда функции в с++, которые встречаются при использовании библиотеки ESPAsyncWebServer.

Итак, для начала, при загрузке страницы нужно узнать состояние клапана, в библиотеке есть такой функционал (String processor(const String& var)), но в плане изучения, как получить данные без полной перезагрузки страницы использовал js объект XMLHttpRequest. Затем, периодически на страничке нужно было обновлять данные с датчиков температуры и влажности, это можно сделать с помощью Async WebSocket Plugin или Async Event Source Plugin, WebSocket - это двунаправленный интерфейс, а мне было достаточно однонаправленного Event Source, в нём данные шлются только от сервера (esp32) клиенту (браузер) и его реализация намного проще. В итоге остановился на таком варианте XMLHttpRequest - для команд, Event Source для данных от сервера.

Описывать программу смысла нет, кто начинает разбираться, увидит что нибудь интересное/полезное, гуру посмеются. Функционал такой:

Управление 2 клапанами

У всех клиентов актуальное состояние клапанов

Индикация потери связи

Опрос 3 датчиков и отображение их значений.

Пожалуй всё.

Схема на два клапана.

Подключение к ESP32

Веб интерфейс

Проект (platformio).

Поиск
Календарь
«  Апрель 2024  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930
Друзья сайта
  • Создать сайт
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Все проекты компании
  • Copyright MyCorp © 2024
    Бесплатный хостинг uCoz