В чём может быть дело...

Kolyanchyk
Offline
Зарегистрирован: 27.02.2013

Я почему спрашиваю. У меня с братом есть задумка сделать маленький автомат по продаже разных видов (наверно около 12 продуктов) в основном это будут семечки, драже, что-то сыпучее. весом по 50 и 100 грамм. Хотим естественно удовлетворить покупателя в смысле продаж и конечно же разные способы оплаты.

Выбрали сейчас купюрник А7, монетник думаем какой, тоже надо я так понял в пульсе. И здачу чтоб давал хоть одним номиналом монет. Ключевое, это чтобы клиент пришел, порадовался красоте и купил кулёк семечек, драже в шоколаде или арахис. Такая "Електронная бабка на улице" ))) 

В Хабре парень написал про автомат, но хитро, ничего про программу и исходную логику, как подключал, что делал. ))) Я понимаю, что бизнес, но я же в Россию не приеду бизнес портить ))) Только в гости к Отцу езжу. )

Ардуино приучиваем сейчас принимать купюры и выводить это всё на экран с приветствием покупателю.

nickell2008
Offline
Зарегистрирован: 03.10.2014

Всем доброго дня.

Имеется купюроприемник ICT P-77-P5. Подключаю его к ардуино как описано ранее, тоесть оранж и красный на питание 12в(на данный момент 9в), синий на пин ардуино и через 4.7 кОм к +5в , фиолетовый - земля.

Скетч использовал который дала Аня в 47м  сообшении с добавление вывода moneyState в окно терминала.

В итоге: купюропниемник при подключении к сети старается скушать купюру, но не берет её. В терминале СОМ порта постоянно дублируется 1.  При отключении купюроприемника единица продолжает дублироваться в бесконечном цикле.

Грешу на переключатели сбоку приемника(описание). Игрался с ними - не помогло. На данный момент питание идет не 12, а 9В, но я не думаю, что могут быть проблемы из-за этого.

Кто чем поможет?

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

nickell2008 пишет:

Кто чем поможет?


Сочувствие прокатит?

nickell2008
Offline
Зарегистрирован: 03.10.2014

Puhlyaviy пишет:
nickell2008 пишет:

Кто чем поможет?

Сочувствие прокатит?

Спасибо хоть за это)

Но совет не помешал бы..

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Я бы проверил что подключили правильно. А то цвета проводов это не вариант.

nickell2008
Offline
Зарегистрирован: 03.10.2014

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

Теперь нужно разобраться в распознавании импульсов..

nickell2008
Offline
Зарегистрирован: 03.10.2014

Все сделал. В итоге импульсы четко переводятся в сумму и выводятся на экран. 

Но есть одна проблема: когда введена какая-то сумма и после чего не производилось никаких действий, с течением времени сумма растет. Тоесть купюроприемник отсылает ложные импульсы.  Подключил все правильно, резистор между синим проводом и +5 ардуино стоит. 

Вот скетч.


int switchPin = 8;  // кнопка для включения заправки
boolean lastButton = LOW;
boolean currentButton = LOW;

const int moneyPin2=2; //  купюроприемник  
 
int pulse1=0;
int pulse2=0;

unsigned long timeAllPulse2=2000; // макс. время приема купюры
unsigned long timeCount1=0;
unsigned long timeCount2=0;
 

float sum=0.0;

// дисплей Goodview LCD JXD0802A YG
// Библиотеки для русского языка
#include <LiquidCrystalRus.h>
#include <LiquidCrystalExt.h>
#include <LineDriver.h>

// Данные с пинов дисплея на ардуино 
LiquidCrystalRus lcd(24,22,51,49,47,45);
 
void setup()
{
  
  pinMode(switchPin, INPUT); // кнопка
  Serial.begin(9600);
 
  pinMode(moneyPin2,INPUT);
  // включение диспечера прерывай
  attachInterrupt(0,count_pulse2,FALLING); 
  
  // Вкл дисплея
  lcd.begin(16,2);
  lcd.clear();  // очистка
  lcd.setCursor(6,0);  lcd.print("Добро");
  lcd.setCursor(4,1);  lcd.print("пожаловать!");
}
 
