Smart Home: Belüftung, Anwesenheitserkennung und Lichtalarm bei Hausklingeln eines Modellhauses mithilfe einer Phoenix Contact AXC 1050 SPS: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
<!-- Kopieren Sie diesen Header in Ihren Artikel, damit er aufgelistet wird.  -->
<!-- Kopieren Sie diesen Header in Ihren Artikel, damit er aufgelistet wird.  -->
'''Autoren:''' [[Benutzer:Ibrahim Nsangou | Ibrahim Nsangou]], [[Benutzer:Franck Bakofa Njanpouop| Franck Bakofa Njanpouop]] <br/>


'''Betreuer:''' [[Benutzer:Mirekgoebel|Prof. Dr. Mirek Göbel]] & [[Benutzer:Marc Ebmeyer|Marc Ebmeyer]]
'''Betreuer:''' [[Benutzer:Mirekgoebel|Prof. Dr. Mirek Göbel]] & [[Benutzer:Marc Ebmeyer|Marc Ebmeyer]]
Zeile 10: Zeile 11:
[[Datei:Titelbild Haus.jpeg|500px|thumb|Haus|rechts]]<BR><BR><BR>
[[Datei:Titelbild Haus.jpeg|500px|thumb|Haus|rechts]]<BR><BR><BR>
<!-- Dies hier wird nicht angezeigt -->
<!-- Dies hier wird nicht angezeigt -->
='''Einleitung'''=
='''Einleitung'''=
Im Rahmen des Produktionstechnik-Praktikums im siebten Semester des Studiengangs Mechatronik soll ein mechatronisches System mithilfe einer Speicherprogrammierbaren Steuerung (SPS) realisiert werden. In diesem Projekt soll ein Smart-Home entwickelt, welches die automatische Wohlfühltemperatur im Haus regelt, sowie durch eine intelligente Methode die Tür automatisch öffnet. In der Abbildung 1 sieht man die Skizze des Smart-Home.  
Im Rahmen des Bachelorstudiengangs Mechatronik findet im siebten Semester das Praktikum in der Produktionstechnik an der HSHL statt. In diesem Praktikum sollten Studierende in Kleingruppen( 2-3 Personen) ein mechatronische System umsetzen und programmieren. In diesem Praktikum wurde uns durch Zufall das Projekt Smart Home zugewiesen.  
=== Aufgabenstellung ===
=== Aufgabenstellung ===
Das Ziel des Projekts ist, ein Wohnhaus mit Sensoren und Aktoren intelligent zu gestalten. Dabei sollten für die Bearbeitung des Projekts folgende Punkte beachtet werden:  
Das Ziel des Projekt ist, ein Wohnhaus mit Sensoren und Aktoren intelligent zu machen. Um das zu erreichen sollten wir folgende Punkte beachten:  
* Recherche nach möglichen Automatisierung in einem Haus machen
* Als erste nach möglichen Automatisierung in einem Haus suchen
* Entscheidungsmatrix erstellen für die Auswahl von geeigneten Sensoren und Aktoren
* Entscheidungsmatrix erstellen für die Auswahl von geeigneten Sensoren und Aktoren
* Temperaturen und Feuchtigkeiten messen
* Temperaturen und Feuchtigkeiten messen
* Die Ansteuerung des Hauses per Phoenix Contact-SPS AXC 1050
* Dann die Ansteuerung der Komponenten per Phoenix Contact-SPS AXC
 
Nach der Recherche nach möglichen Automatisierung in einem Haus haben wir uns entschieden, uns um diese Unterprojekte zu kümmern. Die Nutzwertanalyse findet man [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WINSE_21_22/01_Anforderungsdefinition/ hier]
Nach der Recherche nach möglichen Automatisierung in einem Haus haben wurden entschieden, diese Unterprojekte zu erarbeiten. Die Nutzwertanalyse lässt sich [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WS_22_23/01_Anforderungsdefinition/ hier]zu finden.
[[Datei:Titelbild Recherche.jpeg|500px|thumb|Abbildung 1:Recheche: Was soll intelligent werden|rechts]]<BR><BR>
 
*Beleuchtung: Lichtalarm bei Haustürklingel. Wer gerne mit Kopfhörer arbeitet, nur eingeschränkt oder gar nicht hören kann, verpasst oft Besucher, die an der Haustüre klingeln.
*Beleuchtung  
*Heizungsregelung
*Automatische Wohlfühltemperatur-Reglung
*Anwesendheitserkennung
*Anwesenheitserkennung
*Schließsystem
*Tür inkl. Schließmechanismus
*Belüftung
*Belüftung des Hauses
<BR>
*SUB-D Stecker
<BR><BR><BR><BR>
*Belüftung des Hauses


