Dosenautomat: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
 
(12 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 25: Zeile 25:
| Bartos Schwichtenberg
| Bartos Schwichtenberg
| 11.10.2023
| 11.10.2023
| ---
| Berta Nissen
| **.01.2024
| 17.01.2024
|-
|-
| 2
| 2
Zeile 32: Zeile 32:
| Bartos Schwichtenberg
| Bartos Schwichtenberg
| 11.10.2023
| 11.10.2023
| ---
| Berta Nissen
| **.01.2024
| 17.01.2024
|-
|-
| 3
| 3
Zeile 39: Zeile 39:
| Bartos Schwichtenberg
| Bartos Schwichtenberg
| 11.10.2023
| 11.10.2023
| ---
| Berta Nissen
| **.01.2024
| 17.01.2024
|-
|-
| 4
| 4
Zeile 46: Zeile 46:
| Bartos Schwichtenberg
| Bartos Schwichtenberg
| 11.10.2023
| 11.10.2023
| ---
| Berta Nissen
| **.01.2024
| 17.01.2024
|-
|-
| 5
| 5
Zeile 53: Zeile 53:
| Bartos Schwichtenberg
| Bartos Schwichtenberg
| 11.10.2023
| 11.10.2023
| ---
| Berta Nissen
| **.01.2024
| 17.01.2024
|-
|-
| 6
| 6
| Servo 1 muss zwischen 0° und 40° schwenken.
| Servo 1 muss zwischen 0° und 35° schwenken.
| Bartos Schwichtenberg
| Bartos Schwichtenberg
| 11.10.2023
| 11.10.2023
| ---
| Berta Nissen
| **.01.2024
| 17.01.2024
|-
|-
| 7
| 7
| Servo 2 muss zwischen 0° und 40° schwenken.
| Servo 2 muss zwischen 0° und 35° schwenken.
| Bartos Schwichtenberg
| Bartos Schwichtenberg
| 11.10.2023
| 11.10.2023
| ---
| Berta Nissen
| **.01.2024
| 17.01.2024
|-
|-
| 8
| 8
| Servo 3 muss zwischen 0° und 40° schwenken.
| Servo 3 muss zwischen 0° und 35° schwenken.
| Bartos Schwichtenberg
| Bartos Schwichtenberg
| 11.10.2023
| 11.10.2023
| ---
| Berta Nissen
| **.01.2024
| 17.01.2024
|-
|-
| 9
| 9
| Beleuchtung im Schacht aufblinken/aufleuchten (bis der Artikel entnommen ist).
| Beleuchtung im Schacht aufleuchten.
| Bartos Schwichtenberg
| Bartos Schwichtenberg
| 11.10.2023
| 11.10.2023
| ---
| Berta Nissen
| **.01.2024
| 17.01.2024
|}
|}


Zeile 159: Zeile 159:
| 24|| Verbrauchsmaterial || Lüsterklemme 1,5-2,5 mm² 12-polig 2 Stück|| [[Datei: LuesterklemmeDAM.jpg|150px|rahmenlos]] || <small><small>https://www.hornbach.de/p/luesterklemme-1-5-2-5-mm-12-polig-2-stueck/8266981/</small></small> || 2,25€
| 24|| Verbrauchsmaterial || Lüsterklemme 1,5-2,5 mm² 12-polig 2 Stück|| [[Datei: LuesterklemmeDAM.jpg|150px|rahmenlos]] || <small><small>https://www.hornbach.de/p/luesterklemme-1-5-2-5-mm-12-polig-2-stueck/8266981/</small></small> || 2,25€
|-
|-
| 25|| Verbrauchsmaterial || MATERIAL|| [[Datei: MATERIAL |150px|rahmenlos]] || <small><small>LINK</small></small> || PREIS€
| E|| Gesamtsumme|| || || || 249,71€
|}
|}


