Главная » Arduino
Призовой фонд
на январь 2017 г.
1. 5000 руб.
Академия Благородных Металлов
2. 1000 руб.
Radio-Sale
3. Регулируемый паяльник 60 Вт
Паяльник
4. 600 руб.
От пользователей
5. Тестер компонентов LCR-T4
Паяльник

Похожие статьи:


Подключение монетоприемника к Arduino

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

В статье рассмотрено создание блока приема денег, из монетоприемника и Arduino. Блок осуществляет прием монет (и в перспективе купюр) и отправляет данные о номинале принятой монеты по последовательному порту. Вывод результата осуществляется на дисплей WH1602.

Монетоприемник CH-926 может принять до 6 видов различных монет,   диаметром: 15мм ~ 32мм, толщиной 1.2mm ~ 3.8mm.

Монетоприемник CH-926

Рабочее напряжение 12В. 
Выходной сигнал: импульсный. Частота импульсов устанавливается с помощью трехпозиционного переключателя - fast: 20 мс,medium: 50 мс, slow: 100 мс
На eBay можно по цене приблизительно 800 руб. 

Настройка монетоприемника

Включить питание, установить переключатель 1 в позицию NC, переключателем 2 - выбрать нужную скорость обмена (fast, medium, slow) 
Нажать одновременно кнопки ADD и MINUS более 3 секунд, отпустить , на индикаторе появится A;
Нажать и отпустить кнопку SET, появится E;
Кнопками ADD, MINUS установить кол-во разных монет для приема (1-6) - я установил 5 - (50 коп,1,2,5,10 руб)
Нажать кнопку SET более 3 секунд
Появилась на дисплее H1 - кол-во экземпляров монеты 1 для калибровки
Кнопками ADD, MINUS установить значение H для первой монеты
Нажать кнопку SET более 3 секунд
Появилась на дисплее P1 - кол-во выдаваемых импульсов при успешном приеме монеты 1  (1-50)
Кнопками ADD, MINUS установить значение импульсов для первой монеты (я выбирал 1 для первой, 2 - для второй, ....., 5 - для пятой)
Нажать кнопку SET более 3 секунд
Появилась на дисплее F1 -точность опознания монеты 1  (1-30) - я выбирал 10
Кнопками ADD, MINUS установить значение F для первой монеты 
Нажать кнопку SET более 3 секунд
Повторить для H2-6, P2-6, F2-6
Появится A
Нажать и отпустить кнопку SET, появится E;
Теперь выключаем-включаем монетоприемник

Калибровка монетоприемника

Нажать кнопку SET более 3 секунд
Появилась на дисплее A1 - начинаем опускать в монетоприемник монеты номинала 1 в количестве H1
По загрузке последней монеты начинает мигать A1
Нажать кнопку SET  - появится A2
Повторить загрузку монет для номиналов 2-5
Нажать кнопку SET более 3 секунд
Теперь выключаем-включаем монетоприемник
Монетоприемник готов к приему монет. Можем опускать монеты, на дисплее высвечивается количество импульсов. Если монеты какого-то номинала не проходят - повторяем настройку сначала.

Подключение к Arduino

Монетоприемник оснащен кабелем

Подсоединяем красный к 12В, черный к "земле", белый к D3 платы Arduino. Ловить импульсы будем по прерыванию 1.

Подсоединим к Arduino дисплей WH1602, где будет отражаться информация по накопительной сумме.

Схема получается следующей:

Вот скетч для Arduino. Вывод результатов приема монет осуществляется на дисплей WH1602. В первой строке - текущая принятая монета, во второй - накопленная сумма. Прерывание 0 - для подключения в будущем купюроприемника IC V7.

// купюроприемник IC A7 V7
const int moneyPin1=2;
// монетоприемник CH-926
const int moneyPin2=3;

int pulse1=0;
int pulse2=0;
unsigned long timeAllPulse1=2000; // макс. время приема купюры
unsigned long timeAllPulse2=1000; // макс. время приема монеты
unsigned long timeCount1=0;
unsigned long timeCount2=0;

float nominals2[6]={0,0.5,1,2,10,5};
float sum=0.0;
// дисплей WH1602
#include "LiquidCrystal.h"
LiquidCrystal lcd(12,11,7,6,5,4);

