Реле esp8266 + octocoupler: сброс WDT при использовании переменного тока
Я пытаюсь включить лампочку через 4-канальный 5V оптопарный релейный контроллер от ESP8266 с помощью точки доступа Wi-FI. Все мои соединения выглядят нормально, и я могу подключить WI-FI SoftAP и отправить сигнал на ESP8266 01. Даже я могу переключить реле с NO на NC или наоборот. Только когда а подключает переменный ток 240В к реле для питания лампы накаливания, я получаю следующую ошибку от ESP
21:11:34.312 -> ets Jan 8 2013,rst cause:4, boot mode:(1,7)
21:11:34.312 ->
21:11:34.312 -> wdt reset
Если я использую питание 12 В постоянного тока для освещения светодиода через реле, то он работает нормально. если снова использовать питание 240В для реле на лампочку, то я снова получу ту же ошибку.
Я уже пробовал использовать керамический конденсатор для развязки, чтобы избежать шума от переменного тока. По-прежнему не везло. Пожалуйста, посоветуйтесь. Я новичок и наивен в обращении с электроникой.
Добавим еще и схему.
Обновление: После дальнейшего тестирования я вижу следующее поведение, Если я подключу лампочку переменного тока к реле и включу ее. Затем, обеспечив длинный зазор перед его выключением, ЭСП становится стабильным в течение более длительного времени.
Еще лучше, если я выключу/включу свой мобильный Wi-Fi между каждым включением или выключением лампы переменного тока, то ESP всегда будет стабильным.
Добавляю еще и свой код.
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
/* Set these to your desired credentials. */
const char *ssid = "*****";
const char *password = "*********";
ESP8266WebServer server(80);
const int led = 2; //GPIO2
/* Просто небольшое тестовое сообщение. Перейти к http://192.168.4.1 в веб - браузере
* подключен к этой точке доступа, чтобы увидеть ее.
*/
void handleRoot() {
int size=1000;
char temp[size];
int sec = millis() / 1000;
int min = sec / 60;
int hr = min / 60;
snprintf ( temp, size,
"<body>\
<p>Status: Light ON</h1></p>\
<p><a href=\"http://192.168.4.1/on\"><h1>Turn ON</h1></a></p>\
<p></p>\
<p><a href=\"http://192.168.4.1/off\"><h1>Turn OFF</h1></a></p>\
</body>\
",
hr, min % 60, sec % 60
);
server.send ( 200, "text/html", temp );
}
void setup() {
delay(1000);
Serial.begin(115200);
Serial.println();
Serial.print("Configuring access point...");
/* Вы можете удалить параметр password, если хотите, чтобы точка доступа была открыта. */
WiFi.softAP(ssid, password);
IPAddress myIP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(myIP);
pinMode(led, OUTPUT);
digitalWrite ( led, HIGH );
//URLs available to query
server.on("/", handleRoot);
server.on ( "/on", turnON );
server.on ( "/off", turnOFF );
server.begin();
Serial.println("HTTP server started");
}
void turnON(){
digitalWrite ( led, HIGH );
int size=1000;
char temp[size];
int sec = millis() / 1000;
int min = sec / 60;
int hr = min / 60;
snprintf ( temp, size,
"<body><p><a href=\"http://192.168.4.1/off\"><h1>Turn OFF</h1></a></p></body>",
hr, min % 60, sec % 60
);
server.send ( 200, "text/html", temp);
}
void turnOFF(){
digitalWrite ( led, LOW );
int size=1000;
char temp[size];
int sec = millis() / 1000;
int min = sec / 60;
int hr = min / 60;
snprintf ( temp, size,
"<body><p><a href=\"http://192.168.4.1/on\"><h1>Turn ON</h1></a></p></body>",
hr, min % 60, sec % 60
);
server.send ( 200, "text/html", temp);
}
void loop() {
server.handleClient();
}
@Rajesh G, 👍0
Обсуждение2 ответа
Чтобы предотвратить EMI и сохранить контакты реле, вы можете переключать реле при пересечении нуля переменного тока. Добавьте в проект своего рода обнаружение пересечения нуля и, прежде чем переключать реле, дождитесь пересечения нуля, а затем подождите непосредственно перед следующим пересечением нуля (около 9500 микросекунд при переменном токе 50 Гц).
Просто использовать датчик тока для обнаружения пересечения нуля. Текущая волна переменного тока должна быть выровнена с волной напряжения, если нет сдвига в коэффициенте мощности.
Прежде чем перейти к проблемам темной магии электромагнитных помех - давайте попробуем выделить все наши параметры, которые могут вызвать или повлиять (и, возможно, это не только один):
- сделайте тестовый код как можно более простым для периодического включения / выключения реле. При запуске сделайте 5-секундную задержку между сменой состояний и уменьшите ее до 500 миллис - таким образом, вы проверяете как электромагнитные помехи, так и проблемы с питанием внутри вашей схемы (иногда реле потребляет больше энергии, чем может дать микроконтроллер, и это может привести к сбросу. Проблема может быть связана с питанием MCU или реле, механическими или электрическими проблемами).
- Компоненты - попробуйте заменить другими, особенно микроконтроллерами и реле, чтобы убедиться, что это не неисправные или поврежденные компоненты. Например, Wemos mini с is Relay shield может легко изолировать любую проблему, связанную с электромагнитными помехами.
- Из вашей диаграммы (и в отличие от названия вашего вопроса) - Uno используется для переключения? и не ESP-01, верно? вы убедились, что vcc реле соответствует его MCU? (вы сказали реле 5 В, что неверно для ESP8266).
- Нагрузка - обязательно выбирайте простую резистивную нагрузку (лампочку переменного тока), а не двигатель переменного тока (который вызывает сильные электромагнитные помехи).
- EMI - если все вышеперечисленное не помогло (я сомневаюсь) или это было решено только для этого "случая с лампочкой", влияние EMI связано с расстоянием. Попробуйте использовать длинные провода переменного тока, которые отведут ваши микроконтроллеры и реле далеко от этого источника. 1 м будет достаточно.
Подводя итог, я буду очень удивлен, узнав, что это EMI (и я успешно справился с двигателями переменного тока с помощью WEMOS и двойного релейного модуля).
Пожалуйста, обновите.
Парень
- ESP8266 отключается через несколько часов
- Ультразвуковой датчик (HC-SR04), регистрирующий случайное расстояние
- Как заставить 5-вольтовое реле работать с NodeMCU
- AT-команда не отвечает на последовательный монитор
- Отправка данных Arduino в MySQL с помощью phpMyAdmin и XAMPP на Windows10
- Arduino выводит значения мусора на serial monitor с ESP8266
- ошибка: espcomm_upload_mem failed при загрузке скетча
- фатальная ошибка ESP8266WiFi.h: Такого файла или каталога нет
Я знаю, что этому вопросу уже более 5 лет, но поскольку никто об этом не упомянул: вы пытаетесь получить 5 В от входа 5 В с помощью линейного стабилизатора? Это не будет работать. Кроме того, если регулятором является LM317T, он подключен неправильно, и для установки выходного напряжения потребуется пара резисторов., @StarCat