WordPress database error: [Table './meandr_base/anzpz_usermeta' is marked as crashed and last (automatic?) repair failed]
SELECT user_id, meta_key, meta_value FROM anzpz_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC

0

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

В статье рассмотрено создание блока приема денег, из монетоприемника и Arduino. Блок осуществляет прием монет (и в перспективе купюр) и отправляет данные о номинале принятой монеты по последовательному порту. Вывод результата осуществляется на дисплей WH1602.
1Монетоприемник 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

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Двадцять
21
22
23
24
25
26
Двадцять сім
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// купюроприемник 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);
}


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

Завантажити

cxem.net

адмін

Залишити коментар

Your email address will not be published. Required fields are marked *