void loop()
{
  currentButton = debounce(lastButton);
  if (lastButton == LOW && currentButton == HIGH)
  {
     sum = 0.0;
     lcd.clear();  // очистка
     lcd.setCursor(6,0);  lcd.print("Спасибо");
     lcd.setCursor(3,1);  lcd.print("за покупку!");
     delay(2000);
     lcd.clear();  // очистка
     lcd.setCursor(6,0);  lcd.print("Добро");
     lcd.setCursor(4,1);  lcd.print("пожаловать!");
   }
  lastButton = currentButton;
  int kol_im=0; 
 
   
  
  // прошло максимальное время приема купюры?
  if(pulse2>0 && (millis()-timeCount2)>timeAllPulse2)
    {      
     kol_im=pulse2*5; // определение купюры
     sum+=kol_im; // суммирование
     float litr = sum/20;  
    
    
    Serial.print("sum=  ");
    Serial.println(sum);
    // вывод на дисплей
    lcd.clear();
    lcd.setCursor(0,0);lcd.print("Введено = ");
    lcd.setCursor(10,0);lcd.print(sum);
    lcd.setCursor(0,1);lcd.print("Литров = ");
    lcd.setCursor(8,1);lcd.print(litr);
    pulse2=0; 
     
    }
    
 
}
 
// обработка прерывания монетоприемника - получить кол-во импульсов
// 
void count_pulse2()
  {
 
  //detachInterrupt(0);
 
  detachInterrupt(0);
  
  pulse2++;
  if(pulse2==1)
  {
    timeCount2=millis();
    timeCount2=timeCount2-timeAllPulse2;
    if  (50>timeCount2>99) pulse2=1;
  
    
  }
  //attachInterrupt(0,count_pulse,FALLING);
  attachInterrupt(0,count_pulse2,FALLING);
  }
  
  
  
  //
  
  boolean debounce(boolean last)
  {
    boolean current = digitalRead(switchPin);
    if (last != current)
    {
      delay(5);
      current = digitalRead(switchPin);
    }
    return current;
    
  }

 

Аня
Offline
Зарегистрирован: 26.10.2012

Резистор стоит, а какой номинал? Похоже на то что помехи ловит.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

конденсатор ставьте 10nF...47nF(вывод-земля) в зависимости от периода импульсов. Может вообще имеет смысл оптическая развязка.

Аня
Offline
Зарегистрирован: 26.10.2012

Чаще всего для избежания ловли помех достаточно повысить номинал резистора до 100 Ом и кондёр 0,1 мкФ. Оптику городить не имеет смысла

nickell2008
Offline
Зарегистрирован: 03.10.2014

Резистор стоит 4,7кОм.  Странно, что помехи ловит..

На днях куплю конденсатор, подсоединю и отпишусь. Его ставить между резистором и +5в ардуино?

Аня
Offline
Зарегистрирован: 26.10.2012

Вообще если по уму делать то и диодная сборка не помешает. А так можно и один резистор к +5 притянуть и да, в 4,7кОм (странно что ловит что то - не пробовал увеличивать?). Можно простой RC фильтр - сначала 100 Ом, потом 4,7кОм к +5, а 0,1 мкФ на землю. 

Аня
Offline
Зарегистрирован: 26.10.2012

посомтри заодно в скетче - может банально переменную не обнуляешь

nickell2008
Offline
Зарегистрирован: 03.10.2014

Диодная сборка? В смысле диодный мост?

Увеличивать не пробовал.  Думаю, и 4.7 должно хватать для помех.

Счетч проверял, там не должно быть обнулений, т.к. не происходит никаких действий после ввода. Если они происходят, то естественно все обнуляется.  Притом интервалы бывают разные. Порой минута проходит и добавляет пару импульсов. Бывает и по часу стоит - нормально. Раз оставил и за 40 мин - набежало 1700грн))

 

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

Аня
Offline
Зарегистрирован: 26.10.2012

Ещё прикол бывает если провод купюрника расположить рядом или вместе с силовым - помехи только так летят

По уму мы подключаем ICT V7 к атмеге такподключение

dimi
Offline
Зарегистрирован: 07.11.2014

Всем привет. Приобрел монетник EU-2. На основе ваших сообщений собрал схему, написал скетч. Все работает. Огромное спасибо.

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

В общем вопрос- кто как борется с этой проблемой?

Пробовал использовать inhibit через оптопару. Работает без отлова импульсов. Только начинаю ловить импульсы и монетник перестает принимать монеты. Может где ошибка в коде.

Radjah
Offline
Зарегистрирован: 06.08.2014

2 монеты за 0,001 сек? Так вот где Чак прячется!

