Проблемы и наводки на ардуино с монетоприемником
- Войдите на сайт для отправки комментариев
Сб, 26/12/2015 - 14:00
Добрый день, не нашел похожую тему, решил написать сюда. С ардуиной работаю пару месяцев, до этого вообще ни чего подобного не делал. В общем по работе (рабтаю в квесте) стояло задание, подключить монетоприемник, в моё случае еу9 к ардуино, так что бы при пробросе 7 жетонов, открывалась выходная дерь и люди могли выйти из квеста, я подключил всё так же как указано выше только без дисплея, вместо дисплея у меня стоит сервопривод, который в свое время поворачивается на определенное количество градусов, при пробросе одного жетона. И подключено реле, которое открывает дверь после проброса 7 жетона. Ниже скетч и схема
#include <Servo.h>
// монетоприемник EU-9
const int moneyPin2=3;
Servo myservo;
#define rele2 7
#define ON 0
#define OFF 1
int regim=0;
int pulse2=0;
unsigned long timeAllPulse2=500; // макс. время приема монеты
unsigned long timeCount2=0;
void setup()
{
Serial.begin(9600);
pinMode(rele2, OUTPUT);
pinMode(moneyPin2,INPUT);
pinMode(moneyPin2, ON);
digitalWrite(rele2, OFF);
attachInterrupt(1,count_pulse2,FALLING);
Serial.println("coin ready");
myservo.attach(12);
}
void loop()
{
delay(1000);
// прошло максимальное время приема монеты?
if(pulse2>1 && (millis()-timeCount2)>timeAllPulse2)
{
regim++;
Serial.print("pulse2=");
Serial.println(pulse2);
Serial.print("regim=");
Serial.println(regim);
pulse2=0;
}
if(regim==0)
{
myservo.write(180);
delay(100);
}
if(regim==1)
{
myservo.write(157);
delay(100);
}
if(regim==2)
{
myservo.write(134);
delay(100);
}
if(regim==3)
{
myservo.write(111);
delay(100);
}
if(regim==4)
{
myservo.write(88);
delay(100);
}
if(regim==5)
{
myservo.write(65);
delay(100);
}
if(regim==6)
{
myservo.write(42);
delay(100);
}
if(regim==7)
{
myservo.write(10);
delay(15000);
digitalWrite(rele2, ON);
delay (4000);
digitalWrite(rele2, OFF);
myservo.write(180);
regim=0;
}
}
// обработка прерывания монетоприемника - получить кол-во импульсов
//
void count_pulse2()
{
detachInterrupt(1);
pulse2++;
if(pulse2==1)
timeCount2=millis();
attachInterrupt(1,count_pulse2,FALLING);
}
Теперь собственно сама проблема: реле как правило открывает дверь, когда монетоприемник получил только 5-6 жетонов, то есть накручивает лишние, монетоприемник пробовал менять эффект тот же, ардуино получает холостые сигналы с монетоприемника, бывает даже после того как просто монетой дотронешься до лицевой панели, возможно из за статики, бьюсь с ним месяц. Может кто подскажет как с ним бороться. P.S. монетоприемник обучен (прописан, пробросан раз 20 что бы принимать один жетон за 1 рубль т.е. за один импульс)
Ардуино питается от БП 12в 3А, от этого же БП питается замок на двери, а рэле перерывает питание на замок
Я думаю вызов прерывания по релюшке идея неудачная.
Странно, чт оно еще более менее работает :)
Убери ты это прерывание и сделай фильтр от дребезга.
Или RC цепочку на вход от реле.
Я думаю когда стучиш монетой дребезжит реле в монетоприемнике и вопрос зачем от реле 3 контакта ?
Спасибо огромное, за то что откликнулись. Но будет великодушная просьба, так как я не глубоко знаком пока что еще, но я стараюсь)), не могли бы вы наглядно написать прям на моем коде что исправить, или на схеме что куда припаять). Релюшка у меня вот такая. GND на массу на ардуино, IN1 уходит на 7 pin, ну и
соответственно VCC на +5в. поэтому 3 контакта от реле.
Доброго времени суток! Только начинаю похожий проект, получилось решить вопрос с имульсами? Личка 369911(a)mail.ru
и что же за месяц было проверено?
1. оставь в обработчике прерываний только сброс обработчика и изменение флага.
2. в основном цикле дополнительно проверяй состояние входа
делай временную отсечку по каждому импульсу, таймаут 250 мс
3. добавь импульсов на жетон, как минимум 2 импульса (четные числа).
4. eu2 вроде бы с пластиковой лицевой частью, сделай металлическую накладку с прорезью под жетон, к ней (у ch-926 под болт лицевой металлической части) прикрути провод соединенный с землей.
5. добавь пару диодов, сопротивление и конденсатор
6. если есть ферритовое кольцо намотай на него несколько витков кабеля монетоприемника