Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Intelligenten Arduino-Getränkeautomaten bauen: Kompletter DIY-Mechatronik-Leitfaden

In diesem Projekt bauen wir einen Arduino-basierten DIY-Getränkeautomaten. Ich zeige den gesamten Prozess: MDF-Zuschnitt & Montage, Elektronik-Anschluss, Arduino-Code.

Video oder schriftliche Anleitung unten.

Überblick

Der Automat hat 4 Ausgabestationen mit 360°-Drehservos (Continuous Rotation), ein Träger-System mit Schrittmotoren (X/Y), LCD-Display, 4 Auswahlknöpfe und einen Münzdetektor.

Intelligenten Arduino-Getränkeautomaten bauen: Kompletter DIY-Mechatronik-Leitfaden

Das Trägersystem ist für einen reinen Automaten vielleicht überdimensioniert, aber es macht das Projekt komplexer und lehrreicher – ideal für Mechatronik-Studenten als Abschlussarbeit oder Arduino-Enthusiasten.

Automat bauen

MDF-Platten (8 mm) per Kreissäge zugeschnitten. Maße aus 3D-Modell (Thangs – Download & Browser-Ansicht).

Intelligenten Arduino-Getränkeautomaten bauen: Kompletter DIY-Mechatronik-Leitfaden
Intelligenten Arduino-Getränkeautomaten bauen: Kompletter DIY-Mechatronik-Leitfaden

Öffnungen mit Stichsäge (auch für kleinere Teile). Vorsicht: Gefährliche Maschinen!

Intelligenten Arduino-Getränkeautomaten bauen: Kompletter DIY-Mechatronik-Leitfaden

Montage: Holzleim & Schrauben, 90°-Winkelzwingen, Vorbohren, Senken, 3-mm-Schrauben. Auch F-Zwingen genutzt.

Intelligenten Arduino-Getränkeautomaten bauen: Kompletter DIY-Mechatronik-Leitfaden

Schienensystem

Aluminiumrohre (Horizontal: 16 mm Ø, 2×27 cm; Vertikal: 20 mm Ø, 3×45 cm) per Metallsäge. In 18-mm-Holzplatten Nuten mit Forstnerbohrer, Rohre befestigen.

Intelligenten Arduino-Getränkeautomaten bauen: Kompletter DIY-Mechatronik-Leitfaden

Schlitten: 21×21-cm-Holzplatten, 8-mm-Gewindestangen, 22-mm-Lager (horizontal: 16-mm-Lager). Schlitten zwischen Rohre – erst zu locker. Lösung: Rohrnuten erweitern, Querbohrungen, Gewindestange zieht Rohre näher zusammen → spielfrei.

Intelligenten Arduino-Getränkeautomaten bauen: Kompletter DIY-Mechatronik-Leitfaden
Intelligenten Arduino-Getränkeautomaten bauen: Kompletter DIY-Mechatronik-Leitfaden

Schienen wieder zerlegen für weitere Elemente: Links 5-mm-Bolt für Umlenkrolle (horizontaler Zahnriemen) + 2 Lager für vertikale Schiene. Rechts: Horizontaler Schrittmotor auf MDF-Bretter montiert, auf vertikalen Schlitten kleben/schrauben.

Intelligenten Arduino-Getränkeautomaten bauen: Kompletter DIY-Mechatronik-Leitfaden
Intelligenten Arduino-Getränkeautomaten bauen: Kompletter DIY-Mechatronik-Leitfaden

Behälter auf horizontalem Schlitten (Holzleim). Schienen mit Epoxid in Nuten, zusätzliches Holzbrett für Steifigkeit. In vertikale Schienen einsetzen, fixieren. Schlitten & Schienen laufen hervorragend.

Intelligenten Arduino-Getränkeautomaten bauen: Kompletter DIY-Mechatronik-Leitfaden
Intelligenten Arduino-Getränkeautomaten bauen: Kompletter DIY-Mechatronik-Leitfaden

Horizontaler Zahnriemen: Länge messen, zuschneiden, mit Kabelbinder am Schlitten. Vertikaler Schrittmotor oben am Automaten (MDF & Schrauben), unten Umlenkrolle, Zahnriemen analog.

Intelligenten Arduino-Getränkeautomaten bauen: Kompletter DIY-Mechatronik-Leitfaden

Ausgabeeinheiten

Helix-Spirale aus 3-mm-Draht (um 7-cm-Sprühdose gewickelt). Mit Heißkleber an 360°-Servo (DS04-NFC) kleben.

Intelligenten Arduino-Getränkeautomaten bauen: Kompletter DIY-Mechatronik-Leitfaden
Intelligenten Arduino-Getränkeautomaten bauen: Kompletter DIY-Mechatronik-Leitfaden

Frontplatte

