Arduino и хоппер suzo mk ii

fred2015
Offline
Зарегистрирован: 28.08.2015

как заставить работать хоппер на ардуино, чтобы он выдавал определенное количество монет. Знаю что нужно писать скетч через прерывания,но не знаю как сделать....

fred2015
Offline
Зарегистрирован: 28.08.2015

Имется arduino uno, питание подаю через модуль реле, сенсор подключил к 3 выходу

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

fred2015,

для Вашего запроса более адекватна ветка - http://arduino.ru/forumy/ishchu-ispolnitelya

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

fred2015 пишет:

как заставить работать хоппер на ардуино, чтобы он выдавал определенное количество монет. Знаю что нужно писать скетч через прерывания,но не знаю как сделать....

1. Заведи переменную, которая будет указывать на количество выданных монет

2. В обработчике прерываний помести команду "переменная--"

3. В лупе создай условие - при ненулевой переменной вращать двигатель хоппера, а при нулевой не вращать

4. Устрани дребезг контактов с датчика выданных монет (лучше со стороны железа)

Прерывания в принципе можно не использовать (только при сильной загрузке процессора ардуино)

fred2015
Offline
Зарегистрирован: 28.08.2015
void loop() {
 
      attachInterrupt(1,count_pulse1,RISING);
 
 
 void count_pulse1()
  {  
digitalWrite(powerHopper,HIGH);
 pulse1++;
   while(pulse1==100)
      {
      delay(15);
      }
   digitalWrite(powerHopper,LOW);
   detachInterrupt(1);
    }
  
  вот здесь например для выдачи 100 монет,но он ошибается выдает на порядок меньше, 70-75-62, то есть он выдает каждый раз разное количество... Если указываю 1 монету, реле включается и сразу отключается, и он не успевает ее выдать, либо она застревает на выходе. Сам хоппер исправный полностью
fred2015
Offline
Зарегистрирован: 28.08.2015

ssvs111 пишет:

fred2015 пишет:

как заставить работать хоппер на ардуино, чтобы он выдавал определенное количество монет. Знаю что нужно писать скетч через прерывания,но не знаю как сделать....

1. Заведи переменную, которая будет указывать на количество выданных монет

2. В обработчике прерываний помести команду "переменная--"

3. В лупе создай условие - при ненулевой переменной вращать двигатель хоппера, а при нулевой не вращать

4. Устрани дребезг контактов с датчика выданных монет (лучше со стороны железа)

Прерывания в принципе можно не использовать (только при сильной загрузке процессора ардуино)

 

void loop() {
 
      attachInterrupt(1,count_pulse1,RISING);
 
 
 void count_pulse1()
  {  
digitalWrite(powerHopper,HIGH);
 pulse1++;
   while(pulse1==100)
      {
      delay(15);
      }
   digitalWrite(powerHopper,LOW);
   detachInterrupt(1);
    }
  
  вот здесь например для выдачи 100 монет,но он ошибается выдает на порядок меньше, 70-75-62, то есть он выдает каждый раз разное количество... Если указываю 1 монету, реле включается и сразу отключается, и он не успевает ее выдать, либо она застревает на выходе. Сам хоппер исправный полностью
ssvs111
ssvs111 аватар
Offline
Зарегистрирован: 11.07.2014

Выдает меньше потому что идут ложные прерывания (дребезг контактов, на вход RC цепь добавь)
Чтобы не застревало добавь задержку на отключения двигателя на 20-200 мсек (подбирать эксперементально) после выдачи только последней монеты