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

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

Autoren: Alvin John, Almustapha Lawan, Jilu Mary Joseph

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

Wintersemester: 2022/2023

Fachsemester: 7

SmartHome


Stand bei der Übernahme und Endergebnis

→ zurück zur Übersicht: Praktikum Produktionstechnik


Einleitung

Im Rahmen des Produktionstechnik-Praktikums im siebten Semester des Studiengangs Mechatronik an der HSHL soll ein mechatronisches System mithilfe einer Speicherprogrammierbaren Steuerung (SPS) realisiert werden. In diesem Projekt soll ein Smart-Home entwickelt werden, welches die automatische Wohlfühltemperatur im Haus regelt, sowie durch eine intelligente Methode die Tür automatisch öffnet.


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:

  • Recherche nach möglichen Automatisierung in einem Haus machen
  • Entscheidungsmatrix erstellen für die Auswahl von geeigneten Sensoren und Aktoren
  • Temperaturen und Feuchtigkeiten messen
  • Die Ansteuerung des Hauses per Phoenix Contact-SPS AXC 1050
  • Ansprechende Benutzeroberfläche.

Nach der Recherche nach möglichen Automatisierung in einem Haus wurden entschieden, die folgende Unterprojekte zu erarbeiten. Die Nutzwertanalyse lässt sich hier[1] finden.


  • Beleuchtung
  • Automatische Wohlfühltemperatur-Reglung
  • Anwesenheitserkennung
  • Tür inkl. Schließmechanismus
  • Belüftung des Hauses
  • SUB-D Stecker

Vorgehensweise nach V-Modell

Abbildung 1: V-Modell [2]


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 hier finden.








Anforderungsdefinition

In dem Abschnitt „Anforderungsdefinition“ wurden verschiedene Anforderungen an das System festgelegt, die während der Projektbearbeitung erarbeitet müssen. Die Anforderungen gliedern sich unter anderem wie folgt: allgemein, Sensoren und Aktoren, Aufbau und Messung, Software und Schnittstellen, und zu guter Letzt Dokumentation. Die Anforderungsliste für das Projekt lässt sich hier[3] wiederfinden.

ID Anforderung
Tabelle 1: Anforderungen an das Smart-Home
1 Allgemein
1.1 Es muss eine Recherche nach möglichen Automatisierung gemacht werden
1.2 Eine automatische Wohlfühltemperatur-Reglung muss entwickelt werden
1.3 Entscheidungsmatrix für Feuchtigkeits- und Temperatursensoren muss erstellt werden
1.4 Ein Terminal Block und Stecker muss gebaut werden, um die Verbindung zwischen Haus und Phoenix-Contact durch einen Kabel zu realisieren
1.5 Frontplatte muss neu erstellt werden, um das Haus schöner zu gestalten
1.6 Es muss ein RFID-Leser gebaut werden
1.7 Mechanismus zur Anwesenheitserkennung muss entwickelt werden
1.4 Eine Tür inkl. Türmechanismus muss entwickelt werden
1.5 Frontplatte muss neu erstellt werden, um das Haus schöner zu gestalten
1.6 Eine Benutzeroberfläche muss programmiert werden
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
2.3 Temperatursensor (10K NTC) muss für die Innentemperatur-Messung verwendet werden
2.4 Servo Motoren müssen für die Öffnung und Schließung der Tür und Fenster verwendet werden
2.5 Axiallüfter muss für die Belüftung des Smart-Home verwendet werden
3 Aufbau und Messung
3.1 Es muss ein Projektplan erstellt werden
3.2 Ein Konzept für den Hausaufbau muss erstellt werden
3.3 Die Frontplatte muss in SolidWorks konstruiert und anschließend gefräst werden
3.4 Die Tür muss in SolidWorks konstruiert und 3D gedruckt werden
3.5 Die Verkablung muss beschriftet sein
3.6 Das Fenster sowie die Tür müssen automatisch geöffnet und geschlossen werden
3.7 Feuchtigkeits- und Temperaturmessung von innen muss gemacht werden
4 Schnittstellen und Software
4.1 Das Haus muss über Pc-Worx programmiert werden
4.2 Das Smart-Home muss per Phoenix Contact AXC 1050 und Arduino Uno angesteuert werden
5 Dokumentation
5.1 Detaillierte Dokumentation als Wiki-Artikel muss im HSHL Wiki geschrieben werden
5.2 Die Dokumentation muss Schritt für Schritt erklärt und nachvollziehbar sein


Funktionaler Systementwurf

