Dosenautomat

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autor: Bartos Schwichtenberg & Berta Nissen
Betreuer: Marc Ebmeyer


Einleitung

Das Projekt befasst sich mit der Entwicklung eines "Dosenautomaten mit Dreifachauswahl" im Rahmen des Studiengangs Ba. Mechatronik im 5. Semester. Dieser innovative Automat zeichnet sich durch drei wesentliche Komponenten aus: 1. drei Aktuatoren (Motoren zur Fachauswahl), 2. Sensorik Nr. 1 (Tasteneingabe durch Benutzer), 3. Sensorik Nr. 2 (Beleuchtung für Fachentnahme). Das System funktioniert mit einem(r) Chip/Chipkarte ohne Guthaben und soll der Benutzers erkannt werden. Nach Erkennen wird das Bedienfeld entsperrt. Die Artikelwahl erfolgt über das Bedienfeld des Automaten. Jede Taste ist nur einem Servo zugewiesen und dieser Servo ist nur einem Artikelplatz. Eine Beleuchtung im Ausgabeschacht gibt dem Benutzer den Hinweis, den Artikel aus dem Schacht zu nehmen.

Anforderungen

Tabelle 1: Anforderung an die Komponente
ID Inhalt Ersteller Datum Geprüft von Datum
1 Das Chiplesegerät muss den Chip/Chipkarte erkennen und das Bedienfeld des Automaten entsperren (Benutzererkennung). Bartos Schwichtenberg 11.10.2023 --- **.01.2024
2 Das LCD-Display muss Bereitschaftsbetrieb anzeigen (Begrüßung). Bartos Schwichtenberg 11.10.2023 --- **.01.2024
3 Die Taste 1 steuert nur den Servo 1 an (Artikel von Platz 1). Bartos Schwichtenberg 11.10.2023 --- **.01.2024
4 Die Taste 2 steuert nur den Servo 2 an (Artikel von Platz 2). Bartos Schwichtenberg 11.10.2023 --- **.01.2024
5 Die Taste 3 steuert nur den Servo 3 an (Artikel von Platz 3). Bartos Schwichtenberg 11.10.2023 --- **.01.2024
6 Servo 1 muss zwischen 0° und 40° schwenken. Bartos Schwichtenberg 11.10.2023 --- **.01.2024
7 Servo 2 muss zwischen 0° und 40° schwenken. Bartos Schwichtenberg 11.10.2023 --- **.01.2024
8 Servo 3 muss zwischen 0° und 40° schwenken. Bartos Schwichtenberg 11.10.2023 --- **.01.2024
9 Beleuchtung im Schacht aufblinken/aufleuchten (bis der Artikel entnommen ist). Bartos Schwichtenberg 11.10.2023 --- **.01.2024

Funktionaler Systementwurf/Technischer Systementwurf