Zeile 166: Zeile 166:
Die Abbildung 4a, 4b, 5a und 5b zeigt das Gehäuse. Es ist aus Holzplatten zusammen geleimt und verschraubt.
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.
Als Schutz dient auf der Vorderseite eine Plexiglasscheibe.
Zur einfachen Auffüllung ist auf der Rückseite ein Eingabefach.
Zur einfachen Auffüllung ist die Oberklappe zum öffnen und als Eingabefach.
Die Steuerung der Aktuatoren, Sensoren, Mikrokontroller ist im Gehäuse eingebaut.
Die Steuerung der Aktuatoren, Sensoren, Mikrokontroller ist im Gehäuse eingebaut.
Die Bedienelektronik befindet sich auf der Vorderseite des Geräts.
Die Bedienelektronik befindet sich auf der Vorderseite des Geräts.
Zeile 208: Zeile 208:
|+  
|+  
|-
|-
! Regelstrecke für Servomotor !! Regler-Code-Matlab
! Regelstrecke für Servomotor !! Regler-Code-Matlab !! Regelstrecke für Peltier-Element
|-
|-
| <gallery widths="450" heights="450">
| <gallery widths="450" heights="450">
Zeile 215: Zeile 215:
<gallery widths="450" heights="450">
<gallery widths="450" heights="450">
Datei:DAM_matlab_code.PNG| Abb. 7c Ausschnitt aus dem Matlab-Code </gallery>
Datei:DAM_matlab_code.PNG| Abb. 7c Ausschnitt aus dem Matlab-Code </gallery>
|
<gallery widths="450" heights="450">
Datei:regelkreis_pelti_dam.PNG| Abb. 7d Regelstrecke für Peltier-Element </gallery>
|}
|}


Zeile 237: Zeile 240:
<syntaxhighlight lang="cpp" style="border: none; background-color: #EFF1C1; font-size:larger">
<syntaxhighlight lang="cpp" style="border: none; background-color: #EFF1C1; font-size:larger">
//Bartos Schwichtenberg für Projekt der HSHL, Projektname: Dosenautomat                             
//Bartos Schwichtenberg für Projekt der HSHL, Projektname: Dosenautomat                             
                      //Bibliotheken
///////////////////////////////
#include <Servo.h>         //Bibliothek <Servo.h> hinzugefügt
// Hochschule Hamm Lippstadt //
//    GET-Fachpraktikum    //
//  Wintersemester 2023/2024 //
//  Projekt: Dosenauomat    //
//  Gruppe: MTR 2.2        //
//  Bartos Schwihtenberg    //
//          &              //
//      Berta Nissen        //
///////////////////////////////
 
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
#include <Keypad.h>
 
// LCD-Display
LiquidCrystal_I2C lcd(0x27, 16, 2);
 
// Servos
Servo servo1;
Servo servo2;
Servo servo3;


// Initialisierung der Pins
// Neue Servo-Pins
int blueLed = 6;                    //blaue LED ist auf DigitalPort 6
int servo1Pin = 10; // PWM-fähiger Pin
int redLed = 7;                    //rote LED ist auf DigitalPort 8
int servo2Pin = 11; // PWM-fähiger Pin
int yellowLed = 8;                  //gelbe LED ist auf DigitalPort 8
int servo3Pin = 12; // PWM-fähiger Pin
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
// 1x4 Tastenfeld
Servo servo1;                       //Servo ist ein servo1
const byte ROW_NUM    = 1;
Servo servo2;                       //Servo ist ein servo2
const byte COLUMN_NUM = 4;
Servo servo3;                       //Servo ist ein servo3
char keys[ROW_NUM][COLUMN_NUM] = {
  {'1','2','3','4'}
};
byte pin_rows[ROW_NUM]    = {5}; // Verbinde dies mit einem digitalen Pin
byte pin_column[COLUMN_NUM] = {9, 8, 7, 6}; // Neue Tastenpins
Keypad myKeypad = Keypad(makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM);


                              //void setup Anfang
