Проблемы с получением импульсов от монетоприемника

SimpleDude
Offline
Зарегистрирован: 01.06.2020

Добрый день всем
Запрограммировал и настроил монетоприемник CH-926
Подключил к ардуинке, но такая проблема, что когда я запускаю скетч, то у меня выводит в логи каждую секунду строку что был считан импульс, хотя монету я не бросал
Я провел исследование и пришел к выводу что виновато подключение через розетку, я думаю что это импульсные помехи. Почему я так решил? Потому что я подключал монетоприемник через батарейки и все работало на ура.
Кто нибудь знает как избавиться от этого недуга как импульсные помехи?
Что можно с этим сделать?
Заранее всем благодарен

rkit
Offline
Зарегистрирован: 23.11.2016

Взять качественный блок питания. И собрать схему по всем правилам.

SimpleDude
Offline
Зарегистрирован: 01.06.2020

Тоже думаю что в этом проблема
Сейчас использую хитрую схему с питанием
Взял провод 220В, адаптер с 220В -> 12 Вольт и диодный мост
Как думаете, в этом может быть проблема?

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

Схему выкладывайте. Только свою, а не "картинку из сети". Лучше ещё и фото сборки. Иначе тема сведётся к глуму и срачу.

SimpleDude
Offline
Зарегистрирован: 01.06.2020

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

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Не водить возле отверстия своей монетой. 

nik182
Offline
Зарегистрирован: 04.05.2015

Поставить резисторы на массу или питание, в зависимости от схемы, такие, что бы все возможные наводочные токи давали напряжения меньше пороговых. Без схемы что то посоветовать трудно, но принцип всегда одинаков - там где возможны наводки входное сопротивление входных цепей должно быть минимально. Не плохо мелкими конденсаторами по сотне пик обвязать входные ноги МК.

SimpleDude
Offline
Зарегистрирован: 01.06.2020

Вот так выглядит подключение

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

Попробуйте зашунтировать резистор конденсатором, скажем 104. Если не поможет, то оставьте его на месте и уменьшите резистор (только без фанатизма - меньше 1к не надо).

SimpleDude
Offline
Зарегистрирован: 01.06.2020

Завтра попробую
Надеюсь это поможет

nik182
Offline
Зарегистрирован: 04.05.2015

Вряд ли поможет. Входные цепи монетоприемника надо смотреть. Срабатывает там. Сюда, в ардуину, уже после срабатывания сигнал приходит. Можно попробовать от монетоприёмника к ардуине через резистор 1к сигнал подать, а ногу 3 конденсатором 102 на массу, что бы сделать фильтр импульсных помех.      

SimpleDude
Offline
Зарегистрирован: 01.06.2020

Простите за глупые вопросы, новичок в этом деле
1к сигнал подать это что?
И ногу конденсатора на массу, это куда?
И если у меня конденсатор с двумя ножками?

nik182
Offline
Зарегистрирован: 04.05.2015

У Вас нога D3 UNO подключена к coin напрямую. Провод разорвать и в разрыв вставить резистор 1 кОм. Конденсатор одной ногой на вывод D3 UNO - второй на массу - GND. 

SimpleDude
Offline
Зарегистрирован: 01.06.2020

Спасибо
Как опробую скажу результат

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

А по хорошему надо бы подключить осциллоскоп к выходу монетоприемника (при подключенной ардуине) и посмотреть форму и длительность импульса при бросании монеты и когда "водишь монетой"

SimpleDude
Offline
Зарегистрирован: 01.06.2020

Вы правы так будет правильней
Но зачем? 
Я понимаю что получаю ложные импульсы, даже если я перепрограммирую монетоприемник на другие импульсы, проблема то не уйдет
 

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

Мошт у него в скетче ложные импульсы возникают независимо от питания. Или повесил на прерывание и соединил дюпонтом.

SimpleDude
Offline
Зарегистрирован: 01.06.2020

В скетче все нормально
Когда отсоединяю монетоприемник, ничего не происходит(как и должно)
А чем плох дюпонт?

SimpleDude
Offline
Зарегистрирован: 01.06.2020

Сделал как вы сказали, стало работать лучше, теперь вождение монеты возле приемника игнорируется
Спасибо за совет
Но ложные импульсы все равно срабатывают, когда кто то орудует в соседней розетке или когда я засовываю отвертку подальше в разъем приема монеты
 

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