Tür mit Scharnieren, Magnetfang. 5-mm-Acryl für großes Fenster, dünnes Alublech für rechte Öffnung (4 Knöpfe, Münzeinwurf, LCD). Bohrer & Metallsäge für Ausschnitte. Elektronik auf Alublech, dann an Tür (5-mm-Schrauben).

Intelligenten Arduino-Getränkeautomaten bauen: Kompletter DIY-Mechatronik-Leitfaden

Zwei Mikroschalter für Startposition des Trägers. Münzführung (geklebt) leitet Münze nach unten. Münzdetektor = IR-Näherungssensor (positives Signal bei Münzdurchlauf).

Intelligenten Arduino-Getränkeautomaten bauen: Kompletter DIY-Mechatronik-Leitfaden

Schaltplan

Intelligenten Arduino-Getränkeautomaten bauen: Kompletter DIY-Mechatronik-Leitfaden

12 V Netzteil (≥2 A) für Schrittmotoren & LED-Streifen. Buck-Converter (LM2596) auf 5 V für Servos, LCD, Sensoren, Buttons. Servos per PWM, Schrittmotoren per A4988-Treiber. Buttons & Mikroschalter an GND & Digitalpins (interne Pull-Ups).

Komponenten-Links:

  • DC-DC LM2596 Buck Converter
  • 16×2 LCD
  • 360° Continuous Servo (DS04-NFC)
  • NEMA 17 Schrittmotor
  • A4988 Treiber
  • IR-Näherungssensor
  • Taster
  • Mikro-Endschalter
  • Arduino Board

Verkabelung mit Jumper-Wires (etwas unordentlich, aber funktionsfähig). Zum Schluss LED-Streifen an Tür für Innenbeleuchtung.

Intelligenten Arduino-Getränkeautomaten bauen: Kompletter DIY-Mechatronik-Leitfaden

Arduino-Code

Code für dieses Projekt (Beschreibung folgt).

/* DIY Vending Machine - Arduino Mechatronics Project
   by Dejan Nedelkovski, www.HowToMechatronics.com */
#include <LiquidCrystal.h>
#include <Servo.h>
LiquidCrystal lcd(27, 26, 25, 24, 23, 22);
Servo servo1, servo2, servo3, servo4; // DS04-NFC Motoren

// Schrittmotor-Pins
#define dirPinVertical 0
#define stepPinVertical 1
#define dirPinHorizontal 2
#define stepPinHorizontal 3
#define coinDetector 9
#define button1 13
#define button2 12
#define button3 11
#define button4 10
#define microSwitchV 15
#define microSwitchH 14
int buttonPressed;

void setup() {
  lcd.begin(16, 2);
  servo1.attach(4); servo2.attach(5); servo3.attach(6); servo4.attach(7);
  pinMode(dirPinVertical, OUTPUT); pinMode(stepPinVertical, OUTPUT);
  pinMode(dirPinHorizontal, OUTPUT); pinMode(stepPinHorizontal, OUTPUT);
  pinMode(coinDetector, INPUT);
  // Pull-Ups für Buttons & Mikroschalter
  pinMode(button1, INPUT_PULLUP); pinMode(button2, INPUT_PULLUP);
  pinMode(button3, INPUT_PULLUP); pinMode(button4, INPUT_PULLUP);
  pinMode(microSwitchV, INPUT_PULLUP); pinMode(microSwitchH, INPUT_PULLUP);

  // Vertikale Startposition (oben)
  digitalWrite(dirPinVertical, HIGH);
  while (true) {
    if (digitalRead(microSwitchV) == LOW) { moveUp(70); break; }
    digitalWrite(stepPinVertical, HIGH); delayMicroseconds(300);
    digitalWrite(stepPinVertical, LOW); delayMicroseconds(300);
  }
  // Horizontale Startposition (links)
  digitalWrite(dirPinHorizontal, LOW);
  while (true) {
    if (digitalRead(microSwitchH) == LOW) { moveLeft(350); break; }
    digitalWrite(stepPinHorizontal, HIGH); delayMicroseconds(300);
    digitalWrite(stepPinHorizontal, LOW); delayMicroseconds(300);
  }
}

