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
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.
Regelstrecke 2 Regler-Code-Matlab


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

  • 1. Mangelnde Kommunikation zu Beginn: Zu Projektbeginn wurde festgestellt, dass die Kommunikation innerhalb des Teams unzureichend war.Der Mangel an klaren Absprachen und einem koordinierten Vorgehen führte zu einem zunächst isolierten Arbeiten.
  • 2. Alleingang statt Teamarbeit: Insbesondere zu Projektbeginn dominierte der Alleingang, anstatt im Team zu arbeiten. Dies führte zu einem unkoordinierten Ansatz, der die Effizienz des gesamten Projekts beeinträchtigte.
  • 3. Verbesserung durch Teamarbeit: Im Verlauf des Projekts konnte jedoch eine positive Veränderung festgestellt werden, als das Team begann, besser zusammenzuarbeiten. Dies trug dazu bei, die Kommunikationslücken zu überbrücken und den Gesamtprozess zu optimieren.
  • 4. Verzögerung durch verspätete Einigung: Leider führte die anfängliche Uneinigkeit zu einer verzögerten Fertigstellung des Projekts. Die Zeit, die benötigt wurde, um zu gemeinsamen Entscheidungen zu gelangen, erwies sich als kritischer Faktor, der das Projekt letztendlich beeinträchtigte.
  • 5.Deutliche Verzögerungen durch Ausfälle: Die Ausfälle im Projektverlauf führten zu erheblichen Verzögerungen. Unvorhergesehene Ereignisse und Ressourcenengpässe hatten direkte Auswirkungen auf den Zeitplan und erforderten eine Anpassung der strategischen Planung.
  • 6.Lessons Learned und zukünftige Verbesserungen: Basierend auf den gesammelten Erfahrungen, haben wir erkannt, dass eine verbesserte Kommunikation und ein frühzeitiger Fokus auf Teamarbeit entscheidend sind. Eine detailliertere Vorbereitung und eine optimierte Zeitplanung sollten Schwerpunkte bei zukünftigen Projekten sein, um eine schnellere und erfolgreichere Umsetzung zu gewährleisten. Der bewusste Umgang mit unvorhergesehenen Ausfällen und eine flexiblere Anpassung an Veränderungen sollten ebenfalls in die Projektstrategie integriert werden, um potenzielle Verzögerungen zu minimieren.

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)