Чтение цифрового ввода с вывода Arduino, определенного как ВЫХОД
Я работаю над проектом домашней автоматизации. Теперь я могу успешно включать и выключать вывод ESP32 от Alexa и Google Assistant.
Мне нужна помощь, чтобы определить, включено или выключено питание переменного тока на выводе Arduino. Или, если возможно, сохранить выводы, я бы хотел прочитать их на том же выводе, идентификатор которого определен как цифровой выход для управления реле.
Ниже прикреплено изображение того, что я имею в виду.
- Обычный переключатель включает и выключает питание для нагрузки без необходимости использования WiFi.
- Нагрузка также подключена к реле NO, которое управляется контактом D13 Arduino.
Что я хочу, так это то, что вместо того, чтобы просто читать состояние контакта D13, я хочу прочитать состояние механического переключателя, который напрямую передает нагрузку.
Таким образом, я буду отслеживать фактическое состояние нагрузки независимо от того, включена ли она переключателем или реле с прерыванием непосредственно подключенного переключателя от нагрузки к источнику питания.
Отредактировано: как предлагали другие, невозможно использовать один и тот же контакт для управления реле и считывания состояния нагрузки переменного тока. Итак, есть ли способ считывать питание переменного тока через контакт GPIO ESP32, поддерживая гальваническую развязку (противоположная работа реле)?
2 ответа
Лучший ответ:
Если вы хотите узнать состояние загрузки, предлагаю поставить механический переключатель на низковольтной стороне реле:
Делитель напряжения R1/R2 предназначен для снижения напряжение на коллекторе транзистора (до порога на один диод выше Vcc) на значение, подходящее для цифрового входа Arduino.
Обратите внимание, что вам по-прежнему нужны два отдельных входа для управления и для определение состояния.
Меня это беспокоило, я не хочу использовать переключатель для косвенного включения нагрузки, так как заменить переключатель в будущем будет проще, чем реле, и любая неисправность в цепи не повлияет на ручную систему. Но если я рассматриваю ваш случай, почему бы мне не использовать переключатель в том же месте, что и управляющий контакт?, @Just doin Gods work
@JustdoinGodswork: если вы соедините переключатель и контакт управления вместе, вы, вероятно, закоротите контакт и, возможно, разрушите его выходной каскад., @Edgar Bonet
То, что вы хотите сделать, невозможно, вам понадобится дополнительный контакт. Причина в том, что реле требует большого тока (работает как очень сильный подтягивающий резистор). Таким образом, какой бы сенсорный сигнал (высокого импеданса) вы ни подавали на реле, он просто будет «потребляться». реле.
При считывании состояния выключателя, т.е. напряжения на нем, гальваническая развязка абсолютно обязательна (сетевое напряжение может быть смертельно опасным). Этого можно добиться с помощью оптопары и нескольких строк кода или дополнительного оборудования — поскольку это напряжение переменного тока, вы не можете просто считать стабильное напряжение, поэтому вам придется либо сэмплировать сигнал переменного тока, либо включать какую-то схему ( программное обеспечение проще и дешевле).
Еще одна проблема с вашей схемой заключается в том, что вы не должны управлять реле напрямую через GPIO. Реле потребляет много тока, это испортит GPIO. Используйте транзистор, чтобы переключить его.
Моя беда за дешевую схему, я не мог найти онлайн-инструмент, чтобы сделать это. Я буду использовать правильную схему драйвера оптопары для реле в реальном оборудовании. Тогда я попытаюсь найти увеличенный пин-контроллер GPIO, так как мой приоритет - не мешать ручной системе. Есть ли какое-либо устройство, которое находится напротив реле? Например. Если переменный ток проходит через катушку, я смогу прочитать его на выводе GPIO?, @Just doin Gods work
- Использование контактов NodeMCU D8 (GPIO15), D4 (GPIO2) и D3 (GPIO0).
- Встроенные светодиоды HIGH и LOW кажутся перевернутыми
- Существует ли точная процедура подключения между esp32 и ультразвуковым датчиком(HC-SR04)?
- Использовать контакты, связанные с SPI, в качестве цифрового выхода?
- Быстрый цифровой ввод-вывод
- Как организовать структуру проектов Arduino для удобства управления версиями?
- esp32, platformio A fatal error occurred: Packet content transfer stopped (received 8 bytes) *** [upload] Error 2
- Как выбрать альтернативные контакты I2C на ESP32?
если у вашего ручного переключателя есть второй контакт, вы можете прочитать это, @Juraj
Каждый раз, когда я хочу ответить, я останавливаюсь, потому что опасно подключаться к высоковольтной стороне 110 или 220 В переменного тока. Мне нравится ответ @edgar. Если ваша нагрузка резистивная (старые лампы накаливания), вы можете посмотреть старые схемы X10, чтобы увидеть, что они сделали. Если новые (светодиодные лампы), то делайте так, как сказал Эдгар., @st2000