void loop() {
  lcd.clear(); lcd.setCursor(0,0); lcd.print("Insert a coin!");
  while (true) { if (digitalRead(coinDetector) == LOW) break; }
  delay(10);
  lcd.clear(); lcd.setCursor(0,0); lcd.print("Select your item");
  lcd.setCursor(0,1); lcd.print(" 1, 2, 3 or 4?");
  while (true) {
    if (digitalRead(button1) == LOW) { buttonPressed = 1; break; }
    if (digitalRead(button2) == LOW) { buttonPressed = 2; break; }
    if (digitalRead(button3) == LOW) { buttonPressed = 3; break; }
    if (digitalRead(button4) == LOW) { buttonPressed = 4; break; }
  }
  lcd.clear(); lcd.setCursor(0,0); lcd.print("Delivering...");
  switch (buttonPressed) {
    case 1: // Position 1 (oben links)
      moveUp(4900); delay(200); moveLeft(1700); delay(300);
      servo1.writeMicroseconds(2000); delay(950); servo1.writeMicroseconds(1500); delay(500);
      moveRight(1700); delay(200); moveDown(4900); break;
    case 2: // Position 2 (oben rechts)
      moveUp(4900); delay(200);
      servo2.writeMicroseconds(2000); delay(950); servo2.writeMicroseconds(1500); delay(500);
      moveDown(4900); break;
    case 3: // Position 3 (unten links)
      moveUp(2200); delay(200); moveLeft(1700); delay(300);
      servo3.writeMicroseconds(2000); delay(950); servo3.writeMicroseconds(1500); delay(500);
      moveRight(1700); delay(200); moveDown(2200); break;
    case 4: // Position 4 (unten rechts)
      moveUp(2200); delay(200);
      servo4.writeMicroseconds(2000); delay(950); servo4.writeMicroseconds(1500); delay(500);
      moveDown(2200); break;
  }
  lcd.clear(); lcd.setCursor(0,0); lcd.print("Item delivered!"); delay(2000);
}

// Benutzerdefinierte Funktionen für Schrittmotor-Bewegungen
void moveUp(int steps) {
  digitalWrite(dirPinVertical, LOW);
  for (int x=0; x

Code-Erklärung

Bibliotheken: LiquidCrystal, Servo. LCD-Pins, 4 Servos, Schrittmotor-Pins, Münzdetektor, 4 Buttons, 2 Mikroschalter.

Setup: Pin-Modes, Pull-Ups für Buttons/Schalter (HIGH = offen, LOW = gedrückt). Träger in Startposition fahren (Mikroschalter).

// Vertikale Startposition
digitalWrite(dirPinVertical, HIGH);
while (true) {
  if (digitalRead(microSwitchV) == LOW) { moveUp(70); break; }
  digitalWrite(stepPinVertical, HIGH); delayMicroseconds(300);
  digitalWrite(stepPinVertical, LOW); delayMicroseconds(300);
}
// Horizontale Startposition
digitalWrite(dirPinHorizontal, LOW);
while (true) {
  if (digitalRead(microSwitchH) == LOW) { moveLeft(350); break; }
  digitalWrite(stepPinHorizontal, HIGH); delayMicroseconds(300);
  digitalWrite(stepPinHorizontal, LOW); delayMicroseconds(300);
}

Hauptloop: „Münze einwerfen“ anzeigen, warten bis IR-Sensor LOW (Münze erkannt). Dann „Artikel wählen“, auf Tastendruck warten.

while (true) {
  if (digitalRead(coinDetector) == LOW) break;
}
while (true) {
  if (digitalRead(button1) == LOW) { buttonPressed=1; break; }
  // ... button2,3,4 ...
}

„Ausgabe läuft...“, dann Switch-Case für gewählten Artikel. Träger per Custom-Funktionen (moveUp, moveLeft, etc.) zur Position fahren, entsprechendes Servo 950 ms drehen (Helix einmal drehen), Träger zurück zur Startposition.

// Beispiel Case 1
moveUp(4900); delay(200); moveLeft(1700); delay(300);
servo1.writeMicroseconds(2000); delay(950); servo1.writeMicroseconds(1500); delay(500);
moveRight(1700); delay(200); moveDown(4900);

Schrittmotortreiber auf Viertel-Schritt (Quarter Step) → 4900 Steps für oberste Position (empirisch ermittelt). Helix-Drehung: 2000 µs = drehen, 1500 µs = Stop (Continuous Servo). Werte können je Motor variieren.

Am Ende „Artikel ausgegeben!“ anzeigen.

Einfach, oder? Viel Spaß beim Nachbauen! Fragen in den Kommentaren, Arduino-Projektsammlung ansehen.


Herstellungsprozess

  1. Automaten: Eine 36,6-Milliarden-Dollar-Industrie in den USA
  2. DIY Hausaufgaben-Schreibmaschine zu Hause bauen
  3. DIY Photoshop-Steuerkonsole mit Arduino Nano RP2040 bauen
  4. Monitor-Ambilight selbst bauen mit Arduino Nano & WS2812B LEDs
  5. Ultraschall-Schwebegerät mit Arduino bauen – Akustische Levitation Schritt für Schritt
  6. Intelligentes Voltmeter mit Arduino & Smartphone bauen – Einfaches DIY-Projekt
  7. DIY Infrarot-Herzschlag-Sensor mit Arduino: Schritt-für-Schritt-Anleitung
  8. Arduino Tic Tac Toe mit MAX7219 LED-Matrix und Karton-Gehäuse
  9. DIY-Voltmeter mit Arduino und Nokia 5110 Display – Schritt-für-Schritt-Anleitung
  10. Digitale Uhr mit Arduino & Endlicher Automat (State Machine)