void setup()
{
  Serial.begin(9600);
  pinMode(moneyPin1,INPUT);
  pinMode(moneyPin2,INPUT);
  //attachInterrupt(0,count_pulse,FALLING);
  attachInterrupt(1,count_pulse2,FALLING);
  lcd.begin(16,2);
  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("coin ok!");
}

void loop()
{
  // прошло максимальное время приема монеты?
  if(pulse2>0 && (millis()-timeCount2)>timeAllPulse2) 
    {
    sum+=nominals2[pulse2];
    Serial.println(nominals2[pulse2]);
    
    lcd.clear();
    lcd.setCursor(0,0);lcd.print("1=");
    lcd.setCursor(2,0);lcd.print(nominals2[pulse2]);
    lcd.setCursor(0,1);lcd.print("*=");
    lcd.setCursor(2,1);lcd.print(sum);
    pulse2=0;  
    }
}

// обработка прерывания монетоприемника - получить кол-во импульсов
//  
void count_pulse2()
  {

  //detachInterrupt(0);

  detachInterrupt(1);
  pulse2++;
  if(pulse2==1)
    timeCount2=millis();
  //attachInterrupt(0,count_pulse,FALLING);
  attachInterrupt(1,count_pulse2,FALLING);
  }

Прикрепленные файлы:

Теги:

Опубликована: Изменена: 08.07.2014 0 2
Я собрал 0 0
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 0 Проголосовало: 0 чел.

Комментарии (38) | Я собрал (0) | Подписаться

0
galunko #
Как робот-бармен будет понимать голосовые команды, если существующие программы распознавания речи требуют предварительного обучения к конкретному говорящему человеку? Первого попавшегося покупателя робот просто не поймет! Зачем тогда монетоприемник, если он не сможет готовить коктейль по команде?
Ответить
0
radteh #
У меня телефон без представительного обучения на мой голос способен распознавать кучу команд.
Ответить
0

[Автор]
victoruni #
Здесь Голосовое управление освещением X10. Часть 2 я делал уже распознавание речи через Google speech, но буду пробовать локальное распознавание еще через julius, они не требуют предварительного обучения
Ответить
0
Илья #
Доброго времени суток. огромное спасибо за статью, она натолкнула на создание торгового аппарата. У меня купюроприемник ICT BL700, В разъем входит 6 проводов:
Красный +12V
Оранжевый GND
Желтый INHIBIT +
Зеленый INHIBIT —
Синий SIGNAL +
Фиолетовый SIGNAL —

Подключал так:
-красный провод - +12 источника
-оранжевый на землю источника
-синий на пин и от него через резистор 5 кОм на +5 В ардуины
-фиолетовый на землю ардуины

В ардуино залил Ваш скетч, купюры принимает, а на дисплей ни чего не выдает. Помогите разобраться в чем проблема.
Ответить
0

[Автор]
victoruni #
Добрый день. Давайте поэтапно
1. При загрузке выдает на дисплей надпись"coin ok!" ?
Ответить
0
Илья #
Да, выдает, потом на дисплее появляются значения как показано в видео.
Ответить
0

[Автор]
victoruni #
Тогда все работает.
1= - выдает номинал текущей принимаемой монеты
*= cумма общая
Если выдает неправильный номинал - неправильно настроен монетоприемник, см. пункт "Настройка монетоприемника"
Ответить
0
J0cker #
Ну как Илья справился? Я взял такой же купюрник, только результата 0
Ответить
0
DAS #
Илья, купюроприёмники работают по протоколу MDB. В то время ,как приведенный тут монетоприемник работает в обычном пульсе (т.е. значение принмаемой монеты он выдаёт количеством импульсов). Т.е. Ардуино чует, что сигнал получен, а расшифровать его не может. Боюсь, что подключить его будет несколько сложнее, поскольку нужно будет писать код для расшифровки MDB (а там, кроме непосредственно значений принятой купюры, ещё куча всякого мусора пролетает). Ну и в результате получите обрезаную функциональность- купюроприемники не умеют выдавать сдачу.
Ответить
0
Varuzhan #
У меня монетоприемник точно такой, но выводит ошибку E3. Как исправить?
Ответить
0