void setup() {
void setup() {
   pinMode(blueLed, OUTPUT);         //PinMode ist Ausgang
   lcd.begin();
   pinMode(redLed, OUTPUT);         //PinMode ist Ausgang
   lcd.backlight();
  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
   // Neue Servo-Pins konfigurieren
  servo1.attach(servo1Pin);
  servo2.attach(servo2Pin);
  servo3.attach(servo3Pin);


   digitalWrite(blueLed, HIGH);    //blaue Led ist an
   // Servos auf 0-Stellung setzen
  digitalWrite(redLed, LOW);      //rote Led ist aus
   servo1.write(0);
  digitalWrite(yellowLed, LOW);    //gelbe Led ist aus
   servo2.write(0);
   digitalWrite(greenLed, LOW);     //grün Led ist aus
   servo3.write(0);
   digitalWrite(motor1, LOW);       //motor1 ist aus
   digitalWrite(motor2, LOW);       //motor2 ist aus
  digitalWrite(motor3, LOW);      //motor3 ist aus


   servo1.attach(motor1);           //servo1->motor1
   lcd.setCursor(0, 0);
   servo2.attach(motor2);           //servo2->motor2
  lcd.print("G.-Fachpraktikum");
   servo3.attach(motor3);           //servo3->motor3
   lcd.setCursor(0, 1);
   lcd.print("B&B-Dosenautomat");
}


  servo1.write(0);                //motor1 ist auf Position 0
void loop() {
   servo2.write(0);                 //motor2 ist auf Position 0
   char key = myKeypad.getKey();
  servo3.write(0);                //motor3 ist auf Position 0
}
                              //void setup Ende


  if (key) {
    lcd.setCursor(0, 1);
   
    if (key == '4') {
      lcd.print("    Abbruch    ");
      delay(1000); // Warte 1 Sekunde
    } else {
      lcd.print(" Warenausgabe D" + String(key) );
     
      // Servos basierend auf den Tasten steuern
      if (key == '1') {
        moveServo(servo1, 35);
      } else if (key == '2') {
        moveServo(servo2, 35);
      } else if (key == '3') {
        moveServo(servo3, 35);
      }


                              //void loop Anfang
       delay(1000); // Warte 1 Sekunde, während der Servo sich bewegt
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
     resetDisplay();
    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
   }
   }
}
void moveServo(Servo &servo, int angle) {
  servo.write(angle);
  delay(1000); // Warte 1 Sekunde, während der Servo sich bewegt
  servo.write(0);
}


  if (servo1.read() == 0 && servo2.read() == 0 && servo3.read() == 0) {  //servo read ==0 prüfen
void resetDisplay() {
    digitalWrite(blueLed, HIGH);      //LED an
  lcd.setCursor(0, 1);
    digitalWrite(redLed, LOW);        //LED aus
   lcd.print("B&B-Dosenautomat    "); // Setzt die zweite Zeile auf "Dosenautomat" zurück
    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




Zeile 385: Zeile 362:
| 2
| 2
| Die LCD-Messung soll aufleuchten, damt die Spannungsversorgung angezeigt wird.
| Die LCD-Messung soll aufleuchten, damt die Spannungsversorgung angezeigt wird.
| noch offen
| B. Sch.
| **.01.2024
| 15.01.2024
|-
|-
| 3
| 3
| LCD-Display muss aufleuchten und vorgegebenen Text ausgeben.
| LCD-Display muss aufleuchten und vorgegebenen Text ausgeben.
| noch offen
| B. Sch
| **.01.2024
| 15.01.2024
|-
|-
| 4
| 4
| Chiplesegerät muss den korrekten Chip erkennen.
| Chiplesegerät muss den korrekten Chip erkennen.
| noch offen
| noch offen,
| **.01.2024
| **.01.2024
|-
|-
| 5
| 5
| LCD-Display zeigt die Auswahlbereitschaft an.
| LCD-Display zeigt die Auswahlbereitschaft an.
| noch offen
| B. Sch.
| **.01.2024
| 15.01.2024
|-
|-
| 6
| 6
| Durch Tastenauswahl muss tastenabhöngig der richtige Motor (Servo) angesteuert werden.
| Durch Tastenauswahl muss tastenabhöngig der richtige Motor (Servo) angesteuert werden.
| noch offen
| B. Sch.
| **.01.2024
| 15.01.2024
|-
| 7
| Informierung des Benutzer zur Entnehmung der Ware (LED).
| noch offen
| **.01.2024
|-
|-
|}
|}
Zeile 418: Zeile 390:


== Ergebnis ==
== Ergebnis ==
Platzhalter für den Artikel <b>"Ergebnise"</b>
Nach intensiver Entwicklung und Überwindung einiger Herausforderungen präsentierten wir die Ergebnisse der Vorführung des "Dosenautomaten mit Dreifachauswahl". Trotz anfänglicher Schwierigkeiten zeigte der Versuch eine positive Performance auf verschiedenen Ebenen.
 
*Kühlleistung des Peltier-Elements:
Ein bedeutender Erfolg des Projekts war die ausreichende Kühlleistung des Peltier-Elements. Das System konnte erfolgreich die gewünschte Temperatur beibehalten, wobei diese von einem externen Sensor präzise erfasst wurde. Dieser Meilenstein unterstreicht die Effizienz der entwickelten Kühltechnologie.
 
