Не понятное переключение реле
- Войдите на сайт для отправки комментариев
Пт, 30/03/2018 - 16:34
Всем привет ! Кто что может сказать, что может являться причиной не верной работы реле !
А работает оно так ! Если нагрузка не подключена. Нагрузка это лампа на 220В. То по прирыванию реле нормально щелкает 1 раз и либо включается либо выключается !
А вот если подключаю лампу, то оно срабатывает ни один раз а раза 2-3 подрят. Не могу понять в чем дело ?
Может быть такое, что не хватает тока для размыкания контактов ? Подключено реле блоком питания от телефона который выдаёт 4.9В и 700мА так же к этому блокупараллельно подклчен сама ардуино. + на вход vin.
Ик датчик подключен на пин 5В. Вот скетч:
/*программа для ИК датчика E18-D80NK для включения света*/ #define IK_PIN 3 //порт ик датчика volatile int znach = 1; boolean svet = false; void setup() { digitalWrite(13,LOW); pinMode(IK_PIN, INPUT); Serial.begin(9600); attachInterrupt(1, pin_ISR, FALLING); // вызов прерывания номер 0 на 3 пине для leonardo а для nano прерывание 1 } void loop() { } void pin_ISR(){ znach = digitalRead(IK_PIN); if (znach == 0){ Serial.print("seychas znach ="); Serial.print(znach); Serial.print(" vizivaem prov_vkl"); Serial.println(""); prov_vkl(); } } void prov_vkl(){ if(svet == false){ Serial.print("seychas znach vizovem funkchiu vkl"); Serial.println(""); vkl(); } else{ Serial.print("seychas znach vizovem funkchiu VIKL"); Serial.println(""); vikl(); } } void vkl(){ Serial.print("seychas vkl svet"); Serial.println(""); svet = true; digitalWrite(13,HIGH); } void vikl(){ Serial.print("seychas vikl svet"); Serial.println(""); svet = false; digitalWrite(13,LOW); }
Сделайте сначала без прерываний. А то будете ловить неизвестно что - то ли помеху на пин, то ли штатное срабатывание.
Сделайте сначала без прерываний. А то будете ловить неизвестно что - то ли помеху на пин, то ли штатное срабатывание.
не понял ! помехи от чего ? от провода 220В ?
Пока луч не пересекаю никаких ложных срабатываний нет !
Да от всего подряд. Через External Interrupt проводком в 10 см можно даже включения-выключения 25ваттного паяльника ловить.
Пока луч не пересекаю никаких ложных срабатываний нет !
Блин печаль !
Экранировать может провод 220В ?
Нет. Надо фильтровать помехи на пине. Самый дубовый способ - проверить его состояние через несколько мкс прямо в ISR(). Я как-то мерял наводки. Помехи от вкл-выкл короткие, сотня-две наносекунд вроде. ...Но это поможет, если они постоянно не валят. В противном случае нужно гасить их аппаратно. Но при таком мелком скетче хватит и простых проверок пина в лупе.
Если вы считаете что лампа не излучает инфрарэд
и он не попадает к вам в приёмник то скорее всего вы заблуждаетесь.
Во всяких сенсорах, вроде бы, модулированный сигнал, чтобы не напарываться на такие неприятности? Хотя, откуда я знаю, какой там датчик подключен.
такое реле
https://ru.aliexpress.com/item/One-1-Channel-5V-Relay-Module-Board-Shiel...
и такой вот датчик :
https://ru.aliexpress.com/item/1PCS-E18-D80NK-Adjustable-Infrared-Sensor...
Он вроде как защищён от помех по свету !
https://ru.aliexpress.com/item/1PCS-E18-D80NK-Adjustable-Infrared-Sensor...
Он вроде как защищён от помех по свету !
Это легко проверяется. Включите лампу прямо в розетку и светите ему в глаз. Если соврали китайцы - реле будет клацать.
или такое вот реле исправит ситуацию ?
https://ru.aliexpress.com/item/5V-DC-1-Channel-Solid-State-Relay-Board-m...
https://ru.aliexpress.com/item/1PCS-E18-D80NK-Adjustable-Infrared-Sensor-Switch-3-80cm-for-Arduino-Infrared-Sensor-Switch/32753665402.html?spm=a2g0s.9042311.0.0.ZEVGJ1
Он вроде как защищён от помех по свету !
Это легко проверяется. Включите лампу прямо в розетку и светите ему в глаз. Если соврали китайцы - реле будет клацать.
проверял. не реагирует он на лампу ! помехи от самоиндукции катушки в реле которая !
Тогда попробуйте немного придушить помеху.
Например 1 килоом и 0.1 микрофарады.
Ну и привязку на входе включите.
Насолько верен вообще такой метод подключения - параллельный ! Норм ? От него не может зависить ?
Нет. Надо фильтровать помехи на пине. Самый дубовый способ - проверить его состояние через несколько мкс прямо в ISR(). Я как-то мерял наводки. Помехи от вкл-выкл короткие, сотня-две наносекунд вроде. ...Но это поможет, если они постоянно не валят. В противном случае нужно гасить их аппаратно. Но при таком мелком скетче хватит и простых проверок пина в лупе.
А можно как то решить при помощи noInterrupts(); ?
Что вы хотите этим добиться?
Что вы хотите этим добиться?
Ну вот с датчика пришел сигнал, сработало прерывание. После этого запретить все прерывания на пол секунды скажем. Я думаю пол секунды вполне хватит чтобы сработал остальной код и свет включился, а помехи при включении реле не успеют за это время вызвать ещё раз прерывание ? Так можно ?)
При входе в ISR прерывания и так запрещаются без вашего вмешательства. При выходе - разрешаются.
Но вот то, что вы придумали - это китайская акробатика на трубах. Просто поставьте фильтр, как trembo посоветовал или перепроверьте состояние пина через пару мкс внутри ISR. Или откажитесь от прерывания.
Фантазировать имеет смысл, если вы можете это реализовать. Если нет - пользуйтесь проверенными решениями.
и такой вот датчик :
https://ru.aliexpress.com/item/1PCS-E18-D80NK-Adjustable-Infrared-Sensor-Switch-3-80cm-for-Arduino-Infrared-Sensor-Switch/32753665402.html?spm=a2g0s.9042311.0.0.ZEVGJ1
Он вроде как защищён от помех по свету !
Насолько верен вообще такой метод подключения - параллельный ! Норм ? От него не может зависить ?
Нет, абсолютно не норм.
У вас ток мощьной нагрузки протекает по проводам питания
Ардуины вызывая в них падение напряжения.
Вообще-то желательно подключать любые устройства к питанию
каждое отдельным проводом.
Если по простому - веером.