='''Vorgehensweise nach V-Modell'''=
='''Vorgehensweise nach V-Modell'''=
[[Datei:V-Modell SmartHome.jpg|500px|thumb|Abbildung 2: V-Modell|rechts]]<BR>
[[Datei:Titelbild V-Modell.jpeg|500px|thumb|Abbildung 2:V-Modell|rechts]]<BR>
Das Projekt wird nach dem V-Modell durchgeführt, das eine lineare Vorgehensweise zur Projektbearbeitung ermöglicht, um ein strukturiertes Vorgehen bei Planung und Bearbeitung des Projekts zu gewährleisten. Link zu den Dokumenten lassen sich [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WS_22_23/ hier] finden.
Das V-Modell ist eine lineares Vorgehensmodell im Prohejektmanagement, das ein Projekt in fest definierte Phasen untergliedert. Das Prokekt wird nach der Vorschrift des V-Modells durchgeführt, um eine strukturiertes Vorgehen bei Planung und Umsetzung des Projekt zu gewährleisten.Link zu den Dokument finden Sie [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WINSE_21_22/ hier]
<BR>
<BR>
<BR><BR><BR><BR><BR><BR><BR><BR>
<BR><BR><BR><BR><BR><BR><BR><BR>
=== Anforderungsdefinition ===
=== Anforderungsdefinition ===
In der Phase der Anforderungsdefinition haben wir alle spezifischen Anforderungen an das System gesammelt, die das Projekt erfüllt soll. Die Anforderungen für dieses Projekt gliedern sich in folgende Punkte: Geometrie & Gewicht,Vorgehen,Aufbau,Schnittstellen, Software/ Werkzeuge und Dokumentation. Die Anforderungsliste für das Projekt lässt sich [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WINSE_21_22/01_Anforderungsdefinition/ hier] wiederfinden.
In der Phase der Anforderungsdefinition haben wir alle spezifischen Anforderungen an das System gesammelt, die das Projekt erfüllt soll. Die Anforderungen für dieses Projekt gliedern sich in folgende Punkte: Geometrie & Gewicht,Vorgehen,Aufbau,Schnittstellen, Software/ Werkzeuge und Dokumentation. Die Anforderungsliste für das Projekt lässt sich [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WINSE_21_22/01_Anforderungsdefinition/ hier] wiederfinden.
* Geometrie & Gewicht
** Die maximalen Abmaße für die Tür sind: Breite 10cm, Höhe 20 cm.
** Bauteilzeichnungen (Tür) muss erstellt werden. Wenn CAD benutzt wird, dann SolidWorks.
* Vorgehen
** Es muss eine Rechere nach möglichen Automatisierungen im Bereich    "Smart Home" erstellt werden
** Es müssen Kirterien zur Auswahl der für dieses Praktikum geeigneten Automatisierungen aufgestellt werden.
** Anhand dieser Kriterien wird eine Bewertung und eine Entscheidungs-Empfehlung bestimmt. Diese wird Prof. Göbel vorgelegt.
* Aufbau
** Es müssen die Temperatur und die Raumfeuchtigkeit gemessen werden
** Es müssen zwei Ventilatoren(Lüfter) verwendet werden, einer um frische Luft in dem Raum zu bringen und der andere um verbrauchte Luft aus dem Raum zu entfernen.
** Es muss ein Fenster eingebaut werden, welches sich mit einem Motor öffnen und schließen lässt.
** Es muss die Tür eingebaut werden, welche sich mit einem Motor öffnen und schließen lässt.
**  Lichtalarm bei Haustürklingel: Wer gerne mit Kopfhörer arbeitet, nur eingeschränkt oder gar nicht hören kann, verpasst oft Besucher, die an der Haustüre klingeln
* Schnittstellen
** Das Gerät muss an einem Standard-Steckdosen-Anschluss an 230V AC mit 50Hz (Deutschland) angeschlossen werden können.
** Alle Komponenten müssen über die Phoenix Contact AXC angesteuert werden
* Software / Werkzeuge
** Programmierung und Ansteuerung per PhoenixContact-SPS AXC in PC Worx
* Dokumentation
** Aufbau muss im HSHL-Wiki dokumentiert werden mit dem Mindestinhalt:
** Beschreibung des Aufbaus
** Schritt-für-Schritt-Anleitung zur Bedienung
<BR>
=== Funktionaler Systementwurf===
In diesem Kapitel Funtionaler Systementwurf sind alle Komponenten dargestellt, die notwendig sind, um das Ziel des Projekts zu erreichen. Auf der einen Seite befinden sich der Temperatur-und Feuchtigkeitssensor,Buzzer,Abstandsensor.Auf der anderen Seite sind dann ein Fenster und eine Tür, welche durch einen Servomotor geöffnet bzw geschlossen wird sowie die beiden Lüfter, welche ein- und ausgeschaltet werden. Der funktionale Systementwurf lässt sich  [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WINSE_21_22/02_Funktionaler_Systementwurf/ hier]<BR> [[Datei:Funktionaler Systementwurf.jpeg|500px|thumb|Abbildung 3:Funktionaler Systementwurf|rechts]]
<BR><BR>
<BR><BR>
<BR><BR>
<BR><BR><BR>
<BR><BR><BR><BR><br/>
=== Technischer Systementwurf===
Der technische Systementwurf hat denselben Aufbau wie der Funktionale Systementwurf, im Gegensatz zu dem funktionalem Systementwurf werden hier die Verbindungen(Die Signalart: digital/analog, Input/Outpout) zwischen den einzelnen Komponenten genau definiert (siehe Abbildung 3). Zum technischem Systementwurf gelangt man [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WINSE_21_22/03_Technischer_Systementwurf/ hier]<BR>
[[Datei:Techn_Systementwurf.png|500px|thumb|Abbildung 4:Technischer Systementwurf|rechts]]
<BR><BR><BR>
<BR><BR><BR>
<BR><BR><BR>
<BR><BR><BR>
<BR><BR><BR>
=== Komponentenspezifikation===
Bei der Komponentenspezifikation werden die Aufgaben und das Verhalten jeder Komponente definiert. Darüber hinaus wird der innere Aufbau mit den Schnittstellen jeder Komponente festgestellt. Im Folgenden werden alle Komponenten beschrieben, die in diesem Projekt verwendet werden. Im Unterkapitel "Einkaufsliste" werden zunächst alle bestellten Komponenten aufgelistet. Danach folgt die Beschreibung der einzelnen Komponenten.
====Einkaufliste====
{| class="mw-datatable"
|-
|'''Komponente'''
|'''Anbieter'''
|'''Preis'''
|'''Vorhanden?'''
|-
|Honeywell Feuchtigkeitssensor
|[https://de.rs-online.com/web/p/temperatursensoren-und-feuchtigkeitssensoren/5283171/ rs-online]
|18.87€
|nein


{| class="wikitable"
|-
! style="font-weight: bold;" | ID
|Temperatursensor NTC 10k
! style="font-weight: bold;" | Anforderung
|[https://de.rs-online.com/web/p/thermistoren/6298720/ rs-online]
|3,19€
|nein


|+ style = "text-align: left"|Tabelle 1: Anforderungen an das Smart-Home
|-
| '''1''' || '''Allgemein'''
|-
| 1.1 || Es muss eine Recherche nach mögliche Automatisierung gemacht werden
|-
| 1.2 || Eine automatische Wohlfühltemperatur-Reglung muss entwickelt werden
|-
|-
| 1.3 || Entscheidungsmatrix für Feuchtigkeits- und Temperatursensoren muss erstellt werden
|Sunon Axiallüfter
|[https://www.conrad.de/de/p/sunon-mf40202v1-1000u-a99-axialluefter-24-v-15-13-m-h-l-x-b-x-h-40-x-40-x-20-mm-2147541.html Conrad]
|6,81€
|ja
 
|-
|-
| 1.4 || Ein Terminal Block und Stecker muss gebaut werden, um die Verbindung zwischen Haus und Phoenix-Contact durch einen Kabel zu realisieren
|Servomotor HS-65 MG
|-  
|[https://www.hoelleinshop.com/Sender-Servos-etc-/Servos/Hitec/Analog/Nennspannung-bis-6-0V/Servo-HS-65-MG-23-6x11-6x24mm-18Ncm-12g-Multiplex-Hitec-112066.htm?shop=hoellein&SessionId=&a=article&ProdNr=M112066&t=182&c=15374&p=15374 Der Himmlische Höllein]
| 1.5 || Frontplatte muss neu erstellt werden, um das Haus schöner zu gestalten
|27,90€
|nein
 
|-
|-
| 1.6 || Es muss ein RFID-Leser gebaut werden
|Messingrohr
|[https://www.hoelleinshop.com/Zubehoer/Werkstoffe/Messing/Messingrohr-o-6-0x4-1x1000mm-Aeronaut-774006.htm?shop=hoellein&SessionId=&a=article&ProdNr=AN774006&t=49303&c=25277&p=25277 Der Himmlische Höllein]
|6,30€
|ja
 
|-
|-
| 1.7 || Mechanismus zur Anwesenheitserkennung muss entwickelt werden
|Bowdenzug
|[https://www.hoelleinshop.com/bowdenzug-100cm-einseitig-montiert.htm?shop=hoellein&SessionId=&a=article&ProdNr=RM034020&t=49303&c=26301&p=26301 Der Himmlische Höllein]
|2,90€
|ja
 
|-
|-
| 1.4 || Eine Tür inkl. Türmechanismus muss entwickelt werden
|Stahldrat
|-
|[https://www.hoelleinshop.com/Zubehoer/Werkstoffe/Stahl-Eisen-Nirosta-Draht/Stahldraht-o-4-0x1000mm.htm?shop=hoellein&SessionId=&a=article&ProdNr=HOE11000.4%2C0&t=49303&c=19813&p=19813 Der Himmlische Höllein]
| 1.5 || Frontplatte muss neu erstellt werden, um das Haus schöner zu gestalten
|2,60€
|ja
 
|-
|-
| 1.6 || Eine Benutzeroberfläche muss programmiert werden
|Ultraschallsensor
|[https://www.conrad.de/de/p/iduino-st1099-ultraschallsensor-1-st-1616245.html?gclid=Cj0KCQiAraSPBhDuARIsAM3Js4qdQhvlSeZ2_MqcHqgcDL_kjL2P-_z1bOL5VbQAAab5umrjfjZNRUcaArraEALw_wcB&hk=SEM&WT.srch=1&WT.mc_id=google_pla&s_kwcid=AL%21222%213%21549014662526%21%21%21u%21%21&ef_id=Cj0KCQiAraSPBhDuARIsAM3Js4qdQhvlSeZ2_MqcHqgcDL_kjL2P-_z1bOL5VbQAAab5umrjfjZNRUcaArraEALw_wcB%3AG%3As conrad]
|3,98€
|nein
|-
|-
|Piezo/Buzzer
|[https://de.rs-online.com/web/p/piezo-signalgeber/1710862 rs-online]
|1,86€
|nein
|-
|Glühbirne
|[https://www.conrad.de/de/p/osram-halogen-eek-g-a-g-g4-33-mm-12-v-10-w-warmweiss-stiftsockel-dimmbar-2-st-572215.html conrad]
|1,29€
|nein
|-
|Arduino Board Uno
|[https://www.conrad.de/de/p/arduino-board-uno-rev3-dil-core-atmega328-1275279.html conrad]
|21,99€
|ja
|}
====Phoenix Contact SPS====
Der Hauptkomponente des Projekt war die Phoenix Contact AXC 1050 SPS. Sie bezizt sowohl ein Modul für digitale Eingänge, digitale Ausgänge als auch ein Modul für analoge Ein-und Ausgänge. Die für das Projekt wichtigsten Eigenschaften der verwendeten Module sind im Folgenden aufgelistet und mit einem Link zu den einzelnen Datenblättern versehen.
[[Datei:SPS-Module.png|500px|thumb|Abbildung 5:SPS Module|rechts]]
*'''Analoges Ein- und Ausgangsmodul (I/O-Modul - AXL F AI2 AO2 1H – 2702072):''' [https://www.phoenixcontact.com/online/portal/de?uri=pxc-oc-itemdetail:pid=2702072&library=dede&tab=1 (zur Herstellerseite)] <ref>[https://www.phoenixcontact.com/online/portal/de?uri=pxc-oc-itemdetail:pid=2702072&library=dede&tab=1 ''Analoges Ein- und Ausangsmodul der SPS'']</ref>
**Besitzt 4 analoge Eingänge und 4 analoge Ausgänge
**Versorgungsspannung: 24V DC
**Auflösung des A/D-Wandlers: 16 Bit
**Eingangssignal Strom: 0mA bis 20mA, 4mA bis 20mA, -20mA bis 20mA
**Eingangssignal Spannung: 0V bis 10V, -10V bis 10V, 0V bis 5V, -5V bis 5V
**Ausgangssignal Strom: 0mA bis 20mA, 4mA bis 20mA, -20mA bis 20mA
**Ausgangssignal Spannung: 0V bis 10V, -10V bis 10V, 0V bis 5V, -5V bis 5V
*'''Digitales Eingangsmodul (I/O Modul – AXL F DI16/1 1H – 2688310):''' [https://www.phoenixcontact.com/online/portal/de?uri=pxc-oc-itemdetail:pid=2688310&library=dede&tab=1 (zur Herstellerseite)]<ref>[https://www.phoenixcontact.com/online/portal/de?uri=pxc-oc-itemdetail:pid=2688310&library=dede&tab=1/ ''Digitales Eingangsmodul der SPS'']</ref>
**Besitzt 16 digitale Eingänge
**Nenneingangsspannung beträgt 24V DC
**Eingangsspannungsbereich „0“-Signal: -3V DC bis 5V DC
**Eingangsspannungsbereich „1“-Signal: 11V DC bis 30V DC
*'''Digitales Ausgangsmodul (I/O-Modul - AXL F DO16/1 1H – 2688349):''' [https://www.phoenixcontact.com/online/portal/de?uri=pxc-oc-itemdetail:pid=2688349&library=dede&tab=1 (zur Herstellerseite)] <ref>[https://www.phoenixcontact.com/online/portal/de?uri=pxc-oc-itemdetail:pid=2688349&library=dede&tab=1 ''Digitales Ausangsmodul der SPS'']</ref>
**Besitzt 16 digitale Ausgänge
**Versorgungsspannung: 24V DC
**Ausgangsspannung: 24V DC
<BR>


====Verwendete Komponenten====
{| class="mw-datatable"
! style="font-weight: bold;" | Komponente
! style="font-weight: bold;" | Beschreibung
! style="font-weight: bold;" | Abbildung
! style="font-weight: bold;" | Link
|-
|Mikrocontroller: Arduino UNO R3
|Ein PWM-Signal wird benötigt, um den Servomotor anzusteuern. Die Phoenix Contact SPS kann hingegen kein PWM Signal erzeugen. Aus diesem Grund haben wir zwischen SPS und Servomotor ein Mikrocontroller(Arduino Uno) eingebaut. Der Mikrocontroller soll dann extern über 9v Batterie oder Netzteil mit Spannung versorgt werden. Um zu verhindern, dass der Mikrocontroller geschädigt wird, führt der Ausgang der SPS über einen Spannungsteiler auf den Eingang des Mikrocontrollers. Der Spanungsteiler ist an dieser Stelle unbedingt notwendig, weil die Ausgangsspannung der SPS 24 V beträgt,allerdings die Eingangsspannung des Mikrocontrollers nur maximal 5V betragen darf.
|[[Datei:Arduino UNO R3.jpg|126px|mini|zentriert|Arduino Uno Board]]
|-
| Servomotor
|Ein Servo besteht aus einer Motorsteuerung, einem Elektromotor, einem Getriebe und einem Potentiometer zur Positionsbestimmung. Alle Komponenten sind in einem robusten Gehäuse untergebracht. Winkelsbereich [0; 180] Grad. In diesem Projekt haben wir ein Servomotor HS-65 MG verwendet, dies wird mit einer Spannung von 4,8 V bis 6V betrieben.
|[[Datei: Servomotor.png|126px|mini|zentriert|Servomotor]]
|Mehr Information finden Sie [https://www.hoelleinshop.com/Sender-Servos-etc-/Servos/Hitec/Analog/Nennspannung-bis-6-0V/Servo-HS-65-MG-23-6x11-6x24mm-18Ncm-12g-Multiplex-Hitec-112066.htm?shop=hoellein&SessionId=&a=article&ProdNr=M112066&t=182&c=15374&p=15374 hier] <ref>[https://www.hoelleinshop.com/Sender-Servos-etc-/Servos/Hitec/Analog/Nennspannung-bis-6-0V/Servo-HS-65-MG-23-6x11-6x24mm-18Ncm-12g-Multiplex-Hitec-112066.htm?shop=hoellein&SessionId=&a=article&ProdNr=M112066&t=182&c=15374&p=15374 ''Servomotor'']</ref>


| '''2''' || '''Sensoren und Aktoren'''
|-
| 2.1 || Bewegungsmelder muss für die Anwesenheitserkennung verwendet werden.
|-
|-
| 2.2 || Feuchtigkeitssensor(HIH-4000-001) muss für die Innenfeuchtigkeit-Messung verwendet werden.  
| Temperatursensor 10k-NTC
|-  
| Der verwendete Temperatursensor ist ein 10k-NTC (siehe rechte Bild). Er bietet eine Temperaturmessung von 0°C bis 70°C mit einer Toleranz von ±2K bei 0°C und ±5K bei 70°C. Zum Auslesen der Temperaturmesswerte wird ein Spannungsteiler verwendet, der bei Temperaturen über 0°C Spannungen bis zu 10V ausgibt, da die SPS nur analoge Werte von 0V bis 10V auslesen kann (Siehe Kapitel SPS).
| 2.3 || Temperatursensor (10K NTC) muss für die Innentemperatur-Messung verwendet werden.
|[[Datei:TempSensor.jpg|126px|mini|zentriert|Temp 10k-NTC]]
|Das Datenblatt finden Sie [https://docs.rs-online.com/6a46/0900766b813c0ed3.pdf hier] <ref>[https://docs.rs-online.com/6a46/0900766b813c0ed3.pdf ''Datenblatt Temperatursensor NTC 10k'']</ref>
|-
|Ultraschallsensor
|Für die Anwesenheitserkennung haben wir einen Ultraschallsensor verwendet, der die Entfernung misst und je nach den Werten von Der Entfernung wird das Außenlicht ein- bwz ausgeschaltet.
|[[Datei:Ultraschallsensor_.jpg|126px|mini|zentriert|Ultraschallsensor]]
|Mehr Information finden Sie [https://www.conrad.de/de/p/iduino-st1099-ultraschallsensor-1-st-1616245.html?gclid=Cj0KCQiAraSPBhDuARIsAM3Js4qdQhvlSeZ2_MqcHqgcDL_kjL2P-_z1bOL5VbQAAab5umrjfjZNRUcaArraEALw_wcB&hk=SEM&WT.srch=1&WT.mc_id=google_pla&s_kwcid=AL%21222%213%21549014662526%21%21%21u%21%21&ef_id=Cj0KCQiAraSPBhDuARIsAM3Js4qdQhvlSeZ2_MqcHqgcDL_kjL2P-_z1bOL5VbQAAab5umrjfjZNRUcaArraEALw_wcB%3AG%3As hier] <ref> [https://www.conrad.de/de/p/iduino-st1099-ultraschallsensor-1-st-1616245.html?gclid=Cj0KCQiAraSPBhDuARIsAM3Js4qdQhvlSeZ2_MqcHqgcDL_kjL2P-_z1bOL5VbQAAab5umrjfjZNRUcaArraEALw_wcB&hk=SEM&WT.srch=1&WT.mc_id=google_pla&s_kwcid=AL%21222%213%21549014662526%21%21%21u%21%21&ef_id=Cj0KCQiAraSPBhDuARIsAM3Js4qdQhvlSeZ2_MqcHqgcDL_kjL2P-_z1bOL5VbQAAab5umrjfjZNRUcaArraEALw_wcB%3AG%3As ''Ultrachallsensor''] </ref>
|-
|Axiallüfter
|Als Lüfter haben wir einen Axiallüfter von Firma Sunon verwendet. Sie wird mit 24 V DC betrieben, hat eine maximale Umdrehungszahl von 7000 Umdrehungen pro Minute und eine maximale Stromaufnahme von 39 mA. In diesem Projekt haben wir dann zwei eingebaut so, dass eine frische Luft in das Haus hinein und der andere die alte Luft aus dem Haus heraus befördert.
|[[Datei:Axiallüfter.png|126px|mini|zentriert|Axiallüfter]]
|Das Datenblatt finden Sie [https://asset.conrad.com/media10/add/160267/c1/-/en/002147541DS01/datenblatt-2147541-sunon-mf40202v1-1000u-a99-axialluefter-24-vdc-1513-mh-l-x-b-x-h-40-x-40-x-20-mm.pdf hier] <ref>[https://asset.conrad.com/media10/add/160267/c1/-/en/002147541DS01/datenblatt-2147541-sunon-mf40202v1-1000u-a99-axialluefter-24-vdc-1513-mh-l-x-b-x-h-40-x-40-x-20-mm.pdff ''Datenblatt Axiallüfter'']</ref>.
|-
|-
| 2.4 || Servo Motoren müssen für die Öffnung und Schließung der Tür und Fenster verwendet werden.
|Piezo/Buzzer
|Der verwendete Buzzer der Firma RS Pro wird mit 24V DC betrieben. Die Tonleistung bei 30 cm ist größer gleich 85db.
|[[Datei:Buzzer.png|126px|mini|zentriert|Piezo/Buzzer]]
|Das Datenblatt finden Sie [https://docs.rs-online.com/0842/0900766b81580d5a.pdf hier] <ref>[https://docs.rs-online.com/0842/0900766b81580d5a.pdf ''Datenblatt Buzzer'']</ref>
|-
|-
| 2.5 || Axiallüfter muss für die Belüftung des Smart-Home verwendet werden.
|Feuchtigkeitssensor
|Als Feuchtigkeitssensor wird ein HIH-4000-001 der Firma Honeywell verwendet. Er bisitzt drei Pins: eine für die Versorgungsspannung, eine für Masse(GND) und eine für die Ausgangsspannung. Da der Sensor nur Spannung bis maximal 5,8V annehmen kann, soll auch hier ein Spannungsteiler verwendet werden.
|[[Datei:Feuchtigkeitsensor.png|126px|mini|zentriert|HIH-4000-001]]
|Das Datenblatt finden Sie [https://docs.rs-online.com/53cc/0900766b8138b8e7.pdf hier]<ref>[https://docs.rs-online.com/53cc/0900766b8138b8e7.pdf ''Datenblatt Feuchtigkeitssensor'']</ref>
|}
<BR>
 
====Schaltplan====
Der Schaltplan wurde mit der kostenlosen Software TinyCAD erstellt, welche sich [https://www.chip.de/downloads/TinyCAD_44228825.html hier]<ref>[https://www.chip.de/downloads/TinyCAD_44228825.html/ ''TinyCAD'']</ref> heruntergeladen lässt. Die Dateien lassen sich [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WINSE_21_22/05_Entwicklung/Schaltung/ hier]<ref>[https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WINSE_21_22/05_Entwicklung/Schaltung/ Schalpläne]</ref> wieder finden.
In Abbildung 6 sieht man alle Komponente, die mit dem SPS-Eingang verbunden sind. Hier sind auf der einen Seite Schalter, die mit der digital Input ( DI00, DI10,DI11,DI20 und DI01) verbunden sind. Wie bereit im Kapitel ''Verwendete Komponente'' erwähnt, soll zum Auslesen der Temperaturwerte und Luftfeuchtigkeit ein Spannungsteiler verwendet werden. Aus diesem Grund, ist der Temperatursensor(10k-NTC) über einen Spannungsteiler mit einem Widerstand(47kOhm) und dann mit der analog Eingänge AI0.0 und AI0.1 verbunden. Mit diesem Spannungsteiler stellen wir sicher, dass nur eine Spannung von 0V bis maximal 10V an den NTC angelegt wird. Der Feuchtigkeitssensor ist außerdem über einen Spannungsteiler mit einem Widerstand von 20kOhm und einem Widerstand von 5,2kOhm mit der Eingang SPS (Analog  Input: AI0.1 und AI1.1) verbunden. <Br>
In Abbildung 7 sind alle Komponenten dargestellt, die mit dem Ausgang der SPS verbunden sind. Auf der einen Seite ist den Verbindung der Lampe(DO0.1) und Buzzer(DO0.0) mit SPS erkennen. Der Servomotor ist mit einem Mikrocntroller(Im Bild sieht man ein Arduino Mega aber wir haben bei der Umsetzung einen Arduino Uno verwendet(TinyCAD hat nur Arduino Mega))verbunden, da dieser den Servomotor mit dem erforderlichen PWM-Signal versorgt. Der Servomotor ist mit PIN 5(PWM-pin) des Mikrocontrollers verbunden. Der Mikrocontroller ist seinerseits mit digital Output D01.0 der SPS verbunden. Da der Mikrocontroller maximal 5V annehmen kann, ist ein Spannungsteiler mit einem Widerstand von 20kOhm und einem Widerstand von 5,2kOhm zwischen dem Arduino und der SPS geschaltet. Die Bauteil sind dann auf eine Platine gelötet (siehe Abbildung 8). Die Schaltung aufbau auf die Platine lässt sich [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WINSE_21_22/Wiki-Artikel/Bilder// hier] wiederfinden.
{|class="wikitable"
|[[Datei:SPS_Eingänge.png|400px|thumb|Abbildung 6: Eingänge der SPS]]
|[[Datei:SPS_Ausgänge.png|400px|thumb|Abbildung 7: Ausgänge der SPS]]
|[[Datei:Platine2.png|400px|thumb|Abbildung 8: Komponente auf Platine]]
|}
<BR>
 
=== Programmierung===
Die Programmierung der SPS erfolgt nur in PC Worx mithilfe der Funktionsblocksprache FBS. Das Anlegen eines neuen Prokets in PC Workx, das Herstellen der Verbindung zwischen SPS und PC sowie das Erstellen eines SPS-Programms in der Funktionsblockprache werden im Artikel [[Erstellen eines Projektes in PC Worx]]. Zu diesem Thema haben wir auch einen Lernbrief verfasst, den Sie [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WINSE_21_22/Praesentationen/Sontiges/ hier] <ref>[https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WINSE_21_22/Praesentationen/Sontiges/ ''Lernbrief''] </ref> finden.<BR> <BR>
*Nein, das Rad wurde nicht neu erfunden ;). Wir haben uns von [https://wiki.hshl.de/wiki/index.php/Automatische_Bel%C3%BCftung_eines_Modellhauses_mithilfe_einer_Phoenix_Contact_AXC_1050_SPS der Arbeit unserer Vorgänger] inspieren lassen, um das Projekt zu realisieren. Wir haben ihr SPS-Programm für die Belüftung übernommen und entsprechend nach unseren Anforderungen geändert.Wir haben auch ihre Komponente(Lüfter) und das Haus übernommen, sodass wir mehr Zeit haben, um uns auf die weitere Entwicklung und Programmierung zu konzentrieren.
<BR>
====Programmablaufplan====
Der Programmablauf wurde mit der Software PapDesigner, welche [https://papdesigner.de.softonic.com/ hier]<ref>[https://papdesigner.de.softonic.com/ ''PapDesigner'']</ref> heruntergeladen werden kann. Im Programm sollen ständig die Werte des Temperatur- bzw. Luftfeuchtigkeitssensors überwacht werden. Ist die Temperatur größer als 25 °C und/oder die Luftfeuchtigkeit größer als 60%, soll das Fenster geöffnet und die Lüfter angeschaltet werden und die Heizung (Heizbirne) ausgeschaltet werden. Anderfalls erst  geschlossen werden, wenn die Temperatur unter 18 °C und/oder die Luftfeuchtigkeit unter 35% fällt und in diesen Fall wird die Heizung (Heizbirne) eingeschaltet. Parallel soll kontinuierlich den Abstand gemessen werden. Ist der Abstand zwischen Jemand oder einen Objekt kleiner 20 cm, wird das Licht(LED) eingeschaltet(Siehe Abbildung 9).
Wiederum soll ständig die Stellung der Schalter1(Türklingel) überwacht werden. Ein weiterer Schalter wird dann verwendet, um den Lichtalarm zu ein-oder auszuschalten. Wenn die Klingel an der Haustür (Schalter1) gedrückt wird und Schalter2(im Haus) eingeschaltet ist, werden die Klingel und der Lichtalarm (rotes Licht) gleichzeitig aktiviert. Wenn die Türklingel gedrückt wird, aber Schalter2 ausgeschaltet ist, muss nur der Klingelton aktiviert werden (siehe Abbildung 10). Zum Programmablaufplan gelangt man [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WINSE_21_22/05_Entwicklung/Programmablaufplan/ hier]<ref>[https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WINSE_21_22/05_Entwicklung/Programmablaufplan/ ''Programmablaufplan'']</ref>
[[Datei:Programm_ablaufplan.png|500px|thumb|Abbildung 9: Programmablaufplan: Belüftung des Hauses|links]]
[[Datei:Smart Home Lichtalarm.png|500px|thumb|Abbildung 10: Programmablaufplan: Lichtalarm beim Hausklingeln|rechts]]
<BR><BR><BR>
<BR><BR><BR>
<BR><BR><BR>
 
====SPS-Programm====
Folgende Tabelle zeigt alle FBS Blöcke, die wir für das SPS-Programm verwendet haben. Im Kapitel Programmierung sollen wir das Wissen anwenden, das wir bereits im Bereich Digitaltechnik erworben haben.


=====Verwendete FBS Blöcke=====
{| class="mw-datatable"
! style="font-weight: bold;" | FBS Block
! style="font-weight: bold;" | Beschreibung
! style="font-weight: bold;" | Wahrheitstabelle
|-
|-
| '''3''' || '''Aufbau und Messung'''
|[[Datei:Block NOT.jpg|200px|mini|zentriert|NOT_Block]]
|Im „NOT_Block“, wird das Eingangssignal invertiert. Das heißt, wenn am Eingang eine "0" anliegt, liegt am Ausgang eine "1" an und umgekehrt.
|[[Datei:NOT Wahrheitstabelle.jpg|200px|mini|zentriert|NOT Wahrheitstabelle]]
|-
|-
| 3.1 || Es muss eine Projektplanung erstellt werden.
|[[Datei:Block LT.jpg|200px|mini|zentriert|LT_Block]]
|Der „LT_Block“, was für "lower than" steht, vergleicht zwei Eingangssignale miteinander. In diesem Fall handelt sich um das Eingangssignal "Input4"(AI0.1) und eine Variable V002, der wir den Wert 12630 zugewiesen haben. Wenn das Eingangssignal kleiner als diese Variable V002 ist, dann wird der Ausgang auf boolesche 1 geschaltet.
|
|-
|-
| 3.2 || Ein Konzept für den Hausaufbau muss erstellt werden.
|[[Datei:Block AND.jpg|200px|mini|zentriert|AND_Block]]
|Der „AND-Block“ steht für eine UND-Verknüpfung. Das bedeutet,dass am Ausgang nur dann eine boolesche „1“ steht, wenn beide Eingänge auf  „1“ stehen (siehe Wahrheitstabelle)
|[[Datei:AND Wahrheitstabelle.jpg|200px|mini|zentriert|AND Wahrheitstabelle]]
|-
|-
| 3.3 || Die Frontplatte muss in SolidWorks konstruiert und anschließend gefräst werden
|[[Datei:Block GT.jpg|200px|mini|zentriert|GT_Block]]
|Der „GT_Block“, was für "greater than" steht, vergleicht auch zwei Eingangssignale miteinander. In diesem Fall handelt sich um das Eingangssignal "Input2"(AI0.1) und eine Variable V003 Wenn das Eingangssignal größer als diese Variable V003 ist, dann wird der Ausgang auf boolesche 1 geschaltet.
|
|-
|-
| 3.4 || Die Tür muss in SolidWorks konstruiert und 3D gedruckt werden.
|[[Datei:Block RS.jpg|200px|mini|zentriert|RS_Block]]
|Der „RS_Block“ steht für eine RS-Flip-Flop. Das bedeutet, dass der Eingang S(Set) dazu dient, ein Signal zu setzen und der Eingang R(Reset) dient dazu , ein Signal zurückzusetzen (Siehe Wahrheitstabelle).
|[[Datei:RS Wahrheitstabelle.jpg|200px|mini|zentriert|RS Wahrheitstabelle]]
|-
|-
| 3.5 || Die Verkablung muss beschriftet sein.
|[[Datei:Block OR.jpg|200px|mini|zentriert|OR_Block]]
|Der „OR_Block“ steht für eine ODER-Verknüpfung. Das bedeutet,dass t eine boolesche 1 nur dann am Ausgang anliegt, wenn an einem der beiden oder an beiden Eingängen eine „1“ vorhanden ist.
|[[Datei:OR Wahrheitstabelle.jpg|200px|mini|zentriert|OR Wahrheitstabelle]]
|-
|-
| 3.6 || Das Fenster sowie die Tür müssen automatisch geöffnet und geschlossen werden.
|}
<BR>
Das in Abbildung 11 gezeigte Programm wurde in PC Worx erstellt. Zum Program gelangt man [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WINSE_21_22/05_Entwicklung/Programm SPS/                hier]<ref>[https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WINSE_21_22/05_Entwicklung/Programm SPS/ ''Programm SPS'']</ref> PC Worx ist die durchgängige Engineering-Software für alle Steuerungen von Phoenix Contact. Sie vereint Programmierung nach IEC 61131, Feldbuskonfiguration und Anlagendiagnose in einer Software. Das heißt für Optimales Zusammenspiel von Hard- und Software.
<BR>
[[Datei:SPSProgramm.png|500px|thumb|Abbildung 11:SPS Module|rechts]]
{| class="mw-datatable"
 
|-
|-
| 3.7 || Feuchtigkeits- und Temperaturmessung von innen muss gemacht werden
|'''Bezeichnung'''
|'''Signalart'''
|'''Komponente'''
|'''Adresse'''
|-
|-
| '''4''' || '''Schnittstellen & Software'''
|Input1
|Digital
|S1 (Türknopf)
|DI0.0
 
|-
|Input2
|Analog
|Luftfeuchtigkeitssensor
|AI1.0
 
|-
|Input3
|Digital
|S2 (Bestätigung)
|DI0.1
 
|-
|Input4
|Analog
|Temperatursensor
|AI0.0
 
|-
|-
| 4.1 || Das Haus muss über Pc-Worx programmiert werden.
|Input5
|Digital
|Schalter3
|DI1.1
|-
|-
| 4.2 || Das Smart-Home muss per Phoenix Contact AXC 1050 und Arduino Uno angesteuert werden.
|Input6
|Digital
|Schalter4
|DI1.0
|-
|-
|Input7
|Digital
|Schalter5
|DI2.0
|-
|-
| '''5''' || '''Dokumentation'''
|OUT1
|Digital
|Buzzer
|DO0.0
|-
|-
| 5.1 || Detaillierte Dokumentation als Wiki-Artikel muss im HSHL Wiki geschrieben werden.
|OUT3
|Digital
|Lampe(rotes Licht: lichtalarm)
|DO0.1
 
|-
|-
| 5.2 || Die Dokumentation muss Schritt für Schritt erklärt und nachvollziehbar sein.
|OUT4
|Digital
|Lüfter2
|DO2.1


|-
|OUT5
|Digital
|Arduino Uno (PWM-Signal)
|DO1.0
|-
|OUT6
|Digital
|Lüfter1
|DO1.0
|-
|OUT7
|Digital
|Heizbirne
|DO2.0
|}
|}
Als Erstes überlegten wir, wie wir den Lichtalarm, wenn die Haustür klingelt, realisieren könnten. Wir haben daher zwei AND-Verknüpfungen verwendet. Es gibt nur dann Lichtalarm (rotes Licht) , wenn Eingang1(Input1) und Eingang3(Input3) auf 1 gesetzt sind.
Wir haben uns zwei Möglichkeiten, die Ausgänge (OUT 4, 5 und 6) zu steuern. Wir haben die Ausgänge zunächst so programmiert, dass sie automatisch gesteuert werden, und das Programm dann so erweitert, dass der Benutzer sie auch manuell steuern kann. Die beiden Steuerungsarte werden dann durch RS-Flipflops verbunden, die durch eine ODER-Verknüpfung verbunden sind. Die Ausgänge(OUT6,OUT4,OUT5) führen ein Signal nur, wenn RS_1 oder RS_3 ein Signal führt. input7(Schalter) beendet den automatischen Modus und wechselt in den manuellen Modus. Die Steuerung befindet sich dann nur im manuellen Modus, wenn Input7(Schalter) ein Signal führt. In diesem Fall erhält der Rücksetzeingang von RS_1 ein Signal aber der Rücksetzeingang von RS_3 erhält kein Signal, weil das Signal des Eingang(Input7)  zuvor negiert wird. (Siehe ''' NOT Block''') im Kapitel [[#Verwendete FBS Blöcke|"Verwendete FBS Blöcke"]]. Wenn der Eingang Input7 kein Signal führt, ist der Automatikmodus aktiviert. In diesem Fall hingegen der Rücksetzeingang von RS_3 erhält ein Signal(die boolesche 0 von Input7 wird negiert).<BR>
<BR>
'''Automatikmodus'''<BR>
Sobald der Analogwert von Input4 kleiner als der Analogwert von Variable V002(12000) ist, was einer Temperatur von mehr als 25°C entspricht, oder der Analogwert von Input2 größer als der Analogwert von Variable V003 ist, was einer Luftfeuchtigkeit von mehr als 60% entspricht, erhält der Setzeingang von RS_1 ein Signal. Das bedeutet, dass das Fenster geöffnet und die Lüfter eingeschaltet werden. Damit das Fenster geschlossen und die Lüfter ausgeschaltet werden, soll der Analogwert von Input4 nicht kleiner als der Analogwert von Variable V005(15500) sein, was eine Temperatur  kleiner 18°C entspricht oder der Analogwert von Input2 soll nicht größer als der Analogwert von Variable V004(6000), was eine Luftfeuchtigkeit kleiner 40% entspricht.  Zusammenfassend lässt sich sagen, dass der Einstelleingang von RS_1 nur dann ein Signal führen kann, wenn sich die Steuerung im Automatikmodus befindet, die Temperatur höher als 18 °C oder die Luftfeuchtigkeit höher als 60 % ist.
Der Setzeingang von RS_4 erhält ein Signal nur , wenn der Analogwert von Input4 größer als der Analogwert von Variable_T (18000) ist, was eine Temperatur von weniger als 15°C entspricht. In diesem Fall wird die Heizung eingeschaltet.<BR>
<BR>
'''Manual Modus'''<BR>
Wir haben diesen Modus hinzugefügt, weil es vorkommen kann, dass einer der Sensoren (für Temperatur oder Luftfeuchtigkeit) defekt ist. In diesem Fall wäre es hilfreich, wenn der Nutzer das Haus manuell lüften könnte. Für den manuellen Modus erhält der Setzeingang von RS_3 ein Signal von Input6, also eine 1, wenn der Schalter 4 geschaltet ist. Der Rücksetzeingang erhält zusätzlich zum negierten Wert von Input7 ein Signal von Input5, also eine 1, wenn Schalter 3 geschaltet ist.
<BR>
<BR>


=== Funktionaler Systementwurf===
====Arduino Code====
Der in Abb. 3 abgebildete Systementwurf gibt einen kleinen Überblick über die Sensoren und Aktoren, sowie ihre entsprechenden Funktionen im System.
Zur Steuerung des Servomotors haben wir einen Mikrocontroller zwischengeschaltet, der die Position des Motors so definieren soll, dass sich das Fenster öffnet, wenn, der Ausgang OUT4 der SPS ein Signal überträgt. Der Ausgang der SPS (AO1.0) ist mit dem analog Pin A0. Wenn der SPS-Ausgang kein Signal führt, gib A3_Wert einen Wert unter 1000 (Also Eingangsspannung kleiner als 4V) zurück. In diesem Fall soll das Fenster geschlossen werden, indem der Servomotor auf 80° gestellt wird.. Anderfalls wenn der Ausgang der SPS (AO1.0) ein Signal führt, gib A3_Wert einen Wert gößer als 1000(Also Eingangsspannung größer 4,7 V). In diesem Fall soll das Fenster geöffnet werden, indem der Servomotor auf 10° gestellt wird.
Der Phoenix Contact AXC 1050 spielt die Hauptrolle in dem System. Auf einer Seite befinden sich die Temperatur- und Feuchtigkeitssensor, auf der anderen Seite befinden sich die Axiallüfter, welche für die Belüftung verwendet werden. Daneben befinden sich ein Mikrocontroller und zwei Servo Motoren, Bewegungsmelder und RFID-Leser, die über den Mikrocontroller angesteuert werden. Unten befindet sich eine Benutzeroberfläche, welche die Ansteuerung der Komponenten darstellt. Der funktionale Systementwurf lässt sich [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WS_22_23/02_Funktionaler_Systementwurf/ hier]<BR>
Da die Verwendung von Mikrocontrollern unbedingt erforderlich war, nutzten wir diesen Fall, um eine neue Funktion im Haus einzurichten. Dabei handelt sich um die Anwesenheitserkennung. Um die Anwesenheit zu erkennen, wurde einen Ultraschalsensor eingesetzt, welcher in der Lage ist, Objekte berührungslos zu erkennen und ihre Entfernung zum Sensor zu messen. Die Entfernung wird im Variable "Distance" gespeichert. Ist diese Entfernung kleiner gleich 20 cm, dann soll das Außenlicht eingeschaltet werden. Anderfalls bleibt es ausgeschaltet.
<BR><BR>
  <div style="width:1100px; height:200px; overflow:auto; border: 2px solid #088">
<BR><BR>
/*
<BR><BR>
  Projekt:                    Produktionstechnik_praktikum
<BR><BR><BR>
 
<BR><BR><BR><BR><br/>
  Funktion der Programm:      Schließen/öffnen Fenster und Tür
 
  Autoren:                    Nsangou Pekariekouo and Franck Bakofa
 
  Betreuer:                    Prof. Dr. Ing Mirek Göbel and Herr Marc Ebmeyer
 
  Datum:                      Hamm, den 25.November 2021
 
  Letzte Änderung an den:      04.02.2022              */


=== Technischer Systementwurf===
// Um das Ziel des Projekt zu erreichen, benötigt man folgende Bibliothek
Der technische Systementwurf hat denselben Aufbau wie der Funktionale Systementwurf, im Gegensatz zu dem funktionalem Systementwurf werden hier die Verbindungen(Die Signalart: digital/analog, Input/Outpout) zwischen den einzelnen Komponenten genau definiert (siehe Abbildung 3). Zum technischem Systementwurf gelangt man [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WINSE_21_22/03_Technischer_Systementwurf/ hier]<BR>
#include <Servo.h>
[[Datei:Techn_Systementwurf.png|500px|thumb|Abbildung 4:Technischer Systementwurf|rechts]]
#include <Adafruit_NeoPixel.h>
<BR><BR><BR>
// Instanz der Klasse Adafruit_NeoPixel
<BR><BR><BR>
#define PIN 8        // Neopixels sind mit dem digitalen Pin 8 verbunden
<BR><BR><BR>
#define NUMPIXELS 5  // Anzahl Pixel
<BR><BR><BR>
Adafruit_NeoPixel strip(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
<BR><BR><BR>


// Variablen
int Trigger_Pin = 4;  // Trigger auf digital Pin 4
int Echo_Pin    = 5;  // Echo auf digital Pin 5
long Distance = 0;    // Variable, in der die Entfernung gespeichert wird
#define Max_Distance 100 // Max Entfernung
long Dauer = 0;          // Variable für die Dauer
Servo ServoMotor;        // Servomotor definieren


int A3_Wert; // Variable, in der den gelesenen Wert speichert wird.
int SPS_Data = A0; // Pin, der gelesen werden soll


void setup()
{
  Serial.begin(9600); // Serielle Verbindung starten (Monitor)
  strip.begin(); // Initialisierung der NeoPixel Objekt.
  strip.setBrightness(100); // Set BRIGHTNESS (max = 255)
  pinMode(Trigger_Pin, OUTPUT);
  pinMode(Echo_Pin, INPUT);
  ServoMotor.attach(10); // Servo auf digtal Pin3 (PWM)
  ServoMotor.write(10);  // Anfangswinkel
 
}
void loop()
{
  /**************************************
    Teil 1: Schließsystem (Fensters)
  **************************************/
  A3_Wert = analogRead(SPS_Data);
  Serial.println(A3_Wert);
  if (A3_Wert >= 1000) // SPS führt ein Signal
  {
    Serial.println("Öffne das Fenster!");
    ServoMotor.write(10);
  }
  else                          // SPS führt keine Signal
  {
    Serial.println("Schließe das Fenster!");
    ServoMotor.write(80);
  }
  /**************************************
    Teil3 : Anwesenheitserkennung (Tür)
  **************************************/
  Distance = ReadPing();
  Serial.print("Dis: ");
  Serial.println(Distance);
  if (Distance <= 20)
  {
    setcolor(127, 127, 127);        // ruf die Funktion stecolor und übergib 127 für R, G und B Anteil: weiße Farbe
  }
  else
  {
    setcolor(0, 0, 0);            // Licht ausschalten, falls Distance > 20
  }


===Abnahmetest===
}


void setcolor(int r, int g, int b)  //
{
  for (int i = 0; i < NUMPIXELS; i++) // Für jedes Pixel...
  {
    strip.setPixelColor(i, strip.Color(r, g, b));  // pixel.Color() nimmt RGB-Werte von 0,0,0 bis 255,255,255
  }
  strip.show();        // Senden Sie die aktualisierten Pixelfarben an die Hardware.


Test-Artikel des KOM - KOmmunikation Teams Sprint WiSe 22/23. Die in der [[OSE Softwareumgebung]] beinhaltendende Kommunikation wird getestet. Dafür werden die zu übertragendenden Daten wie das Spurpolynom oder Lidar-Objekte über RS232 an die dSPACE Karte DS1104 geschickt. Der Abschnitt Testfall lässt sich über den Knopf "Ausklappen" anzeigen.
}
<div class="mw-collapsible">
long ReadPing()  // Messung der Entfernung
  digitalWrite(Trigger_Pin, LOW);
  delay(5);
  digitalWrite(Trigger_Pin, HIGH);          // Sendung eine Ultraschallwelle.
  delay(10);
  digitalWrite(Trigger_Pin, LOW);
  Dauer = pulseIn(Echo_Pin, HIGH);        // Der Mikrokomtroller zählt die Zeit in Mikrosekunden,bis der Schall zum Ultraschallsensor zurückkehrt.
  long a = (Dauer / 2) * 0.03432;        // 0.03432 entspricht die Schallgeschwindigkeit in Zentimeter/ Mikrosekunde.
  if (a >= 100 || a <= 2)                // ist die Entfernung aushalb diesen Bereich, dann wird die Max_Distance zurückgegeben
    {
    a = Max_Distance;
    }
  return a;                          // Entfernung zurückgeben
}
</div>
<BR>


===== Verwendete Daten =====
=== Komponententest===
Hier wird alles aufgelistet inkl. Datum/Versionnummer, was zur Ausführung des Testfalls notwendig ist.
In diesem Abschnitt wird jede einzelne Komponente getestet. Die Komponente werden auf einem Breadboard getestet(siehe Abbildung 14). Die Lüfter und der Servomotor drehen sich, Werte können vom Temperatur- Ultraschall und Feuchtigkeitssensor eingelesen werden (siehe Abbildung 13). Das Komponententest lässt sich [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WINSE_21_22/06_Komponententest/ hier]<ref>[https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WINSE_21_22/06_Komponententest/'' Komponententest''] </ref> wiederfinden.
SVN-Projektarchiv: XY in Version 12345
Wikiartikel:       XY vom 22.12.2022
Benötigte Software: XY in Version XY




===== Der Testfall im Detail =====
{|class="wikitable"
|[[Datei:KompoNentenTest.png|400px|thumb|Abbildung 12: Komponententest]]
|[[Datei:SenSorT.png|400px|thumb|Abbildung 13: Sensortests]]
|[[Datei:TmpPlatine.png|400px|thumb|Abbildung 14: 10k-NTC und Luftfeuchtigkeitssensor auf dem Breadboard]]
|}
<BR>


Bezeichnung:          Bezeichnung des Testfalls<br>
=== Integrationstest===
Erstellt von:          Namen<br>
Mit dem Integrationstest wird überprüft, ob der Zusammengefügte Aufbau und die Integration der einzelnen Komponenten erfolgreich abgeschlossen wurden.
Erstellt am:           Datum <br>
Das Integrationstest findet man [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WINSE_21_22/07_Integrationstest/ hier]<ref>[https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WINSE_21_22/07_Integrationstest/'' Integrationstest''] </ref>.
Testinstanz:           PC/Versuchsaufbau/Prototyp XY/Prüfstand XY... <br>  


{| class="wikitable" style="width: 50%;"
{|class="wikitable"
! style="font-weight: bold;" | Schritt Nr. !! Beschreibung !! Ausgangszustand !! Aktion(en) !! Erwartetes Ergebnis !! Ergebnis !! Bewertung !! Bemerkung
|[[Datei: IntegraTionTest.png|links|500px|Abbildung 15: Integrationstest|mini]]
|-
|[[Datei: Belüftung und Lichtalarm.mp4|links|500px|Video 1: Belüftung und Lichtalarm.|mini]]
| Precondition 1
|[[Datei:FensterMechanismus.mp4|rechts|500px|Video 2: Fenstermechanismus.|mini]]
| PC und Daten vorbereiten
| PC ist aus, Kabel nicht eingesteckt, lokale Daten veraltet
| Start des PCs, Update SVN Arbeitskopie (Pfad: XY) Revision 1234
| Der PC ist hochgefahren, die Anlage betriebsbereit und alle benötigten Dateien aus dem SVN Repository sind lokal gespeichert
| PC ist an, SVN-Ordner "XY" ausgecheckt in V1234
| i.O.
|  
|-
| Precondition 2
| Anlage hochfahren
| Anlage ist aus
| Schalter XY betätigen, Druck an Anschluss XY auf XYbar aufdrehen
| Anlage ist betriebsbereit, Druckanzeige zeigt 6bar, SPS-Status ist auf grün (siehe LED XY)
| Anlage ist betriebsbereit, Druckanzeige zeigt 6bar, SPS-Status ist auf grün (siehe LED XY)
| i.O.
|  
|-
| Precondition 3
| ...
| ...
| ...
| ...
| ...
| ...
| ...
|-
| Testschritt 1
| Druckzylinder 1 ausfahren
| Anlage ist betriebsbereit
| Schalter XY betätigen
| Zylinder fährt aus und meldet "XY" [[Datei:Test KOM Sprint2 WiSe 22 23.gif|400px|thumb|center|Beispiel-HMI-Bild]]
|
| i.O.
|
|-
| Testschritt 2
| ...
| ...
| ...
| ...
| ...
| ...
| ...
|-
| Postcondition 1
| Anlage herunterfahren
| Anlage läuft
| Druckluft an XY abdrehen, Netzteil am Schalter XY ausschalten
| Druckluft = 0bar an Anzeige XY, SPS aus (alle LEDs aus), Netzteil aus
| Druckluft = 0bar an Anzeige XY, SPS aus (alle LEDs aus), Netzteil aus
| i.O.
|
|-
| Postcondition 2
| PC herunterfahren
| PC läuft
| Daten in XY speichern, Software XY schließen,...
| PC aus, Daten in XY gesichert
| PC aus, Daten in XY gesichert
| i.O.
|
|-
| Postcondition 3
| ...
| ...
| ...
| ...
| ...
| ...
| ...
|}
|}
</div>
<BR>


===Abnahmetest===
[[Datei: AbnahmeTest.png|rechts|500px|thumb|Abbildung 16: Abnahmetest]]
In Abschnitt Abnahmetest wird überprüft, ob das System als Ganzes den Anforderungen entspricht, das bedeutet, ob alle Anforderungen aus der Anforderungsliste erfüllt wurden. Leider verbrachten wir viel zu viel Zeit mit dem Ablesen der Temperaturmesswerte, weshalb wir nicht rechtzeitig eine Tür (+ Türmechanismus) einbauen konnten. Die Abbildung 16 zeigt zumindest, dass die meisten Anforderungen erfüllt wurden.Das Abnahmetest lässt sich [https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WINSE_21_22/08_Abnahmetest/ hier]<ref>[https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WINSE_21_22/08_Abnahmetest/n ''Abnahmetest'']</ref> wiederfinden.
<BR><BR><BR>
<BR><BR><BR>
<BR><BR><BR>
<BR><BR><BR>
Zeile 244: Zeile 516:
<BR><BR><BR>
<BR><BR><BR>
<BR><BR><BR>
<BR><BR><BR>
=Zusammenfassung & Lessons Learned=
Auch wenn die Durchführung des gesamten Projekts alleine eine umfangreiche Auseinandersetzung mit dem ganzen Thema erfragte, umfasste am Ende das Erreichen der definierten Projektziele eine besondere Erleichterung und Freude. Um dieses Projekt zu realisieren, haben wir unsere seit dem ersten Semester erworbenen Kenntnisse im Bereich der Programmierung, Digitaltechnik, Elektronik und andere Kentnisse und Fähigkeiten genutzt.
*
==Lessons Learned==
Durch die Arbeit an diesem Projekt, haben wir unseren Kenntnisse im Bereich der Programmierung und Elektrotechnik verbessern. Darüber hinaus konnte folgende gelernt werden.
*SPS-Programmierung
*Strukturierte Vorgehensweise nach V-Modell
*Projektdokumentation(Wochenbericht)
==Probleme/Schwierigkeiten==
* Verbindungsaufbau zwischen PC und SPS anfangs nicht möglich,da die IP-Adresse falsch eingestellt war.
* Start neues Programm im PC-Worx
* Am Anfang war es nicht leicht zu verstehen, wie die SPS-Programmierung funktioniert.
* Die SPS las keine Spannung, obwohl die Schaltung richtig war.
* SPS liefert ungeeignete Spannungswerte.
* Time Out
==Ausblick==
* Eine Tür einbauen
* Ein an die Tür angepasstes Schließsystem entwickeln
* Schaltung / Modul zum Erzeugen des PWM-Signals für den Servomotor entwickeln oder ggf. kaufen, um den Mikrocontroller zu ersetzen
* Heizungsregelung optimieren
==Projektunterlagen==
In diesem Zip-Ordner befinden sich alle Originaldateien für das Projekt: [[Datei:WINSE_21_22.zip]]


='''Literaturverzeichnis'''=
='''Literaturverzeichnis'''=

Version vom 3. Januar 2023, 23:39 Uhr

Autoren: Ibrahim Nsangou, Franck Bakofa Njanpouop

Betreuer: Prof. Dr. Mirek Göbel & Marc Ebmeyer

Wintersemester: 2021/2022

Fachsemester: 7

zurück zum Hauptartikel: Praktikum Produktionstechnik

Haus




Einleitung

Im Rahmen des Bachelorstudiengangs Mechatronik findet im siebten Semester das Praktikum in der Produktionstechnik an der HSHL statt. In diesem Praktikum sollten Studierende in Kleingruppen( 2-3 Personen) ein mechatronische System umsetzen und programmieren. In diesem Praktikum wurde uns durch Zufall das Projekt Smart Home zugewiesen.

Aufgabenstellung

Das Ziel des Projekt ist, ein Wohnhaus mit Sensoren und Aktoren intelligent zu machen. Um das zu erreichen sollten wir folgende Punkte beachten:

  • Als erste nach möglichen Automatisierung in einem Haus suchen
  • Entscheidungsmatrix erstellen für die Auswahl von geeigneten Sensoren und Aktoren
  • Temperaturen und Feuchtigkeiten messen
  • Dann die Ansteuerung der Komponenten per Phoenix Contact-SPS AXC

Nach der Recherche nach möglichen Automatisierung in einem Haus haben wir uns entschieden, uns um diese Unterprojekte zu kümmern. Die Nutzwertanalyse findet man hier

Abbildung 1:Recheche: Was soll intelligent werden



  • Beleuchtung: Lichtalarm bei Haustürklingel. Wer gerne mit Kopfhörer arbeitet, nur eingeschränkt oder gar nicht hören kann, verpasst oft Besucher, die an der Haustüre klingeln.
  • Heizungsregelung
  • Anwesendheitserkennung
  • Schließsystem
  • Belüftung






Vorgehensweise nach V-Modell

Abbildung 2:V-Modell


Das V-Modell ist eine lineares Vorgehensmodell im Prohejektmanagement, das ein Projekt in fest definierte Phasen untergliedert. Das Prokekt wird nach der Vorschrift des V-Modells durchgeführt, um eine strukturiertes Vorgehen bei Planung und Umsetzung des Projekt zu gewährleisten.Link zu den Dokument finden Sie hier








Anforderungsdefinition

In der Phase der Anforderungsdefinition haben wir alle spezifischen Anforderungen an das System gesammelt, die das Projekt erfüllt soll. Die Anforderungen für dieses Projekt gliedern sich in folgende Punkte: Geometrie & Gewicht,Vorgehen,Aufbau,Schnittstellen, Software/ Werkzeuge und Dokumentation. Die Anforderungsliste für das Projekt lässt sich hier wiederfinden.

  • Geometrie & Gewicht
    • Die maximalen Abmaße für die Tür sind: Breite 10cm, Höhe 20 cm.
    • Bauteilzeichnungen (Tür) muss erstellt werden. Wenn CAD benutzt wird, dann SolidWorks.
  • Vorgehen
    • Es muss eine Rechere nach möglichen Automatisierungen im Bereich "Smart Home" erstellt werden
    • Es müssen Kirterien zur Auswahl der für dieses Praktikum geeigneten Automatisierungen aufgestellt werden.
    • Anhand dieser Kriterien wird eine Bewertung und eine Entscheidungs-Empfehlung bestimmt. Diese wird Prof. Göbel vorgelegt.
  • Aufbau
    • Es müssen die Temperatur und die Raumfeuchtigkeit gemessen werden
    • Es müssen zwei Ventilatoren(Lüfter) verwendet werden, einer um frische Luft in dem Raum zu bringen und der andere um verbrauchte Luft aus dem Raum zu entfernen.
    • Es muss ein Fenster eingebaut werden, welches sich mit einem Motor öffnen und schließen lässt.
    • Es muss die Tür eingebaut werden, welche sich mit einem Motor öffnen und schließen lässt.
    • Lichtalarm bei Haustürklingel: Wer gerne mit Kopfhörer arbeitet, nur eingeschränkt oder gar nicht hören kann, verpasst oft Besucher, die an der Haustüre klingeln
  • Schnittstellen
    • Das Gerät muss an einem Standard-Steckdosen-Anschluss an 230V AC mit 50Hz (Deutschland) angeschlossen werden können.
    • Alle Komponenten müssen über die Phoenix Contact AXC angesteuert werden
  • Software / Werkzeuge
    • Programmierung und Ansteuerung per PhoenixContact-SPS AXC in PC Worx
  • Dokumentation
    • Aufbau muss im HSHL-Wiki dokumentiert werden mit dem Mindestinhalt:
    • Beschreibung des Aufbaus
    • Schritt-für-Schritt-Anleitung zur Bedienung


Funktionaler Systementwurf

In diesem Kapitel Funtionaler Systementwurf sind alle Komponenten dargestellt, die notwendig sind, um das Ziel des Projekts zu erreichen. Auf der einen Seite befinden sich der Temperatur-und Feuchtigkeitssensor,Buzzer,Abstandsensor.Auf der anderen Seite sind dann ein Fenster und eine Tür, welche durch einen Servomotor geöffnet bzw geschlossen wird sowie die beiden Lüfter, welche ein- und ausgeschaltet werden. Der funktionale Systementwurf lässt sich hier

Abbildung 3:Funktionaler Systementwurf















Technischer Systementwurf

Der technische Systementwurf hat denselben Aufbau wie der Funktionale Systementwurf, im Gegensatz zu dem funktionalem Systementwurf werden hier die Verbindungen(Die Signalart: digital/analog, Input/Outpout) zwischen den einzelnen Komponenten genau definiert (siehe Abbildung 3). Zum technischem Systementwurf gelangt man hier

Abbildung 4:Technischer Systementwurf
















Komponentenspezifikation

Bei der Komponentenspezifikation werden die Aufgaben und das Verhalten jeder Komponente definiert. Darüber hinaus wird der innere Aufbau mit den Schnittstellen jeder Komponente festgestellt. Im Folgenden werden alle Komponenten beschrieben, die in diesem Projekt verwendet werden. Im Unterkapitel "Einkaufsliste" werden zunächst alle bestellten Komponenten aufgelistet. Danach folgt die Beschreibung der einzelnen Komponenten.

Einkaufliste

Komponente Anbieter Preis Vorhanden?
Honeywell Feuchtigkeitssensor rs-online 18.87€ nein
Temperatursensor NTC 10k rs-online 3,19€ nein
Sunon Axiallüfter Conrad 6,81€ ja
Servomotor HS-65 MG Der Himmlische Höllein 27,90€ nein
Messingrohr Der Himmlische Höllein 6,30€ ja
Bowdenzug Der Himmlische Höllein 2,90€ ja
Stahldrat Der Himmlische Höllein 2,60€ ja
Ultraschallsensor conrad 3,98€ nein
Piezo/Buzzer rs-online 1,86€ nein
Glühbirne conrad 1,29€ nein
Arduino Board Uno conrad 21,99€ ja

Phoenix Contact SPS

Der Hauptkomponente des Projekt war die Phoenix Contact AXC 1050 SPS. Sie bezizt sowohl ein Modul für digitale Eingänge, digitale Ausgänge als auch ein Modul für analoge Ein-und Ausgänge. Die für das Projekt wichtigsten Eigenschaften der verwendeten Module sind im Folgenden aufgelistet und mit einem Link zu den einzelnen Datenblättern versehen.

Abbildung 5:SPS Module
  • Analoges Ein- und Ausgangsmodul (I/O-Modul - AXL F AI2 AO2 1H – 2702072): (zur Herstellerseite) [1]
    • Besitzt 4 analoge Eingänge und 4 analoge Ausgänge
    • Versorgungsspannung: 24V DC
    • Auflösung des A/D-Wandlers: 16 Bit
    • Eingangssignal Strom: 0mA bis 20mA, 4mA bis 20mA, -20mA bis 20mA
    • Eingangssignal Spannung: 0V bis 10V, -10V bis 10V, 0V bis 5V, -5V bis 5V
    • Ausgangssignal Strom: 0mA bis 20mA, 4mA bis 20mA, -20mA bis 20mA
    • Ausgangssignal Spannung: 0V bis 10V, -10V bis 10V, 0V bis 5V, -5V bis 5V
  • Digitales Eingangsmodul (I/O Modul – AXL F DI16/1 1H – 2688310): (zur Herstellerseite)[2]
    • Besitzt 16 digitale Eingänge
    • Nenneingangsspannung beträgt 24V DC
    • Eingangsspannungsbereich „0“-Signal: -3V DC bis 5V DC
    • Eingangsspannungsbereich „1“-Signal: 11V DC bis 30V DC
  • Digitales Ausgangsmodul (I/O-Modul - AXL F DO16/1 1H – 2688349): (zur Herstellerseite) [3]
    • Besitzt 16 digitale Ausgänge
    • Versorgungsspannung: 24V DC
    • Ausgangsspannung: 24V DC


Verwendete Komponenten

Komponente Beschreibung Abbildung Link
Mikrocontroller: Arduino UNO R3 Ein PWM-Signal wird benötigt, um den Servomotor anzusteuern. Die Phoenix Contact SPS kann hingegen kein PWM Signal erzeugen. Aus diesem Grund haben wir zwischen SPS und Servomotor ein Mikrocontroller(Arduino Uno) eingebaut. Der Mikrocontroller soll dann extern über 9v Batterie oder Netzteil mit Spannung versorgt werden. Um zu verhindern, dass der Mikrocontroller geschädigt wird, führt der Ausgang der SPS über einen Spannungsteiler auf den Eingang des Mikrocontrollers. Der Spanungsteiler ist an dieser Stelle unbedingt notwendig, weil die Ausgangsspannung der SPS 24 V beträgt,allerdings die Eingangsspannung des Mikrocontrollers nur maximal 5V betragen darf.
Arduino Uno Board
Servomotor Ein Servo besteht aus einer Motorsteuerung, einem Elektromotor, einem Getriebe und einem Potentiometer zur Positionsbestimmung. Alle Komponenten sind in einem robusten Gehäuse untergebracht. Winkelsbereich [0; 180] Grad. In diesem Projekt haben wir ein Servomotor HS-65 MG verwendet, dies wird mit einer Spannung von 4,8 V bis 6V betrieben.
Servomotor
Mehr Information finden Sie hier [4]
Temperatursensor 10k-NTC Der verwendete Temperatursensor ist ein 10k-NTC (siehe rechte Bild). Er bietet eine Temperaturmessung von 0°C bis 70°C mit einer Toleranz von ±2K bei 0°C und ±5K bei 70°C. Zum Auslesen der Temperaturmesswerte wird ein Spannungsteiler verwendet, der bei Temperaturen über 0°C Spannungen bis zu 10V ausgibt, da die SPS nur analoge Werte von 0V bis 10V auslesen kann (Siehe Kapitel SPS).
Temp 10k-NTC
Das Datenblatt finden Sie hier [5]
Ultraschallsensor Für die Anwesenheitserkennung haben wir einen Ultraschallsensor verwendet, der die Entfernung misst und je nach den Werten von Der Entfernung wird das Außenlicht ein- bwz ausgeschaltet.
Ultraschallsensor
Mehr Information finden Sie hier [6]
Axiallüfter Als Lüfter haben wir einen Axiallüfter von Firma Sunon verwendet. Sie wird mit 24 V DC betrieben, hat eine maximale Umdrehungszahl von 7000 Umdrehungen pro Minute und eine maximale Stromaufnahme von 39 mA. In diesem Projekt haben wir dann zwei eingebaut so, dass eine frische Luft in das Haus hinein und der andere die alte Luft aus dem Haus heraus befördert.
Axiallüfter
Das Datenblatt finden Sie hier [7].
Piezo/Buzzer Der verwendete Buzzer der Firma RS Pro wird mit 24V DC betrieben. Die Tonleistung bei 30 cm ist größer gleich 85db.
Piezo/Buzzer
Das Datenblatt finden Sie hier [8]
Feuchtigkeitssensor Als Feuchtigkeitssensor wird ein HIH-4000-001 der Firma Honeywell verwendet. Er bisitzt drei Pins: eine für die Versorgungsspannung, eine für Masse(GND) und eine für die Ausgangsspannung. Da der Sensor nur Spannung bis maximal 5,8V annehmen kann, soll auch hier ein Spannungsteiler verwendet werden.
HIH-4000-001
Das Datenblatt finden Sie hier[9]


Schaltplan

Der Schaltplan wurde mit der kostenlosen Software TinyCAD erstellt, welche sich hier[10] heruntergeladen lässt. Die Dateien lassen sich hier[11] wieder finden. In Abbildung 6 sieht man alle Komponente, die mit dem SPS-Eingang verbunden sind. Hier sind auf der einen Seite Schalter, die mit der digital Input ( DI00, DI10,DI11,DI20 und DI01) verbunden sind. Wie bereit im Kapitel Verwendete Komponente erwähnt, soll zum Auslesen der Temperaturwerte und Luftfeuchtigkeit ein Spannungsteiler verwendet werden. Aus diesem Grund, ist der Temperatursensor(10k-NTC) über einen Spannungsteiler mit einem Widerstand(47kOhm) und dann mit der analog Eingänge AI0.0 und AI0.1 verbunden. Mit diesem Spannungsteiler stellen wir sicher, dass nur eine Spannung von 0V bis maximal 10V an den NTC angelegt wird. Der Feuchtigkeitssensor ist außerdem über einen Spannungsteiler mit einem Widerstand von 20kOhm und einem Widerstand von 5,2kOhm mit der Eingang SPS (Analog Input: AI0.1 und AI1.1) verbunden.
In Abbildung 7 sind alle Komponenten dargestellt, die mit dem Ausgang der SPS verbunden sind. Auf der einen Seite ist den Verbindung der Lampe(DO0.1) und Buzzer(DO0.0) mit SPS erkennen. Der Servomotor ist mit einem Mikrocntroller(Im Bild sieht man ein Arduino Mega aber wir haben bei der Umsetzung einen Arduino Uno verwendet(TinyCAD hat nur Arduino Mega))verbunden, da dieser den Servomotor mit dem erforderlichen PWM-Signal versorgt. Der Servomotor ist mit PIN 5(PWM-pin) des Mikrocontrollers verbunden. Der Mikrocontroller ist seinerseits mit digital Output D01.0 der SPS verbunden. Da der Mikrocontroller maximal 5V annehmen kann, ist ein Spannungsteiler mit einem Widerstand von 20kOhm und einem Widerstand von 5,2kOhm zwischen dem Arduino und der SPS geschaltet. Die Bauteil sind dann auf eine Platine gelötet (siehe Abbildung 8). Die Schaltung aufbau auf die Platine lässt sich hier wiederfinden.

Abbildung 6: Eingänge der SPS
Abbildung 7: Ausgänge der SPS
Abbildung 8: Komponente auf Platine


Programmierung

Die Programmierung der SPS erfolgt nur in PC Worx mithilfe der Funktionsblocksprache FBS. Das Anlegen eines neuen Prokets in PC Workx, das Herstellen der Verbindung zwischen SPS und PC sowie das Erstellen eines SPS-Programms in der Funktionsblockprache werden im Artikel Erstellen eines Projektes in PC Worx. Zu diesem Thema haben wir auch einen Lernbrief verfasst, den Sie hier [12] finden.

  • Nein, das Rad wurde nicht neu erfunden ;). Wir haben uns von der Arbeit unserer Vorgänger inspieren lassen, um das Projekt zu realisieren. Wir haben ihr SPS-Programm für die Belüftung übernommen und entsprechend nach unseren Anforderungen geändert.Wir haben auch ihre Komponente(Lüfter) und das Haus übernommen, sodass wir mehr Zeit haben, um uns auf die weitere Entwicklung und Programmierung zu konzentrieren.


Programmablaufplan

Der Programmablauf wurde mit der Software PapDesigner, welche hier[13] heruntergeladen werden kann. Im Programm sollen ständig die Werte des Temperatur- bzw. Luftfeuchtigkeitssensors überwacht werden. Ist die Temperatur größer als 25 °C und/oder die Luftfeuchtigkeit größer als 60%, soll das Fenster geöffnet und die Lüfter angeschaltet werden und die Heizung (Heizbirne) ausgeschaltet werden. Anderfalls erst geschlossen werden, wenn die Temperatur unter 18 °C und/oder die Luftfeuchtigkeit unter 35% fällt und in diesen Fall wird die Heizung (Heizbirne) eingeschaltet. Parallel soll kontinuierlich den Abstand gemessen werden. Ist der Abstand zwischen Jemand oder einen Objekt kleiner 20 cm, wird das Licht(LED) eingeschaltet(Siehe Abbildung 9). Wiederum soll ständig die Stellung der Schalter1(Türklingel) überwacht werden. Ein weiterer Schalter wird dann verwendet, um den Lichtalarm zu ein-oder auszuschalten. Wenn die Klingel an der Haustür (Schalter1) gedrückt wird und Schalter2(im Haus) eingeschaltet ist, werden die Klingel und der Lichtalarm (rotes Licht) gleichzeitig aktiviert. Wenn die Türklingel gedrückt wird, aber Schalter2 ausgeschaltet ist, muss nur der Klingelton aktiviert werden (siehe Abbildung 10). Zum Programmablaufplan gelangt man hier[14]

Abbildung 9: Programmablaufplan: Belüftung des Hauses
Abbildung 10: Programmablaufplan: Lichtalarm beim Hausklingeln










SPS-Programm

Folgende Tabelle zeigt alle FBS Blöcke, die wir für das SPS-Programm verwendet haben. Im Kapitel Programmierung sollen wir das Wissen anwenden, das wir bereits im Bereich Digitaltechnik erworben haben.

Verwendete FBS Blöcke
FBS Block Beschreibung Wahrheitstabelle
NOT_Block
Im „NOT_Block“, wird das Eingangssignal invertiert. Das heißt, wenn am Eingang eine "0" anliegt, liegt am Ausgang eine "1" an und umgekehrt.
NOT Wahrheitstabelle
LT_Block
Der „LT_Block“, was für "lower than" steht, vergleicht zwei Eingangssignale miteinander. In diesem Fall handelt sich um das Eingangssignal "Input4"(AI0.1) und eine Variable V002, der wir den Wert 12630 zugewiesen haben. Wenn das Eingangssignal kleiner als diese Variable V002 ist, dann wird der Ausgang auf boolesche 1 geschaltet.
AND_Block
Der „AND-Block“ steht für eine UND-Verknüpfung. Das bedeutet,dass am Ausgang nur dann eine boolesche „1“ steht, wenn beide Eingänge auf „1“ stehen (siehe Wahrheitstabelle)
AND Wahrheitstabelle
GT_Block
Der „GT_Block“, was für "greater than" steht, vergleicht auch zwei Eingangssignale miteinander. In diesem Fall handelt sich um das Eingangssignal "Input2"(AI0.1) und eine Variable V003 Wenn das Eingangssignal größer als diese Variable V003 ist, dann wird der Ausgang auf boolesche 1 geschaltet.
RS_Block
Der „RS_Block“ steht für eine RS-Flip-Flop. Das bedeutet, dass der Eingang S(Set) dazu dient, ein Signal zu setzen und der Eingang R(Reset) dient dazu , ein Signal zurückzusetzen (Siehe Wahrheitstabelle).
RS Wahrheitstabelle
OR_Block
Der „OR_Block“ steht für eine ODER-Verknüpfung. Das bedeutet,dass t eine boolesche 1 nur dann am Ausgang anliegt, wenn an einem der beiden oder an beiden Eingängen eine „1“ vorhanden ist.
OR Wahrheitstabelle


Das in Abbildung 11 gezeigte Programm wurde in PC Worx erstellt. Zum Program gelangt man SPS/ hier[15] PC Worx ist die durchgängige Engineering-Software für alle Steuerungen von Phoenix Contact. Sie vereint Programmierung nach IEC 61131, Feldbuskonfiguration und Anlagendiagnose in einer Software. Das heißt für Optimales Zusammenspiel von Hard- und Software.

Abbildung 11:SPS Module
Bezeichnung Signalart Komponente Adresse
Input1 Digital S1 (Türknopf) DI0.0
Input2 Analog Luftfeuchtigkeitssensor AI1.0
Input3 Digital S2 (Bestätigung) DI0.1
Input4 Analog Temperatursensor AI0.0
Input5 Digital Schalter3 DI1.1
Input6 Digital Schalter4 DI1.0
Input7 Digital Schalter5 DI2.0
OUT1 Digital Buzzer DO0.0
OUT3 Digital Lampe(rotes Licht: lichtalarm) DO0.1
OUT4 Digital Lüfter2 DO2.1
OUT5 Digital Arduino Uno (PWM-Signal) DO1.0
OUT6 Digital Lüfter1 DO1.0
OUT7 Digital Heizbirne DO2.0

Als Erstes überlegten wir, wie wir den Lichtalarm, wenn die Haustür klingelt, realisieren könnten. Wir haben daher zwei AND-Verknüpfungen verwendet. Es gibt nur dann Lichtalarm (rotes Licht) , wenn Eingang1(Input1) und Eingang3(Input3) auf 1 gesetzt sind. Wir haben uns zwei Möglichkeiten, die Ausgänge (OUT 4, 5 und 6) zu steuern. Wir haben die Ausgänge zunächst so programmiert, dass sie automatisch gesteuert werden, und das Programm dann so erweitert, dass der Benutzer sie auch manuell steuern kann. Die beiden Steuerungsarte werden dann durch RS-Flipflops verbunden, die durch eine ODER-Verknüpfung verbunden sind. Die Ausgänge(OUT6,OUT4,OUT5) führen ein Signal nur, wenn RS_1 oder RS_3 ein Signal führt. input7(Schalter) beendet den automatischen Modus und wechselt in den manuellen Modus. Die Steuerung befindet sich dann nur im manuellen Modus, wenn Input7(Schalter) ein Signal führt. In diesem Fall erhält der Rücksetzeingang von RS_1 ein Signal aber der Rücksetzeingang von RS_3 erhält kein Signal, weil das Signal des Eingang(Input7) zuvor negiert wird. (Siehe NOT Block) im Kapitel "Verwendete FBS Blöcke". Wenn der Eingang Input7 kein Signal führt, ist der Automatikmodus aktiviert. In diesem Fall hingegen der Rücksetzeingang von RS_3 erhält ein Signal(die boolesche 0 von Input7 wird negiert).

Automatikmodus
Sobald der Analogwert von Input4 kleiner als der Analogwert von Variable V002(12000) ist, was einer Temperatur von mehr als 25°C entspricht, oder der Analogwert von Input2 größer als der Analogwert von Variable V003 ist, was einer Luftfeuchtigkeit von mehr als 60% entspricht, erhält der Setzeingang von RS_1 ein Signal. Das bedeutet, dass das Fenster geöffnet und die Lüfter eingeschaltet werden. Damit das Fenster geschlossen und die Lüfter ausgeschaltet werden, soll der Analogwert von Input4 nicht kleiner als der Analogwert von Variable V005(15500) sein, was eine Temperatur kleiner 18°C entspricht oder der Analogwert von Input2 soll nicht größer als der Analogwert von Variable V004(6000), was eine Luftfeuchtigkeit kleiner 40% entspricht. Zusammenfassend lässt sich sagen, dass der Einstelleingang von RS_1 nur dann ein Signal führen kann, wenn sich die Steuerung im Automatikmodus befindet, die Temperatur höher als 18 °C oder die Luftfeuchtigkeit höher als 60 % ist. Der Setzeingang von RS_4 erhält ein Signal nur , wenn der Analogwert von Input4 größer als der Analogwert von Variable_T (18000) ist, was eine Temperatur von weniger als 15°C entspricht. In diesem Fall wird die Heizung eingeschaltet.

Manual Modus
Wir haben diesen Modus hinzugefügt, weil es vorkommen kann, dass einer der Sensoren (für Temperatur oder Luftfeuchtigkeit) defekt ist. In diesem Fall wäre es hilfreich, wenn der Nutzer das Haus manuell lüften könnte. Für den manuellen Modus erhält der Setzeingang von RS_3 ein Signal von Input6, also eine 1, wenn der Schalter 4 geschaltet ist. Der Rücksetzeingang erhält zusätzlich zum negierten Wert von Input7 ein Signal von Input5, also eine 1, wenn Schalter 3 geschaltet ist.



Arduino Code

Zur Steuerung des Servomotors haben wir einen Mikrocontroller zwischengeschaltet, der die Position des Motors so definieren soll, dass sich das Fenster öffnet, wenn, der Ausgang OUT4 der SPS ein Signal überträgt. Der Ausgang der SPS (AO1.0) ist mit dem analog Pin A0. Wenn der SPS-Ausgang kein Signal führt, gib A3_Wert einen Wert unter 1000 (Also Eingangsspannung kleiner als 4V) zurück. In diesem Fall soll das Fenster geschlossen werden, indem der Servomotor auf 80° gestellt wird.. Anderfalls wenn der Ausgang der SPS (AO1.0) ein Signal führt, gib A3_Wert einen Wert gößer als 1000(Also Eingangsspannung größer 4,7 V). In diesem Fall soll das Fenster geöffnet werden, indem der Servomotor auf 10° gestellt wird. Da die Verwendung von Mikrocontrollern unbedingt erforderlich war, nutzten wir diesen Fall, um eine neue Funktion im Haus einzurichten. Dabei handelt sich um die Anwesenheitserkennung. Um die Anwesenheit zu erkennen, wurde einen Ultraschalsensor eingesetzt, welcher in der Lage ist, Objekte berührungslos zu erkennen und ihre Entfernung zum Sensor zu messen. Die Entfernung wird im Variable "Distance" gespeichert. Ist diese Entfernung kleiner gleich 20 cm, dann soll das Außenlicht eingeschaltet werden. Anderfalls bleibt es ausgeschaltet.

/*
  Projekt:                     Produktionstechnik_praktikum
  Funktion der Programm:       Schließen/öffnen Fenster und Tür
  Autoren:                     Nsangou Pekariekouo and Franck Bakofa
  Betreuer:                    Prof. Dr. Ing Mirek Göbel and Herr Marc Ebmeyer
  Datum:                       Hamm, den 25.November 2021
  Letzte Änderung an den:      04.02.2022               */
// Um das Ziel des Projekt zu erreichen, benötigt man folgende Bibliothek
#include <Servo.h>
#include <Adafruit_NeoPixel.h>
// Instanz der Klasse Adafruit_NeoPixel
#define PIN 8         // Neopixels sind mit dem digitalen Pin 8 verbunden
#define NUMPIXELS 5  // Anzahl Pixel
Adafruit_NeoPixel strip(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
// Variablen
int Trigger_Pin = 4;  // Trigger auf digital Pin 4
int Echo_Pin    = 5;  // Echo auf digital Pin 5
long Distance = 0;    // Variable, in der die Entfernung gespeichert wird
#define Max_Distance 100 // Max Entfernung 
long Dauer = 0;          // Variable für die Dauer
Servo ServoMotor;        // Servomotor definieren
int A3_Wert; // Variable, in der den gelesenen Wert speichert wird.
int SPS_Data = A0; // Pin, der gelesen werden soll
void setup()
{
 Serial.begin(9600); // Serielle Verbindung starten (Monitor)
 strip.begin(); // Initialisierung der NeoPixel Objekt.
 strip.setBrightness(100); // Set BRIGHTNESS (max = 255)
 pinMode(Trigger_Pin, OUTPUT);
 pinMode(Echo_Pin, INPUT);
 ServoMotor.attach(10); // Servo auf digtal Pin3 (PWM)
 ServoMotor.write(10);   // Anfangswinkel
 
}
void loop()
{
 /**************************************
    Teil 1: Schließsystem (Fensters)
  **************************************/
 A3_Wert = analogRead(SPS_Data);
 Serial.println(A3_Wert);
 if (A3_Wert >= 1000) // SPS führt ein Signal
 {
   Serial.println("Öffne das Fenster!");
   ServoMotor.write(10);
 }
 else                           // SPS führt keine Signal
 {
   Serial.println("Schließe das Fenster!");
   ServoMotor.write(80);
 }
 /**************************************
   Teil3 : Anwesenheitserkennung (Tür)
 **************************************/
 Distance = ReadPing();
 Serial.print("Dis: ");
 Serial.println(Distance);
 if (Distance <= 20)
 {
   setcolor(127, 127, 127);        // ruf die Funktion stecolor und übergib 127 für R, G und B Anteil: weiße Farbe
 }
 else
 {
   setcolor(0, 0, 0);             // Licht ausschalten, falls Distance > 20 
 }
}
void setcolor(int r, int g, int b)  // 
{
 for (int i = 0; i < NUMPIXELS; i++) // Für jedes Pixel...
 {
   strip.setPixelColor(i, strip.Color(r, g, b));  // pixel.Color() nimmt RGB-Werte von 0,0,0 bis 255,255,255
 }
 strip.show();        // Senden Sie die aktualisierten Pixelfarben an die Hardware.
}
long ReadPing()  // Messung der Entfernung
{  
 digitalWrite(Trigger_Pin, LOW);
 delay(5);
 digitalWrite(Trigger_Pin, HIGH);           // Sendung eine Ultraschallwelle.
 delay(10);
 digitalWrite(Trigger_Pin, LOW);
 Dauer = pulseIn(Echo_Pin, HIGH);         // Der Mikrokomtroller zählt die Zeit in Mikrosekunden,bis der Schall zum Ultraschallsensor zurückkehrt.
 long a = (Dauer / 2) * 0.03432;         // 0.03432 entspricht die Schallgeschwindigkeit in Zentimeter/ Mikrosekunde.
 if (a >= 100 || a <= 2)                 // ist die Entfernung aushalb diesen Bereich, dann wird die Max_Distance zurückgegeben
   {
   a = Max_Distance;
   }
 return a;                           // Entfernung zurückgeben 
}


Komponententest

In diesem Abschnitt wird jede einzelne Komponente getestet. Die Komponente werden auf einem Breadboard getestet(siehe Abbildung 14). Die Lüfter und der Servomotor drehen sich, Werte können vom Temperatur- Ultraschall und Feuchtigkeitssensor eingelesen werden (siehe Abbildung 13). Das Komponententest lässt sich hier[16] wiederfinden.


Abbildung 12: Komponententest
Abbildung 13: Sensortests
Abbildung 14: 10k-NTC und Luftfeuchtigkeitssensor auf dem Breadboard


Integrationstest

Mit dem Integrationstest wird überprüft, ob der Zusammengefügte Aufbau und die Integration der einzelnen Komponenten erfolgreich abgeschlossen wurden. Das Integrationstest findet man hier[17].

Abbildung 15: Integrationstest
Video 1: Belüftung und Lichtalarm.
Video 2: Fenstermechanismus.


Abnahmetest

Abbildung 16: Abnahmetest

In Abschnitt Abnahmetest wird überprüft, ob das System als Ganzes den Anforderungen entspricht, das bedeutet, ob alle Anforderungen aus der Anforderungsliste erfüllt wurden. Leider verbrachten wir viel zu viel Zeit mit dem Ablesen der Temperaturmesswerte, weshalb wir nicht rechtzeitig eine Tür (+ Türmechanismus) einbauen konnten. Die Abbildung 16 zeigt zumindest, dass die meisten Anforderungen erfüllt wurden.Das Abnahmetest lässt sich hier[18] wiederfinden.




















Zusammenfassung & Lessons Learned

Auch wenn die Durchführung des gesamten Projekts alleine eine umfangreiche Auseinandersetzung mit dem ganzen Thema erfragte, umfasste am Ende das Erreichen der definierten Projektziele eine besondere Erleichterung und Freude. Um dieses Projekt zu realisieren, haben wir unsere seit dem ersten Semester erworbenen Kenntnisse im Bereich der Programmierung, Digitaltechnik, Elektronik und andere Kentnisse und Fähigkeiten genutzt.

Lessons Learned

Durch die Arbeit an diesem Projekt, haben wir unseren Kenntnisse im Bereich der Programmierung und Elektrotechnik verbessern. Darüber hinaus konnte folgende gelernt werden.

  • SPS-Programmierung
  • Strukturierte Vorgehensweise nach V-Modell
  • Projektdokumentation(Wochenbericht)

Probleme/Schwierigkeiten

  • Verbindungsaufbau zwischen PC und SPS anfangs nicht möglich,da die IP-Adresse falsch eingestellt war.
  • Start neues Programm im PC-Worx
  • Am Anfang war es nicht leicht zu verstehen, wie die SPS-Programmierung funktioniert.
  • Die SPS las keine Spannung, obwohl die Schaltung richtig war.
  • SPS liefert ungeeignete Spannungswerte.
  • Time Out

Ausblick

  • Eine Tür einbauen
  • Ein an die Tür angepasstes Schließsystem entwickeln
  • Schaltung / Modul zum Erzeugen des PWM-Signals für den Servomotor entwickeln oder ggf. kaufen, um den Mikrocontroller zu ersetzen
  • Heizungsregelung optimieren

Projektunterlagen

In diesem Zip-Ordner befinden sich alle Originaldateien für das Projekt: Datei:WINSE 21 22.zip

Literaturverzeichnis