```markdown

Komponentenspezifikation

Tabelle 2: Liste aller Komponenten (in Bearbeitung)
ID Komponente Bezeichnung Abbildung Link Preis
1 Microcontroller Arduino UNO Rev3 [A000066] https://www.amazon.de/Arduino-A000066-UNO-Rev3/dp/B008GRTSV6/ref=sr_1_8?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&keywords=arduino&qid=1705309800&sr=8-8 24,28€
2 Tastenfeld HALJIA 2 Stücke 1x4 Matrix 4 Tasten Membran Switch Control Tastatur für Arduino https://amzn.eu/d/4NuWy0d 7,99€
3 LCD-Display AZ-Delivery HD44780 1602 LCD Modul Display Bundle mit I2C Schnittstelle 2x16 Zeichen (mit grünem Hintergrund)

https://www.conrad.de/de/p/az-delivery-hd44780-1602-lcd-modul-display-bundle-mit-i2c-schnittstelle-2x16-zeichen-mit-gruenem-hintergrund-854720767.html 5,98€
4 LCD-Display-Halterung Einbaurahmen bezel LCD 2x16 16x2 Arduino 1602 Yver Inc. FF1602XS Extra Small https://www.ebay.de/itm/403572412958?mkcid=16&mkevt=1&mkrid=707-127634-2357-0&ssspo=othh7_s5qtq&sssrc=4429486&ssuid=x3WGzMX3Tbu&var=673533160861&widget_ver=artemis&media=COPY 6,30€
5 Netzteil Xilence XP400R6 PC Netzteil, 400W Peak Power, ATX https://www.conrad.de/de/p/xilence-xp400r6-pc-netzteil-400w-peak-power-atx-2892733.html#productTechData 29,80€
6 Kühlsystem Kühler inkl Lüfter für Peltierelement - Kühlsystem Kit 90mm https://funduinoshop.com/elektronische-module/sonstige/peltierelemente/kuehler-inkl-luefter-fuer-peltierelement-kuehlsystem-kit-90mm 9,90€
7 RFID-Gerät mit Chip AZ-Delivery RFID Kit RC522 mit Reader, Chip und Card für Raspberry Pi und Co. (13,56MHz) https://www.conrad.de/de/p/az-delivery-rfid-kit-rc522-mit-reader-chip-und-card-fuer-raspberry-pi-und-co-13-56mhz-850038438.html 5,49€
8 RFID-Halter Einbaurahmen Gehäuse für Arduino RFID Modul RC522 Yver Inc. https://www.ebay.de/itm/403574423895?mkcid=16&mkevt=1&mkrid=707-127634-2357-0&ssspo=othh7_s5qtq&sssrc=4429486&ssuid=x3WGzMX3Tbu&var=673534476888&widget_ver=artemis&media=COPY 7,10€
9 Netzbuchse Eingangsmodul, Wippenschalter 250V 10A YIXIS 10A 250V Netzbuchse Eingangsmodul, Wippenschalter https://www.amazon.de/dp/B09TXPS559?psc=1&ref=ppx_yo2ov_dt_b_product_details 7,59€
10 Netzstecker Kaltgerätestecker InLine Netzkabel (Schutzkontakt gerade auf C13 Kaltgerätestecker Länge: 1,80m) - in schwarz https://www.conrad.de/de/p/intos-electronic-inline-netzkabel-schutzkontakt-gerade-auf-c13-kaltgeraetestecker-laenge-1-80m-in-schwarz-800403474.html 3,39€
11 Jumper / Dupont Kabel Set 40pin Jumper / Dupont Kabel Set, je 1x F-F / M-M / F-M, 20cm https://www.conrad.de/de/p/40pin-jumper-dupont-kabel-set-je-1x-f-f-m-m-f-m-20cm-817296700.html 5,38€
12 Gehäuselüfter StarTech.com 80mm Gehäuselüfter - Lüfter 8cm für PC Gehäuse mit 3-pin Molex Stecker (80mmx80mmx25mm) https://www.conrad.de/de/p/startech-com-

80mm-gehaeuseluefter-luefter-8cm-fuer-pc-gehaeuse-mit-3-pin-molex-stecker-80mmx80mmx25mm-806138943.html || 13,15€

13 Servomotor MG 90S Metallgetribe MicroServo https://www.amazon.de/dp/B0BTYRBBFY?psc=1&ref=ppx_yo2ov_dt_b_product_details 17,99€
14 Temperatursensor Greluma DC 12V Temperaturregler Programmierbar -50 bis 110 °C https://funduinoshop.com/elektronische-module/sensoren/temperatur/temperatursensor-tmp36gt9z.html 2,89€
15 Voltmeter Amperemeter Greluma 2 Stk 0,28" LED Voltmeter Amperemeter https://www.amazon.de/dp/B08NTMX62K?psc=1&ref=ppx_yo2ov_dt_b_product_details 9,99€
16 Verbrauchsmaterial Holz-OSB3 Platte mini ungeschliffen 1250x625x15 mm 3x Stück https://www.hornbach.de/p/osb3-platte-mini-ungeschliffen-1250x625x15-mm/10587891/ 7,40€
17 Verbrauchsmaterial Plexiglas Gutta Hobbyglas 2x500x1000 mm glatt klar https://www.hornbach.de/p/hobbyglas-2x500x1000-mm-glatt-klar/1477812/ 15,40€
18 Verbrauchsmaterial HECO-TOPIX-plus Holzschraube Senkkopf mit Frästaschen TX Teilgewinde 4,5x35 mm Edelstahl A2 https://www.hornbach.de/p/heco-topix-plus-holzschraube-senkkopf-mit-fraestaschen-tx-teilgewinde-4-5x35-mm-edelstahl-a2-200-stueck/10434659/?searchTerm=HECO-TOPIX-plus+Holzschraube+Senkkopf+mit+Fr%C3%A4staschen+TX+Teilgewinde+4%2C5x35+mm+Edelstahl+A2 23,20€
19 Verbrauchsmaterial Kabel https://www.hornbach.de/p/mantelleitung-nym-j-5x25-mm-grau-meterware/6471650/ 19,04€
20 Verbrauchsmaterial Lötzinn https://www.conrad.de/de/p/logilink-loetdraht-o-1-mm-bleifrei-0-7-kupfer-12-5g-spenderbox-808011504.html 1,55€
21 Verbrauchsmaterial Schrumpfschlauch https://www.hornbach.de/p/steinel-schrumpfschlauch-set-iii-4-0-12-0-mm-20-stueck/7631923/ 4,95€
22 Verbrauchsmaterial Scharnier (schmal) https://www.hornbach.de/p/schmales-scharnier-50x30-mm-edelstahl-matt-10-stueck/5863118/ 14,95€
23 Verbrauchsmaterial Montageband https://www.hornbach.de/p/pattex-montageband-superstark-weiss-19-mm-x-1-5-m/10401735/ 6,89€
24 Verbrauchsmaterial Lüsterklemme 1,5-2,5 mm² 12-polig 2 Stück https://www.hornbach.de/p/luesterklemme-1-5-2-5-mm-12-polig-2-stueck/8266981/ 2,25€
25 Verbrauchsmaterial MATERIAL Datei:MATERIAL LINK PREIS€

Umsetzung (HW/SW)

Gehäuse

Die Abbildung 4a, 4b, 5a und 5b zeigt das Gehäuse. Es ist aus Holzplatten zusammen geleimt und verschraubt. Als Schutz dient auf der Vorderseite eine Plexiglasscheibe. Zur einfachen Auffüllung ist auf der Rückseite ein Eingabefach. Die Steuerung der Aktuatoren, Sensoren, Mikrokontroller ist im Gehäuse eingebaut. Die Bedienelektronik befindet sich auf der Vorderseite des Geräts.


Abb. 4a Gehäuse Vorderseite
Abb. 4b Gehäuse Rückseite
Abb. 4c Gehäuse Seitenansicht re.
Abb. 4d Gehäuse Seitenansicht li.

Schaltung

Zum Einsatz kommt der Mikrokontroller.


Regelstrecke Eingabegeräte / Ausgabegeräte Platzhalter
Eingabegeräte:
  • RFID-Chip, zuständig für die Benutzererkennung und die Freischaltung des Tastenfeldes.
  • Tastenfeld, dient zur Auswahl der Artikel bzw. eines Abbruchs.

Ausgabegeräte:

  • LCD-Display, das LCD-Display gibt eine Begrüßung, den Status und die Artikelaswahl an.
  • Servo-Motor, dieser dient zur Ausgabe des ausgewählten Artikels.

Platzhalter


Programablaufplan (PAP) Programmcode

Es wird ein Code in auf den Mikrocontroller geschrieben.

Programmcode in Bearbeitung.
//Bartos Schwichtenberg für Projekt der HSHL, Projektname: Dosenautomat                            
                       //Bibliotheken
#include <Servo.h>          //Bibliothek <Servo.h> hinzugefügt

// Initialisierung der Pins
int blueLed = 6;                    //blaue LED ist auf DigitalPort 6
int redLed = 7;                     //rote LED ist auf DigitalPort 8
int yellowLed = 8;                  //gelbe LED ist auf DigitalPort 8
int greenLed = 9;                   //grüne LED ist auf DigitalPort 9
int motor1 = 10;                    //Servo 1 ist auf DigitalPort 10
int motor2 = 11;                    //Servo 2 ist auf DigitalPort 11
int motor3 = 12;                    //Servo 3 ist auf DigitalPort 12
int button0 = 2;                    //Start-Knopf
int button1 = 3;                    // Taste 1 an Port 3
int button2 = 4;                    // Taste 2 an Port 4
int button3 = 5;                    // Taste 1 an Port 5

// Initialisierung der Servos
Servo servo1;                       //Servo ist ein servo1
Servo servo2;                       //Servo ist ein servo2
Servo servo3;                       //Servo ist ein servo3

                              //void setup Anfang
void setup() {
  pinMode(blueLed, OUTPUT);         //PinMode ist Ausgang
  pinMode(redLed, OUTPUT);          //PinMode ist Ausgang
  pinMode(yellowLed, OUTPUT);       //PinMode ist Ausgang
  pinMode(greenLed, OUTPUT);        //PinMode ist Ausgang
  pinMode(motor1, OUTPUT);          //PinMode ist Ausgang
  pinMode(motor2, OUTPUT);          //PinMode ist Ausgang
  pinMode(motor3, OUTPUT);          //PinMode ist Ausgang
  pinMode(button0, INPUT_PULLUP);   //button0 ist auf PULLUP
  pinMode(button1, INPUT_PULLUP);   //button1 ist auf PULLUP
  pinMode(button2, INPUT_PULLUP);   //button2 ist auf PULLUP
  pinMode(button3, INPUT_PULLUP);   //button3 ist auf PULLUP

  Serial.begin(9600);               //Serial print zur Kontrolle

  digitalWrite(blueLed, HIGH);     //blaue Led ist an
  digitalWrite(redLed, LOW);       //rote Led ist aus
  digitalWrite(yellowLed, LOW);    //gelbe Led ist aus
  digitalWrite(greenLed, LOW);     //grün Led ist aus
  digitalWrite(motor1, LOW);       //motor1 ist aus
  digitalWrite(motor2, LOW);       //motor2 ist aus
  digitalWrite(motor3, LOW);       //motor3 ist aus

  servo1.attach(motor1);           //servo1->motor1
  servo2.attach(motor2);           //servo2->motor2
  servo3.attach(motor3);           //servo3->motor3

  servo1.write(0);                 //motor1 ist auf Position 0
  servo2.write(0);                 //motor2 ist auf Position 0
  servo3.write(0);                 //motor3 ist auf Position 0
}
                              //void setup Ende


                              //void loop Anfang
void loop() {
  if (digitalRead(button1) == LOW) {      //Taste auf LOW prüfen
    if (servo1.read() != 0) {             //servo read !=0
      servo1.write(0);                    //Motor auf 0 stellen
      delay(1000);                        //1000ms = 1Sek Pause
    }
      digitalWrite(motor1, HIGH);         //Motor auf 1 stellen
    digitalWrite(redLed, HIGH);           //LED an
    delay(1000);                          //1000ms = 1Sek Pause
    digitalWrite(motor1, LOW);            //Motor auf 0 stellen
    delay(1000);                          //1000ms = 1Sek Pause
    servo1.write(180);                    //Motor auf 180°
    delay(1000);                          //1000ms = 1Sek Pause
    servo1.write(0);                      //Motor auf 0 stellen
    delay(500);                           //500ms = 0,5Sek Pause
    digitalWrite(redLed, LOW);            //LED aus
    Serial.println("Servo 1 bewegt");     //serial print ob servo/motor sich bewegt
  }
  if (digitalRead(button2) == LOW) {      //Taste auf LOW prüfen
    if (servo2.read() != 0) {             //servo read !=0
      servo2.write(0);                    //Motor auf 0 stellen
      delay(1000);                        //1000ms = 1Sek Pause
    }
    digitalWrite(motor2, HIGH);           //Motor auf 1 stellen
    digitalWrite(yellowLed, HIGH);        //LED an
    delay(1000);                          //1000ms = 1Sek Pause
    digitalWrite(motor2, LOW);            //Motor auf 0 stellen
    delay(1000);                          //1000ms = 1Sek Pause
    servo2.write(180);                    //Motor auf 180°
    delay(1000);                          //1000ms = 1Sek Pause
    servo2.write(0);                      //Motor auf 0 stellen
    delay(500);                           //500ms = 0,5Sek Pause
digitalWrite(yellowLed, LOW);             //LED aus
    Serial.println("Servo 2 bewegt");     //serial print ob servo/motor sich bewegt
  }
  if (digitalRead(button3) == LOW) {      //Taste auf LOW prüfen
    if (servo3.read() != 0) {             //servo read !=0
      servo3.write(0);                    //Motor auf 0 stellen
      delay(1000);                        //1000ms = 1Sek Pause
    }
    digitalWrite(motor3, HIGH);           //Motor auf 1 stellen
    digitalWrite(greenLed, HIGH);         //LED an
    delay(1000);                          //1000ms = 1Sek Pause
    digitalWrite(motor3, LOW);            //Motor auf 0 stellen
    delay(1000);                          //1000ms = 1Sek Pause
    servo3.write(180);                    //Motor auf 180°
    delay(1000);                          //1000ms = 1Sek Pause
    servo3.write(0);                      //Motor auf 0 stellen
    delay(500);                           //500ms = 0,5Sek Pause
    digitalWrite(greenLed, LOW);          //LED aus
    Serial.println("Servo 3 bewegt");     //serial print ob servo/motor sich bewegt
  }

  if (servo1.read() == 0 && servo2.read() == 0 && servo3.read() == 0) {   //servo read ==0 prüfen
    digitalWrite(blueLed, HIGH);      //LED an
    digitalWrite(redLed, LOW);        //LED aus
    digitalWrite(yellowLed, LOW);     //LED aus
    digitalWrite(greenLed, LOW);      //LED aus
  } else {                            //oder
    digitalWrite(blueLed, LOW);       //LED aus
    digitalWrite(redLed, LOW);        //LED aus
    digitalWrite(yellowLed, LOW);     //LED aus
    digitalWrite(greenLed, LOW);      //LED aus
  }
                              // void loop Anfang
}                             // Programmm-Ende

Komponententest

Tabelle 3: Test der Anforderungen (in Bearbeitung)
ID Inhalt Getestet von Datum
1 Der Automat muss mit 5V und 12V Spannung versorgt werden. noch offen **.01.2024
2 Die LCD-Messung soll aufleuchten, damt die Spannungsversorgung angezeigt wird. noch offen **.01.2024
3 LCD-Display muss aufleuchten und vorgegebenen Text ausgeben. noch offen **.01.2024
4 Chiplesegerät muss den korrekten Chip erkennen. noch offen **.01.2024
5 LCD-Display zeigt die Auswahlbereitschaft an. noch offen **.01.2024
6 Durch Tastenauswahl muss tastenabhöngig der richtige Motor (Servo) angesteuert werden. noch offen **.01.2024
7 Informierung des Benutzer zur Entnehmung der Ware (LED). noch offen **.01.2024

Tabelle 3 zeigt, welche Anforderung vom welchen Bearbeiter getestet wurde. (in Bearbeitung)

Ergebnis

Platzhalter für den Artikel "Ergebnise"

Zusammenfassung

Platzhalter für den Artikel "Zusammenfassung"

Lessons Learned

Platzhalter für den Artikel "Lessons Learned" (wird stätig ergänzt und im Projektanschluss zum Text formatiert)

  • Wir haben gelernt, das man mit einer besser koordenierten Vorbereitung, Herangehensweise an ein Projekt, schneller und erfolgreicher ist.

Projektunterlagen

Projektplan

Projektdurchführung

Platzhalter für den Artikel "Projektdurchführung"

YouTube Video

Platzhalter für den Artikel "YouTube Video"

Weblinks / Grafiklinks

Grafiken von Weblinks:

  • Platzhalter für den Artikel "Weblinks"

Grafiken von Materiallinks:

Literatur

Platzhalter für den Artikel "Literatur"



→ zurück zur Übersicht: WS 22/23: Angewandte Elektrotechnik (BSE)