Как отсеять слабые импульсы?

ant2003
Offline
Зарегистрирован: 23.07.2018

Здравствуйте.

К ардуино подключен монетопремник через прерывания, все работает хорошо, но есть одно НО.

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

Как я понимаю в проводе образуется слабое напряжение и ардуино его ловит как импульс.

Как можно отсеять импульсы напряжением до 1в например, что бы помехи не воспринимались как импульс?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

В общем случае - отфильтровать. А конкретно - там много чего знать нужно из того, что Вы нам не сказали

ant2003
Offline
Зарегистрирован: 23.07.2018

Что именно нужно знать дополнительно?

vvadim
Offline
Зарегистрирован: 23.05.2012

провода от монетоприёмника к дуне в заземлённый экран.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

ant2003, нужно не отсеивать помехи, а сделать так, что б их не было вообще. Тотальное экранирование в первую очередь, всё что выходит из экрана одеть в ферритовые кольца, все сигналы на длинных проводах переделать на токовое управление. Посмотрите как устроено промышленное оборудование.

ant2003
Offline
Зарегистрирован: 23.07.2018

Готов заплатить за помощь, так как чувствую что сам не справлюсь. Вот почта: ant2003собака_яндекс_точка_ру если кто то готов помочь, напишите как с вами можно связаться.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ant2003 пишет:

Что именно нужно знать дополнительно?

Характеристики сигналов и точно знать чем отличается нужный сигнал от ненужного. Например, пока я слышу нечто странное. 1В - никак не может вызвать прерывание. Видимо, разница не в напряжении, а в длительности. Какие длительности?

Короче, нужно взять осциллограммы на которых видны полезные и паразитные сигналы, внимательно смотреть, сравнивать и, для начала, чётко понять какие именно лишние сигналы появляются, чем они отличаются от полезных сигналов. И только тогда можно будет что-то делать..

sadman41
Offline
Зарегистрирован: 19.10.2016

Нужный ему, от валидатора, в диапазоне 40-80мс. Частота следования импульсов - примерно того же порядка. Помеха - ~200ns.

Зачем прерывание с такими временнЫми, конечно, не особо понятно...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Если всё так, то достаточно простейшего ФНЧ на 10 (скажем) мс. Но лучше бы увидеть осциллограммы

ant2003
Offline
Зарегистрирован: 23.07.2018

К сожалению осциллограмму в ближайщее время не смогу сделать, но я думаю sadman41прав что помеха - ~200ns.

Правильно я понимаю что нужно во время срабатывания прерывания определять время и если разница меньше времени импульса ~50 мс то это прерывание просто не учитывать? 

sadman41
Offline
Зарегистрирован: 19.10.2016

Время можно и не учитывать. А то, что прерывание будет по каждому пуку прерывать ход выполнения основной программы - учитывать. Допустим, пошла постоянная пульсирующая помеха...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

ant2003 пишет:

К сожалению осциллограмму в ближайщее время не смогу сделать, но я думаю sadman41 прав что помеха - ~200ns.

Ну, вообще-то, отлаживать электронные устройства без осциллографа, это как гвозди без молотка забивать.

Если sadman41, прав, то

ant2003 пишет:

Правильно я понимаю что нужно во время срабатывания прерывания определять время и если разница меньше времени импульса ~50 мс то это прерывание просто не учитывать? 

Можно и так, но это не так просто, как Вам кажется. Не уверен, что Вы сумеете это корректно сделать. Есть более простой путь. Перед пином поставить ФНЧ с постоянной времени, скажем в 10мс. Тогда все сигналы, в 10мс будут ослаблены на 37 %, а сигналы в 1мс - на 90%. Т.е. сигнал, короче 1 мс "не пролезет" через фильтр.

Фильтр делается из двух деталей резистора и конденсатора. Источник сигнала на резистор, другой конец резистора на конденсатор, другой конец конденсатора на землю, а точка соединения резистора и конденсатора - на пин.

Здесь "Вх" - это источник сигнала, а "Вых" - пин ардуины.

Постоянная времени в секундах = сопротивление резистора в омах умноженное на ёмкость конденсатора в фарадах.

Например, 4,7КОм и 2,2мкФ дадут 10,34 мс - примерно то, что надо. Это означает, что сигналы с длительность 1мс будут ослаблены на 90%

Поставьте и программно ничего делать не надо.

Но, это только если наши (вернее, нашего коллеги) предположения о сигналах верны.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Я борюсь так: (Не монетоприёмник)
 

void int0(){              // Interrupt service routine INT0
  static unsigned long ulStart;
  static unsigned long rch1;
  if(digitalRead(CH1))  {
    ulStart = micros();
  }
  else  {
    rch1 = (int)(micros() - ulStart);
  //  if(rch1<2200 && rch1>800) {
      if(rch1<80000 && rch1>40000) {  // По данным Садмана
      sharedCh1 = rch1;
      sharedFlag1 = 1;
    }
      else{
      sharedFlag1 =0;  
    }
  }
}

 

ant2003
Offline
Зарегистрирован: 23.07.2018

А такая схема не будет работать? Ранее советовали впаять 103 конденсатор 0,01 мкФ как на рисунке, в результате вместо нескольких импульсов стал приходить один.

Правильно я понимаю что бы все заработало нужно конденсатор 2.2 мкФ к земле подсоединить?

 

 

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

да и подать на пин сигнал через резистор 4.7 ком