Селеноидный двигатель не реагирует на инструкции 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 нет.

, 👍1

Обсуждение

Вы имеете в виду, что вы подключили 3,3 В И D2 к положительному проводу двигателя? Вы не пользуетесь каким-нибудь водителем?, @chrisl

@chrisl Когда я подключаю провод 3,3 В от NodeMCU к двигателю, двигатель реагирует, но когда цикл запускается и проходит цифровую запись(D2, НИЗКИЙ), двигатель все еще работает. Тот же код/схема на Arduino Uno работает, двигатель работает ВЫСОКО/НИЗКО, когда коды указывают. Спасибо!, @semasad

Таким образом, в основном вы закорачиваете выходной вывод, устанавливая его на НИЗКИЙ уровень, в то время как он напрямую подключен к 3,3 В?, @chrisl


1 ответ


Лучший ответ:

2

Итак, вы подключили 3,3 В и вывод D2 к положительному проводу двигателя. Когда штифт высокий, двигатель работает и получает ток от штифта 3,3 В. Когда вы устанавливаете вывод на НИЗКИЙ уровень, вы, по сути, закорачиваете вывод 3,3 В для заземления через выходное оборудование вывода. Это очень рискованно. Выходное оборудование вывода может выдерживать только определенное количество тока (около 20 мА, абсолютный максимум 40 мА). Поскольку у вас нет ничего, что могло бы ограничить ток на этом пути, вы можете легко сжечь выходное оборудование вывода. Не делай этого! То же самое справедливо и для непосредственного привода двигателя только с цифрового выходного вывода.

Правильный способ управления двигателем с помощью Arduino или ESP-это использование подходящего драйвера. Для простого включения и выключения достаточно простого транзистора или МОП-транзистора (в зависимости от тока, потребляемого двигателем, МОП-транзистор лучше, чем биполярный транзистор). Погуглите что-нибудь вроде "MOSFET как переключатель", и вы получите множество руководств по этому вопросу. Вы также можете добавить термин "Arduino", и вы получите учебные пособия специально для ардуино.

Почему это сработало для Uno, но не для NodeMCU? Вы не описали, как именно вы подключили его к Uno (к контакту 3,3 В или 5 В?). Вероятно, вывод цифрового выхода на NodeMCU не может пропускать достаточный ток, поэтому он не может достаточно снизить напряжение. Хотя, если бы он мог это сделать, это также привело бы к отключению питания всего микроконтроллера. Возможно, то же самое произошло и с вашим Uno, трудно сказать без дополнительной информации.

,

Спасибо @chrisl!, @semasad