Der in Abb. 2 abgebildete Systementwurf gibt einen kleinen Überblick über die Sensoren und Aktoren, sowie ihre entsprechenden Funktionen im System. Der Phoenix Contact AXC 1050 spielt die Hauptrolle in dem System. Auf der linken Seite befinden sich die Temperatur- und Feuchtigkeitssensor, welche über AXC 1050 angesteuert werden, auf der rechten Seite befinden sich die Lampe sowie die Axiallüfter, welche für die Belüftung verwendet werden. Analog zu der linken Seite werden diese Komponenten auch über AXC 1050 angesteuert. Daneben befinden sich ein Mikrocontroller und zwei Servomotoren, Bewegungsmelder und RFID-Leser, die über den Mikrocontroller angesteuert werden. Zu guter Letzt befindet sich oben eine Benutzeroberfläche, welche die Ansteuerung der Komponenten darstellt. Der funktionale Systementwurf lässt sich hier wiederfinden.

Abbildung 2: Funktionaler Systementwurf[4]

Technischer Systementwurf

Der technische Systementwurf hat denselben Aufbau wie der funktionale Systementwurf, im Gegensatz zu dem funktionalen Systementwurf werden hier die Verbindungen(die Signalart: digital/analog, Input/Output) zwischen den einzelnen Komponenten genau definiert (siehe Abbildung 3). Der technische Systementwurf lässt sich hier wiederfinden

Abbildung 3: Technischer Systementwurf[5]





Entscheidungsmatrix

Um die passende Temperatur und Feuchtigkeitssensor zu finden, wurde Entscheidungsmatrix nach Kriterien Preis, Genauigkeit, Messbereich und Lebensdauer erstellt. Die Entscheidungsmatrix lässt sich hier wiederfinden.

Entscheidungsmatrix für Temperatursensor wird in Abbildung 4 dargestellt. Anhand der oben genannten Kriterien steht der NTC Sensor mit 8,8 Endsumme, somit wurde für diesen Sensor entschieden.

Abbildung 4: Entscheidungsmatrix von Temperatursensor [6]


Der Feuchtigkeitssensor wurde ebenfalls anhand der Entscheidungsmatrix ausgewählt. Der Honeywell Feuchtigkeitssensor(HI-4000-001) steht am Ende mit einer Endsumme von 8,5, daher wurde für diesen Sensor entschieden. Die Entscheidungsmatrix für Feuchtigkeitssensor wird in Abbildung 5 dargestellt.

Abbildung 5: Entscheidungsmatrix von Feuchtigkeitssensor [7]

Komponentenspezifikation

In diesem Abschnitt werden die Aufgaben und allgemeine Informationen der ausgewählten Komponenten beschrieben. Außerdem werden die Schnittstelle jeder Komponenten festgelegt. In folgender Tabelle werden alle Komponenten genaue erläutert, die in diesem Projekt verwendet wurden. Die Komponentenspezifikation lässt sich hier[8] wiederfinden.

Phoenix Contact SPS

Der Hauptkomponente des Projektes war die Phoenix Contact AXC 1050 SPS. Sie besteht aus ein Modul für digitale Ein- und Ausgänge, sowie 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 6: SPS Module
  • Digitales Eingangsmodul (I/O Modul – AXL F DI16/1 1H – 2688310): (zur Herstellerseite)[9]
    • 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) [10]
    • Besitzt 16 digitale Ausgänge
    • Versorgungsspannung: 24V DC
    • Ausgangsspannung: 24V DC
  • Analoges Ein- und Ausgangsmodul (I/O-Modul - AXL F AI2 AO2 1H – 2702072): (zur Herstellerseite) [11]
    • 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


Verwendete Komponenten

