Кнопка срабатывает несколько случайно

arduino-nano relay switch raspberrypi-pico

У меня есть схема, состоящая из кнопки и двух реле.

Источник питания питается либо через USB, где схема работает нормально, либо от платы линейного регулятора, которую я собрал, состоящей из LM78XX (подробности см. в следующем абзаце), где схема демонстрирует поведение.

Детали источника питания:

LM7808 использовался для подачи основного напряжения на Nano через контакт VIN. Он поддерживается конденсатором 330n и 100n, согласно стандартным принципиальным схемам для чипов LM78XX. LM7805 также использовался для управления nano через контакт 5 В, а также Pico через его контакт 5 В. Используя LM7805, я запитал релейные платы 5 В напрямую от источника питания, не используя встроенный регулятор 5 В. Используя LM7808, я использовал встроенный стабилизатор 5 В для питания релейных плат, поскольку им требовалось 5 В, а не 8 В. Я безуспешно пробовал каждую из этих конфигураций.

У меня есть 2 платы реле, каждая имеет 5 В, GND и IN. Они берут свои 5 В и GND непосредственно от того же источника питания, что и Arduino, где это возможно, или от регулятора на плате, где это необходимо (при питании от 8 В).

При включении питания реле переходят в противоположные состояния (одно включается, другое остается выключенным).

У меня также есть кнопка, которая в настоящее время состоит из блока шоколада, который я замыкаю накоротко куском провода вручную. Я подтянул его с помощью Arduino и замкнул на землю с помощью кнопки. Я также подтягивал его вручную с помощью резистора 10 кОм, как показано на схеме ниже. Обратите внимание, что во всех конфигурациях это был шоколадный блок и кусок проволоки.

схема включения кнопки

Теперь о неожиданном поведении. Когда я питаю эту схему через USB, кнопка работает почти полностью. Я, возможно, видел, как это терпит неудачу один или два раза, я не могу быть уверен. Кажется, он ведет себя так, как ожидалось, в 99% случаев. Однако, когда я запитываю его от источника питания 12 В (в регулятор LM78XX), мне нужно только махнуть рукой возле блока шоколада «кнопки». и он будет стрелять. Иногда он срабатывает, казалось бы, без всякой причины, в других случаях мне нужно будет подключить небольшой отрезок провода только к стороне GPIO блока шоколада, и он сработает.

Мой текущий код выглядит следующим образом:

const int signal_1 = 10;
const int relay_1 = 11;
const int relay_2 = 12;
bool state = false;

void setup() {
  // поместите сюда код установки для однократного запуска:
  pinMode(relay_1, OUTPUT);
  pinMode(relay_2, OUTPUT);
  pinMode(signal_1, INPUT_PULLUP);

  digitalWrite(relay_1, LOW);
  digitalWrite(relay_2, HIGH);
}

void toggleRelays() {
  digitalWrite(relay_1, !state);
  delay(5000);
  digitalWrite(relay_2, state);
  state = !state;
}

void loop() {
  // поместите сюда ваш основной код для многократного запуска:
  int sensor_1_val = digitalRead(signal_1);

  if (sensor_1_val == LOW) {
    toggleRelays();
  }
}

Я максимально упростил это и испробовал столько вариантов, сколько смог придумать. Я все еще страдаю от этой проблемы с помехами.

Кто-нибудь может объяснить, что здесь происходит? Возможно ли, что я страдаю от отключения питания, и мне нужно добавить дополнительный конденсатор в блок питания? Есть ли что-то, что я явно упускаю из схемы переключателя?

, 👍1

Обсуждение

добавьте код отладки... затем начните устранение неполадок, удалив активацию реле в setup(), @jsotola

Проблема сохраняется, когда вы удаляете реле и просто используете простые светодиоды для индикации состояния выходных контактов?, @chrisl

@chrisl Я получил свою коробку со светодиодами только вчера поздно вечером и еще не пробовал, насколько я могу ожидать, хотя и будет. Я узнаю сегодня и обновлю вопрос как / когда., @XtrmJosh

«в других случаях мне нужно будет подключить небольшой отрезок провода только к стороне GPIO блока шоколада» - это действительно звучит так, как будто ваш «кнопочный провод» действует как антенна, улавливающая некоторую ЭДС, излучаемую некоторыми колебаниями в вашем источнике питания. цепь., @orithena

@orithena это именно моя мысль, по какой-то причине микроконтроллер слишком чувствителен к ЭДС. Иногда работает махание рукой поблизости, в других случаях мне приходится вступать в контакт с контактом GPIO, но я практически никогда не закрываю «кнопку», потому что прежде чем я это сделаю, она срабатывает. Я начинаю задаваться вопросом, может быть, мне следует отредактировать код, чтобы взять среднее высокое / низкое значение 20 чтений GPIO, или, может быть, искать нарастающий фронт и, если возможно, измерять продолжительность нарастания ... В конечном счете, мои 12 В - это импульсный источник питания, но я считаю его достаточно чистым, а на LM78XX он обильно фильтруется., @XtrmJosh

@XtrmJosh Похоже, вам понадобится осциллограф, чтобы убедиться, например, что ваш LM78XX не превращает петлю обратной связи вашего импульсного источника питания в резонирующие колебания. (Я немного не знаю, может ли это случиться, я просто хватаюсь за соломинку.), @orithena


1 ответ


-2

Нельзя управлять релейными платами от встроенного регулятора Arduino. стандартный ток от более чем одного общего реле (если только они не являются чем-то вроде твердотельных реле) при включении реле может быть слишком большим для регулятора напряжения ar duinos. Результирующая теория: Теперь, если вы повредили свой регулятор напряжения, запуск от USB все еще работает, поскольку напряжение правильное, но при работе через регулятор, который может быть не полностью сожжен, это может вызвать проблемы. Вторая теория заключается в том, чтобы проверить, в порядке ли ваш блок кнопок с помощью омметра, возясь без нажатия.

,

«Я подключил релейные платы 5 В напрямую от источника питания, не используя встроенный регулятор 5 В»., @Juraj

Моя первоначальная установка использовала LM7805 для управления Arduino/Pico, а также реле. Я переключился на LM7808 в регуляторе Arduino, зная, что это не его предполагаемое использование, однако есть официальные руководства по реле Arduino, в которых явно предлагается использовать встроенный регулятор 5 В для управления реле. Я перепробовал множество конфигураций, и встроенный регулятор все еще работает правильно. «Кнопочный блок», как вы описываете, на самом деле является блоком шоколада, который не имеет связи между контактами, я вручную замыкаю его на длину провода - здесь нет непрерывности., @XtrmJosh