Селеноидный двигатель не реагирует на инструкции NodeMCU
Я просто запускаю проект, переходящий с Arduino Uno на NodeMCU, в основном эти проекты управляют некоторыми двигателями selenoid, запускаемыми инструкциями веб-сайта. Например: если веб-сайт возвращает 2, двигатель №2 начинает работать.
Я все приготовил, загрузив с веб-сайта, но двигатели не работают. В Arduino Uno работает, но в NodeMCU не работал.
Двигатель selenoid вот этот с AliExpress: 3v --> https://es.aliexpress.com/item/4000807560712.html>
Схема, которую я сделал, выглядит так:
Узел / Двигатель
D2 -> Положительный провод двигателя (красный провод).
3.3 В -> Положительный провод двигателя (красный провод).
GND -> Отрицательный провод двигателя (черный провод).
Все это прикреплено к плате protoboard для удобства моей работы, но это соединения схемы.
В противном случае код выглядит примерно так:
void setup() {
Serial.begin(115200);
pinMode(D2, OUTPUT);
}
void loop() {
digitalWrite(D2, LOW);
delay(3000);
digitalWrite(D2, HIGH);
delay(3000);
}
Я также попытался вместо пин-кода D2
использовать 4
, соответствующий номеру GPIO. Не получилось.
Проводная часть в Arduino Uno имеет тот же код, и та же схема отлично работает, но в NodeMCU нет.
@semasad, 👍1
Обсуждение1 ответ
Лучший ответ:
Итак, вы подключили 3,3 В и вывод D2 к положительному проводу двигателя. Когда штифт высокий, двигатель работает и получает ток от штифта 3,3 В. Когда вы устанавливаете вывод на НИЗКИЙ уровень, вы, по сути, закорачиваете вывод 3,3 В для заземления через выходное оборудование вывода. Это очень рискованно. Выходное оборудование вывода может выдерживать только определенное количество тока (около 20 мА, абсолютный максимум 40 мА). Поскольку у вас нет ничего, что могло бы ограничить ток на этом пути, вы можете легко сжечь выходное оборудование вывода. Не делай этого! То же самое справедливо и для непосредственного привода двигателя только с цифрового выходного вывода.
Правильный способ управления двигателем с помощью Arduino или ESP-это использование подходящего драйвера. Для простого включения и выключения достаточно простого транзистора или МОП-транзистора (в зависимости от тока, потребляемого двигателем, МОП-транзистор лучше, чем биполярный транзистор). Погуглите что-нибудь вроде "MOSFET как переключатель", и вы получите множество руководств по этому вопросу. Вы также можете добавить термин "Arduino", и вы получите учебные пособия специально для ардуино.
Почему это сработало для Uno, но не для NodeMCU? Вы не описали, как именно вы подключили его к Uno (к контакту 3,3 В или 5 В?). Вероятно, вывод цифрового выхода на NodeMCU не может пропускать достаточный ток, поэтому он не может достаточно снизить напряжение. Хотя, если бы он мог это сделать, это также привело бы к отключению питания всего микроконтроллера. Возможно, то же самое произошло и с вашим Uno, трудно сказать без дополнительной информации.
Спасибо @chrisl!, @semasad
- Проблема с аналоговой перезаписью ESP12E motorshield при питании двигателя постоянного тока
- Как заставить 5-вольтовое реле работать с NodeMCU
- ESP8266 не подключается к Wi-Fi
- Разница между этими двумя платами NodeMCU?
- NodeMCU - использовать кнопку flash в качестве входного сигнала в loop()
- Как определить размер Flash?
- Как изменить имя модуля ESP8266-12E по умолчанию
- Простой запрос GET с ESP8266HTTPClient
Вы имеете в виду, что вы подключили 3,3 В И D2 к положительному проводу двигателя? Вы не пользуетесь каким-нибудь водителем?, @chrisl
@chrisl Когда я подключаю провод 3,3 В от NodeMCU к двигателю, двигатель реагирует, но когда цикл запускается и проходит цифровую запись(D2, НИЗКИЙ), двигатель все еще работает. Тот же код/схема на Arduino Uno работает, двигатель работает ВЫСОКО/НИЗКО, когда коды указывают. Спасибо!, @semasad
Таким образом, в основном вы закорачиваете выходной вывод, устанавливая его на НИЗКИЙ уровень, в то время как он напрямую подключен к 3,3 В?, @chrisl