Berührungsloser Desinfektionsspender: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
[[Datei:Desinfektionsspender_Projektplakat.png| | [[Datei:Desinfektionsspender_Projektplakat.png|550px|rechts]] | ||
[[Kategorie:Projekte]] | [[Kategorie:Projekte]] | ||
[[Kategorie:ProjekteET MTR BSE WS2020]] | [[Kategorie:ProjekteET MTR BSE WS2020]] | ||
Zeile 133: | Zeile 133: | ||
<gallery widths="400" heights="300"> | <gallery widths="400" heights="300"> | ||
Datei:V1_V2_Vergleich.jpg|Abb. 3: Vergleich: Prototyp auf Arduino- | Datei:V1_V2_Vergleich.jpg|Abb. 3: Vergleich: Prototyp auf Arduino-UNO-Basis (links) und gefertigte Platine. | ||
</gallery> | </gallery> | ||
Zeile 202: | Zeile 202: | ||
=== Software === | === Software === | ||
Bei der Software-Entwicklung wurde auf einen modularen Aufbau mit drei Modulen gesetzt (vgl. Abbildung 7). Dies ermöglicht eine hardware-unabhängige Entwicklung des Verhaltens und eine gute Portierbarkeit zwischen unterschiedlichen Hardware-Versionen, wie ATmega328 beim Arduino-UNO-Prototypen und ATtiny84 bei der finalen Platine. | |||
<gallery widths="840" heights="350"> | <gallery widths="840" heights="350"> | ||
Datei:Desinfektionsspender_Software.png|Abb. 7: Software-Architektur. | Datei:Desinfektionsspender_Software.png|Abb. 7: Software-Architektur. | ||
</gallery> | </gallery> | ||
==== Zustandsautomat ==== | |||
[[Datei:Desinfektionsspender_Stateflow.PNG|mini|Abb. 8: Zustandsautomat in Matlab Stateflow.]] | |||
Das gewünschte Verhalten des Spenders wurde als Zustandsautomat in Matlab Stateflow realisiert. Der einfache Automat mit lediglich drei Zuständen (vgl. Abbildung 7, links) steuert die Dauer des Pump-Vorgangs in Abhängigkeit des Sensor-Signals und der verstrichenen Zeit seit der Hand-Erkennung. Das Desinfektionsmittel lässt sich damit gut portionieren und die zeitliche Begrenzung verhindert eine übermäßige Mengenabgabe. | |||
Mit Hilfe des Embedded Coder lässt sich aus dem Stateflow-Modell effizienter C-Code generieren, welcher wiederum im übrigen C-Code eingebunden werden kann. | |||
==== Hardware-Abstraktionsschicht ==== | |||
[[Datei:Desinfektionsspender_Verbindungscode_PAP.PNG|mini|Abb. 9: Programmablaufplan des Verbindungscodes.]] | |||
Die Hardware-Abstraktionsschicht greift auf die Mikrocontroller-Komponenten wie Ports, Timer-Bausteine und Register zu und stellt die für das Projekt relevanten, hardwareabhängigen Funktionen bereit: | |||
* Hw_Init() | |||
: Initialisierung des Mikrocontrollers: Setzen aller Ports, Parametrierung der Timer etc. | |||
* Hw_GetSensor() | |||
: Ausgabe des Infrarotsensor-Signals | |||
* Hw_SetPumpe(unsigned char Pumpe) | |||
: An-/Ausschalten der Pumpe. Optional ist eine Soft-PWM-Ansteuerung zur Reduzierung der Durchflussmenge möglich. | |||
Diese Funktionen sind nach außen hin hardware-unabhängig, sodass die restliche Software bei einer Portierung auf andere Mikrocontroller-Systeme nicht verändert werden muss. | |||
==== Verbindungscode ==== | |||
Der Verbindungscode stellt die Verbindung zwischen Zustandsautomat und Hardware-Abstraktionsschicht dar. Nach der Initialisierung (u.a. über Hw_Init()) wird der Zustandsautomat zyklisch alle 100ms ausgeführt. Dabei werden erst alle Eingangswerte eingelesen und dann nach einem Zeitschritt des Automaten dessen Ausgangswerte wieder ausgelesen (vgl. Abbildung 8). | |||
== Komponententest == | == Komponententest == | ||
Zeile 221: | Zeile 249: | ||
<gallery widths="650" heights="500"> | <gallery widths="650" heights="500"> | ||
Datei:Desinfektionsspender_Projektplan.JPG|Abb. | Datei:Desinfektionsspender_Projektplan.JPG|Abb. 10: Projektplan | ||
</gallery> | </gallery> | ||
Version vom 11. Februar 2021, 16:52 Uhr
Autoren: Leon Hundertmark, Marc Eidhoff
Betreuer: Prof. Schneider
→ zurück zur Übersicht: WS 20/21: Angewandte Elektrotechnik (BSE)
Einleitung
Im Rahmen des Praktikums "Angewandte Elektrochtechnik" im Studiengang Business and Systems Engineering soll ein Desinfektionsspender entwickelt werden. Dieser soll durch den Einsatz eines Infrarotsensors berührungslos arbeiten. Bei einer Annäherung soll der Spender eine definierte Menge Desinfektionsmittel aus einem Behälter spenden. Dies soll durch die Ansteuerung einer Schlauchpumpe für eine definierte Zeit erfolgen.
Anforderungen
Um die Funktionsweise des berührungslosen Desinfektionsspenders bestmöglich zu erreichen werden einige Anforderungen definiert. Diese Anforderungen sind in der folgenden Tabelle aufgeführt. Mithilfe eines Komponententests können nach der Fertigstellung der Hardware und der Software die definierten Funktionen überprüft werden. Dabei wird jede Andorderung im Komponententest "gegengeprüft" und ermittelt, ob die Anforderung erfüllt wurde.
ID | Inhalt | Ersteller | Datum | Geprüft von | Datum |
---|---|---|---|---|---|
Req_10 | Der Spender soll berührungslos arbeiten. | Eidhoff, Hundertmark | 27.10.2020 | ||
Req_20 | Als Sensor soll ein Sharp-Infrarotsensor (Messbereich 4-30cm) benutzt werden. | Eidhoff, Hundertmark | 27.10.2020 | ||
Req_30 | Als Aktor soll eine Schlauchpumpe eingesetzt werden. | Eidhoff, Hundertmark | 27.10.2020 | ||
Req_40 | Die Erkennung der Hände und die Ansteuerung des Aktors sollen durch LEDs angezeigt werden. | Eidhoff, Hundertmark | 27.10.2020 | ||
Req_50 | Eidhoff, Hundertmark | 27.10.2020 | |||
Req_51 | Die Datenverarbeitung und Ansteuerung des Aktors soll durch einen ATtiny-Mikrocontroller erfolgen. | Eidhoff, Hundertmark | 10.12.2020 | ||
Req_60 | Der Spender soll bei einer Entfernung zwischen 5cm und 10cm für eine definierte Zeit auslösen. | Eidhoff, Hundertmark | 27.10.2020 |
Im Laufe der Entwicklung hat sich ergeben, dass das Requirement 50 verändert werden sollte. Die aktualisierte Fassung des Requirements 50 lautet: Die Datenverarbeitung und Ansteuerung des Aktors soll durch einen ATtiny-Mikrocontroller erfolgen.
Funktionaler Systementwurf/Technischer Systementwurf
Im Folgenden wird der zu Beginn des Projekts erarbeitete Aufbau des Spenders schematisch dargestellt. Hier kann zwischen funktionalem und technischem Systementwurf unterschieden werden.
Funktionaler Systementwurf
-
Abb. 1: Funktionaler Systementwurf des Spenders.
Der funktionale Systementwurf stellt die Funktionen und Beziehungen der einzelnen Funktionseinheiten auf Basis der Anforderungen dar.
Technischer Systementwurf
-
Abb. 2: Technischer Systementwurf.
Der technische Systementwurf ist der erste Ansatz zur technischen Realisierung des Projekts. Die einzelnen Funktionen werden dabei auf die verschiedenen Komponenten übertragen.
Komponentenspezifikation
Komponenten | Beschreibung | Bild |
---|---|---|
Steuerungs-Platine |
|
|
Infrarot-Sensor | Sharp GP2Y0A41SK0F [1]
|
|
Schlauchpumpe |
|
Umsetzung (HW/SW)
Hardware
-
Abb. 3: Vergleich: Prototyp auf Arduino-UNO-Basis (links) und gefertigte Platine.
Schaltplan & Layout
-
Abb. 4: Schaltplan der Steuerungs-Platine.
-
Abb. 5: Layout der Steuerungs-Platine.
Stückliste
ID | Wert | Teile-Nr. | Package | Beschreibung |
---|---|---|---|---|
7805 | 7805 | L7805ACV | TO220V | Linearer Spannungsregler 5.0V 1.0A |
ATTINY | ATtiny84A-PU | DIP14 | AVR 8-Bit Mikrocontroller | |
C1 | 100u | EEU-FM1E101 | E2,5-6E | Elko 100uF 25V |
C2 | 100n | C1206C104K5RAC7411 | 1206 | MLCC - SMD/SMT 50V 0.1uF |
C3 | 22p | 885012008011 | 1206 | MLCC - SMD/SMT 16V 22pF |
C4 | 22p | 885012008011 | 1206 | MLCC - SMD/SMT 16V 22pF |
C5 | 100n | C1206C104K5RAC7411 | 1206 | MLCC - SMD/SMT 50V 0.1uF |
C6 | 100n | C1206C104K5RAC7411 | 1206 | MLCC - SMD/SMT 50V 0.1uF |
D1 | 1N4004 | 1N5819 | DO41-10 | Schottky Diode 40V 1A |
HDR | 10129378-905003BLF | 1X05 | Stiftleiste 1x5 2.54mm | |
IFR | RED | LTL-4221 | LED3MM | LED - THT - Red Diffused |
MOSFET | IRLZ44N | IRLZ44NPBF | TO-220-3 | Logic Level N-Channel MOSFET 55V 41A |
MOT | GREEN | LTL-4231 | LED3MM | LED - THT - Green Diffused |
PLUG | DCJ0202 | PJ-050B | DCJ0202 | DC-Steckverbinder 24V 2.5A |
Q1 | 8 Mhz | FOXSLF/080-20 | QS | Quarz 8MHz 20pF |
R1 | 10k | CRCW120610K0FKEA | 1206 | Dickfilmwiderstand SMD 10 kOhm |
R2 | 10k | CRCW120610K0FKEA | 1206 | Dickfilmwiderstand SMD 10 kOhm |
R3 | 100 | CRCW1206100RFKEA | 1206 | Dickfilmwiderstand SMD 100 Ohm |
R4 | 200 | RC1206FR-07200RL | 1206 | Dickfilmwiderstand SMD 200 Ohm |
R5 | 200 | RC1206FR-07200RL | 1206 | Dickfilmwiderstand SMD 200 Ohm |
SPI | 10129381-906004BLF | 2X03 | Stiftleiste 2x3 2.54mm |
Zusammenbau
-
Abb. 6: Ansicht der Spender-Oberseite mit allen Komponenten.
Software
Bei der Software-Entwicklung wurde auf einen modularen Aufbau mit drei Modulen gesetzt (vgl. Abbildung 7). Dies ermöglicht eine hardware-unabhängige Entwicklung des Verhaltens und eine gute Portierbarkeit zwischen unterschiedlichen Hardware-Versionen, wie ATmega328 beim Arduino-UNO-Prototypen und ATtiny84 bei der finalen Platine.
-
Abb. 7: Software-Architektur.
Zustandsautomat
Das gewünschte Verhalten des Spenders wurde als Zustandsautomat in Matlab Stateflow realisiert. Der einfache Automat mit lediglich drei Zuständen (vgl. Abbildung 7, links) steuert die Dauer des Pump-Vorgangs in Abhängigkeit des Sensor-Signals und der verstrichenen Zeit seit der Hand-Erkennung. Das Desinfektionsmittel lässt sich damit gut portionieren und die zeitliche Begrenzung verhindert eine übermäßige Mengenabgabe.
Mit Hilfe des Embedded Coder lässt sich aus dem Stateflow-Modell effizienter C-Code generieren, welcher wiederum im übrigen C-Code eingebunden werden kann.
Hardware-Abstraktionsschicht
Die Hardware-Abstraktionsschicht greift auf die Mikrocontroller-Komponenten wie Ports, Timer-Bausteine und Register zu und stellt die für das Projekt relevanten, hardwareabhängigen Funktionen bereit:
- Hw_Init()
- Initialisierung des Mikrocontrollers: Setzen aller Ports, Parametrierung der Timer etc.
- Hw_GetSensor()
- Ausgabe des Infrarotsensor-Signals
- Hw_SetPumpe(unsigned char Pumpe)
- An-/Ausschalten der Pumpe. Optional ist eine Soft-PWM-Ansteuerung zur Reduzierung der Durchflussmenge möglich.
Diese Funktionen sind nach außen hin hardware-unabhängig, sodass die restliche Software bei einer Portierung auf andere Mikrocontroller-Systeme nicht verändert werden muss.
Verbindungscode
Der Verbindungscode stellt die Verbindung zwischen Zustandsautomat und Hardware-Abstraktionsschicht dar. Nach der Initialisierung (u.a. über Hw_Init()) wird der Zustandsautomat zyklisch alle 100ms ausgeführt. Dabei werden erst alle Eingangswerte eingelesen und dann nach einem Zeitschritt des Automaten dessen Ausgangswerte wieder ausgelesen (vgl. Abbildung 8).
Komponententest
Ergebnis
Zusammenfassung
Lessons Learned
Projektunterlagen
Projektplan
-
Abb. 10: Projektplan
Projektdurchführung
YouTube Video
Literatur
[1] Datenblatt Infrarot-Sensor
→ zurück zur Übersicht: WS 20/21: Angewandte Elektrotechnik (BSE)