Komponenten 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 wurde 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 Spannungsregler auf den Eingang des Mikrocontrollers, dessen genaue Informationen in Abb. (23–24) zu entnehmen sind.
Abbildung: 7 Arduino Uno Board
Das Datenblatt lässt sich hier öffnen [12]
NTC Thermistor Der verwendete NTC Temperatursensor, auch negative Temperatur Koeffizient genannt(siehe Abb. 8). Er ermöglicht einer Temperaturmessung von 0 bis 70 °C mit einer Toleranz von ±2K bei 0 °C und ±5K bei 70 °C sowie maximale Leistung von 60mW bei 25 °C. Die Widerstandswert 10 kΩ liegt ca. bei 25 °C. Zum Auslesen der Temperaturwerte wird eine analoge Schnittstelle des AXC 1050 verwendet. Laut AXC Datenblatt kann der analoge Eingang maximal 10V annehmen, daher kommt hier ein Spannungsteiler zum Einsatz, dessen genaue Informationen in Abb. (23–24) zu entnehmen sind.
Abbildung: 8 NTC Thermistor
Das Datenblatt lässt sich hier öffnen [13]
Honeywell Feuchtigkeitssensor(H-4000 Series) Der verwendete H-4000 Feuchtigkeitssensor(siehe Abb. 9) ermöglicht einer Feuchtigkeitsmessung von 0 bis 100 % (relative Feuchtigkeit). Er kann maximal mit 5,8V versorgt werden, daher kommt ebenfalls ein Spannungsteiler zum Einsatz, dessen genaue Informationen in Abb. (23–24) zu entnehmen sind. Die Widerstandswert 10 kΩ liegt ca. bei 25 °C. Zum Auslesen der Feuchtigkeitswerte wird eine analoge Schnittstelle des AXC 1050 verwendet.
Abbildung 9: Honeywell Feuchtigkeitssensor
Das Datenblatt lässt sichhier öffnen [14]
Bewegungsmelder Der verwendete HC-SR 501 Bewegungsmelder (siehe Abb. 10) besteht mit einer Erkennungsreichweite von ca. 7 Meter, insbesondere wird bei diesem Bewegungsmelder mit einem Detektionswinkel niedriger als 100 Grad gestaltet, die Empfindlichkeit können durch den Drehschalter eingestellt werden. Der HC-SR 501 Bewegungsmelder kann Spannung im Bereich 4,5 bis 20 V annehmen. Zur Ansteuerung wird Arduino Uno digitale Schnittstelle verwendet, dessen genaue Informationen in Abb. (23–24) zu entnehmen sind.
Abbildung 10: Bewegungsmelder
Das Datenblatt lässt sich hier öffnen [15]


Axiallüfter Der verwendete Axiallüfter von Firma Sunon (siehe Abb. 11) besteht aus einer Geräuschentwicklung von 25,5 dB, maximaler Luftdurchsatz von 15,13 m³/h, Versorgungsspannung von 24V DC(min. 8 V, max. 27,6 V) sowie maximale Stromaufnahme von 39mA. Der Betriebstemperaturbereich liegt bei -10 °C bis max. 70 °C. Zur Ansteuerung dieses Aktor wird ein digitaler Ausgang des AXC 1050 verwendet, dessen genaue Informationen in Abb. (22–23) zu entnehmen sind.
Abbildung 11: Axiallüfter
Das Datenblatt lässt sich hier öffnen[16].
Servomotor Der verwendete HS-65 MG Servomotor(siehe Abb. 12) besteht aus einer Motorsteuerung, einem Elektromotor, einem Getriebe und einem Potentiometer zur Positionsbestimmung. Alle Komponenten sind in einem robusten Gehäuse untergebracht. Winkelbereich [0; 180] Grad. Der Servomotor wird durch Arduino Uno angesteuert und mit einer Spannung von 4,8 V bis 6V versorgt werden.
Abbildung 12: Servomotor
Das Datenblatt lässt sich hier öffnen[17]
RFID-RC522 MEGA KIT Der verwendete RFID steht für " Radio-Frequency Identification"(siehe Abb. 13). Dies bedeutet, dass eine Identifizierung von zwei Systemen über die Hilfe der elektromagnetischen Wellen erfolgt. Damit ist es möglich, sich ohne Berührung zu identifizieren. Es gibt einen Sender und einen Empfänger bei einem RFID-Türöffner. Der Empfänger befindet sich in der Tür. Wenn der richtige Chip gescannt wird, wird die Tür 5 Sekunde lang geöffnet. Danach wird es geschlossen. Der RFID besteht mit einer Arbeitsfrequenz von 13,56 MHz, Betriebstemperatur liegt bei -20 bis 80 °C sowie die Betriebsstromaufnahme von 13-26mA.
Abbildung 13: RFID für die Türöffnung
Das Datenblatt lässt sich hier öffnen [18]






Entwicklung

Bauplan

Wie in der Anforderungsdefinition beschrieben, wurde ein Konzept für den Hausaufbau erstellt, dabei handelt es sich um wo was neu entwickelt wird sowie wo die neuen Komponenten platziert werden sollten. Das in Abbildung 14 dargestellte Bild, zeigt das Konzept der neuen Vorderseite des Hauses. Außerdem zeigt das in Abbildung 15 dargestellte Bild, wo und wie das SUB-D Stecker gebaut werden sollten. Zu guter Letzt erklärt das Bild unter Abbildung 16 das Konzept des innen Aufbaus, der benötigte Servomotor wird direkt hinter der Tür gebaut und mit der 3D-gedrükten Stange an die Tür geklebt.