*Funktionsfähiges Bedienfeld:
Das Bedienfeld des Automaten erwies sich als funktionsfähig und reagierte zuverlässig auf Benutzereingaben. Obwohl die Implementierung der Chipkarten-basierten Benutzererkennung aufgrund von Schwierigkeiten mit Hardware und Software nicht möglich war, konnte eine sichere und benutzerfreundliche Interaktion aufrechterhalten werden.
 
*Erfolgreiche Aktuatoren (Servos):
Alle drei Aktuatoren, verantwortlich für die Fachauswahl, funktionierten einwandfrei. Dieser Aspekt ist von entscheidender Bedeutung, da die Zuverlässigkeit dieser Mechanismen direkt die Auswahl und Ausgabe der gewünschten Artikel beeinflusst.
 
Insgesamt konnten wir trotz einiger unvorhergesehener Probleme und kurzfristiger Umarbeitungen einen positiven Abschluss der Vorführung verzeichnen. Die erzielten Ergebnisse dienen nicht nur als Bestätigung der erfolgreichen Umsetzung des Projekts, sondern auch als Grundlage für zukünftige Entwicklungsprojekte im Bereich der Mechatronik.


== Zusammenfassung ==
== Zusammenfassung ==
Zeile 446: Zeile 429:


== YouTube Video ==
== YouTube Video ==
Platzhalter für den Artikel <b>"YouTube Video"</b>
In dem folgenden Video] werden die Funktionen des Dosenautomats gezeigt
 
{| class="wikitable"
|-
| <gallery widths="450" heights="450">
Datei:Vorführung_Dosenautomat.mp4| Video 1: Funktion des Dosenautomats
</gallery>||
|}


== Weblinks / Grafiklinks / Multimedialink==
== Weblinks / Grafiklinks / Multimedialink==

Aktuelle Version vom 23. Januar 2024, 18:23 Uhr

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 Berta Nissen 17.01.2024
2 Das LCD-Display muss Bereitschaftsbetrieb anzeigen (Begrüßung). Bartos Schwichtenberg 11.10.2023 Berta Nissen 17.01.2024
3 Die Taste 1 steuert nur den Servo 1 an (Artikel von Platz 1). Bartos Schwichtenberg 11.10.2023 Berta Nissen 17.01.2024
4 Die Taste 2 steuert nur den Servo 2 an (Artikel von Platz 2). Bartos Schwichtenberg 11.10.2023 Berta Nissen 17.01.2024
5 Die Taste 3 steuert nur den Servo 3 an (Artikel von Platz 3). Bartos Schwichtenberg 11.10.2023 Berta Nissen 17.01.2024
6 Servo 1 muss zwischen 0° und 35° schwenken. Bartos Schwichtenberg 11.10.2023 Berta Nissen 17.01.2024
7 Servo 2 muss zwischen 0° und 35° schwenken. Bartos Schwichtenberg 11.10.2023 Berta Nissen 17.01.2024
8 Servo 3 muss zwischen 0° und 35° schwenken. Bartos Schwichtenberg 11.10.2023 Berta Nissen 17.01.2024
9 Beleuchtung im Schacht aufleuchten. Bartos Schwichtenberg 11.10.2023 Berta Nissen 17.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€
E Gesamtsumme 249,71€

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 die Oberklappe zum öffnen und als 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 für Servomotor Regler-Code-Matlab Regelstrecke für Peltier-Element


Programablaufplan (PAP) Programmcode

Es wird ein Code in auf den Mikrocontroller geschrieben.

Programmcode wurde im weiteren Verlauf in MATlab/Simulink erstellt.
//Bartos Schwichtenberg für Projekt der HSHL, Projektname: Dosenautomat                            
///////////////////////////////
// Hochschule Hamm Lippstadt //
//     GET-Fachpraktikum     //
//  Wintersemester 2023/2024 //
//   Projekt: Dosenauomat    //
//   Gruppe: MTR 2.2         //
//   Bartos Schwihtenberg    //
//           &               //
//       Berta Nissen        //
///////////////////////////////

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
#include <Keypad.h>

// LCD-Display
LiquidCrystal_I2C lcd(0x27, 16, 2);

