Smart Home: Temperaturmessung/-reglung & Raumfeuchtigkeitsmessung: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Zeile 224: Zeile 224:


=== Umsetzung SW ===
=== Umsetzung SW ===
Anfänglich wurde versucht Matlab-Simulink zu verwenden, doch es konnte dabei keine Schnittstelle zwischen dem Sensor und der dazugehörigen I2C-Kommunikation erstellt werden. Daher wurde für die Umsetzung der Software die Arduino IDE verwendet. Diese bietet im Umgang mit Sensoren viele Möglichkeiten diese Auszulesen und Auszuwerten. Im Folgenden ist der Quelltext abgebildet, welcher mit dem genannten Programm erstellt wurde:
Anfänglich wurde versucht Matlab-Simulink zu verwenden, doch es konnte dabei keine Kommunikation zwischen dem Sensor und der dazugehörigen I2C-Schnittstelle erstellt werden. Daher wurde für die Umsetzung der Software die Arduino IDE verwendet. Diese bietet im Umgang mit Sensoren viele Möglichkeiten diese Auszulesen und Auszuwerten. Im Folgenden ist der Quelltext abgebildet, welcher mit dem genannten Programm erstellt wurde:


<div style="width:1100px; height:800px; overflow:scroll; border: hidden">
<div style="width:1100px; height:800px; overflow:scroll; border: hidden">

Version vom 9. Januar 2023, 15:59 Uhr

Autoren: Johann Kismann & Dominik Koenig

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

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

→ zurück zur Übersicht: WS 22/23: Angewandte Elektrotechnik (BSE)

Einleitung

Dieser Artikel beschreibt die Realisierung eines Smart Home's (siehe Abb. 1), welches mit einem Temperatursensor und einem Luftfeuchtigkeitssensor ausgestattet werden soll. Als Grundgerüst soll hierbei ein simuliertes "Haus" dienen, welches aus Plexiglas hergestellt werden soll. Dabei soll die Soll-Temperatur im Vorfeld definiert und mit der aktuell vorliegenden Temperatur anhand des Sensors abgeglichen werden. Damit die Soll-Größe erreicht wird, soll ein Peltier-Modul verwendet werden. Dieses dient zur Kühlung bzw. Erwärmung des Raumes, wobei durch eine Umpolung zwischen diesen beiden Zuständen getauscht werden kann. Des Weiteren dient der Luftfeuchtigkeitssensor zur Messung der sich im Haus befindenden Luftfeuchtigkeit.

Sowohl die Soll-, als auch die gemessene Temperatur und die Raumfeuchtigkeit sollen anschließend auf einem LCD-1602-Display zur Visualisierung ausgegeben werden.

Anforderungen

Tabelle 1: Anforderungsliste
ID Inhalt Ersteller Datum Geprüft von Datum
1 Auswahl geeigneter Sensorik und Aktoren Johann Kismann & Dominik Koenig 21.12.2022 Dominik Koenig 05.01.2023
2 Erstellen des Plexiglas-Hauses Johann Kismann & Dominik Koenig 21.12.2022 Dominik Koenig 05.01.2023
3 Schnittstelle zwischen Sensorik, Peltier-Element, Display und Programmier-Software erstellen Johann Kismann & Dominik Koenig 21.12.2022 Dominik Koenig 05.01.2023
4 Funktions-Prüfung der Hardware Johann Kismann & Dominik Koenig 21.12.2022 Dominik Koenig 05.01.2023
5 Erstellen eines geeigneten Quellcodes zum Auslesen der Sensoren und zur Ansteuerung der Aktoren Johann Kismann & Dominik Koenig 21.12.2022 Dominik Koenig 05.01.2023
6 Regelkreis zur Regelung der Raumtemperatur realisieren:
  1. Geeigneten Regler definieren
  2. Messeinrichtung auswählen/einbinden (Temperatursensor)
  3. Passende Regelstrecke realisieren (Peltier-Element)
Johann Kismann & Dominik Koenig 21.12.2022 Dominik Koenig 05.01.2023
7 Erstellen einer geeigneten Schaltung
  1. Realisieren einer H-Brücke zur Umpolung des Peltier-Elementes
  2. LED-Anzeige zum Status, ob gekühlt oder geheizt wird
