Релейный модуль включается и выключается в цикле

Я создаю коробку, которая позволяет включать и выключать источник питания с помощью кнопки.

Установка

  • Блок питания, преобразующий 230 В переменного тока в 12 В постоянного тока
  • 12В идет на питание светодиода на кнопке
  • 12 В поступает на макетную плату, преобразующую 12 В в 5 В 1,5 А.
  • 5V поступает на макетную плату с Aurdino, управляя 2-релейным модулем.

Проблема

Если я подаю питание на Аурдино через микро USB, он работает как надо. Одно нажатие на кнопку, и реле включается (свет загорается и издается щелчок).

Но когда я вынимаю USB и пытаюсь подать на Arduino питание от преобразованных 5В, через пины, то при нажатии на кнопку оно уходит в какую-то петлю. Я слышу/вижу, что реле быстро включается/выключается в непрерывном цикле.

Вопрос

Что тут происходит? Я предполагаю, что есть проблема с макетной платой с Arduino, но я не могу успешно отладить проблему.

Документация

Видео проблемы

int ledPin = 13;    // choose the pin for the LED
int inputPin = 7;   // choose input pin 7 for the push button
int relay = 8;
 
void setup() {
    pinMode(ledPin, OUTPUT);  // declare LED as output
    pinMode(inputPin, INPUT); // declare push button as input
    pinMode(relay, OUTPUT);
}
 
void loop() {
    int pushed = digitalRead(inputPin);  // read input value
  
    if (pushed == HIGH) { // check if the input is HIGH    
        digitalWrite(ledPin, HIGH);  // turn LED OFF
        digitalWrite(relay, LOW);
    } else {
        digitalWrite(ledPin, LOW);  // turn LED ON
        digitalWrite(relay, HIGH);
    }
}

введите описание изображения здесь

Ардуино перезагружается (т.е. запускает настройку) или просто запускает цикл, но думает, что кнопка отпущена? Я не знаю, сколько потребляет Arduino, но включение реле увеличивает нагрев регулятора на 0,5 Вт, поэтому регулятор нагревается и уходит в тепловое отключение? Также переключение сети выглядит немного опасным. Если вы включите это устройство в незаземленную розетку, и произойдет отключение нейтрали, вы можете получить сеть, подключенную к металлическому корпусу через крышки фильтров.
Спасибо за это. Посмотрим на коммутацию сети. Ардуино не перезагружается. Вы можете посмотреть видео, и включить звук, чтобы убедиться в этом. Связано выше.
Глядя на код, откуда вы знаете, что он не перезагружается?
Плавает ли pwr при удалении USB gnd? проблема с ЭМИ?
Что, черт возьми, делает этот оголенный провод под напряжением, торчащий из вашего источника питания 12 В ?! Это действительно опасно!
Когда реле включается, может быть достаточное падение напряжения между регулятором 5 В и Arduino, чтобы вызвать сброс Arduino, либо из-за обнаружения отключения, либо просто из-за слишком низкого напряжения.
Спасибо всем за ваш ответ! Прежде всего: извините за «плавающую» проводку Live. Собирался вставить в реле, но быстро отключил при отладке. Но полностью удалил его сейчас, чтобы действительно убедиться, что ничего не происходит. Во-вторых: я добавил к методу некоторую задержку и последовательность мигания светодиода setup(), и это подтвердило ваши подозрения, что он действительно перезагружается. Сейчас перезагружается один раз, потом работает без перезагрузки после той первой перезагрузки. Тогда вопрос в том, как мне предотвратить «падение напряжения», чтобы он не перезагружался?
Я просто предположил, что он не перезагружался, так как он зацикливался так быстро, и я не думал, что Arduino загружается так быстро, но это было неправильное предположение с моей стороны!
Любые идеи, как я могу предотвратить перезагрузку?
Попробуйте подать питание на релейную плату напрямую от 5 В на плате 12–5 В. Это уменьшит падение напряжения на проводах к Arduino.
@jfowkes Думаю, это помогло! :D Большое спасибо. Я также приму все инструкции по технике безопасности, которые все здесь дали.

Ответы (2)

Безопасность прежде всего.

  1. Ваша входная вилка 230 В (справа на фотографии) должна быть экранирована изолентой или термоусадкой.
  2. Должен быть физический барьер, предпочтительно сделанный из акрила, АБС-пластика или любого другого пластика.

Судя по всему, ваша плата Arduino тухнет, как только вы подаете на нее питание с помощью SMPS. Я бы порекомендовал вам сначала экранировать сеть 230 В и сделать ее полностью безопасной для устранения неполадок. Я также рекомендую вам проверить выход регулятора 5V. Каким-то образом ваш источник питания постоянного тока либо работает неправильно, либо слишком сильно шумит для Arduino. Хотя шум должен быть устранен с помощью регулятора 5 В, но все же есть на что обратить внимание. Кроме того, вашему 5-вольтовому регулятору может понадобиться радиатор для отвода тепла. 12В - 5В = 7В. Следовательно, 7 В * 1,5 А = 10,5 Вт. Даже если вы не используете 1,5 А тока, ваш 5-вольтовый регулятор все еще может нагреваться, и вам может понадобиться радиатор, чтобы он оставался прохладным и счастливым.

Я также рекомендую не использовать макетную плату и иметь сетевое напряжение в том же месте. Это не очень хорошая практика и, безусловно, довольно рискованная. Я бы порекомендовал вам собрать печатную плату, в которой все компоненты припаяны (приклеены) к плате без проводов, которые могут отсоединиться от макетной платы и коснуться любых «неэкранированных» клемм 230 В, что является просто катастрофой, ожидающей своего часа.

Спасибо за ваш ответ. :) Я новичок в том, чтобы делать вещи более постоянными, чем прототипы, поэтому приму ваше предложение и внесу некоторые изменения. :) Я проверил выход преобразователя, и он остается стабильным. Моя единственная проблема сейчас заключается в том, что я больше не могу воспроизвести проблему. Пробовал 10+ раз, больше не перезагружается. :С
Скорее всего проблема была в падении напряжения. Я сделал, как проинструктировал @jfowkes, и запитал реле напрямую от источника 5 В, и, похоже, оно больше не перезагружается. Не удалось воспроизвести проблему. Отмечу это как ответ, так как это был самый ясный ответ, но здесь помогли многие люди.
@eivindml, это здорово. рад, что помог

Судя по вашему изображению, вы сделали свой собственный преобразователь 12 В в 5 В, поэтому может произойти то, что напряжение, поступающее на ваш Arduino, падает ниже 2,7 В, и это вызывает сброс Брауна (поскольку он включен по умолчанию). Это объясняет тот факт, что ваш Arduino сбрасывается от внешнего питания, а не от USB. Однако вы должны проверить, что напряжение

Я проверял выходное напряжение преобразователя несколько раз, и оно остается постоянным. Падение может быть 0,01В. Но теперь я не могу воспроизвести проблему. Пробовал не менее 10 раз.
ваша проблема исправлена ​​сейчас?