// Servos
Servo servo1;
Servo servo2;
Servo servo3;

// Neue Servo-Pins
int servo1Pin = 10;  // PWM-fähiger Pin
int servo2Pin = 11;  // PWM-fähiger Pin
int servo3Pin = 12;  // PWM-fähiger Pin

// 1x4 Tastenfeld
const byte ROW_NUM    = 1;
const byte COLUMN_NUM = 4;
char keys[ROW_NUM][COLUMN_NUM] = {
  {'1','2','3','4'}
};
byte pin_rows[ROW_NUM]    = {5}; // Verbinde dies mit einem digitalen Pin
byte pin_column[COLUMN_NUM] = {9, 8, 7, 6}; // Neue Tastenpins
Keypad myKeypad = Keypad(makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM);

void setup() {
  lcd.begin();
  lcd.backlight();

  // Neue Servo-Pins konfigurieren
  servo1.attach(servo1Pin);
  servo2.attach(servo2Pin);
  servo3.attach(servo3Pin);

  // Servos auf 0-Stellung setzen
  servo1.write(0);
  servo2.write(0);
  servo3.write(0);

  lcd.setCursor(0, 0);
  lcd.print("G.-Fachpraktikum");
  lcd.setCursor(0, 1);
  lcd.print("B&B-Dosenautomat");
}

void loop() {
  char key = myKeypad.getKey();

  if (key) {
    lcd.setCursor(0, 1);
    
    if (key == '4') {
      lcd.print("    Abbruch     ");
      delay(1000); // Warte 1 Sekunde
    } else {
      lcd.print(" Warenausgabe D" + String(key) );
      
      // Servos basierend auf den Tasten steuern
      if (key == '1') {
        moveServo(servo1, 35);
      } else if (key == '2') {
        moveServo(servo2, 35);
      } else if (key == '3') {
        moveServo(servo3, 35);
      }

      delay(1000); // Warte 1 Sekunde, während der Servo sich bewegt
    }

    resetDisplay();
  }
}

void moveServo(Servo &servo, int angle) {
  servo.write(angle);
  delay(1000); // Warte 1 Sekunde, während der Servo sich bewegt
  servo.write(0);
}

void resetDisplay() {
  lcd.setCursor(0, 1);
  lcd.print("B&B-Dosenautomat    ");  // Setzt die zweite Zeile auf "Dosenautomat" zurück
}

Komponententest

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

Tabelle 3 zeigt, welche Anforderung vom welchen Bearbeiter getestet wurde.

Ergebnis

Nach intensiver Entwicklung und Überwindung einiger Herausforderungen präsentierten wir die Ergebnisse der Vorführung des "Dosenautomaten mit Dreifachauswahl". Trotz anfänglicher Schwierigkeiten zeigte der Versuch eine positive Performance auf verschiedenen Ebenen.

  • Kühlleistung des Peltier-Elements:

Ein bedeutender Erfolg des Projekts war die ausreichende Kühlleistung des Peltier-Elements. Das System konnte erfolgreich die gewünschte Temperatur beibehalten, wobei diese von einem externen Sensor präzise erfasst wurde. Dieser Meilenstein unterstreicht die Effizienz der entwickelten Kühltechnologie.

  • Funktionsfähiges Bedienfeld:

Das Bedienfeld des Automaten erwies sich als funktionsfähig und reagierte zuverlässig auf Benutzereingaben. Obwohl die Implementierung der Chipkarten-basierten Benutzererkennung aufgrund von Schwierigkeiten mit Hardware und Software nicht möglich war, konnte eine sichere und benutzerfreundliche Interaktion aufrechterhalten werden.

  • Erfolgreiche Aktuatoren (Servos):

Alle drei Aktuatoren, verantwortlich für die Fachauswahl, funktionierten einwandfrei. Dieser Aspekt ist von entscheidender Bedeutung, da die Zuverlässigkeit dieser Mechanismen direkt die Auswahl und Ausgabe der gewünschten Artikel beeinflusst.

Insgesamt konnten wir trotz einiger unvorhergesehener Probleme und kurzfristiger Umarbeitungen einen positiven Abschluss der Vorführung verzeichnen. Die erzielten Ergebnisse dienen nicht nur als Bestätigung der erfolgreichen Umsetzung des Projekts, sondern auch als Grundlage für zukünftige Entwicklungsprojekte im Bereich der Mechatronik.