[Автор]
victoruni #
Документации я так и не нашел - только инструкции по программированию монетоприемника. Попробуйте заново еще раз - у меня тоже с первого раза не получалось. Сейчас сам посмотреть не могу - монетоприемник в другом месте
Ответить
0
ZAZA #
Как подключить например кнопку через реле для наполнения определенного количества жидкости (допустим по сумме вложенных денег) - кнопка и реле при адаптации к данной программе перестают слушаться.
Ответить
0
Андрей #
На схеме подключения - ошибка!
Красный идет на +12 как указано на первой схеме. А вот на второй схеме резистор R2 идет на +5В без красного провода. Красный на +12В.
Цеплял с учетом этой ошибки- все работает. Если резистор R2 прицепить к красному проводу(+12)- то вы спалите порт на ардуино(или целиком плату)
Ответить
0

[Автор]
victoruni #
Да, конечно
RED - на 12 В
WHITE подтянутый к 5В - на Arduino
Спасибо, что заметили. Исправлю
Ответить
0
J0cker #
Есть mega 2560 и купюрник APЕХ 5400. Но нет дисплея как и распиновки купюрника. Разобрался только с питанием на нем. Вопрос куда подключить купюрник на mega нет обозначений D1 и т.д.?
Я увижу в мониторе порта данные во время приема денег купюрником?
Ответить
0

[Автор]
victoruni #
На Arduino Mega2560 D1 - 1
Данные дублируются в последовательный порт - Serial.println(nominals2[pulse2]);
Ответить
0
grass #
При подключении NRI 13G 1 рубль пишет 0.5 руб, 2 рубля отображаются как 1 руб, 5 правильно, 10 рублей в верней строке отображается 0, в нижней никакой реакции. Как я понимаю, дело в количестве импульсов.
Но в результате полной программной неграмотности не могу скорректировать скетч под NRI (не понятен кусок кода, преобразующий кол-во импульсов в номинал).
Ответить
0

[Автор]
victoruni #
Не знаю как запрограммирован ваш монетоприемник
но видимо 1 руб - 1 импульс, 2 - 2, 5 - 5, 10 - 10
Попробуйте так (строка 13)
float nominals2[6]={0,0.5,1,2,10,5};
заменить на
float nominals2[11]={0,1,2,0,0,5,0,0,0,0,10};
Либо (если не получится) перепрограммируйте монетоприемник
Ответить
0
grass #
victoruni. Вы оказались правы и первой и во второй частях Вашего сообщения. Кол-во импульсов проверил осциллографом, строку заменил. "И было мне счастье" почти (С). Снимаю шляпу, или выражаясь новоязом- респект и уважуха.
Ответить
0
Николай #
Расшифруйте по русски что значит?
Появилась на дисплее P1 - кол-во выдаваемых импульсов при успешном приеме монеты 1 (1-50)
Кнопками ADD, MINUS установить значение импульсов для первой монеты (я выбирал 1 для первой, 2 - для второй, ....., 5 - для пятой)
Ответить
0

[Автор]
victoruni #
Вы назначаете параметром P1 сколько импульсов будет выдавать монетоприемник при приеме данной монеты. Как хотите, например 10. Не важно какой номинал монеты, вы можете назначить например монете 1 руб - 10 импульсов, а 5 руб - 7.
Ответить
0
Cubic #
У нас монетоприемник ICT UCA2. Схема проводов, которые идут от монетоприемника, на фото. Помогите с подключением Arduino. какой из проводов идет на пин/подает импульс?
Прикрепленный файл: g0opXsEzvOY.jpg
Ответить
0
Дмитрий #
А можно использовать arduino pro mini? Хватит ли там входов-выходов? А то недавно попал в руки монетоприемник, хочу сделать недорогую копилку.
Ответить
0

[Автор]
victoruni #
Да, конечно, выводов хватит. Прошивать pro mini сложнее
Ответить
0
Дмитрий #
victoruni, а можно еще один вопросик. При калибровке какие монеты надо опускать в монетоприемник, там разных годов, монетного двора. Они же вроде имеют разный сплав, магнитопроницаемость. А то вот у меня монетоприемник NPS-8 аналог того, что из статьи, он не берет ни в какую некоторые монеты. Вот 10 рублей с рисунком перми он берет как 2 рубля ВСЕГДА. И про точность опознания монеты. Чем меньше цифра, тем меньше точность? Если поставить 1, он будет брать все подряд?
Ответить
0

