Smart Home: Temperaturmessung/-reglung & Raumfeuchtigkeitsmessung

Aus HSHL Mechatronik
Version vom 9. Januar 2023, 10:41 Uhr von Johann Kismann (Diskussion | Beiträge) (Komponentenspezifikation)
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, 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: 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

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 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
mini
mini
9 Lochrasterplatine Variation verschiedener Größen
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
mini
mini


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. Im Folgenden ist der Quelltext abgebildet, welcher mit dem genannten Programm erstellt wurde:


#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

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)