Вендинговый разменный автомат на Arduino

Рассмотрим создание разменного автомата на Arduino. Автомат будет разменивать монеты 10 руб, купюры 10, 50, 100 руб на монеты достоинством 5 руб.

Для автомата будем использовать купюроприемник ICT BL-700, монетоприемник на одну монету, хоппер Cube Hopper MK2

Я уже рассматривал подключение к Arduino монетоприемника (/me/arduino/arduino85.php) и купюропримника ICT (http://bhv.ru/books/book.php?id=191366). Рассмотрим подключение к Arduino хоппера – электромеханического прибора, предназначенного для выдачи монет. 

Рассмотрим хоппер, который хранит и выдает сдачу монетами одного номинала — так дешевле, чем ставить универсальное устройство. Новые модели хоппера Cube Hopper MK2 (datasheet) можно приобрести по цене от 3000 руб, можно найти и б/у устройства от 1500 руб. Cube Hopper MK2, один из самых распространенных, разработан всемирно известной компанией Suzo, известнейшим игроком на рынке развлекательного оборудования. Данная модель специально разработана для игровой и вендинговой индустрии и выполнена из износостойкого пластика и обладает высокой надежностью. 

Характеристики:

  • Количествно номиналов: 1
  • Есть варианты под монеты: 1р, 2р, 5р, 10р!
  • Скорость выдачи монет: 7монет/сек
  • Размер монет: 18.00mm — 31.00mm
  • Толщина монет: 1.50mm — 3.20mm
  • Питание: 12V DC ±10% or 24V DC -25% +10%
  • Температура работы: от 0С до +50С
  • Вместимость: 450 монет диаметром 24мм
  • В хоппере МК2 применено современное электронное управление оптическими датчиками выдачи
  • Хоппер МК2 работает в 2-х протоколах: ccTalk или параллельный
  • Хоппер МК2 квадратного типа, таким образом выдача монет(жетонов) может быть осуществлена с 4 различных сторон в зависимости от необходимости.
  • Опционально: Расширитель держателя монет  можно установить до трёх расширителей, что даёт возможность загружать в бункер хоппера МК2 более 1200 монет(жетонов) диаметром 24 мм
     

Для подключение к Arduino будем использовать следующие контакты:
pin 6 — выход оптического сенсора
pin 8 — +12В
pin 9 — земля

При подаче на pin8 напряжения +12В хоппер начинает выдавать монеты. При выдаче каждой монеты на pin6 хоппер выдает отрицательный импульс длительностью 35 мс. 

pin подтягиваем резистором 10 кОм к +5В и подключаем к входу Arduino.

Приступим к созданию разменного автомата.

Схема электрическая

При внесении монет через монетоприемник и купюр через купюроприемник на дисплее отображается внесенная сумма. При нажатии на кнопку Разменять хоппер выдает внесенную сумму монетами по 5 (или 10) руб. Отслеживание импульсов от монетоприемника, купюроприемника и хоппера по прерыванию. Используем Arduino Mega, прерывания 0(D2), 1(D3), 2(D21). Подача +12В на хоппер через реле.

И скетч на Arduino:

// купюроприемник IC A7 V7
const int moneyPin1=2;
// монетоприемник CH-926
const int moneyPin2=3;
// хоппер suzo mk2
const int moneyPin3=21;
const int powerHopper=8;
int nominal_kup=10;
int nominal_hop=10;
// кнопка
const int pinButton=8;
boolean lastButton=HIGH;
boolean currentButton=HIGH;

int pulse1=0;
int pulse2=0;
int pulse3=0;

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

int sum=0;
// дисплей WH1602
#include «LiquidCrystalRus.h»
LiquidCrystalRus lcd(12,11,7,6,5,4);

void setup()
{
Serial.begin(9600);
//
pinMode(moneyPin1,INPUT);
pinMode(moneyPin2,INPUT);
pinMode(moneyPin3,INPUT);
pinMode(pinButton,INPUT);

Serial.println(«coin ready»);
lcd.begin(16,2);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(«Внесите деньги»);
delay(1000);
attachInterrupt(0,count_pulse1,FALLING);
attachInterrupt(1,count_pulse2,FALLING);
}

void loop()
{
// нажатие кнопки
currentButton=debounce(lastButton);
if(lastButton==HIGH && currentButton==LOW)
{
doForKey();
}
lastButton=currentButton;
// прошло максимальное время приема монеты?
if(pulse2 (больше) 0 && (millis()-timeCount2) (больше) timeAllPulse2)
{
sum=nominal_kup;
pulse2=0;
lcd.clear();
lcd.setCursor(0,0);lcd.print(«Баланс»);
lcd.setCursor(0,1);lcd.print(sum);
}
// прошло максимальное время приема купюры?
if(pulse1 (больше) 0 && (millis()-timeCount1) (больше) timeAllPulse1)
{
sum+=pulse1*10;
pulse1=0;
lcd.clear();
lcd.setCursor(0,0);lcd.print(«Баланс»);
lcd.setCursor(0,1);lcd.print(sum);
}
}

// обработка прерывания монетоприемника — получить кол-во импульсов
//
void count_pulse2()
{
detachInterrupt(1);
pulse2++;
if(pulse2==1)
timeCount2=millis();
attachInterrupt(1,count_pulse2,FALLING);
}
// обработка прерывания купюроприемника — получить кол-во импульсов
//
void count_pulse1()
{
detachInterrupt(0);
//detachInterrupt(1);
pulse1++;
if(pulse1==1)
timeCount1=millis();
attachInterrupt(0,count_pulse1,FALLING);
}
// обработка прерывания хоппера
void count_pulse3()
{
detachInterrupt(2);
pulse3++;
attachInterrupt(2,count_pulse3,FALLING);
}
// обработка нажатия кнопки
void doForKey() {
if(sum==0)
return;
detachInterrupt(0);
detachInterrupt(1);
attachInterrupt(2,count_pulse3,FALLING);
pulse3=0;
lcd.clear();
lcd.setCursor(0,0);lcd.print(«Размен»);
digitalWrite(powerHopper,HIGH);
while(pulse3<=sum/nominal_hop)
{
delay(50);
}
digitalWrite(powerHopper,LOW);
detachInterrupt(2);
lcd.clear();
lcd.setCursor(0,0);lcd.print(«Размен»);
lcd.setCursor(0,1);lcd.print(«произведен»);
delay(3000);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(«Внесите деньги»);
attachInterrupt(0,count_pulse1,FALLING);
attachInterrupt(1,count_pulse2,FALLING);
sum=0;
}
// проверка на дребазг
boolean debounce(boolean last)
{
boolean current=digitalRead(pinButton);
if(last!=current)
{
delay(5);
current=digitalRead(pinButton);
}
return current;
}


Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот

Arduino Mega
Плата ArduinoMega1
T2
Биполярный транзисторC9451
D2
Выпрямительный диод1N40041

КупюроприемникICT BL-7001

Монетоприемник1

ХопперCube Hopper MK21

Резистор10 кОм1

Резистор4.7 кОм3
R2
Резистор1 кОм1

Потенциометр10 кОм1
WH1602
ЖК дисплейWH16021
БП
Компьютерный блок питания+5В.+12В1
S1
Кнопка1
Rel2
РелеSRD-05VDC-SL-C1
Добавить все

Скачать список элементов (PDF)

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

Добавить комментарий

Ваш адрес email не будет опубликован.