Johann Kismann & Dominik Koenig 21.12.2022 Dominik Koenig 05.01.2023
8 Luftzirkulation im Rauminneren erzeugen Johann Kismann & Dominik Koenig 21.12.2022 Dominik Koenig 05.01.2023
9 Passende Kühlung des Peltier-Elementes generieren Johann Kismann & Dominik Koenig 21.12.2022 Dominik Koenig 05.01.2023
10 Aufbau der Grundkonstruktion
  1. Ausreichende Befestigung der Elektronik
  2. Einbau einer Klappe/Tür für den Raum
  3. Befestigung des Plexiglas-Hauses
  4. Optimierung der Luftzirkulation
Johann Kismann & Dominik Koenig 21.12.2022 Dominik Koenig 05.01.2023

Funktionaler Systementwurf / Technischer Systementwurf

Anhand des Funktionalen Systementwurfes (siehe Abb. 1) lässt sich erkennen, dass durch das Vorgeben einer Soll-Temperatur die Ist-Temperatur geregelt werden soll. Sollte die aktuell vorliegende Temperatur zu weit von der Soll-Größe abweichen, dann soll das Peltier-Element zum Kühlen bzw. Heizen genutzt werden. Ein Wechsel zwischen Kühlen und Heizen soll dabei so erreicht werden, indem eine Umpolung durchgeführt wird. Neben der Temperaturmessung und -regelung soll zusätzlich die Luftfeuchtigkeit gemessen werden. Die Soll-Temperatur und die gemessenen Werte sollen dabei zudem auf einem LCD-Display ausgegeben werden.

Abb. 1: Funktionaler Systementwurf

Komponentenspezifikation

Tabelle 2: Komponentenliste
ID Komponente Beschreibung Bild
1 Arduino UNO
  • ATMega328P Prozessor
  • Versorgungsspannung: 7V-12V
  • Betriebsspannung: 5V
  • Pin-Belegung: 14 digitale Ein-/Ausgänge und 6 analoge Eingänge
mini
mini
2 1602-LCD Display
  • Betriebsspannung: 5V
  • Hintergrundbeleuchtung: ED, Weiß
  • Auflösung: 16 Zeichen x 2 Zeilen
mini
mini
3 GY-21 HTU21 Temperatur-/Feuchtigkeitssensor
  • Kompatibel mit den meisten 3,3V und 5V Mikrocontrollern
  • Stromstärke: 150µA
  • Temperatur-Messbereich: -40°C-85°C +-1°C
  • Luftfeuchtigkeits-Messbereich: 0-100% +-3%
  • Kommunikation: I2C
mini
mini
4 TEC1-12706 Peltier-Modul
  • Versorgungsspannung: 12V
  • Leistung: 60W
  • Kühlen und Erhitzen durch Umpolung möglich
mini
mini
5 AMD CPU-Kühler
  • Betriebsspannung: 12V
  • RGB-Beleuchtung
mini
mini
6 Labornetzgerät
  • Spannungsversorgung 0-30V
mini
mini
7 Jumper Wire Steckbrücken
  • Variationen von männlichen und weiblichen Kontakten
mini
mini
8 Kühlrippe
  • Material: Aluminium
  • Maße: 40x40x20mm
mini
mini
9 Lochrasterplatine Variation verschiedener Größen:
  • 3x 70X50mm
  • 1x 40x60mm
mini
mini
10 Lüfter
  • Maße: 80x80mm
  • Betriebsspannung: 12V
mini
mini
11 Hochleistungs-Switch
  • Eingangsspannung: 5-36V
  • Strom: 15A
  • Leistung: 400W
mini
mini
12 Elektronische Bauelemente
  • 2x TIP142 NPN-Transisor
  • 2x TIP147 PNP-Transisor
  • 2x 10kOhm Potentiometer
  • 7x 330Ohm Drahtwiderstand
  • 1x blaue LED
  • 1x rote LED
mini
mini

Umsetzung

Reglerauslegung

Bei der Reglerauslegung fällt die Wahl auf einen P-Regler. Dieser soll hier die Funktion haben, dass die Stellgröße (Peltier-Element), je nach Differenz von Soll- und Ist-Temperatur, so geschaltet wird, damit die gewünschte Temperatur erreicht wird. Die Stellgröße gibt dabei Energie ab, welche die Regelstrecke (Plexiglas-Haus) erwärmt bzw. abkühlt. Dabei müssen jedoch ebenfalls Störgrößen berücksichtigt werden, welche die Ist-Temperatur beeinflussen. Diese werden hier als Stör-Energie bezeichnet, da durch äußere Einflüsse Energie ab- bzw. zugeführt werden kann. Durch die Rückführung der gemessenen momentanen Temperatur soll somit der Regelkreis geschlossen und die Soll-Größe nach einer bestimmten Zeit erreicht werden.

