Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Самодельный вендинг-автомат с приемником монет: детали и сборка

Компоненты и материалы

Фанера 1/4″ (FriendlyARM) — вырезать по чертежам ×4
Брусок фанеры 3/4″ — полоски 3/4″ шириной, длина по схеме ×1
Набор 5 шаговых двигателей 28BYJ-48 + драйверы ULN2003 (LAFVIN) ×1
Шлейф IDC 1.27mm (50P, 10ft) — для чистой проводки ×1
Набор разъемов Dupont 635 шт. (Male/Female, 40 pin) ×1
Подсвечиваемые микрокнопки (Gamelec) ×1
Макетная плата (или паяльные платы) ×1
Двухсторонние PCB платы (30 шт.) — 1-2 штуки понадобятся ×1
Arduino Mega 2560 ×1
Релейный модуль 5V (Tolako) для Arduino — защита двигателей от перегрева ×1
LCD 1602 с I2C (HiLetgo, 2 шт.) ×1
LED-лента (опционально) ×2
Провод медный 8 AWG (50 ft) — для изготовления катушек ×1
Металлический разделитель полки ×1

Инструменты

Приложения и сервисы

О проекте

Персональный вендинг-автомат

Пошаговая сборка личного вендинг-автомата. Можно заполнить любимыми снеками или поставить в офис для угощения коллег. Изучите и делитесь мнением!

Самодельный вендинг-автомат с приемником монет: детали и сборка

Сборка корпуса

Размеры коробка: 21″Ш × 18″Г × 24 1/4″В (внешние).

Самодельный вендинг-автомат с приемником монет: детали и сборка
Самодельный вендинг-автомат с приемником монет: детали и сборка

Соберите коробок, используя бруски 3/4″ в каждой точке стыковки. Боковые стенки стоят на дне и под крышкой. Периметр должен быть 21″Ш × 24 1/4″В.

Самодельный вендинг-автомат с приемником монет: детали и сборка

Перегородку настраивайте перед установкой: от верха отмерьте 16 1/4″ — крепите брусок для нижней полки; еще 8 1/4″ вниз — для верхней полки. То же на левой стенке (видом спереди). Важно: сначала установите нижнюю полку, иначе закрепить её будет трудно.

Самодельный вендинг-автомат с приемником монет: детали и сборка

Установите полки (13″×12″) на бруски — это автоматически задаст положение перегородки. Закрепите бруски сверху и снизу справа от перегородки, затем прикрепите её к верху и низу. Конструкция станет жесткой.

Самодельный вендинг-автомат с приемником монет: детали и сборка

Установите заднюю стенку и готовьте отверстия под моторы. Распечатайте колеса для катушек, измерьте их и просверлите отверстия. Отметьте середину полки (6 1/2″ от левой стенки), затем центр каждой секции (3 1/4″). Используйте измеренную высоту колеса + 1/4″ для отверстий под валы. Закрепите моторы.

Самодельный вендинг-автомат с приемником монет: детали и сборка

Настройка релейного модуля

Используйте драйвер L293D (ключ слева) для управления реле, подающим питание на моторы.

Подключение L293D (слева направо):

Средний контакт реле → +12V на макетке.
Задний правый контакт реле → «+» к драйверам моторов.

Самодельный вендинг-автомат с приемником монет: детали и сборка

Установка экрана и кнопок

Экран — справа спереди. Вырезь под дисплей: 2.53937″ × 0.5708661″.
4 кнопки — справа. Отверстия 1.10236″ (под конкретные кнопки). Лучше просверлить меньше и довести наждачной бумагой.

Самодельный вендинг-автомат с приемником монет: детали и сборка
Самодельный вендинг-автомат с приемником монет: детали и сборка

Все соединения должны в точности соответствовать схеме. Встроенные в кнопки светодиоды на схеме показаны отдельно для наглядности.

Подключите каждый мотор к его драйверу, затем драйверы к контроллеру:

Моторы (пины IN1-IN4 драйверов):

Кнопки (аналоговые входы с подтяжкой 220 Ом к GND):

Самодельный вендинг-автомат с приемником монет: детали и сборка

LCD-экран (I2C)

Самодельный вендинг-автомат с приемником монет: детали и сборка
Самодельный вендинг-автомат с приемником монет: детали и сборка

Блок питания ATX

Самодельный вендинг-автомат с приемником монет: детали и сборка

Обрежьте только нужные провода. Остальные оставьте в разъеме для других проектов.

ATX пины:

Самодельный вендинг-автомат с приемником монет: детали и сборка

Разделители полок и катушки

Разделители: В середине полки (6 1/2″) установите металлическую пластинку, согнутую в виде «^» (треугольник). Центрируйте над отметкой. Закрепите горячим клеем. Боковые направляющие — опционально.

Катушки: Найдите трубу диаметром 1 1/2″ (труба, баллончик, банка). Намотайте резиновую ленту по спирали, нанесите параллельные линии. На одной стороне отметьте 1″, потом каждые 2″. На другой — только каждые 2″. Навивайте провод, начиная с 1″ отметки, попадая в каждую линию на обеих сторонах — получится шаг 2″ между витками. Для конфет уменьшите шаг вдвое.