SimpleDude, самый простой способ решить проблему -отказаться от использования прерываний в программе. Иначе нужна капитальная переделка всей аппаратной части.(тотальная экранировка и заземление всего, дополнительные фильтры,  все провода в феррит, токовые или дифференциальные соединения для передачи данных и.т.п. )

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

SimpleDude пишет:

А чем плох дюпонт?

Тем, что это ненадёжный контакт. Иногда попадается брак и проводок плохо соединён с самим разъемом/контактом дюпонт. Лучше пайка. По крайней мере, чтобы убедиться есть ли проблема в соединении дюпонт.

SimpleDude
Offline
Зарегистрирован: 01.06.2020

Благодарю всех за помощь
Очень помогли

SimpleDude
Offline
Зарегистрирован: 01.06.2020

Не могли бы подсказать чем я бы мог заменить прерывание?
Просто оно очень удобно в данной ситуации

nik182
Offline
Зарегистрирован: 04.05.2015

Можно и не заменять. Достаточно в прерывании ещё раз прочитать порт через небольшую задержку - микросекунд 50 - 100 сделав её с помощью цикла. Если была импульсная помеха, вызвавшая прерывание, то повторное чтение покажет отсутствие сигнала. Если после задержки сигнал есть - то это оно, монетка, можно выставить флаг и в цикле обрабатывать.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

SimpleDude пишет:

Вы правы так будет правильней
Но зачем? 
Я понимаю что получаю ложные импульсы, даже если я перепрограммирую монетоприемник на другие импульсы, проблема то не уйдет

Затем, что зная разницу между "правильными" и "неправильными" импульсами будет ясно как с "неправильными" надо бороться.

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

Ложные - короче. У "правильных" импульсов coin acceptor-a в pulse mode совершенно определенный диапазон длительности, зависящий от mode (fast/medium/slow). Ну, ещё у этих CH-xxx есть режим половинной суммы, который с ума может свести.

ВН
Offline
Зарегистрирован: 25.02.2016

Все штуковины, которые имеют контакт с рукой человека следует тестировать на устойчивость  к статическим разрядам, которые могут быть накоплены на том самом человеке. Существует ГОСТ на эту тему, где описана энергия разряда(-ов), какую должны выдерживать соотв. устройства.

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

Maratkxk
Offline
Зарегистрирован: 29.10.2021

Скажите получилось ли собрать задумку? С Ардуино и монетоприемником

SAB
Offline
Зарегистрирован: 27.12.2016

Монетоприемник переводите переключателем NC/NO в положение NO . Сигнальный провод (COIN) от монетника подаем на оптопару. Ну а с оптопары на ардуину. Это классическая схема подключения купюрника/монетника.

Dumper
Offline
Зарегистрирован: 21.09.2020

SAB пишет:

Монетоприемник переводите переключателем NC/NO в положение NO . Сигнальный провод (COIN) от монетника подаем на оптопару. Ну а с оптопары на ардуину. Это классическая схема подключения купюрника/монетника.


Всё так, но не совсем. Нужно ещё сверять ширину импульса с диапазоном "правильных" импульсов. Тогда и ложные срабатывания сойдут на нет

SAB
Offline
Зарегистрирован: 27.12.2016

На прерываниях не надо ни чего сверять. Ставь на максималку 25мс  и вперёд. Ни каких ложных срабатываний ни когда не было. Годами всё работает без сбоев. 

Maratkxk
Offline
Зарегистрирован: 29.10.2021

Ардуино и монетоприемник питаются с одного источника ? От 12 перешли на 5 в для Ардуино? Схема подключения есть у вас?

Maratkxk
Offline
Зарегистрирован: 29.10.2021

Выше указана схема но на ней не видно как от 12вольт сделали 5 продали нас ардуино к какому выходу

Dumper
Offline
Зарегистрирован: 21.09.2020

SAB пишет:

На прерываниях не надо ни чего сверять. Ставь на максималку 25мс  и вперёд. Ни каких ложных срабатываний ни когда не было. Годами всё работает без сбоев. 


Это вы с зависанием устройств не сталкивались. Когда сенсор умирает, становится весело. Особенно когда в связке присутствует хоппер. Я на все устройства ввода/вывода делаю сравнение ширины импульса с заданным диапазоном.
Как минимум, это позволяет выпасть в ошибку и заблокировать приём оплаты ДО внесения платежа, который не засчитается, и тормознуть хоппер, чтобы тот не отстрелял весь бункер монет с сенсором, который внезапно "прилёг на массу".

