22.04.2015 | Arduino, Покупка, Программер, Своими руками, Электро | 18
| Автор: Кирилл
Прежде чем приступим, мы должны начать с обязательной оговоркой:
ВНИМАНИЕ! Не играйте с напряжением это смертельно!
Только для тех кто имеет имеет знания о работе с высоким напряжением!
Не используйте его без надлежащих знаний в электрике!
Не используйте его без надлежащего предохранителя в сети высокого напряжения!
Это не игрушка!
Общие соображения:
данное устройство подойдет только для выключения - выключения резистивных нагрузок
Выигрышная комбинация между оптосемистором на MOC304X в качестве драйвера с симистором и потребляемым током прилично экономят размер печатной платы .
Обычно 25A подходит для всех отечественных потребностей, не забываем подобрать правильный радиатор.
Для стандартного домашнего освещения, при токе 8А и продолжительности работы 99% в сутки, более чем достаточно. одного канала. Если ваш дом - замок с огромными люстрами, вероятно эта схема вам не подойдет. 🙂
Симисторы наиболее часто используемые полупроводниковые приборы для контроля питания и коммутации поторебителей. Такие схемы управления мощностью могут использоваться для удаленного включения питания в электрических устройствах или для автоматического переключения мощности, когда параметры, такие как температура или интенсивности света выходят за рамки заданного уровня.
Симисторы класса BT1XX от NXP никогда не разочаровывали. Не раз использовался в проверенной временем схеме симисторного выключателе с развязкой на оптосимисторе MOC304X, управляемый цифровым сигналом 0/1:
В этой схеме на "высокой" стороне подключаемая нагрузка может быть подключена как к нулю так и фазе (из соображений безопасности в сети высокого напряжения рекомендуется выключателем разрывать фазу, что бы в выкл состоянии на потребителе был только нулевой проводник).
Этот тип схемы (сверху) достаточно хорошо только для резистивной нагрузки. Когда устройство контролирует индуктивную нагрузку, напряжения сети и тока нагрузки не совпадают по фазе. Чтобы ограничить наклон повторно напряжения и обеспечить правильное СИМИСТОРНОЕ выключение, как правило используется в параллельное соединенные с емкостной нагрузкой. Эта схема также может быть использована для улучшения СИМИСТОРНОЙ стойкости к быстрым переходным напряжениям.
Пример схемы для использования, когда требуется горячая линия переключения:
Здесь последовательно выключенные резистор 100Ω и 0.01μF конденсатор служат для оказания противодействия току на индуктивной нагрузке.
Ответы на пункты 3 - 6 вы можете найти в ранее публикуемой статье (см. статью ESP8266 NodeMCU).
Процесс перепрограммирования встроенной микропрограммы MPSM на NodeMCU:
Давайте сделаем быстры старт проверки нашего устройства, мы будем использовать фрагменты кода. Выберем кусок кода, который вы хотите запустить, и запустим его.
WIFI настройка сети - если это ваш первый проект с новым модулем ESP, которая никогда не используется в вашей сети WiFi:
1 2 3 4 |
-- One time ESP Setup -- wifi.setmode(wifi.STATION) wifi.sta.config ( "YOUR_WIFI_SSID" , "PASSWORD" ) print(wifi.sta.getip()) |
Что бы проверить оптосимистор, т.е. часть которая отвечает за вкл./выключение нагрузки мы напишем небольшой скрипт "Blinky" (Мигалку). Если все нормально, то светодиод LED2 будет мигать, вместе с включением нагрузки. Для этого наш предыдущий скрипт мы заменим на этот:
1 2 3 4 5 6 7 8 9 10 |
-- Blink using timer alarm -- timerId = 0 -- we have seven timers! 0..6 dly = 500 -- milliseconds ledPin = 1 -- 1=GPIO5 - allocated pin for Triac opto command gpio.mode(ledPin,gpio.OUTPUT) ledState = 0 tmr.alarm( timerId, dly, 1, function() ledState = 1 - ledState; gpio.write(ledPin, ledState) end) |
Если все хорошо, то можно подключить наше устройство к розетке и лампочке. Повторите тестирование кода сверху, и вы можете увидеть, что лампочка также управляется с модуля. 🙂 Используйте соответствующий радиатор для рассеивания мощности на симисторе.
Определение используемых GPIO выводов:
1 2 3 |
outpin=1 -- Select Triac command PIN - GPIO5 gpio.mode(outpin,gpio.OUTPUT) gpio.write(outpin,gpio.LOW) |
Функция переключения питания, действующего на основании полученной команды:
1 2 3 4 5 6 7 |
function PwrSW(swstat,payload) gpio.mode(outpin,gpio.OUTPUT) newstat=string.sub(payload,swstat[2]+1,#payload) status = newstat if newstat=="ON" then gpio.write(outpin,gpio.HIGH) return end if newstat=="OFF" then gpio.write(outpin,gpio.LOW) return end end |
Отправляем функцию, основанной на странице по запросу:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
function sendPage(conn) conn:send('HTTP/1.1 200 OK\n\n') conn:send('<!DOCTYPE HTML>') conn:send('<html>') conn:send('<head><meta content="text/html; charset=utf-8"><style>input{width: 100px; height: 100px;}</style>') conn:send('<title>ESP8266 - Power Switch Controller</title></head>') conn:send('<body><h1>Power Switch Controller</h1>') conn:send('Status: <b>') if (status == "ON") then conn:send('<B><font color=red>ON</font></B>') elseif (status == "OFF") then conn:send('<B><font color=green>OFF</font></B>') else conn:send(status) conn:send('%') end conn:send('</b><br /><br />') conn:send('<form action="/" method="POST">') if (status == "ON") then conn:send('<input type="submit" style="background-color:red" name="cmd1" value="OFF"/><br /><br />') elseif (status == "OFF") then conn:send('<input style="background-color:green" type="submit" name="cmd1" value="ON"/>') end conn:send('</form>') conn:send('</body></html>') end |
Веб Сервер:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
srv=net.createServer(net.TCP) srv:listen(80,function(conn) conn:on("receive", function(conn,payload) --next row is for debugging output only --print(payload) if (string.find(payload, "GET / HTTP/1.1") ~= nil) then print("GET received") sendPage(conn) else swstat={string.find(payload,"cmd1=")} --If POST value exist, set LED power if swstat[2]~=nil then print("Command received: " .. payload) PwrSW(swstat,payload) sendPage(conn) end end end) conn:on("sent", function(conn) conn:close() print("Connection closed") end) end) |
Сохраните код на ESP как "web_switch.lua", перезагрузим ESP и выполним команду:
1 2 |
=wifi.sta.getip() -- find the IP Address where your new Web Server will be dofile("web_switch.lua") -- Start the Web Server |
Откройте ваш любимый веб-браузер и введите новый IP-адрес веб-сервера. Если все в порядке, должен выглядеть, как показано ниже:
Если вы хотите, что бы выключатель сетевого питания запускался автоматически, когда схема включалась или перезагружалась Добавьте несколько строк в следующий файл "init.lua":Power Switch Controller
Status: OFF
"здесь кнопка красная или зеленая в зависимости от состояния выключателя"
1 2 3 4 |
tmr.now() -- for debug only, you can skip it wifi.sta.getmac() -- for debug only, you can skip it wifi.sta.getip() -- for debug only, you can skip itnode.heap() dofile("web_switch.lua") -- needed to start Web Server for command input |
ВНИМАНИЕ! Не играйте с напряжением это смертельно!
Только для тех кто имеет имеет знания о работе с высоким напряжением!
Не используйте его без надлежащих знаний в электрике!
Не используйте его без надлежащего предохранителя в сети высокого напряжения!
Это не игрушка!