активировать реле с двумя контактами esp8266 -12e

У меня есть esp8266-12e, и я хочу активировать сторону сброса фиксирующего реле. Проблема в том, что 12e выдает только 12 мА на контакт, а реле нужно больше. Я использую транзистор на стороне набора от сигнала радиочастотной антенны. У меня есть только один источник питания 3,3 В. Есть ли способ, чтобы два вывода одновременно переходили в состояние HIGH и были подключены к стороне сброса реле, чтобы был достаточный ток? Будет ли это работать, не повредит ли это чему-нибудь, и как мне написать для этого код и как мне его связать?

Я пробовал код, в котором один контакт пишется HIGH сразу после другого, вот так

digitalWrite (5,HIGH);
digital Write (6,HIGH);

но я думаю, что контакт 5 выходит из строя раньше, чем контакт 6. Есть ли способ заставить их срабатывать одновременно?

Спасибо за помощь

, 👍0

Обсуждение

Нет, это не очень хорошая идея. Вам нужно использовать транзистор для переключения реле. Вы можете управлять реле с выходного контакта., @Delta_G

Я думаю, вам понадобится транзистор. По отдельному вопросу, который вы задали, вы можете одновременно включить два цифровых контакта с помощью [манипулирования портами](https://www.arduino.cc/en/Reference/PortManipulation)., @hcheung

получить питание от блока питания. используйте контакт для переключения питания на транзистор, @Juraj

@hcheung Подобные манипуляции с портами недоступны на ESP8266, где все взаимодействие с оборудованием выполняется через SDK, а расположение внутренних портов -> выводов неизвестно (если они вообще существуют). Лучше использовать функциональность контактов с тремя состояниями, если вы вообще должны это делать., @Majenko


1 ответ


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

0

Это не очень хорошая идея.

Изоляция реле от вывода ввода-вывода связана не только с ограничением тока вывода ввода-вывода, но и с предотвращением всплесков обратной ЭДС от катушек реле, которые могут повредить тонкие внутренние части микросхемы.

Вместо этого вы должны по крайней мере использовать транзистор и защитный диод от обратной ЭДС.

Однако, если вы хотели теоретически иметь два контакта, безопасно управляемых, чтобы обеспечить удвоенный ток (хотя я еще раз подчеркиваю, не сделать это для управления реле), это возможно.

Но это не так просто.

На ESP8266 невозможно использовать манипуляции с портами, чтобы заставить два контакта изменить состояние одновременно. Однако можно перейти через третье состояние, что делает его безопасным.

Примечание: это будет «безопасно» только для контактов ввода-вывода, которые не ведут себя странно при загрузке, а многие контакты на ESP8266 ведут себя странно.

Контакты ввода/вывода на самом деле имеют три состояния, а не два:

  • Высокий
  • Низкий
  • Высокое сопротивление

Последнее — это состояние, в котором контакт находится в режиме INPUT. И мы можем использовать это в своих интересах.

В режиме высокого импеданса контакт как бы отсоединен. Итак, мы могли:

  1. Убедитесь, что оба контакта находятся в режиме INPUT.
  2. Переключите один контакт на ВЫХОД и установите его в нужное состояние.
  3. Переключите его обратно в режим INPUT (сохраняя нужное состояние)
  4. Переключите другой контакт на ВЫХОД и установите его в нужное состояние.
  5. Снова установите первый контакт в режим OUTPUT.

Это может быть немного сжато, поскольку нам действительно не нужно устанавливать оба контакта на INPUT в начале, только один. Итак, вот код, который может это сделать:

void digitalDoubleWrite(int pina, int pinb, bool level) {
    pinMode(pina, INPUT);
    pinMode(pinb, OUTPUT);
    digitalWrite(pinb, level);
    pinMode(pinb, INPUT);
    pinMode(pina, OUTPUT);
    digitalWrite(pina, level);
    pinMode(pinb, OUTPUT);
}

Вы можете спросить, почему мы хотим переключиться на ВЫХОД только для того, чтобы зафиксировать уровень в выводе. Ну, это из-за причуды API Arduino. Исторический артефакт, хранящийся там по сей день:

  • digitalWrite() на выводе, установленном в режим INPUT, использовался для включения и выключения внутреннего подтягивающего резистора

На самом деле это то, как порты ввода-вывода AVR внутренне управляют подтягивающими резисторами, и это чаще всего копировалось в программном обеспечении для других микросхем, чтобы обеспечить обратную совместимость со старым кодом. В результате мы должны переключиться в режим OUTPUT, чтобы код API знал, что мы хотим установить состояние выходной защелки, а не состояние подтягивающего резистора.

,

Спасибо за ваши ответы. Все они очень ценны. Я сделаю это ответом, так как он предоставляет больше всего информации для всех, кто хочет получить информацию., @user1114881