Zusammenfassung

Das Projekt zur Entwicklung eines "Dosenautomaten mit Dreifachauswahl" im 5. Semester des Studiengangs Ba. Mechatronik verfolgte das Ziel, einen innovativen Automaten zu schaffen. Die Kernkomponenten des Automaten umfassten drei Aktuatoren (Motoren zur Fachauswahl), Sensorik Nr. 1 (Tasteneingabe durch den Benutzer) und Sensorik Nr. 2 (Beleuchtung für Fachentnahme). Die Erkennung des Benutzers erfolgte mittels einer Chipkarte ohne Guthaben, woraufhin das Bedienfeld entsperrt wurde. Die Artikelwahl wurde über das Bedienfeld des Automaten ermöglicht. Trotz eines anfänglichen Komponententests kam es im Laufe des Projekts zu Schwierigkeiten durch Defekte und Störungen einiger wesentlicher Komponenten. Diese unvorhergesehenen Probleme erforderten kurz vor Abschluss des Projekts teilweise Umarbeitungen, um überhaupt eine erfolgreiche Vorführung zu ermöglichen. Diese Herausforderungen unterstreichen die Bedeutung einer kontinuierlichen Überwachung und Evaluierung der Komponentenleistung während des gesamten Projektverlaufs. Die bereits identifizierten Lessons Learned, darunter mangelnde Kommunikation, Alleingang zu Beginn, verspätete Einigung, sowie die Anpassung an unvorhergesehene Ausfälle, erweisen sich als entscheidende Faktoren für die auftretenden Verzögerungen. Die positive Veränderung durch verstärkte Teamarbeit und die strategische Anpassung an die Schwierigkeiten bei den Komponenten betonen die Relevanz einer flexiblen Projektplanung. Die gewonnenen Erkenntnisse aus diesem Projekt dienen als Basis für künftige Entwicklungsprojekte in der Mechatronik. Eine verbesserte Planung, kontinuierliche Überwachung der Komponenten und die Fähigkeit zur Anpassung an unvorhergesehene Herausforderungen sind dabei zentrale Elemente für eine erfolgreiche Umsetzung.

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.
  • 7 Es wäre empfehlenswert gewesen, ein weiterers Netzteil in Reserve zu haben. Da das verbaute vor kurz vor Projektende angefangen, geschwankt hat.

Projektunterlagen

Projektplan

Projektdurchführung

Erstmals kamen wir auf die Idee einen Getränkeautomaten selbst zu bauen, wodurch die erste Skizze entstanden ist. Wir haben uns für einen kompakten und mobilen Dosenautomat mit max. 3 Dosenauswahlen entschieden. Erst haben wir ein Plan erstellt, wo wir alle wichtigen Punkte notiert haben (z.B Termine und Aufgaben), anschließend haben wir die CAD-Zeichnungen gemacht. Als nächstes haben wir alle benötigten Bauteile und Elektroteile bestellt. Folglich haben wir Holzarbeiten durchgeführt und gemerkt, dass wir etwas Umbauen müssen, da nicht alles reinpasste hat. Daraufhin kamen die technischen Aufgaben, Simulink, Kühlung mit Peltier und das alles ist dem Microkontroller verbunden. Zuletzt haben wir ein Plakat, ein Video und eine Präsentation erstellt und die Wiki-Seite bearbeitet.

YouTube Video

In dem folgenden Video] werden die Funktionen des Dosenautomats gezeigt

Weblinks / Grafiklinks / Multimedialink

Grafiken von Materiallinks:

Literatur

1.Schmidt M.: Arduino-ein schneller Einstieg in die Microcontroller-Entwicklung, 2.Auflage, dpunkt Verlag, 2015.

2.Spanner G.: Coole Projekte mit dem Arduino Micro,Franzis.

3.Snieders,R.:Arduinolernen, 10.Auflage,Nordhorn,2023.

4.Banzi M.:Arduino für Einsteiger,3.Auflage,O.Reilly Verlag,2015.

5.Mann H.,Schiffelgen,H,Froriep,R.:Einführung in die Regelungstechnik.

6.Lutz H,WendtW:taschenbuch der Regelungstechnik mit Matlab und Simulink,Europa Lehrmittel,2021.

7.Dorf C.,BishopR:Moderne Regelungssysteme,10.Auflage,Pearson Studium 2006



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