Smart Home: Temperaturmessung/-reglung & Raumfeuchtigkeitsmessung

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen

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, sollen zwei Peltier-Elemente verwendet werden, wovon das eine zum Erwärmen und das andere zum Abkühlen genutzt werden soll. 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: Anforderungen des LED-Cube's
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: Schematischer System-Ablaufplan

Komponentenspezifikation

Mechanische Komponenten

Aluminium-Kühlkörper

Lüfter

Windkanal

  • 3D-Druck mit Polylactid

Lochplatten Platinen

Elektrische Komponenten

LCD-Display

Peltier-Modul TEC-12706

  • Versorgungsspannung: 12V
  • Leistung: 60W
  • Kühlen und Erhitzen durch Umpolung möglich

CPU-Kühler

Temperatur-/Luftfeuchtigkeitssensor GY-21 HTU21

  • Kompatibel mit den meisten 3,3V und 5V Mikrocontrollern
  • Stromstärke: 150µA
  • Temperatur-Messbereich: -40°C-85°C
  • Temperatur-Genauigkeit: +-1°C
  • Luftfeuchtigkeits-Messbereich: 0-100%
  • Luftfeuchtigkeit-Genauigkeit: +-3%
  • Kommunikation: I2C

H-Brücke

  • 2x NPN-Transistor
  • 2x PNP-Transistor
  • 4x Drahtwiderstand

Arduino Uno

  • ATMega328P Prozessor
  • Versorgungsspannung: 7V-12V
  • Betriebsspannung: 5V
  • Pin-Belegung: 14 digitale Ein-/Ausgänge und 6 analoge Eingänge

Umsetzung (HW/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.


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

#define Bildschirm_Helligkeit A0
#define Pin_W_Temp A1 

SHT21 sht; 

float temp;   // variable to store temperature
float humidity; // variable to store hemidity

int w_temp = 0;
int w_temp_alt = 0;

int val;

int zeit = 0;
int state_Anzeige = 0;

float dif_temp = 2;

const int rs = 12, en = 11, d4 = 10, d5 = 9, d6 = 8, d7 = 7;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup() { 
  Wire.begin();   // begin Wire(I2C)
  Serial.begin(9600); // begin Serial
  
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  analogWrite(Bildschirm_Helligkeit,120);

  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
}

void loop() {  
  zeit = zeit + 1;
  if(zeit > 20)
  {
    state_Anzeige =  0 ; //(state_Anzeige + 1) % 2;
  }

  if(zeit > 400)
  {
    zeit = 21;
  }

  if(w_temp != w_temp_alt)
  {
    state_Anzeige = 1;
    zeit = 0;
    w_temp_alt = w_temp;
  }

  temp = sht.getTemperature();  
  humidity = sht.getHumidity(); 

  val = analogRead(Pin_W_Temp);
  w_temp = map(val, 0, 1023, 0, 40);

  Anzeige_Bildschirm();
 
  dif_temp = temp - w_temp;
  if(dif_temp >= 2)
  {
    Serial.println("Kühlen");
    digitalWrite(3, HIGH);
    digitalWrite(4, LOW);
    digitalWrite(5, HIGH);
  }
  else if (dif_temp <= -2)
  {
    Serial.println("Heizen");
    digitalWrite(3, HIGH);
    digitalWrite(4, HIGH);
    digitalWrite(5, LOW);
  }
  else
  {
    Serial.println("Aus");
    digitalWrite(3, LOW);
    digitalWrite(4, LOW);
    digitalWrite(5, LOW);
  }
    Serial.println(dif_temp);
    Serial.println(temp);
    Serial.println(w_temp);
    Serial.println("");
}

void Anzeige_Bildschirm()
{
    if(state_Anzeige == 0)
  {
    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(humidity);
    lcd.setCursor(14, 1);
    lcd.print("%");
  }
  else if (state_Anzeige == 1)
  {
    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 2, so passiert nichts. Weicht diese jedoch um mehr als 2 bzw. um weniger als -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

Sensorik

Aktorik

Ergebnis

Zusammenfassung

Lessons Learned

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)