Abb. 2: Regelkreis

Umsetzung SW

Anfänglich wurde versucht Matlab-Simulink zu verwenden, doch es konnte dabei keine Kommunikation zwischen dem Sensor und der dazugehörigen I2C-Schnittstelle erstellt werden. Daher wurde für die Umsetzung der Software die Arduino IDE verwendet. Diese bietet im Umgang mit Sensoren viele Möglichkeiten diese Auszulesen und Auszuwerten. Im Folgenden ist der Quelltext abgebildet, welcher mit dem genannten Programm erstellt wurde:

#include <SHT21.h> 
#include <LiquidCrystal.h>

// Eingang Potentiometer Wunsch-Temperatur
#define Pin_W_Temp A1

// Steuergrößen 
// x1 für Lüfter An/Aus 
// x2 für Heizen
// x3 für Kühlen
#define x1 3
#define x2 4
#define x3 5 

// I2C-Schnittstelle für GY-21 HTU21 Sensor
SHT21 sht; 

// Variablen für Sensor
float temp;
float luftfeuchtigkeit; 

// Variablen Wunsch-Temperatur
int w_temp = 0;
int w_temp_alt = 0;
int val;
float dif_temp = 0.2;
int zustand_pelti = 0;

// Varialben für Display
int zeit = 0;
int zustand_Anzeige = 0;

// Anschluss belegung LCD 1602 Display
const int rs = 12, en = 11, d4 = 10, d5 = 9, d6 = 8, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);


void setup() {
  // Initialisierung
  Wire.begin(); 
  Serial.begin(9600); 
  lcd.begin(16, 2);

  pinMode(x1, OUTPUT);
  pinMode(x2, OUTPUT);
  pinMode(x3, OUTPUT);
}


void loop() {
  // Steuerung Display-Anzeige  
  zeit = zeit + 1;
  if(zeit > 20)
  {
    zustand_Anzeige =  0 ; //(state_Anzeige + 1) % 2;
  }
  if(zeit > 400)
  {
    zeit = 21;
  }
  if(w_temp != w_temp_alt)
  {
    zustand_Anzeige = 1;
    zeit = 0;
    w_temp_alt = w_temp;
  }

  // Auslesen Sensorwerte
  temp = sht.getTemperature();  
  luftfeuchtigkeit = sht.getHumidity(); 

  // Wunsch-Temperatur von 0°C bis 40°C
  val = analogRead(Pin_W_Temp);
  w_temp = map(val, 0, 1023, 0, 40);

  // Anzeige Funktion
  Anzeige_Bildschirm();

  // 2-Punkte Regler
  switch (zustand_pelti)
  {
    case 0:
      // Temperatur passt
      digitalWrite(x1, LOW);
      digitalWrite(x2, LOW);
      digitalWrite(x3, LOW);

      if(temp < w_temp - dif_temp)
      {
        zustand_pelti = 1;
      }
      else if (temp > w_temp + dif_temp)
      {
        zustand_pelti = 2;
      }
      break;

    case 1:
      // Heizen
      digitalWrite(x1, HIGH);
      digitalWrite(x2, HIGH);
      digitalWrite(x3, LOW);

      if(temp > w_temp)
      {
        zustand_pelti = 0;
      }
      break;

    case 2:
      // Kühlen
      digitalWrite(x1, HIGH);
      digitalWrite(x2, LOW);
      digitalWrite(x3, HIGH);

      if(temp < w_temp)
      {
        zustand_pelti = 0;
      }
      break;
  }
    // Ausgabe Serielle-Schnittselle 
    Serial.println(zustand_pelti);
    Serial.println(temp);
    Serial.println(w_temp);
    Serial.println("");
}

void Anzeige_Bildschirm()
{
    if(zustand_Anzeige == 0)
  {
    // Aktuelle Temperatur wird angezeigt
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("A-Temp:");
    lcd.setCursor(8, 0);
    lcd.print(temp);
    lcd.setCursor(14, 0);
    lcd.print("\337C");

    lcd.setCursor(0, 1);
    lcd.print("A-Luftf:");
    lcd.setCursor(8, 1);
    lcd.print(luftfeuchtigkeit);
    lcd.setCursor(14, 1);
    lcd.print("%");
  }
  else if (zustand_Anzeige == 1)
  {
    // Wunsch-Temperatur wird angezeigt
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print("Wunsch-Temp:");
    lcd.setCursor(0, 1);
    lcd.print(w_temp);
    lcd.setCursor(3, 1);
    lcd.print("\337C"); 
  }
}


