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
Zeile 362: Zeile 362:
|}
|}
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.  
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.  
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).
'''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.


<BR>
<BR>

Version vom 23. Januar 2022, 18:04 Uhr

Autoren: Ibrahim Nsangou, Franck Bakofa

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

Wintersemester: 2021/2022

Fachsemester: 7

zurück zum Hauptartikel: Praktikum Produktionstechnik

Einleitung

Im Rahmen Bachelorstudiengangs Mechatronik findet an der HSHL wird im siebten Semester das Produktionstechnik- Praktikum 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.

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.

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).

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.

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.


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 Anwesenheitserkennung
  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:      12.Januar 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
#define NUMPIXELS 5
Adafruit_NeoPixel strip(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
// Variablen
int Trigger_Pin = 4;
int Echo_Pin    = 5;
long Distance = 0;
#define Max_Distance 100
long Dauer = 0;
Servo ServoMotor;
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
 {
   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);
 }
 else
 {
   setcolor(0, 0, 0);
 }
}
void setcolor(int r, int g, int b)
{
 for (int i = 0; i < NUMPIXELS; i++)
 {
   strip.setPixelColor(i, strip.Color(r, g, b));
 }
 strip.show();
}
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)
   {
   a = Max_Distance;
   }
 return a;
}


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