Добрый день товарищи! Ситуация такая: выключаю реле и включаю через 5 секунд ( в реле входит земля от розетки и земля на сетевой фильтр). Если ардуино обесточить то реле остается замкнутым и розетка включена. Хочется что бы если нет питания на ардуино то цепь размыкалась. Подскажите что нужно сделать? Фото ниже http://joxi.ru/GrqVQQds4nadMm Код (C++): #define RELAY_ROZETKA 8 // розетка #define RELAY_ON HIGH #define RELAY_OFF LOW void setup() { Serial.begin(9600); pinMode(RELAY_ROZETKA, OUTPUT); digitalWrite(PIN_RELAY, RELAY_OFF); delay(5000); digitalWrite(PIN_RELAY, RELAY_ON); } void loop() {}
На реле есть нормально-замкнутый и нормально разомкнутый контакт У вас в нормально замкнутый вставлено Раз обезточено управление то реле пропускает ток
Рисунок означает что в выключенном состоянии центральный соединен с нижним когда подаете питание центральный переходит на верхний
Я только понял, что управляемую нагрузку (сетевой фильтр) я кидаю на нормально разомкнутый контакт. А источник напряжения на вывод COM. Но у меня ничего не написано на реле и если методом тыка втыкать провода, то они работают только в одном положении - как на картинке =(
Если надо при отключении питания отключать сетевой фильтр, то провод сетевого фильтра нужно перекинуть на другой контакт реле -- на картинке выше надписи "идёт в розетку". И ещё, реле в таких модулях включается замыканием управляющего пина на землю, т.е., если управляющий пин модуля реле подключён напрямую к пину Ардуино, то при "1" на пине Ардуино -- реле будет выключено, при "0" -- включено.
Добавлю, что перекидывавть нужно провод с нижнего контакта реле на верхний (по картинке). Средний, оставить на месте.
Да я по середине оставил землю с розетки а землю с сетевого фильтра кинул на верх, переписал скетч. теперь при LOW включается сетевой фильтр а при HIGH выключается. И когда убираю напряжение с ардуино то сетевой фильтр тоже вырубается, УРА, СПАСИБО ТОВАРИЩИ! НО теперь другая проблема. При подаче напряжения на ардуино, на доли секунды врубается сетефой фильтр, потом в скетче он получает значение HIGH и вырубается. Как то можно это убрать? в сетапе нет строки включения, только : Код (C++): pinMode(8, OUTPUT); delay(100); digitalWrite(8, HIGH); delay(100);
Если по-честному, то: Код (C++): digitalWrite(8, HIGH); pinMode(8, OUTPUT); именно в таком порядке. Но с Ардуиновскими функциями нужно быть осторожными -- мало ли что они там в новых версиях начудили. Общий смысл должен быть следующим: подтягиваем пин к питанию через внутреннюю подтяжку -- digitalWrite(8, HIGH) (вот только надо убедится, что данная функция просто делает подтяжку, так реализовано в версиях 1.6.х) делаем пин выходным -- pinMode(8, OUTPUT) -- при этом на выходе пина будет сразу высокий уровень. Если в обратном порядке вызвать функции, то пин станет выходным с низким уровнем, а потом изменит состояние на высокий уровень. Но стоит отметить, что данное изменение может произойти очень быстро и реле не успеет переключиться. В общем экспериментируйте....
Залез в даташит, посмотрел состояние порта на AVR по умолчанию - режим высокоимпендансного входа. Поэтому, для AVR, для получения первоначальной "1" на выходе, действительно нужно сначала включить подтяжку, а потом переключить порт на выход. Да и внешняя подтяжка будет не лишней. Забыл , помню, что на 8051, на выводах портов состояние по умолчанию было "1".