In diesem Quelltext werden nach der Initialisierung der Sensorik und den entsprechenden Pin-Ports die Rückgabewerte des HTU21-Sensors ausgelesen und ausgewertet. Dabei werden die Eingabewerte durch die Funktion val() auf ein Intervall von 0-40 skaliert, damit diese Werte besser weiterverarbeitet werden können. Die Rückgabewerte beinhalten dabei die gemessene Raumfeuchtigkeit und die momentan vorliegende Temperatur. Diese werden darauf mit der Funktion Anzeige_Bildschirm() auf dem LCD-Display kontinuierlich dargestellt. Mithilfe eines Potentiometers kann dann eingestellt werden, welche gewünschte Temperatur erreicht bzw. vorliegen soll. Dabei wurde einprogrammiert, dass bei jeder Änderung der Soll-Temperatur, diese auch auf dem Display für ein paar Sekunden angezeigt werden soll. Je nach dem, wie hoch die Differenz von Soll- und Ist-Temperatur dann ist, wird entschieden wie das Peltier-Modul angesteuert werden soll. Beträgt der Betrag der Differenz weniger als 0,2, so passiert nichts. Weicht diese jedoch um mehr als 0,2 bzw. um weniger als -0,2 von dem Soll-Wert ab, so soll dementsprechend geheizt bzw. gekühlt werden. Wird eines dieser beiden Ereignisse ausgeführt, so soll zudem ebenfalls der Lüfter für die Luftzirkulation eingeschaltet werden. Erreicht der Innen-Raum darauf nach einer bestimmten Zeit die gewünschte Temperatur, so soll ebenfalls das Peltier-Element ausgeschaltet werden.

Umsetzung HW

Wie in Abbildung... zu sehen ist, wurde als Fundament eine Holzplatte verwendet. Darauf ist auf der einen Seite das Plexiglas-Haus und auf der anderen Seite das Holz-Haus für den CPU-Kühler mit befestigt. Dazu wurden Winkel verwendet, die mit der Grundplatte verschraubt wurden. Auch eine Tür wurde dabei im Haus eingebunden, um ebenfalls die Möglichkeit zu haben, im Inneren des Hauses, falls nötig, Änderungen vornehmen zu können. Die Kühl- bzw. Wärmerippe, welche mit einer Lotpaste und durch Kabel auf dem Kühler befestigt ist, wird dabei durch eine rechteckige Aussparung an der Rückseite des Plexiglas-Hauses hinein geführt. Durch einen im Innenraum angebrachten Lüfter, welcher in Richtung der Rippe bläst, kann somit zusätzlich eine Luftzirkulation realisiert werden. Dieser ist zudem mit einem 3D gedrucktem Gehäuse angebracht. Dieses Gehäuse hat dabei außerdem ebenfalls die Funktion den aus dem Lüfter strömenden Wind möglichst genau auf die Rippen zu fokussieren. Dadurch soll sowohl die Abkühlung, als auch die Erwärmung der Temperatur im simuliertem Hause möglichst schnell und effizient durchgeführt werden. Der Arduino und die restliche Elektronik ist, wie in der Abbildung zu erkennen ist, an dem Holz- und Plexiglas-Kasten angebracht. Dabei wurde besonders darauf geachtet, dass das Display und die Einstellung der Wunsch-Temperatur möglichst bedienungsfreundlich und anschaulich an der Seite des Plexiglas-Hauses befestigt werden. Der Sensor...

Komponententest

Nachdem alle Komponenten bestellt und geliefert wurden, wurde jedes Teil zuerst auf äußere Beschädigungen geprüft.

Sensorik

Alle Sensoren wurden nach der ersten optischen Kontrolle mittels der Arduino IDE auf ihr Funktionstüchtigkeit geprüft und getestet. Dazu wurden die Sensoren mittels Jumper Steckbrücken mit dem Arduino UNO und dieser wiederum mit einer USB-Verbindung mit einem PC verbunden. Ist die Stromversorgung und Datenübertragung damit sichergestellt, werden diverse Testprogramme ausgeführt. Dabei wurden einerseits eigene Quelltexte geschrieben und andererseits vorgeschriebene Programme der Arduino IDE verwendet. Alle Sensoren haben keine Schäden oder Fehler aufgewiesen, weshalb der Inbetriebnahme nichts im Wege steht.