Abbildung 14: Vorderansicht[19]
Abbildung 15: Hintersicht [20]
Abbildung 16: Draufsicht[21]


Konstruktion

Das Haus ist aus Holzplatten(stand WS 21/22) gefertigt. Die Außenseite des Hauses wurde neu gestaltet, um den Bewegungsmelder und die RFID-Karte sowie die Tür unterzubringen. Der Entwurf des Hauses erfolgte in SolidWorks und die Konstruktion wurde in der Mechatronik Werkstatt zu Ende gebracht. Zur Übersicht werden in folgenden die technische Zeichnung der neuen Außenseite sowie die weiteren 3D-gedrückten Teile dargestellt, die Zeichnungen sind in "inch" angegeben.

Abbildung 17: Außenseite [22]
Abbildung 18: Tür [23]
Abbildung 19: Türknopf [24]
Abbildung 20: Türstange [25]
Abbildung 21: Türwinkel [26]


Wir haben auch ein konfektioniertes Rundkabel erstellt, das aus einzelnen Kabeln (25-polig) besteht. Die Kabel wurden beschriftet. Die Stecker können an D-SUB Stiftleisten (siehe Abb. 22) (1x 25-polig) angeschlossen werden. Dies erleichterte das Trennen des Smart Home von der AXC 1050-Steuerung enorm.

Abbildung 22: SUB-D Terminal Block [27]
Abbildung 22: SUB-D Terminal Block [28]

Schaltplan

Während die Inbetriebnahme des Projekts (stand WS 21/22) nach der ausführlichen Auseinandersetzung mit dem Fachthema, wurden verschiedene Fehler aufgetreten. Insbesondere beim Auslesen der Feuchtigkeitswerte könnte nicht die richtigen Werte(wie in der WS 21/22 Dokumentation geschrieben) ausgelesen werden. Nach der systematischen Fehlersuche mit einem Multimeter wurde herausgefunden, dass die Verschaltung nicht war, außerdem liefert die digitale Ausgangsspannung zum Arduino trotz des Spannungsteiler 24V.

Der aktuelle Schaltplan (siehe Abbildung 23 & 24) wurde mit der kostenlosen Software QElectroTech erstellt, dessen ausführliche Informationenauf diese Seite [29] zu entnehmen sind. Die Dateien lassen sich hier wiederfinden. In Abbildung 16 werden der Phoenix Contact AXC 1050 sowie alle Komponenten, die mit den SPS Digital und analoge Ein- und Ausgänge verbunden sind, dargestellt. Auf der linken Seite befinden sich die Mikrocontroller sowie die Aktoren, die mit dem Digital-Ausgang verbunden sind. Wie im Abschnitt "Komponentenspezifikation" beschrieben, benötigen diese Aktoren 24V Spannung, welche exakt die AXC 1050 Ausgang ausgibt, d.h eine direkte Verschaltung ist hier möglich. Arduino Uno kann jedoch nur max. 5V annehmen, um die 24V digitale Ausgangsspannung auf 5V zu reduzieren wurde ein Spannungsregler(L7805) dazwischen gebaut. Bewegungsmelder, RFID-Leser sowie Servomotoren sind außerdem mit dem Mikrocontroller verbunden, da dieser die Servomotoren mit dem erforderlichen PWM-Signal versorgt(siehe Abbildung 20).

Auf der rechten Seite befinden sich der Temperatur sowie Feuchtigkeitssensor, welche mit dem SPS Analogeingang verbunden sind. Wie bereit im Kapitel Komponentenspezifikation 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 den analogen Eingängen AI0.0 und AI0.1 verbunden. Mit diesem Spannungsteiler konnte sichergestellt werden, dass nur eine Spannung von 0V bis maximal 10V an dem Analogeingang angelegt wird. Der Feuchtigkeitssensor ist außerdem über einen Spannungsteiler mit einem Widerstand von 20kOhm und einem Widerstand von 5,1kOhm mit der Eingang SPS (Analog Input: AI0.1 und AI1.1) verbunden.

Abbildung 23: Schaltplan[30]
Abbildung 24: Schaltplan [31]


Pin Belegung

SUB-D Signalart Komponente Adresse
1 Digital Luefter 1 DO1.1
2 Digital Luefter 2 DO1.0
3 Digital Arduino PWM-Signal DO1.0
4 Digital Heizbirne DO2.0
6 Analog Feuchtigkeit auslesen AI1.1
23 Analog Temperatur auslesen AI0.0
8 Analog Schalter4 DI1.0
11 GND
13 24V