Наконец катушки надевайте на 3D-печатные колеса: сожмите катушку в кольцо, немного уменьшите диаметр, надежьте на колесо, зафиксируйте каплей горячего клея.

LED-подсветка

Самодельный вендинг-автомат с приемником монет: детали и сборка

«+» ленты → +12V на 12V шине макетки. «-» ленты → GND на 12V шине (не на схеме).

Задавайте вопросы — я обновлю инструкцию, чтобы проект стал максимально понятным!

Код

1. Вендинг-автомат БЕЗ смены цветов LED (Arduino)

#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
#include <Stepper.h>

#define ENABLE 10
#define DIRA 8
#define DIRB 9

int i;
int stepsPerRevolution = 2048;

const int button1Pin = A0;
const int button2Pin = A1;
const int button3Pin = A2;
const int button4Pin = A3;

Stepper myStepper0(stepsPerRevolution, 22, 26, 24, 28);
Stepper myStepper1(stepsPerRevolution, 23, 27, 25, 29);
Stepper myStepper2(stepsPerRevolution, 30, 34, 32, 36);
Stepper myStepper3(stepsPerRevolution, 31, 35, 33, 37);

void setup() {
  pinMode(button1Pin, INPUT);
  pinMode(button2Pin, INPUT);
  pinMode(button3Pin, INPUT);
  pinMode(button4Pin, INPUT);
  pinMode(ENABLE, OUTPUT);
  pinMode(DIRA, OUTPUT);
  pinMode(DIRB, OUTPUT);
  myStepper0.setSpeed(15);
  myStepper1.setSpeed(15);
  myStepper2.setSpeed(15);
  myStepper3.setSpeed(15);
  lcd.begin(16, 2);
  lcd.clear();
  lcd.setCursor(0, 0); lcd.print("Select your item");
  lcd.setCursor(0, 1); lcd.print(" #1 #2 #3 #4");
}

void loop() {
  int b1 = digitalRead(button1Pin);
  int b2 = digitalRead(button2Pin);
  int b3 = digitalRead(button3Pin);
  int b4 = digitalRead(button4Pin);
  digitalWrite(ENABLE, HIGH);
  for (i=0; i<5; i++);

  if ((b1 == LOW) && !(b2 == LOW)) {
    digitalWrite(DIRA, HIGH); digitalWrite(DIRB, LOW);
    lcd.clear(); lcd.setCursor(2,0); lcd.print("Dispensing");
    lcd.setCursor(3,1); lcd.print("Your Item");
    myStepper0.step(stepsPerRevolution);
    lcd.clear(); lcd.setCursor(2,0); lcd.print("Please take");
    lcd.setCursor(3,1); lcd.print("Your Item");
    delay(2500);
    lcd.setCursor(0,0); lcd.print("Button State 1");
    lcd.setCursor(2,1); lcd.print("1 2 3 or 4");
    digitalWrite(DIRA, LOW); digitalWrite(DIRB, LOW);
  }
  if ((b2 == LOW) && !(b1 == LOW)) {
    digitalWrite(DIRA, HIGH); digitalWrite(DIRB, LOW);
    lcd.clear(); lcd.setCursor(2,0); lcd.print("Dispensing");
    lcd.setCursor(3,1); lcd.print("Your Item");
    myStepper1.step(stepsPerRevolution);
    lcd.clear(); lcd.setCursor(2,0); lcd.print("Please take");
    lcd.setCursor(3,1); lcd.print("Your Item");
    delay(2500);
    lcd.setCursor(0,0); lcd.print("Button State 2");
    lcd.setCursor(2,1); lcd.print("1 2 3 or 4");
    digitalWrite(DIRA, LOW); digitalWrite(DIRB, LOW);
  }
  if ((b3 == LOW) && !(b4 == LOW)) {
    digitalWrite(DIRA, HIGH); digitalWrite(DIRB, LOW);
    lcd.clear(); lcd.setCursor(2,0); lcd.print("Dispensing");
    lcd.setCursor(3,1); lcd.print("Your Item");
    myStepper2.step(stepsPerRevolution);
    lcd.clear(); lcd.setCursor(2,0); lcd.print("Please take");
    lcd.setCursor(3,1); lcd.print("Your Item");
    delay(2500);
    lcd.setCursor(0,0); lcd.print("Button State 3");
    lcd.setCursor(2,1); lcd.print("1 2 3 or 4");
    digitalWrite(DIRA, LOW); digitalWrite(DIRB, LOW);
  }
  if ((b4 == LOW) && !(b3 == LOW)) {
    digitalWrite(DIRA, HIGH); digitalWrite(DIRB, LOW);
    lcd.clear(); lcd.setCursor(2,0); lcd.print("Dispensing");
    lcd.setCursor(3,1); lcd.print("Your Item");
    myStepper3.step(-stepsPerRevolution);
    lcd.clear(); lcd.setCursor(2,0); lcd.print("Please take");
    lcd.setCursor(3,1); lcd.print("Your Item");
    delay(2500);
    lcd.setCursor(0,0); lcd.print("Button State 4");
    lcd.setCursor(2,1); lcd.print("1 2 3 or 4");
    digitalWrite(DIRA, LOW); digitalWrite(DIRB, LOW);
  }
}