nickell2008
Offline
Зарегистрирован: 03.10.2014

Я подключил свой с добавлением еще резистора на 100 Ом и кондера на 0,1 мкФ. Сейчас все нормально, никаких помех нет. Но вот когда силовой провод рядом, то канешно валят помехи только так, и ничего не помогает.

dimi
Offline
Зарегистрирован: 07.11.2014

Radjah пишет:

2 монеты за 0,001 сек? Так вот где Чак прячется!

не мкс конечно. Опечатался.
Во всех примерах задают время на подсчет 2 секнды. Я ставил 0.4 чтобы ловил до 4х импульсов. 1 импульс-1 рубль, 2-2р, 4-5р, 8-10р. Если кидать монету за монетой, то вторая монета большого номинала может залезть и в первый участок выделенного времени и во второй.

На счет помех можно попробовать использовать экранированный кабель. Экран подключить к земле.

nickell2008
Offline
Зарегистрирован: 03.10.2014

Да, экран будем ставить.

В монетоприемниках можно же поставить разную скорость импульсов. По норме вроде от 50 до 99 мс  = 1 импульс.  Это регилируется перемычками на тыльной стороне. Поставь меньше и будет норм. И код переделай соответственно.

 

nickell2008
Offline
Зарегистрирован: 03.10.2014

Вообщем вся система, включая купюроприемник, счетчик и осд моник сильно ловит помехи. Через реле ардуино проходит 220 и 12в.

Когда они (на реле)замыкаются моник выводит иэроглифы и все остальное тоже барахлит.

Купюроприемник и моник экранировал. В моник кинул кондер 1мкф между + и -. На купюроприемник ставлю кондер 0.1 мкф - не правильно отображает номинал. Может я не туда ставлю? Диоды тоже не помогают.

Как убрать помехи от 220?

Radjah
Offline
Зарегистрирован: 06.08.2014

Развязку гальваническую мути и заземление проверь.

nickell2008
Offline
Зарегистрирован: 03.10.2014

подскажешь как? а то что-то пока не сильно разобрался.

Грешил я на помехи от рядом стоящего релейгного модуля ардуино, через которое идет 220 и 12 в. Вывел 220 на 0.5м, осталось только 12 в реле. В итоге , с помощью программирования, удалось избавить от помех купюроприемник. Но вот ЛСД моник ведет себя не так как надо: отображается все нормально, пока не включается реле на 12в. Дальше начинают скакать иэроглифы, пока не отключить реле. Кидал кондеры на 0,1 - 3 мкф. Не помогает. Все кабели экранированые. В чем может быть дело?

Может блок питание, который выдает 12 создавать помехи? как с ними бороться?

Аня
Offline
Зарегистрирован: 26.10.2012

Феррит на питающий провод повесить не пробовали?

nickell2008
Offline
Зарегистрирован: 03.10.2014

нет. попробую

а с помощью оптопары можно сделать разаязку? И ставить её на + и - или и на данные?

nickell2008
Offline
Зарегистрирован: 03.10.2014

Аня , Вы о ферритовых фильтрах? http://www.e-voron.dp.ua/catalog/024333

ssvs111
ssvs111 аватар
Offline
Зарегистрирован: 11.07.2014

Товарищи, объясните - зачем при подсчете импульсов с монетника/купюрника задаете временной интервал? Ведь и без него все отлично считает.

Кстати, у кого помехи при прерываниях сюда http://arduino.ru/forum/apparatnye-voprosy/problema-s-preryvaniyami

И еще, для четкой работы монеториемника/купюроприемника по пульсу с ардуино я обычно этот пин подтягиваю к питанию резистором 1к, а к земле конденсатором 10мкф (обычно керамическим smd 1206 на любой материнке их пруд пруди)

g4tech
Offline
Зарегистрирован: 09.10.2016

Приобрел купюрник cashcode sm 2073

подключил:

1ый и 5ый контакт к плюсу 12в, 2ой и 6ой контакт к земле источника 12в

что делать с 3им и 4ым контактом ума не приложу) Купюрник прошит под ипульс

playthegame
Offline
Зарегистрирован: 08.11.2016

Добрый всем день )

Поднимаю старую тему, но все же.

Не могу найти никак. А какое напряжение дает A7/V7 на сигнальных проводах (SIGNAL+/-), и какой уровень (диапазон) напряжений ждет на INHIBIT+/-?

Обыскался везде, но найти прямое указание так и не смог...