Programmierung

Die Hauptprogrammierung wurde mit PC Worx durchgeführt(siehe Abbildung 25). PC Worx ist eine Programmiersoftware, die für die SPS-Programmierung verwendet wird. Die Programmierung der SPS erfolgt nur in PC Worx mithilfe der Funktionsblocksprache FBS. Das Anlegen eines neuen Projekts in PC Worx, das Herstellen der Verbindung zwischen SPS und PC sowie das Erstellen eines SPS-Programms in der Funktionsblocksprache werden im Artikel Erstellen eines Projektes in PC Worx(siehe Projektunterlagen). Ein Teil der Programmierung wurde auch mit der Arduino IDE durchgeführt. Das Arduino-Programm wird im späteren Abschnitt im Detail erklärt.

Im Programm sollten die Werte des Temperatur- bzw. Feuchtigkeitssensors ständig überwacht werden. Ist die Temperatur höher als 25 °C und/oder die Luftfeuchtigkeit höher als 60 %, sollte das Fenster geöffnet, die Ventilatoren eingeschaltet und die Heizung (Glühbirne) ausgeschaltet werden. Andernfalls sollte das Fenster nur dann geschlossen werden, wenn die Temperatur unter 18 °C und/oder die Luftfeuchtigkeit unter 35 % sinkt, und in diesem Fall sollte die Heizung (Heizlampe) eingeschaltet werden. Parallel dazu erkennt der Bewegungsmelder, ob es eine Bewegung gibt. Wird eine Bewegung erkannt, schalten sich die Lichter an der Oberseite der Tür ein.

Abbildung 25: SPS-Programm [32]


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.

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


Arduino Code

