Berührungsloser Desinfektionsspender: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(29 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
[[Datei:Desinfektionsspender_Projektplakat.png|430px|rechts]]
[[Datei:Desinfektionsspender_Projektplakat.png|520px|rechts]]
[[Kategorie:Projekte]]  
[[Kategorie:Projekte]]  
[[Kategorie:ProjekteET MTR BSE WS2020]]
[[Kategorie:ProjekteET MTR BSE WS2020]]
Zeile 16: Zeile 16:


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.
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.
{| class="mw-datatable"
{| class="mw-datatable"
! style="font-weight: bold;" | ID
! style="font-weight: bold;" | ID
! style="font-weight: bold;" | Inhalt
! style="font-weight: bold;" | Inhalt
! style="font-weight: bold;" | Ersteller
! style="font-weight: bold;" | Ersteller
! style="font-weight: bold;" | Datum
! style="font-weight: bold;" | Geprüft von
! style="font-weight: bold;" | Datum
! style="font-weight: bold;" | Datum
|-
|-
Zeile 28: Zeile 27:
| Eidhoff, Hundertmark
| Eidhoff, Hundertmark
| 27.10.2020
| 27.10.2020
|
|
|-
|-
| Req_20
| Req_20
Zeile 35: Zeile 32:
| Eidhoff, Hundertmark
| Eidhoff, Hundertmark
| 27.10.2020
| 27.10.2020
|
|
|-
|-
| Req_30
| Req_30
| Als Aktor soll eine Schlauchpumpe eingesetzt werden.
| Als Aktor soll eine Schlauchpumpe mit einer Förderleistung von mindestens 30 ml/min eingesetzt werden.
| Eidhoff, Hundertmark
| Eidhoff, Hundertmark
| 27.10.2020
| 27.10.2020
|
|
|-
|-
| Req_40
| Req_40
Zeile 49: Zeile 42:
| Eidhoff, Hundertmark
| Eidhoff, Hundertmark
| 27.10.2020
| 27.10.2020
|
|
|-
|-
| Req_50
| Req_50
Zeile 56: Zeile 47:
| Eidhoff, Hundertmark
| Eidhoff, Hundertmark
| 27.10.2020
| 27.10.2020
|
|
|-
|-
| Req_51
| Req_51
Zeile 63: Zeile 52:
| Eidhoff, Hundertmark
| Eidhoff, Hundertmark
| 10.12.2020
| 10.12.2020
|
|
|-
|-
| Req_60
| Req_60
Zeile 70: Zeile 57:
| Eidhoff, Hundertmark
| Eidhoff, Hundertmark
| 27.10.2020
| 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:
Im Laufe der Entwicklung hat sich ergeben, dass die Anforderung Req_50 nicht mehr gilt und durch Req_51 ersetzt wird: ''Die Datenverarbeitung und Ansteuerung des Aktors soll durch einen ATtiny-Mikrocontroller erfolgen.''
Die Datenverarbeitung und Ansteuerung des Aktors soll durch einen ATtiny-Mikrocontroller erfolgen.  
|}


== Funktionaler Systementwurf/Technischer Systementwurf ==
== Funktionaler Systementwurf/Technischer Systementwurf ==


Im Folgenden wird ein Aufbau des geplanten Projekts schematisch dargestellt. Dieser Aufbau zeigt sowohl den funktionalen, als auch den technischen Systementwurf auf.
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 ===
 
<gallery widths="500" heights="200">
Desinfektionsmittel_Schema3.PNG|Abb. 1: Funktionaler Systementwurf des Spenders.
</gallery>


'''Funktionaler Systementwurf'''
Der funktionale Systementwurf stellt die Funktionen und Beziehungen der einzelnen Funktionseinheiten auf Basis der Anforderungen dar.
Der funktionale Systementwurf stellt eine Abbilung der Anforderungen auf das System dar.


'''Technischer Systementwurf'''
=== Technischer Systementwurf ===
Der technische Systementwurf ist der erste Ansatz zur Umsetzung des Projekts.


In der Abbildung 1 wird der funktionale und technische Systementwurf zusammen gezeigt.
<gallery widths="500" heights="350">
<gallery widths="500" heights="350">
   Spender_var1.PNG|Abb. 1: Erster Entwurf des Funktionsprinzips.
   Spender_var1.PNG|Abb. 2: Technischer Systementwurf.
</gallery>
</gallery>


===Hardwareaufbau===
Der technische Systementwurf ist der erste Ansatz zur technischen Realisierung des Projekts. Die einzelnen Funktionen werden dabei auf die verschiedenen Komponenten übertragen.


<gallery widths="500" heights="200">
== Komponentenspezifikation ==
Desinfektionsmittel_Schema3.PNG|Abb. 2: Hardware-Aufbau des Spenders.
</gallery>


== Komponentenspezifikation ==
Der berührungslose Desinfektionsspender besteht neben dem ursprünglich per Hand betätigtem Spender aus drei weiteren Komponenten. In der folgenden Tabelle werden diese spezifiziert.


{| class="mw-datatable"
{| class="mw-datatable"
Zeile 107: Zeile 91:
|-
|-
|Steuerungs-Platine
|Steuerungs-Platine
|
| Hauptmerkmale:
* ATtiny84A-PU Mikrocontroller
* ATtiny84A-PU Mikrocontroller
* L7805ACV Spannungsregler 5V
* L7805ACV Spannungsregler 5V
* IRLZ44NPBF MOSFET
* IRLZ44NPBF MOSFET
* ISP-Schnittstelle für Programmierung
* 2 Status-LEDs
* 2 Status-LEDs
Schnittstellen:
* Buchse für Hohlstecker 6mm, 7V bis 35V
* SPI-Schnittstelle für Programmierung
* 5-Pol Stiftleiste für IR-Sensor & Pumpe
|[[Datei:Desinfektionsspender_Platine.jpg|126px|rahmenlos|zentriert]]
|[[Datei:Desinfektionsspender_Platine.jpg|126px|rahmenlos|zentriert]]
|-
|-
Zeile 130: Zeile 117:


== Umsetzung (HW/SW) ==
== Umsetzung (HW/SW) ==
Im Folgenden wird die Umsetzung von Hard- und Software näher beschrieben. Grundsätzlich ist zwischen den zwei Versionen der Steuerung zu unterscheiden. Die erste, prototypische Version wurde auf Basis eines Arduino UNO entwickelt. Da dieser aufgrund der geringen Anzahl an benötigten IO-Bausteinen (1x Sensor-Input, 2x Output MOSFET & LED, 1x SPI-Schnittstelle) und dem geringen Platzangebot überdimensioniert war, wurde die finale Version als kompakte Platine mit ATtiny-Mikrocontroller realisiert.


=== Hardware ===
=== Hardware ===


<gallery widths="400" heights="300">
Alle Komponenten des Arduino-Protoyps wurden auf einem ProtoShield untergebracht. Dieses ermöglicht eine kompakte Bauweise ohne zusätzliches Steckbrett und lange Verbindungskabel. Dennoch erwies sich dieser Aufbau als zu groß für die Unterbringung auf dem schmalen Gehäuse des Spenders (vgl. Abbildung 3 und 6). Daher wurde diese Version lediglich als Muster für die Software-Entwicklung genutzt und parallel dazu eine möglichst kompakte Platine mit gleichem Funktionsumfang entwickelt. In Abbildung 3 wird der Größenunterschied deutlich.
Datei:V1_V2_Vergleich.jpg|Abb. 3: Vergleich: Prototyp auf Arduino-Uno-Basis (links) und gefertigte Platine.
 
<gallery widths="500" heights="350">
Datei:V1_V2_Vergleich.jpg|Abb. 3: Vergleich: Prototyp auf Arduino-UNO-Basis (links) und gefertigte Platine.
</gallery>
</gallery>
Weitere Vorteile der Platine auf ATtiny-Basis wie der geringere Stromverbrauch werden hier vernachlässigt, könnten aber zum späteren Zeitpunkt relevant werden (siehe [[#Ausblick|Ausblick]]).
==== Schaltplan & Layout ====
Abbildung 4 und 5 zeigen den Schaltplan und das Layout der Platine. Ein 5V-Spannungsregler sorgt für die konstante Spannungsversorgung von Mikrocontroller und Pumpe. Der ATtiny wird mit einem externen 8-Mhz-Quarz betrieben und kann über die 6-polige SPI-Schnittstelle programmiert werden. Das Ausgangssignal des Infrarot-Sensors wird über einen ADC-Pin eingelesen und verarbeitet. Ein MOSFET ermöglicht die Ansteuerung der Schlauchpumpe. Durch eine LED am gleichen Port wird das Schalten des MOSFETs angezeigt. Eine weitere LED kann beliebig angesteuert werden und dient hier zur Anzeige einer Näherung am IR-Sensor. Eine Schottky-Diode am Pumpen-Anschluss dient als Freilaufdiode und schützt die Schaltung vor Überspannungen.


<gallery widths="400" heights="400">
<gallery widths="400" heights="400">
Zeile 141: Zeile 138:
   Desinfektionsspender_Layout.png|Abb. 5: Layout der Steuerungs-Platine.
   Desinfektionsspender_Layout.png|Abb. 5: Layout der Steuerungs-Platine.
</gallery>
</gallery>
==== Stückliste ====
Die folgende Tabelle zeigt die Stückliste der gefertigten Platine.
{| class="mw-datatable"
! style="font-weight: bold;" | ID
! style="font-weight: bold;" | Wert
! style="font-weight: bold;" | Teile-Nr.
! style="font-weight: bold;" | Package
! style="font-weight: bold;" | 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 ====
Alle Komponenten wurden auf der Oberseite des Spenders montiert (siehe Abbildung 6). Vier Bohrlöcher in der Platine ermöglichen dessen Montage mit Kunststoff-Abstandshaltern auf der Oberseite des soliden, metallischen Gehäuses. Die Platzierung des Infrarotsensor am vorderen Ende des Auslegers sorgt für eine zuverlässige Hand-Erkennung.
<gallery widths="840" heights="450">
Datei:Desinfektionsspender_Aufbau.png|Abb. 6: Ansicht der Spender-Oberseite mit allen Komponenten.
</gallery>
==== Für Batteriebetrieb optimierte Version ====
{| class="mw-datatable"
! style="font-weight: bold;" | Eigenschaft
! style="font-weight: bold;" | L7805ACV [4]
! style="font-weight: bold;" | MCP1703A [5]
! style="font-weight: bold;" | Unterschied
|-
|Gehäuse
|TO-220
|SOT-223
|n.a.
|-
|Ruhestrom bei 7,5V Eingangsspannung
|4mA
|2µA
|
- 99,95%
|-
|Spannungsabfall bei 20mA Last
|1,5V
|0,025V
|
-98,33%
|}


=== Software ===
=== Software ===


<gallery widths="840" heights="300">
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.
Datei:Desinfektionsspender_Software.png|Abb. 6: Software-Architektur.
 
[[Datei:Desinfektionsspender_Stateflow.PNG|mini|Abb. 8: Zustandsautomat in Matlab Stateflow.]]
 
[[Datei:Desinfektionsspender_Verbindungscode_PAP.PNG|mini|Abb. 9: Programmablaufplan des Verbindungscodes.]]
 
[[Datei:Desinfektionsspender Programmierung.jpg|mini|Abb. 10: Arduino UNO als Programmer mit Status-LEDs auf der Steckplatine.]]
 
<gallery widths="840" heights="350">
Datei:Desinfektionsspender_Software.png|Abb. 7: Software-Architektur.
</gallery>
</gallery>
==== Zustandsautomat ====
Das gewünschte Verhalten des Spenders wurde als Zustandsautomat in Matlab Stateflow realisiert. Der einfache Automat mit lediglich drei Zuständen (vgl. Abbildung 8) 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 9).
==== Programmierung des Mikrocontrollers ====
Der ATtiny84-Mikrocontroller lässt sich über die 6-polige SPI-Schnittstelle auf der Steuerungs-Platine ohne Demontage programmieren (In-System-Programmierung - ISP). Mit der Software [https://www.arduino.cc/en/Tutorial/BuiltInExamples/ArduinoISP ArduinoISP] kann ein Arduino UNO als ISP-Programmer betrieben werden (siehe Abbildung 10). Dieser lässt sich darüber hinaus als Programmier-Tool direkt in Microchip Studio eingebunden werden und ermöglicht damit eine komfortable Programmierung der Steuerungs-Platine.


== Komponententest ==
== Komponententest ==
{| class="mw-datatable"
! style="font-weight: bold;" | Testfall-ID
! style="font-weight: bold;" | Anforderungs-ID
! style="font-weight: bold;" | Erwartung
! style="font-weight: bold;" | Ergebnis
! style="font-weight: bold;" | Bewertung
|-
| 1
| Req_30
| Als Aktor soll eine Schlauchpumpe mit einer Förderleistung von mindestens 30 ml/min eingesetzt werden.
| Die Schlauchpumpe fördert zwischen 30 ml/min bei 70%-PWM und 50 ml/min bei 100%-PWM.
| i.O.
|-
| 2
| Req_40
| Die Erkennung der Hände und die Ansteuerung des Aktors sollen durch LEDs angezeigt werden.
| Die beiden Status-LEDs auf der Platine zeigen die Erkennung und die Ansteuerung an.
| i.O.
|-
| 3
| Req_60
| Der Spender soll bei einer Entfernung zwischen 5cm und 10cm für eine definierte Zeit auslösen.
| Die Erkennung erfolgt mit einer Hysterese im definierten Bereich.
| i.O.
|-
!colspan="5"| Zusätzliche Testfälle
|-
| 4
| -
| Der ATtiny-Mikrocontroller soll durch eine SPI-Schnittstelle im eingebauten Zustand programmiert werden können.
| Der ATtiny lässt sich durch die SPI-Schnittstelle im eingebauten Zustand programmieren.
| i.O.
|-
| 5
| -
| Die Förderleistung soll sich durch eine PWM-Ansteuerung drosseln lassen.
| Die Förderleistung lässt sich durch die implementierte PWM-Ansteuerung bis zum Stillstand drosseln.
| i.O.
|-
| 6
| -
| Der Spannungsregler soll eine konstante Spannung von 5V liefern.
| Der Spannungsregler liefert bei einer Spannung am Netzteil von 7.5V, 9V und 12V eine konstante Spannung von 5V.
| i.O.
|}


== Ergebnis ==
== Ergebnis ==


== Zusammenfassung ==
Die zu Beginn des Projekts definierten Anforderungen sowie der erdachte Systementwurf konnten erfolgreich umgesetzt werden. Die gefertigte Platine steuert zuverlässig die Flüssigkeits-Abgabe und konnte im Gegensatz zum Arduino-Prototypen auf dem Spender montiert werden. Darüber hinaus kann das Verhalten bei Bedarf schnell durch die SPI-Schnittstelle umprogrammiert werden.
 
== Ausblick ==
 
Der berührungslose Desinfektionsspender ließe sich in mehreren Punkten weiter optimieren:
 
* Die verwendeten Bauformen von Spannungsregler und MOSFET sind für diese Anwendung überdimensioniert und könnten durch kompaktere Bauteile ersetzt werden.
* Durch eine Implementierung der Stromspar-Funktionen des ATtiny könnte ein Batterie-Betrieb realisiert werden.
 
Beide Punkte wurden bei der für einen Batteriebetrieb optimierten Version der Steuerungs-Platine umgesetzt. Weiterhin ist jedoch der verwendete Infrarot-Sensor mit einer Stromaufnahme von typ. 12 mA ([1], S.3) der mit Abstand größte Verbraucher. Darüber hinaus ist dieser Sensor vergleichsweise langsam und liefert bei einmaliger Aktivierung den ersten Messwert erst nach 25,2 ms ([1], S.3, worst case). Alternativ könnte daher ein anderer IR-Sensor eingesetzt werden, bspw. der Sharp GP2Y0D810Z0F (siehe [2]). Dieser bietet zahlreiche Vorteile:


=== Lessons Learned ===
* Niedrigere Versorgungsspannung möglich, z.B. 3,3V statt 5V. Dies würde auch die Stromaufnahme des Mikrocontrollers um fast 50% reduzieren ([3], S.246).
* Stromaufnahme von typ. 5 mA ([2], S.3) statt 12 mA.
* Output von logisch 0 bei einer Entfernung von 2cm bis 10cm. Der Sensor könnte also direkt an einen digitalen IO-Pin des Mikrocontrollers angeschlossen werden. Es kann auf die AD-Wandlung verzichtet werden, was Zeit und Strom spart.
* Schnelle Lieferung des ersten Messwerts nach nur 5,65 ms ([2], S.4) statt 25,2 ms. Damit könnte der Anteil der Zeit, in der der Mikrocontroller während der 100ms-Zyklusschleife im stromsparenden Idle-Modus läuft, deutlich verlängert werden.
 
Weitere Punkte sind:
* Eine z.B. im 3D-Druck-Verfahren hergestellte Abdeckung zur Unterbringung der Komponenten würde den Spender optisch aufwerten.
 
== Lessons Learned ==
 
In diesem Praktikum bzw. mit diesem Projekt wurde das Ziel verfolgt, dass Studierende im Bereich Elektrotechnik
Schaltungen für die Auswertung von Sensorinformationen entwerfen können, sowie verschiedene Aktortypen theoretisch
und praktisch ansteuern.
 
Mit der Verwendung eines Infrarot-Sensors und einer Schlauchpumpe sowie LEDs als Aktor wurde dieses Aufgabengebiet
sehr gut abgedeckt. Durch die Ansteuerung durch den Prototyp des Arduinos als auch durch das Erstellen einer
eigenen Mikrocontroller-Steuerungs-Platine wurde die Steuerung ebenfalls gemäß den Praktikumszielen entwickelt.
 
Folgende Punkte sind nur ein Teil der angewendeten elektrotechnischen Aufgaben:
 
*Projektplan Erstellung
*Anforderungsmanagement (funktionaler / technischer Systementwurf)
*Schaltplan und Leiterplatten Layout mit EAGLE
*Verhaltensmodellierung mit Zustandsautomaten
*Mikrocontroller-Programmierung mit generiertem C-Code aus MATLAB Simulink
*Debugging des Softwarecodes
*Löten von SMD-Bauteilen mit einer Lötzange
*Abnahme Test


== Projektunterlagen ==
== Projektunterlagen ==


=== Projektplan ===
=== Projektplan ===
<gallery widths="650" heights="500">
Datei:Desinfektionsspender_Projektplan.JPG|Abb. 11: Projektplan
</gallery>


=== Projektdurchführung ===
=== Projektdurchführung ===
Alle Unterlagen zur Durchführung wurden im [https://svn.hshl.de/svn/Elektrotechnik_Fachpraktikum/trunk/Projekte/093-125/122_Ber%C3%BChrungsloser_Desinfektionsspender SVN-Gruppenordner] hinterlegt.


== YouTube Video ==
== YouTube Video ==
{{#ev:youtube|https://youtu.be/duqWZB8XYOY|800||[https://youtu.be/duqWZB8XYOY Imagefilm des Projekts].|frame}}


== Literatur ==
== Literatur ==


[1] [https://www.farnell.com/datasheets/2364614.pdf Datenblatt Infrarot-Sensor]
[1] [https://www.farnell.com/datasheets/2364614.pdf Datenblatt Infrarot-Sensor]<br/>
[2] [https://www.pololu.com/file/0J154/GP2Y0D810Z0F.pdf Datenblatt alternativer Sensor]<br/>
[3] [https://ww1.microchip.com/downloads/en/DeviceDoc/ATtiny24A-44A-84A-DataSheet-DS40002269A.pdf Datenblatt ATtiny24A/44A/84A]<br/>
[4] [https://www.st.com/resource/en/datasheet/l78.pdf Datenblatt L7805ACV]<br/>
[5] [https://ww1.microchip.com/downloads/en/DeviceDoc/20005122B.pdf Datenblatt MCP1703A]


<!-- Fügen Sie diesen Footer hinzu.  -->
<!-- Fügen Sie diesen Footer hinzu.  -->
----
----
→ zurück zur Übersicht: [[:Kategorie:ProjekteET_MTR_BSE_WS2020|WS 20/21: Angewandte Elektrotechnik (BSE)]]
→ zurück zur Übersicht: [[:Kategorie:ProjekteET_MTR_BSE_WS2020|WS 20/21: Angewandte Elektrotechnik (BSE)]]

Aktuelle Version vom 15. März 2021, 22:38 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
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 mit einer Förderleistung von mindestens 30 ml/min 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 Die Datenverarbeitung und Ansteuerung des Aktors soll durch einen Arduino UNO erfolgen. 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 die Anforderung Req_50 nicht mehr gilt und durch Req_51 ersetzt wird: 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

Der funktionale Systementwurf stellt die Funktionen und Beziehungen der einzelnen Funktionseinheiten auf Basis der Anforderungen dar.

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

Der berührungslose Desinfektionsspender besteht neben dem ursprünglich per Hand betätigtem Spender aus drei weiteren Komponenten. In der folgenden Tabelle werden diese spezifiziert.

Komponenten Beschreibung Bild
Steuerungs-Platine Hauptmerkmale:
  • ATtiny84A-PU Mikrocontroller
  • L7805ACV Spannungsregler 5V
  • IRLZ44NPBF MOSFET
  • 2 Status-LEDs

Schnittstellen:

  • Buchse für Hohlstecker 6mm, 7V bis 35V
  • SPI-Schnittstelle für Programmierung
  • 5-Pol Stiftleiste für IR-Sensor & Pumpe
Infrarot-Sensor Sharp GP2Y0A41SK0F [1]
  • Messbereich: 4cm bis 30cm
  • Versorgungsspannung: 4,5V bis 5,5V
  • Ausgangsspannung: typ. 0,4V bis 2,65V
Schlauchpumpe
  • Nennspannung: 6V
  • Durchfluss: max. 60 ml/min

Umsetzung (HW/SW)

Im Folgenden wird die Umsetzung von Hard- und Software näher beschrieben. Grundsätzlich ist zwischen den zwei Versionen der Steuerung zu unterscheiden. Die erste, prototypische Version wurde auf Basis eines Arduino UNO entwickelt. Da dieser aufgrund der geringen Anzahl an benötigten IO-Bausteinen (1x Sensor-Input, 2x Output MOSFET & LED, 1x SPI-Schnittstelle) und dem geringen Platzangebot überdimensioniert war, wurde die finale Version als kompakte Platine mit ATtiny-Mikrocontroller realisiert.

Hardware

Alle Komponenten des Arduino-Protoyps wurden auf einem ProtoShield untergebracht. Dieses ermöglicht eine kompakte Bauweise ohne zusätzliches Steckbrett und lange Verbindungskabel. Dennoch erwies sich dieser Aufbau als zu groß für die Unterbringung auf dem schmalen Gehäuse des Spenders (vgl. Abbildung 3 und 6). Daher wurde diese Version lediglich als Muster für die Software-Entwicklung genutzt und parallel dazu eine möglichst kompakte Platine mit gleichem Funktionsumfang entwickelt. In Abbildung 3 wird der Größenunterschied deutlich.

Weitere Vorteile der Platine auf ATtiny-Basis wie der geringere Stromverbrauch werden hier vernachlässigt, könnten aber zum späteren Zeitpunkt relevant werden (siehe Ausblick).

Schaltplan & Layout

Abbildung 4 und 5 zeigen den Schaltplan und das Layout der Platine. Ein 5V-Spannungsregler sorgt für die konstante Spannungsversorgung von Mikrocontroller und Pumpe. Der ATtiny wird mit einem externen 8-Mhz-Quarz betrieben und kann über die 6-polige SPI-Schnittstelle programmiert werden. Das Ausgangssignal des Infrarot-Sensors wird über einen ADC-Pin eingelesen und verarbeitet. Ein MOSFET ermöglicht die Ansteuerung der Schlauchpumpe. Durch eine LED am gleichen Port wird das Schalten des MOSFETs angezeigt. Eine weitere LED kann beliebig angesteuert werden und dient hier zur Anzeige einer Näherung am IR-Sensor. Eine Schottky-Diode am Pumpen-Anschluss dient als Freilaufdiode und schützt die Schaltung vor Überspannungen.

Stückliste

Die folgende Tabelle zeigt die Stückliste der gefertigten Platine.

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

Alle Komponenten wurden auf der Oberseite des Spenders montiert (siehe Abbildung 6). Vier Bohrlöcher in der Platine ermöglichen dessen Montage mit Kunststoff-Abstandshaltern auf der Oberseite des soliden, metallischen Gehäuses. Die Platzierung des Infrarotsensor am vorderen Ende des Auslegers sorgt für eine zuverlässige Hand-Erkennung.

Für Batteriebetrieb optimierte Version

Eigenschaft L7805ACV [4] MCP1703A [5] Unterschied
Gehäuse TO-220 SOT-223 n.a.
Ruhestrom bei 7,5V Eingangsspannung 4mA 2µA

- 99,95%

Spannungsabfall bei 20mA Last 1,5V 0,025V

-98,33%

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. 8: Zustandsautomat in Matlab Stateflow.
Abb. 9: Programmablaufplan des Verbindungscodes.
Abb. 10: Arduino UNO als Programmer mit Status-LEDs auf der Steckplatine.

Zustandsautomat

Das gewünschte Verhalten des Spenders wurde als Zustandsautomat in Matlab Stateflow realisiert. Der einfache Automat mit lediglich drei Zuständen (vgl. Abbildung 8) 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 9).

Programmierung des Mikrocontrollers

Der ATtiny84-Mikrocontroller lässt sich über die 6-polige SPI-Schnittstelle auf der Steuerungs-Platine ohne Demontage programmieren (In-System-Programmierung - ISP). Mit der Software ArduinoISP kann ein Arduino UNO als ISP-Programmer betrieben werden (siehe Abbildung 10). Dieser lässt sich darüber hinaus als Programmier-Tool direkt in Microchip Studio eingebunden werden und ermöglicht damit eine komfortable Programmierung der Steuerungs-Platine.

Komponententest

Testfall-ID Anforderungs-ID Erwartung Ergebnis Bewertung
1 Req_30 Als Aktor soll eine Schlauchpumpe mit einer Förderleistung von mindestens 30 ml/min eingesetzt werden. Die Schlauchpumpe fördert zwischen 30 ml/min bei 70%-PWM und 50 ml/min bei 100%-PWM. i.O.
2 Req_40 Die Erkennung der Hände und die Ansteuerung des Aktors sollen durch LEDs angezeigt werden. Die beiden Status-LEDs auf der Platine zeigen die Erkennung und die Ansteuerung an. i.O.
3 Req_60 Der Spender soll bei einer Entfernung zwischen 5cm und 10cm für eine definierte Zeit auslösen. Die Erkennung erfolgt mit einer Hysterese im definierten Bereich. i.O.
Zusätzliche Testfälle
4 - Der ATtiny-Mikrocontroller soll durch eine SPI-Schnittstelle im eingebauten Zustand programmiert werden können. Der ATtiny lässt sich durch die SPI-Schnittstelle im eingebauten Zustand programmieren. i.O.
5 - Die Förderleistung soll sich durch eine PWM-Ansteuerung drosseln lassen. Die Förderleistung lässt sich durch die implementierte PWM-Ansteuerung bis zum Stillstand drosseln. i.O.
6 - Der Spannungsregler soll eine konstante Spannung von 5V liefern. Der Spannungsregler liefert bei einer Spannung am Netzteil von 7.5V, 9V und 12V eine konstante Spannung von 5V. i.O.

Ergebnis

Die zu Beginn des Projekts definierten Anforderungen sowie der erdachte Systementwurf konnten erfolgreich umgesetzt werden. Die gefertigte Platine steuert zuverlässig die Flüssigkeits-Abgabe und konnte im Gegensatz zum Arduino-Prototypen auf dem Spender montiert werden. Darüber hinaus kann das Verhalten bei Bedarf schnell durch die SPI-Schnittstelle umprogrammiert werden.

Ausblick

Der berührungslose Desinfektionsspender ließe sich in mehreren Punkten weiter optimieren:

  • Die verwendeten Bauformen von Spannungsregler und MOSFET sind für diese Anwendung überdimensioniert und könnten durch kompaktere Bauteile ersetzt werden.
  • Durch eine Implementierung der Stromspar-Funktionen des ATtiny könnte ein Batterie-Betrieb realisiert werden.

Beide Punkte wurden bei der für einen Batteriebetrieb optimierten Version der Steuerungs-Platine umgesetzt. Weiterhin ist jedoch der verwendete Infrarot-Sensor mit einer Stromaufnahme von typ. 12 mA ([1], S.3) der mit Abstand größte Verbraucher. Darüber hinaus ist dieser Sensor vergleichsweise langsam und liefert bei einmaliger Aktivierung den ersten Messwert erst nach 25,2 ms ([1], S.3, worst case). Alternativ könnte daher ein anderer IR-Sensor eingesetzt werden, bspw. der Sharp GP2Y0D810Z0F (siehe [2]). Dieser bietet zahlreiche Vorteile:

  • Niedrigere Versorgungsspannung möglich, z.B. 3,3V statt 5V. Dies würde auch die Stromaufnahme des Mikrocontrollers um fast 50% reduzieren ([3], S.246).
  • Stromaufnahme von typ. 5 mA ([2], S.3) statt 12 mA.
  • Output von logisch 0 bei einer Entfernung von 2cm bis 10cm. Der Sensor könnte also direkt an einen digitalen IO-Pin des Mikrocontrollers angeschlossen werden. Es kann auf die AD-Wandlung verzichtet werden, was Zeit und Strom spart.
  • Schnelle Lieferung des ersten Messwerts nach nur 5,65 ms ([2], S.4) statt 25,2 ms. Damit könnte der Anteil der Zeit, in der der Mikrocontroller während der 100ms-Zyklusschleife im stromsparenden Idle-Modus läuft, deutlich verlängert werden.

Weitere Punkte sind:

  • Eine z.B. im 3D-Druck-Verfahren hergestellte Abdeckung zur Unterbringung der Komponenten würde den Spender optisch aufwerten.

Lessons Learned

In diesem Praktikum bzw. mit diesem Projekt wurde das Ziel verfolgt, dass Studierende im Bereich Elektrotechnik Schaltungen für die Auswertung von Sensorinformationen entwerfen können, sowie verschiedene Aktortypen theoretisch und praktisch ansteuern.

Mit der Verwendung eines Infrarot-Sensors und einer Schlauchpumpe sowie LEDs als Aktor wurde dieses Aufgabengebiet sehr gut abgedeckt. Durch die Ansteuerung durch den Prototyp des Arduinos als auch durch das Erstellen einer eigenen Mikrocontroller-Steuerungs-Platine wurde die Steuerung ebenfalls gemäß den Praktikumszielen entwickelt.

Folgende Punkte sind nur ein Teil der angewendeten elektrotechnischen Aufgaben:

  • Projektplan Erstellung
  • Anforderungsmanagement (funktionaler / technischer Systementwurf)
  • Schaltplan und Leiterplatten Layout mit EAGLE
  • Verhaltensmodellierung mit Zustandsautomaten
  • Mikrocontroller-Programmierung mit generiertem C-Code aus MATLAB Simulink
  • Debugging des Softwarecodes
  • Löten von SMD-Bauteilen mit einer Lötzange
  • Abnahme Test

Projektunterlagen

Projektplan

Projektdurchführung

Alle Unterlagen zur Durchführung wurden im SVN-Gruppenordner hinterlegt.

YouTube Video

Literatur

[1] Datenblatt Infrarot-Sensor
[2] Datenblatt alternativer Sensor
[3] Datenblatt ATtiny24A/44A/84A
[4] Datenblatt L7805ACV
[5] Datenblatt MCP1703A


→ zurück zur Übersicht: WS 20/21: Angewandte Elektrotechnik (BSE)