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
|
---
|
**.10.2023
|
2
|
Das LCD-Display muss Bereitschaftsbetrieb anzeigen (Begrüßung).
|
Bartos Schwichtenberg
|
11.10.2023
|
---
|
**.10.2023
|
3
|
Die Taste 1 steuert nur den Servo 1 an (Artikel von Platz 1).
|
Bartos Schwichtenberg
|
11.10.2023
|
---
|
**.10.2023
|
4
|
Die Taste 2 steuert nur den Servo 2 an (Artikel von Platz 2).
|
Bartos Schwichtenberg
|
11.10.2023
|
---
|
**.10.2023
|
5
|
Die Taste 3 steuert nur den Servo 3 an (Artikel von Platz 3).
|
Bartos Schwichtenberg
|
11.10.2023
|
---
|
**.10.2023
|
6
|
Servo 1 muss zwischen 0° und 90° schwenken (wird vorerst angenommen).
|
Bartos Schwichtenberg
|
11.10.2023
|
---
|
**.10.2023
|
7
|
Servo 2 muss zwischen 0° und 90° schwenken (wird vorerst angenommen).
|
Bartos Schwichtenberg
|
11.10.2023
|
---
|
**.10.2023
|
8
|
Servo 3 muss zwischen 0° und 90° schwenken (wird vorerst angenommen).
|
Bartos Schwichtenberg
|
11.10.2023
|
---
|
**.10.2023
|
9
|
Beleuchtung im Schacht aufblinken/aufleuchten (bis der Artikel entnommen ist).
|
Bartos Schwichtenberg
|
11.10.2023
|
---
|
**.10.2023
|
Funktionaler Systementwurf/Technischer Systementwurf
-
Abb. 2 Funktionaler Systementwurf
|
-
Abb. 3 technischer Systementwurf
|
Komponentenspezifikation
Tabelle 2: Liste aller Komponenten (in Bearbeitung)
ID |
Komponente |
Bezeichnung |
Abbildung
|
1 |
Taster/Tastenfeld |
in Bearbeitung |
Beispiel
|
2 |
LCD-Display |
in Bearbeitung |
Beispiel
|
3 |
Netzteil |
in Bearbeitung |
Beispiel
|
4 |
Pelti-Element |
in Bearbeitung |
Beispiel
|
5 |
Chiplesegerät mit Chip |
in Bearbeitung |
Beispiel
|
6 |
Plexiglas |
in Bearbeitung |
Beispiel
|
7 |
Verbrauchsmaterial |
Holz, Schrauben, Holzleim, Kabel, Lötzinn, Schrumpfschlauch |
Beispiel
|
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. 5a Gehäuse Seitenansicht re.
|
-
Abb. 5b Gehäuse Seitenansicht li.
|
Schaltung
Zum Einsatz kommt der Mikrokontroller.
-
Abb. 6 Schaltung (Beispielbild)
|
-
Abb. 7 Verkabelung (Beispielbild)
|
Programmcode
Es wird ein Code in auf den Mikrocontroller geschrieben.
-
Abb. 8 Programmablaufplan (wird noch mit LCD-Ausgabe ergänzt).
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 Spannung versorgt werden.
|
noch offen
|
**.**.2023
|
2
|
Die LED soll aufleuchten, damt die Spannungsversorgung angezeigt wird.
|
noch offen
|
**.**.2023
|
3
|
LCD-Display muss aufleuchten und vorgegebenen Text ausgeben.
|
noch offen
|
**.**.2023
|
4
|
Chiplesegerät muss den korrekten Chip erkennen.
|
noch offen
|
**.**.2023
|
5
|
LCD-Display zeigt die Auswahlbereitschaft an.
|
noch offen
|
**.**.2023
|
6
|
Durch Tastenauswahl muss tastenabhöngig der richtige Motor (Servo) angesteuert werden.
|
noch offen
|
**.**.2023
|
7
|
Informierung des Benutzer zur Entnehmung der Ware (LED).
|
noch offen
|
**.**.2023
|
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"
Projektunterlagen
Projektplan
Platzhalter für den Artikel "Projektplan"
Projektdurchführung
Platzhalter für den Artikel "Projektdurchführung"
YouTube Video
Platzhalter für den Artikel "YouTube Video"
Weblinks
Platzhalter für den Artikel "Weblinks"
Literatur
Platzhalter für den Artikel "Literatur"
→ zurück zur Übersicht: WS 22/23: Angewandte Elektrotechnik (BSE)