Um die Servomotoren zu steuern, haben wir einen Mikrocontroller zwischengeschaltet, der die Position des Motors so bestimmt, dass sich das Fenster öffnet, wenn der Ausgang OUT4 der SPS ein Signal sendet und die Tür öffnet, wenn die Rfid-Karte erfolgreich gelesen wurde. Der Ausgang der SPS ist mit dem analogen Pin A0 verbunden. Wenn der Ausgang der SPS kein Signal liefert, gibt A3_Value einen Wert unter 1000 zurück (d. h. Eingangsspannung kleiner als 4V). In diesem Fall sollte das Fenster geschlossen werden, indem der Servomotor auf 80° gestellt wird. Andernfalls, wenn der Ausgang der SPS (AO1.0) ein Signal führt, gibt A3_Value einen Wert größer als 1000 zurück (d. h. Eingangsspannung größer als 4,7 V). In diesem Fall sollte das Fenster geöffnet werden, indem der Servomotor auf 10° eingestellt wird. Um dieses Ziel zu erreichen, wurden die folgenden Bibliotheken einbezogen. Servo.h, Adafruit_NeoPixel.h, SPI.h, MFRC522.h. Der Teil des Codes, der das Fenster öffnet, ist unten zu sehen.

  1. include <Servo.h>
  2. include <Adafruit_NeoPixel.h>
  3. include <SPI.h>
  4. include <MFRC522.h>
 {

// /************************************** // Teil 1: Schließsystem (Fensters) // **************************************/

 A3_Wert = analogRead(SPS_Data);
   Serial.print("SPS WERT ");
 Serial.println(A3_Wert);
 if (A3_Wert >= 1000) // SPS führt ein Signal
 {
   Serial.println("Öffne das Fenster!");
   ServoFenster.write(10);
 }
 else
 {
   Serial.println("Schließe das Fenster!");
   ServoFenster.write(80);
 }



Da der Einsatz von Mikrocontrollern unbedingt notwendig war, haben wir diesen Fall genutzt, um eine neue Funktion im Haus einzurichten. Das ist die Anwesenheitserkennung. Um die Anwesenheit zu erkennen, haben wir einen Bewegungsmelder verwendet, der in der Lage ist, Objekte berührungslos zu erkennen. Wenn eine Anwesenheit oder Bewegung erkannt wurde, geht das Licht (oben an der Tür) an. Es geht nach 10 Sekunden aus, wenn keine Bewegung mehr erkannt wird.

   /**************************************
    Teil 2: Bewegungserkennung und Licht
  **************************************/
 int val = digitalRead(inputPin); //Das Eingangssignal lesen
 if (val == HIGH) { // Prüfen ob der Wert HIGH, also ob ein Signal anliegt
   //Wenn der gespeicherte Status == LOW ist, also wenn vorher kein Signal vorhanden war,
   //dann soll auf dem Seriellen Ausgang der Text ausgegeben werden und der PIR Status auf HIGH gesetzt werden.
   if (pirState == LOW) { 
     Serial.println("Bewegung erkannt!");
     pirState = HIGH;
   }
  //Wenn der gelesene Wert nicht HIGH ist, also es liegt KEIN Signal an.
 } else {
   //Wenn der PIR Status HIGH ist, also es lag ein Signal vorher an,
   //dann soll auf dem Seriellen Ausgang der Text ausgegeben werden und der PIR Status auf LOW gesetzt werden.
   if (pirState == HIGH){
     Serial.println("Bewegung beendet!");
     pirState = LOW;
   }
 }
  //Wenn der PIR Status auf HIGH ist dann soll ein Ton ausgegeben werden.
 //Hier könnte auch zusätzlich eine LED oder ähnliches mit angebracht werden.
 if(pirState == HIGH)
 
    { 
   setcolor(127, 127, 127);
   delay (10000); 
    }
      else
 {
   setcolor(0, 0, 0);
  }



Es wurden zwei Servomotoren verwendet. Einer zum Öffnen des Fensters und der andere zum Öffnen der Tür. Die Tür wird mit dem Servomotor geöffnet, wenn der richtige RFID-Schlüssel vor den RFID-Block gehalten wird. Die Tür bleibt 5 Sekunden lang geöffnet und schließt sich danach automatisch. Der Teil des Codes, der RFID liest und die Tür öffnet, ist unten zu sehen.

   /**************************************
    Teil 3: RFID Lesen und Tür aufmachen
  **************************************/
  if (rfid.PICC_IsNewCardPresent()) 
  {  // new tag is available
   if (rfid.PICC_ReadCardSerial()) 
   { // NUID has been readed
     MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
     if (rfid.uid.uidByte[0] == authorizedUID[0] &&
         rfid.uid.uidByte[1] == authorizedUID[1] &&
         rfid.uid.uidByte[2] == authorizedUID[2] &&
         rfid.uid.uidByte[3] == authorizedUID[3] ) 
         {
       Serial.println("Authorized Tag");


       for (angle = 360; angle >= 0; angle -= 1)  { 
     // in steps of 1 degree
       ServoDoor.write(angle);              // tell servo to go to position in variable 'angle'
      delay(15);                       // waits 15ms for the servo to reach the postion
 }
 delay (5000);
   for (angle = 0; angle <= 360; angle += 1) { 
   ServoDoor.write(angle);              // tell servo to go to position in variable 'angle!
   delay(15);                       // waits 15ms for the servo to reach the position
 }
         }
      else {
       Serial.print("Unauthorized Tag with UID:");
       for (int i = 0; i < rfid.uid.size; i++) {
         Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " ");
         Serial.print(rfid.uid.uidByte[i], HEX);
       }
       Serial.println();
     }
     rfid.PICC_HaltA(); // halt PICC
     rfid.PCD_StopCrypto1(); // stop encryption on PCD
   }



Komponententest

In diesem Abschnitt wird jede einzelne Komponente getestet. Die Funktionstüchtigkeit der Komponenten werden auf einem Breadboard getestet. Die Lüfter und der Servomotor drehen sich, Werte können vom Temperatur- und Feuchtigkeitssensor eingelesen werden. Bewegung wurde durch den Bewegungsmelder erkannt, zu guter Letzt wurde auch der RFID-Leser getestet und wie erwartet, hat es funktioniert. Laut des NTC 10K Datenblatts liegt bei 25 °C ca. 10 kΩ, diese konnte erfolgreich ausgelesen werden (siehe Abb. 27), ebenso zeigt laut H-4000 Datenblatt ein lineares Verhalten(siehe Abb. 28), welche auch durch die Messungen bestätigt wurden.

Abbildung 26: Komponententest
Abbildung 27: Temperatur-Spannungs-Diagramm [33]
Abbildung 28: Feuchtigkeits-Spannungs-Diagramm [34]



Integrationtest

Mit dem Integrationstest wird überprüft, ob der zusammengefügte Aufbau und die Integration der einzelnen Komponenten erfolgreich abgeschlossen wurden. Die folgenden Videos zeigen, wie sich die Tür öffnet und schließt und wie das Fenster funktioniert.

Abbildung 29: Integrationstest
Video 1: Öffnen und Schließen der Tür.
Video 2: Fenstermechanismus.

Systemtest

Im Abschnitt "Systemtest" wird der Zusammenbau des gesamten Systems getestet. Der Terminal Block konnte hinten gebaut werden und durch ein SUB-D Stecker mit AXC-1050 verbunden. Das Konzept der Wohlfühltemperaturreglung war erfolgreich umgesetzt, dass die beiden integrierten Axiallüfter angeschaltet werden, sobald der Temperaturbereich überschreitet und bleiben ausgeschaltet, wenn die Temperatur innerhalb der angegebenen Bereich liegt. Die intelligente Anwesenheitserkennung wurde auch richtig umgesetzt, dass nach der Registrierung eine Bewegung durch den Bewegungsmelder das Licht automatisch angeschaltet wird, d.h, wenn kein Lichtbedarf bleibt das Licht aus und somit wird der Nutzer Energiekosten sparen. Das automatische Schließsystem war auch erfolgreich umgesetzt, sobald der RFID erfolgreich den Chip ein ausliest, wird die Tür automatisch geöffnet und nach weniger Sekunde wieder automatisch geschlossen. Leider konnte die Benutzeroberfläche aufgrund technischen Fehlers "Download fehlgeschlagen" nicht zu Ende programmiert werden. Wir haben versucht, den Fehler durch manuelles Hochladen der Daten per FTP in den PC-Ordner zu beheben, allerdings war auch dies nicht möglich. Eine Einführung zur Erstellung einer Benutzeroberfläche in Webvisit wurde auch zu diesem Zweck in einem "Wiki-Artikel" erstellt, den Sie über diesen hier finden können.

Abnahmetest

Im Abschnitt "Abnahmetest" wird geprüft, ob das System die zuvor festgelegten Anforderungen erfüllt. Der Abnahmetest wurde erfolgreich durchgeführt, alle Komponenten funktionieren wie in der Anforderungsliste beschrieben. Der Abschnitt Testfall lässt sich über den Knopf "Ausklappen" anzeigen.

Einleitung

Test-Artikel des Projekts" Smart-Home" WiSe 22/23. Die intelligente Automatisierung im Haus wird getestet. Dafür werden die zu übertragenden Daten wie das PC-Worx Projekt über Phoenix Contact AXC 1050 geschickt sowie der Code für die Ansteuerung des Servo, RFID, und Bewegungsmelder über Arduino Uno geschickt.

Verwendete Daten

Hier wird alles aufgelistet inkl. Datum/Versionnummer, was zur Ausführung des Testfalls notwendig ist
SVN-Projektarchiv: XY in Version 12345
Wikiartikel: Smart-Home: Belüftung, Anwesenheitserkennung vom 31.01.2023
Benötigte Software: PC-Worx und Arduino IDE.

Der Testfall im Detail

Bezeichnung: Smart-Home
Erstellt von: Lawan, John, Mary Joseph
Erstellt am: 4.01.2023


Schritt Nr. Beschreibung Ausgangszustand Aktion(en) Erwartetes Ergebnis Ergebnis Bewertung Bemerkung
Precondition 1 PC und Daten vorbereiten PC ist aus, Kabel nicht eingesteckt Start des PCs Der PC ist an, die Anlage betriebsbereit, Update SVN Arbeitskopie ( Pfad) PC ist an, SVN-Ordner " SmartHome WS_22_23" ausgecheckt
Precondition 2 Phoenix Contact AXC 1050 hochfahren Anlage ist aus Netzteil anschließen, Schalterknopf betätigen Anlage betriebsbereit, SPS-Status ist auf grün (siehe Ergebnis)
Precondition 3 Arduino Uno hochfahren Mikrocontroller ist aus USB-Kabel anschließen Anlage ist betriebsbereit, Arduino Uno blinkt Arduino erfolgreich verbunden
Precondition 4 Hausvorbereitung SUB-D Stecker Terminal Block ist nicht SUB-D verbunden SUB-D Kabel anschließen Anlage ist betriebsbereit Erforderliche Spannung war vorhanden
Testschritt 1 SmartHome Programm öffnen. Anlage ist betriebsbereit Ordner Entwicklung klicken, Smart-Home SPS öffnen PC-Worx Arbeitsbereich geöffnet (siehe Ergebnis)
Testschritt 2 Steuerung neu starten Anlage ist betriebsbereit Arbeitsbereich „Busaufbau“ markieren, IP 192.168.0.14 wählen.

Gerätdetails klicken, den Reiter erweiterte Einstellung wählen und Steuerung neu starten.

Steuerung neu gestartet (siehe Ergebnis)
Testschritt 3 Projekt neu erzeugen Anlage ist betriebsbereit Wechsel zum IEC-Programming Plattform, wähle Main, unter Punkt "Main" wählen. Unter Code Projekt neu erzeugen Projekt neu erzeugt, 0 Fehler (siehe Ergebnis)
Testschritt 4 Projekt automatischer Betrieb Anlage ist betriebsbereit wähle den Button Ausführung (siehe Ergebnis), und danach rücksetzen, dann senden und kalt ausführen. Projekt läuft, Temperatur und Feuchtigkeit gemessen, Lüfter schaltet an, wenn die Temperaturwert > 12000 oder Feuchtigkeitswert> 11000. Wenn nicht, gehe zu Schritt 5.
Testschritt 5 Projekt manueller Betrieb Anlage ist betriebsbereit Bestätige den Schalter 1 und 2, um im manuellen Betrieb zu wechseln. Projekt läuft, Lüfter schaltet an.
Lüftungsmechanismus.
Testschritt 6 Echtzeit Online Werte ansehen Anlage ist betriebsbereit Wähle den Button Online und Debug durchführen. Projekt läuft, online Werte wird angezeigt.
Testschritt 7 Anwesenheitserkennung Anlage ist betriebsbereit Wähle den Ordner Entwicklung und Arduino_SmartHome auf Arduino Uno hochladen. Projekt läuft, Licht wird angeschaltet, Anwesenheit erkannt. Siehe Abschnitt "Integrationstest"
Testschritt 7 Türmechanismus Anlage ist betriebsbereit Halte der blauen Laserkarte ein paar Sekunden vor RFID Tür wird automatisch nach auslesen und nach 5 Sekunden automatisch wieder schließen Siehe Abschnitt "Integrationstest"
Postcondition 1 Anlage AXC 1050 und Arduino Uno herunterfahren Anlage läuft Schaltknopf ausschalten, Arduino USB vom PC nehmen. Temperatur und Feuchtigkeitswert = 0, SPS aus (alle LEDs aus), Netzteil aus
Postcondition 2 PC herunterfahren PC läuft SmartHome Ordner schließen, Software PC-Worx, Arduino IDE schließen, PC aus PC aus, Daten in SVN gesichert

Zusammenfassung und Ausblick

Auch wenn allein die Realisierung des gesamten Projektes ein umfangreiches Lernen der gesamten Thematik erforderte, war das Erreichen der definierten Projektziele am Ende mit einer besonderen Erleichterung und Freude verbunden, auch wenn wir am Ende keine Benutzeroberfläche erstellen konnten. Wir haben zum ersten Mal 3D-gedruckte Teile hergestellt, was eine gute Erfahrung war. Wir hatten auch die Möglichkeit, in der Mechatronik Werkstatt zu arbeiten, um eine neue Frontplatte des Hauses zu erstellen, wo wir die Aufgaben wie fräsen, schleifen, löschen usw. erledigten.

Um dieses Projekt zu realisieren, nutzten wir unsere seit dem ersten Semester erworbenen Kenntnisse im Bereich der Programmierung, Digitaltechnik, Elektronik und andere Kenntnisse und Fähigkeiten. Dieses Projekt half uns, die im 3. Semester erlernten Logikgatter in der Programmierung zu verstehen und anzuwenden.

Lessons-Learned

  • Solidworks, Teile 3D gedrückt
  • SPS Programmierung
  • Strukturierte Vorgehensweise nach V-Modell
  • Projektdokumentation(Wochenbericht)
  • Löten
  • Vertiefung Arduino-Programmierung
  • Vertiefung elektrotechnische Kenntnisse
  • Im Team arbeiten- Arbeitsteilung

Probleme und Schwierigkeiten

  • Verbindungsaufbau zwischen PC und SPS anfangs nicht möglich, da die IP-Adresse falsch eingestellt war.
  • Start neues Programm im PC-Worx-Einarbeitung PC-Worx
  • Wie die SPS-Programmierung funktioniert, war am Anfang nicht leicht zu verstehen
  • SPS liefert ungeeignete Spannungswerte.
  • Time Out
  • Probleme mit Erstellung einer Benutzeroberfläche mit WebVisit
  • Download-Fehlgeschlagen (WebVisit)- Konnten keine HMI programmieren.

Ausblick

  • Eine neue Platine für komplette Schaltung drücken
  • Fenster Schließsystem optimieren
  • Einen Weg finden, RFID direkt mit SPS zu verbinden, so dass es in HMI angezeigt werden kann, wann die Tür offen ist
  • Benutzeroberfläche programmieren

Projektunterlagen

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

Literaturverzeichnis


→ zurück zur Übersicht: Praktikum Produktionstechnik