Монетоприемник ch-925

capirurso
Offline
Зарегистрирован: 22.04.2017

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

#define COIN_PIN 2
volatile int pulses = 0;
volatile long timeLastPulse = 0;

void setup() {
  Serial.begin(9600);
  Serial.println("Ready...");
  pinMode(COIN_PIN, INPUT);
  attachInterrupt(0, coinInserted, RISING);
}

void coinInserted()
{
  pulses++;
  timeLastPulse = millis();
}

void loop() {
  long timeFromLastPulse = millis() - timeLastPulse;
  if (pulses > 0 && timeFromLastPulse > 500)
  {
    Serial.print(pulses);
    Serial.println(" pulses");
    pulses = 0;
  }
}

В мониторе вижу только надпись "Ready..." больше ничего не происходит. Монеты распознает правильно, на своем мини экране пишет кол-во импульсов (05 в моем случае) но импульсы не отправляет. Пробовал сброс настроек монетоприемника, перепрограммировал несколько раз, поведение аппарата нормальное но импульсов нет. Подключено все правильно, использую адаптер 12в 1а, серый провод в воздухе, белый на пине 2, с резистором и без эффект тот же. пробовал на 2х ардуино. Кто сталкивался с этим девайсом, есть ли идеи?

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

Вы написали две противоречивые фразы:

capirurso пишет:

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

Первый вопрос - не доходят или не отправляет? Вы измеряли на выходе девайса сигнал? Он там есть? Какой? Или его на выходе нет? Измерьте - этим Вы локализуете проблему.

capirurso пишет:
Подключено все правильно ... серый провод в воздухе, белый на пине 2, с резистором и без эффект тот же

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

Никаких резисторов на сигнальном проводе (и на сером тоже). Ни пул-ап, ни пул-даун - никаких.

Серый провод подключите на второе прерывание и выводите что-нибудь про его сигналы тоже - это поможет в отладке. Вы же знаете для чего он?

capirurso пишет:

Кто сталкивался с этим девайсом, есть ли идеи?

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

У меня проблема была такая: сигнал был, но маленький (не помню, 0.7В или 1.7В типа того). А ардуине для того, чтобы она надёжно восприняла HIGH нужно 3В или в некоторых случаях даже 3,5. Я не стал разбираться почему сигнал такой маленький и правильно ли это, а просто усилил его операционным усилителем и прибор стал отлично работать.

Код вроде нормальный, только я бы в строке 20 поставил 600 вместо 500, т.к. максимальное время распознавания 600 мс.

 

capirurso
Offline
Зарегистрирован: 22.04.2017

Благодарю за ответ. Попытаюсь описать ситуацию лучше. Земля у монетоприемника и у ардуино подключены вместе, не посчитал нужным упонимать т.к. это вещи само собой разумеющиеся. Белый провод был подключен и использован в трех вариантах 1. резистор 4.7к на  от ардуино 2. на землю как пулдаун соответственно 3. напрямую без резистора (т.к. гугл показал много вариаций подключения сего чуда на прямую то не боялся что жахнет 12в). На этом форуме были вопросы другого плана но по данному монетоприемнику и были разные схемы подключения, пробовал их все, без результата. На счет серого провода как говорит инструкция это для счетчика заброшенных монет. Осциллографа с сожалению нет, я сам не электрик по этому приобретать его для одноразовых ситуаций не вижу смысла. Попробовал немного иначе, белый провод и серый поочередно подключил к аналоговым пинам используя analogRead попытался считать значения при дропе монеты и в простое, все тесты были опробованы при разных положениях переключателей на монетоприемнике NC/NO и FAST/MED/SLOW. Результат 0 на выходе во всех случаях. Монетоприемник продолжает показывать при дропе 05 на своем экране, но не отправляет импульсы, поведение девайса с виду обычное, коннектор и провода в полном порядке, если бы что-то было не на своем месте то он бы и не включился по идее. Даже разобрал девайс, внутри все цело нет ни перегоревших ни сломанных элементов. За долгое время поиска на англо и русскоязычных форумах не нашел ничего по этому прошу помощи/идеи тут. Какие еще детали я могу описать?

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

Заочно ничего сказать не могу. Скетча, которым Вы проверяли наличие сигнала не вижу, потому тоже ничего сказать не могу

А осциллограф, хоть самый простенький, игрушечный (например, dso138 стоимостью в копейки) приобретите всё же. Выручит не раз, и не два.

capirurso
Offline
Зарегистрирован: 22.04.2017

Скетч копипаст из сайта ардуино.цц:

void loop() {
  int lightLevel = analogRead(A0);
  float voltage = lightLevel * (5.0 / 1024.0);
  Serial.println(voltage);
}

Пробовал на A0, A1. Перед подключением провода от монетоприемника, замыкал A0 на 3.3 и 5в на ардуино для проверки показаний.

Далее заменил провод на монетоприемнике уже на самый крайний случай. 

Сам монетоприемник программируется, определяет монеты правильно, похожие монеты тоже определяет правильно. 

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

alex46
Offline
Зарегистрирован: 06.10.2016

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

 

capirurso
Offline
Зарегистрирован: 22.04.2017

Уже пробовал по этой схеме, разницы нет. 

У меня подключено в данный момент так же практически, разница только что серый провод я не замыкаю с GND и использовал пин 2 а не 3. Но роли это не играет.

После продолжительных без успешных попыток получить импульсы, всё-таки настроил на 1 номинал монеты. Подпаял проводок к + светодиода который мигает при проглоте монеты. Подключил проводок к аналоговому пину на прямую (естественно проверив нет ли на проводе 12в;) ), когда светодиод светится в простое монетоприемника, значение сигнала в районе 400 (~ 1.9в). При забросе светодиот выключается и на пине имеем 770 значение. Если кому-нибудь подойдет такое решение проблемы, вот код:


volatile long timeLastPulse = 0;
int coins = 0;

void setup() {
}

void loop() {
  int val = analogRead(A1);
  long timeFromLastPulse = millis() - timeLastPulse;
  if (val > 700 && timeFromLastPulse > 200) {
    timeLastPulse = millis();
    coins++;
  }
}

При задержке в 200 мс, как бы я быстро не забрасывал монеты, определяет правильное кол-во. 

Пока будет работать так. Если в будущем у кого-нибудь будет данная проблема пожалуйста напишите как вы ее решили.

capirurso
Offline
Зарегистрирован: 22.04.2017

Стоп одна поправка на счет вашей схемы, у вас она неправильная, монетоприемник питается от 12в а не от 5.

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

capirurso пишет:

 (~ 1.9в)

Это примерно о чём я Вам писал вчера. У меня были сигналы порядка 1.7. Но я не парился с аналоговым входом, а усилил их операционным услителем и спокойно подавал на цифровой

capirurso
Offline
Зарегистрирован: 22.04.2017

Прошу заметить эти 1.9в не от белого провода от которого должны получать импульс, а от моего припаяного к светодиоду.

capirurso
Offline
Зарегистрирован: 22.04.2017

Вот так в итоге получилось, надеюсь будет видно хорошо после загрузки, что написано на фотографии:

(перезалил фотографию, в итоге не понятно было )) )

Я понимаю, что способ извращенческий, но как бы я не подключал этот девайс, импульсы я не получаю от монетоприемника. Подключившись к + светодиода хотя бы получится работать с один номиналом. Пока на руках нет более "нормального" девайса на замену этому, можно пользоваться. Если у кого-нибудь будет идеи пишите тут, пусть и работает но тема будет всегда актуальна, ибо в интернете не видел даже такого "временного" решения этой проблемы.

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

А у меня импульсы были тапи 1.7