SAB
Offline
Зарегистрирован: 27.12.2016

О каком умершем сенсоре идет речь (где)? Для блокировки устройств  купюрник/монетник есть линия INHIBIT. Хопер, это вообще простое устройство, плюнет только когда импульс будет дан. Так что он не может выплюнуть весь бункер при наличии плюса  или нуля на управляющем входе при зависании управляющего контроллера. Чтобы зависал (не принимал) купюрник/монетник, я не встречал такого. Они могут только сломаться, вобще не принимать деньги. Но вот чтобы типа завис, выключил/ включил и опять они заработали, такого никогда на практике не было.   Так что измерять период импульса - это избыточно. IMHO.

Maratkxk
Offline
Зарегистрирован: 29.10.2021

Ясно . А скетч можете скинуть . ?

SAB
Offline
Зарегистрирован: 27.12.2016

А какой вам нужен скетч? В двух словах. Вешаете выходы устройств на входы прерывания процессора(через PC817), сами прерывания настраиваите по спаду импульса, в подпрограмме прерывания увеличиваете переменную на +1 у монетника и на +10 у купюрника. Всё.

Maratkxk
Offline
Зарегистрирован: 29.10.2021

Скетч нужен. Закидываешь монету потом в течении 30 секунд нажал кнопку без фиксации но чтоб без кнопки действие дальше не шло . После нажатия кнопки чтоб ардуино передал команду на реле

SAB
Offline
Зарегистрирован: 27.12.2016

Тогда это вам в "Ищу исполнителя"

Maratkxk
Offline
Зарегистрирован: 29.10.2021
 
// монетоприемник CH-926
const int moneyPin2=3;
int pulse2=0;
unsigned long timeAllPulse2=1000; // макс. время приема монеты
unsigned long timeCount2=0;
 
float nominals2[1]={10};
float sum=0.0;
 
void setup()
{
  Serial.begin(9600);
  pinMode(moneyPin2,INPUT);
  //attachInterrupt(0,count_pulse,FALLING);
  attachInterrupt(1,count_pulse2,FALLING);
  
}
 
void loop()
{
  // прошло максимальное время приема монеты?
  if(pulse2>0 && (millis()-timeCount2)>timeAllPulse2) 
    {
    sum+=nominals2[pulse2];
    Serial.println(nominals2[pulse2]);
    
   
}
 
// обработка прерывания монетоприемника - получить кол-во импульсов
//  
void count_pulse2()
  {
 
  //detachInterrupt(0);
 
  detachInterrupt(1);
  pulse2++;
  if(pulse2==1)
    timeCount2=millis();
  //attachInterrupt(0,count_pulse,FALLING);
  attachInterrupt(1,count_pulse2,FALLING);
  }
 
 
 
 
 
подскажите почему я не могу загрузить этот скетч .где тут ошибка
ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Maratkxk пишет:

подскажите почему

А давайте я лучше подскажу Вам почему никто не станет читать Ваши скетч и разбираться в нём. Потому, что Вы его неправильно вставили. что делает невозможным его обсуждение (если Вас, конечно, не котсроит ответ - ошибка в строке № ХЗ)

Maratkxk пишет:

где тут ошибка

Ошибка в том, что Вы начали постить на форуме, не прочитав правил создания поста в самой верхней теме раздела "Песочница". Почитайте и попробуйте запостить Ваш вопрос ещё раз.

Пока же на те вопросы, что Вы задали просятся только вот такие ответы:

Maratkxk пишет:

подскажите почему я не могу загрузить этот скетч

Откуда мне знать почему Вы не можете? Наверное, потому, что не умеете. А может быть Вам мама запретила? А может у Вас ардуины нет и Вам некуда загружать? Никто, кроме Вас не знает, почему Вы не можете. 

А вообще, если Вам кто-то сказал, что ардуина - это такая хреновина, с которой можно ничего не зная и не изучая сразу сделать шагающий марсоход, то Вас обманули :-(

Maratkxk пишет:

где тут ошибка

Какая ошибка? Вы не писали ни про какую ошибку. В чём она выражается? О чём вообще речь?

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

в строке не знамо какой отсутствует закрывающая фигурная скобка