NodeMCU с реле блокировки 5 В - реле с низким уровнем срабатывания
Я собираюсь подключить NodeMCU к ретрансляционной плате с защелкой, такой как эта (4-канальная версия): ССЫЛКА
Как плата MCU, так и плата реле будут питаться от одного и того же регулятора напряжения 5 В.
Теперь мне нужно решить две проблемы:
Задача 1 - логические уровни
Логический уровень NodeMCU составляет 3,3 В,а плата реле работает на уровнях 5 В. Я могу использовать либо преобразователи логического уровня, либо простые транзисторы. Поскольку я собираюсь прикрепить NodeMCU к пользовательской печатной плате, я думаю, что трансопторы будет проще припаять.
Проблема 2 - реле срабатывает с низким импульсом на управляющем выводе
Эта плата реле работает следующим образом: каждый раз, когда вывод канала (T1 - T4) подключается к земле в течение нескольких миллисекунд - реле переключается в другое состояние. Вот вопрос: когда плата MCU сбрасывается/перезагружается при цикле питания, как я могу гарантировать, что управляющие контакты с самого начала находятся на высоком уровне? Если это не так, реле может переключаться случайным образом до запуска моей программы, и я не буду знать начальное состояние реле.
Каков был бы лучший подход здесь ?
@michal, 👍0
Обсуждение1 ответ
Лучший ответ:
Поскольку порты обычно настраиваются как входы при сбросе, вам нужно будет добавить подтягивающий резистор.
Затем запишите свою настройку так, чтобы вывод был высоким, прежде чем переключаться в режим вывода.
ОБНОВЛЕНИЕ:
Некоторые микроконтроллеры имеют внутренние подтягивающие устройства, которые даже активируются при сбросе, см. Конкретный технический паспорт. (Спасибо, Юрай. Я недостаточно знаю NodeMCU, чтобы вдаваться в подробности. В любом случае, мой ответ может быть применим и к другим контроллерам и другим нагрузкам.)
Значение подтягивания может быть определено максимальным входным током для релейного модуля (или вашей схемы адаптации) и соответствующими напряжениями. Чтобы быть уверенным, сделайте его немного меньше, например, до следующего значения серии Е. Просто пример: минимальное напряжение питания составляет 3,15 В (3 В минус 5%), максимальное входное напряжение для определения "высокого" составляет 2,4 В, а максимальный входной ток составляет 10 мкА. Тогда резистор должен быть не более Rmax = (Vdd_min - Vin_max) / Iin_max = (3,15 В - 2,4 В) / 10 мкА = 75 Ком. Это значение является частью серии E24, но может составлять 68 Ком, что соответствует серии E6.
Однако, похоже, что схема модулей содержит простой PNP BJT, подтягивание здесь не сработает, потому что вход необходимо подтянуть до напряжения питания модуля. Вам нужен преобразователь уровня, это может быть простой транзистор. Как спроектировать эту схему, это другой вопрос. В Интернете есть много информации о том, как это сделать.
Спасибо! Это кажется решающим ответом! Любые намеки на то, какие значения резисторов я должен выбрать? Что мне нужно знать, прежде чем выбирать резисторы ?, @michal
esp8266 имеет внутренний подтягиватель, активированный на выводах ввода-вывода при загрузке, @Juraj
используйте контакты 4 и 5, они тише при включении питания, чем другие GPIO., @dandavis
- Как заставить 5-вольтовое реле работать с NodeMCU
- NodeMCU продолжает отключаться
- Сдвиговый регистр с релейной платой ведет себя хаотично
- Проблемы с NodeMCU и реле
- Ультразвуковой датчик (HC-SR04), регистрирующий случайное расстояние
- Реле с NodeMCU не работает
- 2-ходовой переключатель с Arduino?
- Разница между этими двумя реле (экран мини-реле D1 и одиночное реле 5 В)
Как обеспечить, чтобы релейный модуль находился в определенном состоянии при включении питания? Связанный ресурс ничего не говорит об этом., @the busybee
Похоже, что моя конкретная релейная плата всегда находится в одном и том же состоянии (НЕТ) после подключения питания 5 В. Таким образом, нет никакой двусмысленности при запуске, если только какой-то случайный низкий импульс не посылается на управляющие контакты, @michal
Похоже, высокий импеданс не сработает. Поэтому сначала установите контакт на ВЫСОКИЙ, а затем pinMode OUTPUT., @DataFiddler