[Автор]
victoruni #
Я вас понял - у меня при создании мойки самообслуживания были такие проблемы
решал так
1 - 10 руб одного типа - 10 имп
2 - 10 руб другого типа - 10 имп
3 - 5 руб одного типа - 5 имп
4 - 5 руб другого типа - 5 имп
монеты из каждой кучки калибруются как отдельная независимая монета
Ответить
+1
Игорь #
Ребят, а может подскажите мне как заменить монетоприемник на купюроприемник на китайском детском аттракционе "качалка с видеоигрой"
Прикрепленный файл: c9d5b8e0c41b16638214e111cffe02d9.jpg
Ответить
0
sergej_shaggy #
Устанавливаешь купюрник в пульсовом режиме, если он такой поддерживает. А так я делаю переходную платку для купюрников CashCode, которая преобразовывала интерфейс CCNET в последовательность импульсов. Учитывая уровень инфляции приходится все чаще купюрники вместо монетоприемников ставить.
Ответить
0
Sergey #
А пример переходной платки (если можно с описанием) не выложите?
Ответить
0
sergej_shaggy #
Публиковать статью не стану. Сейчас у нас в городе появились ландроматы, сделанные по моей же статье http://cxem.net/mc/mc254.php (хотя это может социальный проект перерос в коммерческий) и которые стали составлять конкуренцию людям, которые у меня заказывают уже более совершенные ландроматы. http://cxem.net/mc/mc396.php
Фото прикрепляю, практически это просто кусок схемы http://cxem.net/mc/mc286.php. В Казахстан уже эти платки отправлял. Думаю, что коммерческую часть лучше обсуждать в личной переписке.
Прикрепленный файл: CCNET-Pulse.jpg
Ответить
0
Михаил #
Но в приведенном примере скетча нет защиты от помех по цепям электропитания (выключатели освещения, втыкание вилок в розетки). На пинах, на которые приходит импульс от купюро- и монетоприемника, будет выполняться функция по прерыванию. Но длина появившегося импульса может быть любая, допустим
Ответить
0

[Автор]
victoruni #
Конденсаторы 0,1 мкФ между псином прерывания и землёй и все будет нормально
Ответить
0

[Автор]
victoruni #
Или в цикле прерывания задержку небольшую поставить
Ответить
0
Михаил #
Спасибо за ответ. Но конденсатор на практике не всегда помогает. Пробовал в функции обработки прерывания сделать задержку (точнее, через 10 мс повторно опрашивал состояние пина), но не справился...
Ответить
0
sergej_shaggy #
Были проблемы с помехами. Удалось решить следующими способами:
1. Подбор номинала резистора к выводу COIN монетоприемника (здесь в статье это 4,7 кОма). Выход монетоприемника, по сути, это оптопара. И резистор задает ток через эту оптопару.
2. Все соединения максимально короткими проводами. Провода питания скрутил в виде "витая пара".
3. Вся схема, не Ардуино, собрана на одной плате, провода в плате впаяны, разъем только на монетоприемнике.
4. В обработчике прерывания сделал трехкратную проверку на уровень сигнала каждую через 3 мс, но это уже, думаю, перебор.
Что конкретно помогло не знаю, но даже "болгарка" не вызывала ложных срабатываний. И еще, все это делал не на Ардуино, а на нормальной печатке, где все пропаяно и зафиксировано. Пока все было на макетнице, тоже помехи проскакивали.
Ответить
0
Михаил #
Спасибо за комментарии. У меня получилось все-таки программно решить. Закинул в обработчик прерывания проверку, что сигнал длинный, а не помеховый. Убрал даже резистор на входе монетоприемника, а подтяжку к питанию сделал внутреннюю, средствами Ардуино. Теперь ковыряние в соседней розетке помех не дает
Ответить
0
Игорь #
Я никогда ранее не сталкивался с Ардуино. Сейчас пытаюсь подключить монетник, залил этот скетч на Ардуино. Получаю разные значения, даже не бросая монеты. Как мне это исправить?
Прикрепленный файл: 11.jpg
Ответить
0
Михаил #
Игорь, как я и писал выше, это помехи. Надо с ними бороться...
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется напряжение?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

Модуль измерения тока на ACS712 (30А)
Модуль измерения тока на ACS712 (30А)
Солнечная панель 10Вт 12В поликристаллическая USB-реле (2 канала)
вверх