Aktorik

Die Aktoren wurden, je nach Betriebsspannung, durch das Labornetzgerät mit der passenden Versorgungsspannung versorgt und dabei wurde darauf geachtet ob Fehler bei der Verwendung auftreten. Auch hier traten keine Auffälligkeiten auf, wodurch die Komponenten zur Anwendung freigegeben wurden.

Ergebnis

Zusammenfassung

Lessons Learned

Dieses Projekt hat uns in vielen Hinsichten weitergebracht und es hat uns gezeigt auf welche Aspekte bei der Realisierung eines Projektes besonders geachtet werden muss. Von der Planung bis hin zum Fertigen Konstrukt konnten wir an Kenntnissen gewinnen und die bis hier hin im Studium erlernten Grundlagen unter Beweis stellen. Wir haben vor allem gelernt, dass sowohl Kommunikation als auch ein ausgewogenes Zeitmanagement von großer Bedeutung sind. Ohne einen passenden und kontinuierlichen Zeitplan mit Meilensteinen können zum Ende der Abgabefrist viele Probleme auftauchen, welche auf der einen Seite unerwartet auftreten können und auf der anderen Seite deutlich mehr Zeit kosten, als man eigentlich angenommen hatte. Dabei spielt auch die ständige Kommunikation eine große Rolle, da dadurch ebenfalls Unklarheiten schnell geklärt und den definierten Anforderungen stetig nachgegangen werden können.

Neben diesen Aspekten gewannen wir ebenfalls an Erfahrung im Bereich Sensorik und Aktorik. Wir konnten nicht nur unser Geschick und unseren Umgang mit verschiedenen elektronischen Komponenten erweitern und verfestigen, sondern auch vor allem unser Wissen bei der Wahl geeigneter Sensoren und Bauteile verschärfen. Besonders der durch den verwendeten Temperatur-/Feuchtigkeitssensor konnten wir viele Kenntnisse über die I2C-Kommunikation erlernen. Auch der gute Umgang mit den Software-Tools SolidWorks, Arduino IDE, Multisim und Aganty wurde durch dieses Projekt vertrauter und bietet uns nun beim Wiederverwenden dieser oder ähnlicher Programme große Vorteile, da keine Einarbeitung mehr nötig ist.

Außerdem wurde ebenfalls unser Verständnis bei der Planung und Realisierung elektrischer Schaltungen deutlich gesteigert. Durch das eigenständige Verlöten von verschiedenen Elementen und Schaltungen gewannen wir an Übung und Geschick.

Projektunterlagen

Projektplan

Abb. 2: Projektplan Gantt-Diagramm
Abb. 3: Projektplan Dashboard

Projektdurchführung

Nachdem alle Anforderungen des Projektes definiert wurden, starten die Planung der Umsetzung. Dabei geht es vor allem darum, geeignete Komponenten auszuwählen, welche am besten anzuwenden sind. Wurde sowohl Sensorik als auch Aktorik ausgewählt und ggf. bestellt, sollen zunächst alle Komponenten auf ihre Funktionsfähigkeit geprüft werden. So können bereits im Voraus Fehler gefunden und ebenfalls vermieden werden. Stehen alle benötigten Komponenten und Bauteile zur Verfügung, kann dann mit der Realisierung des eigentlichen Projektes begonnen werden. Zuerst soll dabei die Software und die dazugehörige Elektronik umgesetzt werden, da diese voraussichtlich den größten Aufwand betragen wird. Hier soll in kleinen Schritten gearbeitet werden, damit jeder Abschnitt für sich geprüft werden kann, damit am Ende alle einzelnen Systeme in ein Gesamtsystem zusammengeführt werden können. Ist die Umsetzung der Software und Elektronik abgeschlossen, kann mit dem Bau der Grundkonstruktion begonnen werden, wonach daran anschließend alle elektronischen Komponenten befestigt und eingebunden werden.

Nach Beendigung der Umsetzung der Hard- und Software kann das Projekt, falls nötig, weiter getestet und optimiert werden. Ist auch dies beendigt, wird letztlich ein YouTube-Video erstellt, in dem alle wichtigen Komponenten kurz erläutert werden und auf die Funktionsweise des Projektes eingegangen wird.

YouTube Video

Literatur


→ zurück zur Übersicht: WS 22/23: Angewandte Elektrotechnik (BSE)