2. Вендинг-автомат С сменой цветов LED (C# / Arduino)

// ... аналогично, с добавлением RGB-ленты на пинах 38,39,40
// При нажатии кнопок проигрываются цветовые анимации через analogWrite
// Полный код в исходнике проекта

3. Полный код с приемником монет (C# / Arduino)

#include <LiquidCrystal.h>
#include <Stepper.h>

#define ENABLE 10
#define REDPIN 38
#define GREENPIN 39
#define BLUEPIN 40

const int coinpin = 21;
const int ledpin = 13;
const int targetcents = 100;

volatile int cents = 0;
int credits = 0;

int stepsPerRevolution = 2048;
const int button1Pin = A0, button2Pin = A1, button3Pin = A2, button4Pin = A3;

Stepper myStepper0(stepsPerRevolution, 22, 26, 24, 28);
Stepper myStepper1(stepsPerRevolution, 23, 27, 25, 29);
Stepper myStepper2(stepsPerRevolution, 30, 34, 32, 36);
Stepper myStepper3(stepsPerRevolution, 31, 35, 33, 37);

void setup() {
  attachInterrupt(digitalPinToInterrupt(coinpin), coinInterrupt, RISING);
  pinMode(button1Pin, INPUT); pinMode(button2Pin, INPUT);
  pinMode(button3Pin, INPUT); pinMode(button4Pin, INPUT);
  pinMode(ENABLE, OUTPUT);
  pinMode(REDPIN, OUTPUT); pinMode(GREENPIN, OUTPUT); pinMode(BLUEPIN, OUTPUT);
  myStepper0.setSpeed(15); myStepper1.setSpeed(15);
  myStepper2.setSpeed(15); myStepper3.setSpeed(15);
  lcd.begin(16, 2);
  lcd.clear(); lcd.setCursor(0,0); lcd.print("Select your item");
  lcd.setCursor(0,1); lcd.print(" #1 #2 #3 #4");
  analogWrite(REDPIN, 256); analogWrite(GREENPIN, 256); analogWrite(BLUEPIN, 256);
}

void loop() {
  if (cents >= targetcents) { credits++; cents -= targetcents; }
  lcd.clear(); lcd.setCursor(0,0); lcd.print(cents); lcd.setCursor(3,0); lcd.print("Coin Count");
  lcd.setCursor(0,1); lcd.print(credits); lcd.setCursor(3,1); lcd.print("credit earned");
  delay(1000);

  if (credits > 0) {
    int b1 = digitalRead(button1Pin), b2 = digitalRead(button2Pin);
    int b3 = digitalRead(button3Pin), b4 = digitalRead(button4Pin);

    if ((b1 == LOW) && !(b2 == LOW)) {
      digitalWrite(ENABLE, HIGH);
      analogWrite(REDPIN, 256);
      for (int b=256; b>0; b--) analogWrite(BLUEPIN, b);
      for (int g=256; g>0; g--) analogWrite(GREENPIN, g);
      for (int g=256; g>0; g--) analogWrite(GREENPIN, g);
      lcd.clear(); lcd.setCursor(2,0); lcd.print("Dispensing");
      lcd.setCursor(3,1); lcd.print("Your Item");
      myStepper0.step(stepsPerRevolution);
      lcd.clear(); lcd.setCursor(2,0); lcd.print("Please take");
      lcd.setCursor(3,1); lcd.print("Your Item");
      delay(2500);
      for (int b=0; b<256; b++) analogWrite(BLUEPIN, b);
      for (int g=0; g<256; g++) analogWrite(GREENPIN, g);
      digitalWrite(ENABLE, LOW);
      credits--; cents = 0;
    }
    // ... аналогичные блоки для кнопок 2, 3, 4 с их цветовыми анимациями
    // (код сокращен для краткости, полная версия в проекте)
  }
}

void coinInterrupt() {
  cents += 5;
  digitalWrite(ledpin, HIGH);
}

Схемы

Полная схема системы: ATX питание, моторы, LCD, LED, кнопки, контроллер.
Самодельный вендинг-автомат с приемником монет: детали и сборка

Производственный процесс

  1. ЭЭГ-аппараты: дизайн, производство и новые применения
  2. Эволюция и производство швейных машин: от изобретений XIX века к современной автоматизации
  3. Как работают автоматы с картошкой фри: закулисный обзор
  4. Автоматы с молоком: удобно, доступно, экологично
  5. Как вендинговые машины для картошки фри выдают горячую свежую картофель фри по запросу
  6. Вендинг-машины для лапши: как работают и что можно получить
  7. Инновационные вендинговые автоматы для чая, кофе и супа
  8. Автоматы свежей еды: горячая еда 언제 и где угодно
  9. Автоматы для продажи газированных напитков: полное руководство
  10. Раскрываем прибыль: бизнес-потенциал вендинговых автоматов с мороженым