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

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

Wintersemester: 2022/2023

Fachsemester: 7

Haus

→ zurück zur Übersicht: [Praktikum Produktionstechnik]

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 werden, 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.


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

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

Vorgehensweise nach V-Modell

Abbildung 2: V-Modell


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

ID Anforderung
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
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 eine Projektplanung 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. 3 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 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 hier














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

Entwicklung

Konstruktion

Das Haus ist aus Holzplatten gefertigt. Die Außenseite des Hauses wurde neu gestaltet, um den Bewegungsmelder und die RFID-Karte unterzubringen. Der Entwurf des Hauses erfolgte in Solidworks und die Konstruktion wurde in der Mechatronik Werkstatt zu Ende gebracht.

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 (1x 25-polig) angeschlossen werden. Dies erleichterte das Trennen des Smart Home von der AXC 1050-Steuerung enorm.

Schaltplan

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. PC Worx ist eine Programmiersoftware, die für die SPS-Programmierung verwendet wird. Ein Teil der Programmierung wurde auch mit der Arduino IDE durchgeführt. Das Arduino-Programm wird im folgenden Teil im Detail erklärt.

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 angleition in variable 'angle'
      delay(15);                       // waits 15ms for the servo to reach the angleition
 }
 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

Integrationtest

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 haben wir 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 Automatiesierung im Haus wird getestet. Dafür werden die zu übertragendenden Daten wie das Pc-Worx Projekt über Pheonix Contact AXC 1050 geschickt sowie die Code für die Ansteurung 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: XY vom 22.12.2022 Benötigte Software: XY in Version XY


Der Testfall im Detail

Bezeichnung: SmartHome
Erstellt von: Lawan, John, Mary
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 a, die Anlage betriebsbereit, Update SVN Arbeitskopie (Pfad: https://svn.hshl.de/svn/MTR_GPE_Praktikum/trunk/Fachthemen/SmartHome/WS_22_23/) PC ist an, SVN-Ordner " SmartHome WS_22_23" ausgecheckt i.O.
Precondition 2 Phoenix Contact AXC 1050 hochfahren Anlage ist aus Netzteil anschließen, Schalterknopf betätigen Anlage ist betriebsbereit, SPS-Status ist auf grün (siehe Ergebnis)
Precondition 3 Arduino Uno hochfahren Mikrocontroller ist aus USB-Kabel vom Anschließen Anlage ist betriebsbereit, Arduino Uno blinkt ... ... ...
Precondition 4 Hausvorbreitung SUB-D Stecker Terminal Block ist nicht SUB-D verbunden SUB-D Kabel vom Anschließen Anlage ist betriebsbereit ... ... ...
Testschritt 1 SmartHome Programm öffnen. Anlage ist betriebsbereit Ordner Entwicklung klicken, SmartHome SPS öffnen PC Worx Arbeitsbereich geöffnet (siehe Ergebnis)
i.O.
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, und danach wieder Main. 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.
... ...
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. ... ...
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 ... ...
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 i.O.
Postcondition 2 PC herunterfahren PC läuft SmartHome Ordner schließen, Software PC-Worx, Arduno IDE schließen,... PC aus PC aus, Daten in SVN gesichert i.O.








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 frasen, 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

Literaturverzeichnis