Thermocontrol für Absorberkühlschränke: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
Zeile 236: | Zeile 236: | ||
</pre> | </pre> | ||
</div> | </div> | ||
====PWM-Signal Kennlinie==== | ====PWM-Signal Kennlinie==== |
Version vom 11. Januar 2022, 11:32 Uhr
Autoren: Nicolas-Pascal Kosellek & Hendrik Schlemmer
Betreuer: Prof. Dr.-Ing. Mirek Göbel & Prof. Dr.-Ing. Ulrich Schneider
→ zurück zur Übersicht: WS 21/22: Angewandte Elektrotechnik (BSE)
Einleitung
Da die Kühlleistung von Absorberkühlschränken stark von der Umgebungstemperatur an den Kühlrippen abhängt, ist es von Vorteil, diese über Temperatursensoren zu überwachen und aktiv in einem Temperaturfenster zuhalten.
Gerade im Wohnmobilbereich sind diese Kühlschränke häufig serienmäßig verbaut, sodass hier oft das Problem eines Hitzestaus im Abluftbereich entsteht. Dies wirkt sich negativ auf die Kühlleistung des Absorberkühlschrankes aus. Erhöhte Außentemperaturen, wie sie in südlichen Urlaubsregionen auftreten, verschärfen die Problematik.
Außentemperaturen im Bereich der Frostgrenze erschweren wiederum das Erreichen des optimalen Temperaturfensters.
Anforderungen
MUSS-Anforderungen
• Messung der Außentemperatur
• Messung der Kühlrippentemperatur
• Ansteuerung der Lüftungsklappen mittels eines Servomotors
• Regelung der Lüfterdrehzahl
• Ausgabe der Sensorwerte auf einem Display
• Stromversorgung über 12V-Boardspannung
• Notstellung der Lüftungsgitter
KANN-Anforderungen:
• USV-Versorgung zur Notsteuerung bei Ausfall der 12V-Boardspannung
Funktionaler Systementwurf/Technischer Systementwurf
Die Regelung des Temperaturfensters wird realisiert über eine zusammenhängende Steuerung der Luftauslassklappe in Verbindung mit zwei parallel laufenden Lüftern zur Erzeugung eines optimierten Abluftstroms.
Für die Steuerung des Lüftungsgitters wird ein Servomotor benötigt, welcher die Luftzufuhr regelt. Die zwei vorhandenen Temperatursensoren messen die Temperatur oberhalb der Kühlrippen und die Außentemperatur. Die Erzeugung des Abluftstroms erfolgt über zwei, in der Drehzahl regelbare Lüfter. Die Regelung der Lüfterdrehzahl wird durch den Arduino zum Erhalt der Temperatur, im optimalen Arbeitsbereich, gesteuert.
Die aktuellen Temperaturen, Lüfterdrehzahl und der Öffnungsgrad des Lüftungsgitters werden für den Benutzer sichtbar auf einem LCD-Display ausgegeben. Sollten Fehler in der Regelung oder beim Verstellen des Lüftungsgitters auftreten, wird der Benutzer durch einen Signalton gewarnt und eine Notstellung angefahren.
Die Thermocontrol wird durch ein geschaltetes Plus-Signal vom Kühlschrank mit Spannung versorgt und beginnt die Regelung automatisiert.
Komponentenspezifikation
Komponente | Beschreibung | Abbildung |
---|---|---|
Arduino UNO | Microcontroller 14 digitale I/O Pins 6 analoge Eingänge |
|
LCD-Display | I2C-Verbindung 16x2 Pixel Auflösung Hintergrundbeleuchtung |
|
2x PWM-Lüfter | be Quiet! Gehäuse Lüfter Pure Wings 2 120mm Durchmesser 12V / 2,4W Dienen zur Erzeugung eines Abluftstromes zur Abführung der Wärme |
|
2x Ein/Aus Schalter | Zwei Schaltzustände Dient zum Umschalten zwischen verschiedenen Modis |
|
Potentiometer | 10kOhm Potentiometer Dient zur Simulation der Lamellentemperatur |
|
Ultraschallsensor | Misst den Abstand zu einem beliebigen Objekt Dient zur Erkennung der Abdeckung |
|
RGB-LED | 4-Pin RGB LED (ROT/GRÜN/BLAU) Dient zur Darstellung des Systemzustandes |
|
1-Kanal Relais Modul | Max. 10A / 30VDC Dient zur Spannungsfreigabe der Lüfter |
|
Piezo-Speaker | Lautsprecher nach dem Piezo-Prinzip Dient zur Ausgabe eines Signaltons |
Umsetzung (HW/SW)
Für die Umsetzung des Projektes in die Realität, wurde es in drei verschiedene Teilprojekte eingeteilt.
Hardware - Demo-Ständer
Um unser Projekt auf der Messe gut zu präsentieren, ohne ein Wohnmobil mitzubringen, bauten wir einen entsprechenden Präsentierständer, auf der alle Features zu sehen und auszuprobieren sind. Wir entschlossen uns für eine Edelstahlplatte, in der wir für den Einbaurahmen und der Kontrolleinheit passende Aussparungen schnitten. Um die Sicht auf den Ständer zu erleichtern, bauten wir zwei Holzfüße, welche einen 25 Grad winkeligen Einschnitt erhielten, welche wiederum die Edelstahlplatte halten.
Die Lüfter werden im Einbaurahmen über drei Längsverstrebungen aus Edelstahl gehalten. Dies ermöglicht weiterhin die Demontage der Lüftungsgitter, für ein Erreichen der Kühllamellen. Auch der Ultraschallsensor wurde an dem Einbaurahmen befestigt.
Hardware - Schaltung
Wir fingen an die Schaltung, welche für die Drehzahl der Lüfter zuständig ist, aufzubauen.
Zu Beginn ließen wir lediglich einen Lüfter über unsere Steuerung laufen. Dafür war es notwendig die Temperatur der Kühllamellen eines Absorberkühlschranks über ein Drehpotentiometer zu simulieren, um schnell Änderungen in der Drehzahl der Lüfter erkennen zu können. Die in der Software hinterlegten Kennlinie des PWM-Signals über die Lamellentemperatur ist in der Abbildung X dargestellt. Die Lüfter und der Arduino wurden dabei direkt über ein 230 V Netzstecker, welcher die Spannung auf 12 V DC regelte, versorgt, um die anfallende Boardspannung eines Wohnmobils zu emittieren.
In der ersten Version verwendeten wir 12V Lüfter, welche keine PWM-Ansteuerung integriert hatten. So mussten wir unsere Schaltung mit einem MOSFET erweitern um somit die Versorgungsspannung der Lüfter zu regeln. Die Ansteuerung des MOSFETs erforderte eine PWM-Modulation.
Nach Rechersche im Internet, fanden wir regelbare 12V Lüfter mit PWM-Ansteurung. Die Beschaffung und Einbindung dieser Lüfter in die Schaltung vereinfachte den Aufbau.
Nach diesem Schritt versuchten wir auf dem LCD die Temperatur und die Lüfterdrehzahl ausgeben zu lassen. Dies gelang uns jedoch erst nach dem Gebrauch der Arduino Software IDE.
Nun musste der Winterbetrieb der Thermocontrol realisiert werden. Nach mehreren Anläufen wurde uns bewusst, dass eine vollelektrische Lösung, bei der die Lüftungsgitter beim Unterschreiten einer Schwelltemperatur zu fahren, zu aufwendig zu konstruieren war. Wir beschlossen die mitgelieferte Winterabdeckung smart zu verwenden. Der Arduino soll nun bei Temperaturen um den Gefrierpunkt eine Fehlermeldung, ein akustisches Warnsignal und ein visuelles Warnsignal ausgeben, falls keine Winterabdeckung montiert wurde. Um dies elektronisch zu kontrollieren, montierten wir einen Ultraschallsensor in den Einbaurahmen, welcher durch eine Distanzmessung, die Abdeckung erkennt. Um auch den Außentemperaturbereich zu simulieren verwendeten wir einen Kippschalter, welcher den Sommer- oder Wintermodus einstellt.
Nach erfolgreicher Einbindung der Winterabdeckung sowohl in der Hard- als auch in der Software, mussten noch eine RGB-LED zur visuellen Unterstützung des Betriebszustandes und ein Piezo-Lautsprecher für akustische Warnsignale implementiert werden. Als Zusatz haben wir noch die Drehzahl aus dem Lüfter Ausgang ausgelesen und auf dem LCD-Display ausgegeben.
In der Abbildung X ist das finale Aufbau der Schaltung auf der Rückseite des Demo-Ständers aufgezeigt.
Software
Für die Softwareentwicklung für die Steuerung wurde die gesamte Software in kleinere Unterprogramme zerlegt und einzeln entwickelt. Für die finale Einbindung wurden die einzelnen Unterprogramme mittels der loop-Schleife in der Arduino IDE verbunden.
Eine besondere Herausforderung innerhalb der Programmierung war die Erzeugung der notwendigen PWM-Frequenz für die Steuerung der Lüfter von 25000kHz. Diese PWM-Frequenz ist ein Intel-Standart im Bereich der PV-Gehäuse Lüfter. Der Arduino kann eine so hohe PWM-Frequenz nicht darstellen, somit musste eine spezielle Arduino-Bibliothek hinzugefügt werden welche diese zur Verfügung stellt.
Ebenfalls musste für das Einlesen der Drehzahl aus dem Lüfter die PWM-Frequenz ausgewertet werden. Dies ist im Kapitel X dargestellt.
Für die erfolgreiche Programmierung war die Einbindung von folgenden Bibliotheken notwendig:
- TimerOne.h (Erzeugung von beliebigen PWM-Frequenzen)
- LiquidCrystal_I2C.h (Einbindung des LCD-Display)
Im nachfolgenden sind die einzelnen Unterprogramme einzeln dargestellt:
LED - Ansteuerung
void LED_G_An() // Rote LED ein -> Grüne LED aus { digitalWrite(RGB_G_Pin, 255); // Rote LED einschalten (Digitalausgang HIGH schalten) digitalWrite(RGB_R_Pin, 0); // Grüne LED ausschalten (Digitalausgang LOW schalten) } void LED_R_An() // Grüne LED ein -> Rote LED aus { digitalWrite(RGB_R_Pin, 255); // Rot LED einschalten (Digitalausgang HIGH schalten) digitalWrite(RGB_G_Pin, 0); // Grüne LED ausschalten (Digitalausgang LOW schalten) } void LED_Aus() // Gesamte LED ausschalten { digitalWrite(RGB_R_Pin, 0); // Rote LED ausschalten (Digitalausgang LOW schalten) digitalWrite(RGB_G_Pin, 0); // Grüne LED ausschalten (Digitalausgang LOW schalten) }
Speaker - Ansteuerung
void Speaker() // Lautsprecher einschalten/ausschalten { tone(Lautsprecher_PIN, TonFreq1); // Einschalten des Tons mit TonFreq1 delay(DauerTon); // Tondauer noTone(Lautsprecher_PIN); // Ausschalten des Tons }
Schalterstellungen - Auslesen
void SystemSchalter() // { SystemPin = digitalRead(System_PIN); // if (SystemPin == HIGH) // { System = 0; // } if (SystemPin == LOW) // { System = 1; // } } void SommerWinterSchalter() // Schalterstellung überprüfen { SommerWinterPin = digitalRead(SommerWinter_PIN); // Zustand vom PIN auslesen if (SommerWinterPin == HIGH) // Wenn PIN HIGH { SommerWinter = 1; // SOMMER MODUS = 1 } if (SommerWinterPin == LOW) // Wenn PIN LOW { SommerWinter = 0; // WINTER MODUS = 0 } }
Drehzahlmessung über einen PWM-Eingang
void DrehzahlMessung() // Unterprogramm zur Drehzahlmessung { if ((millis() - DrehzahlMillis) >= AbfrZeit) // Timer um die Messung zu definierten Zeitpunkten durchzuführen { FlankenZeit = pulseIn(Drehzahl_Pin, LOW); // Abfrage der Zeit pro Puls in Mikrosekunden UmdrehungMilli = ((FlankenZeit * 4) / 1000); // Berechnung der Zeit pro Umdrehung in Millisekunden DrehzahlSek = (1000 / UmdrehungMilli); // Umrechnung auf Umdrehungen pro Sekunde Drehzahl = (DrehzahlSek * 6); // Schritt 1 zur Rundung auf 10er Schritte der Drehzahl Drehzahl = (Drehzahl * 10); // Schritt 2 zur Rundung auf 10er Schritte der Drehzahl DrehzahlMillis = millis(); // Die TachoMillis werden aktualisiert um die nächsten 1000ms zählen zu können } }
Lüfter - Ansteuerung über PWM
void LuefterAnsteuerung() // Ansteurung der Lüfter über PWM { Timer1.setPwmDuty(Luefter_Pin, map(Luefter_Drehzahl, 0, 100, 0, 1023)); //Ansteuerung der Lüfter über map() von 0-100 umgerechnet zu 0-1023 }
PWM-Signal Kennlinie
void PWMSignal() // PWM-Signal abhäning von der Lamellentemperatur { const int VarPWM = TempLamellen; // Variable zur Fallunterscheidung switch (VarPWM) // Variable zur Fallunterscheidung { case 0 ... 40: // Wenn Temperatur von 0°C bis 40°C StromRelaisAus(); // Dann Relais aus break; // case 41 ... 50: // Wenn Temperatur von 41°C bis 50°C if (SommerWinter == 0) // SommerModus aus { StromRelaisAus(); // Dann Relais aus } else { StromRelaisAn(); // Dann Relais an Luefter_Drehzahl = 30; // Lüfterdrehl 30% } break; case 51 ... 60: if (SommerWinter == 0) { StromRelaisAus(); } else { StromRelaisAn(); Luefter_Drehzahl = 50; } break; case 61 ... 70: if (SommerWinter == 0) { StromRelaisAus(); } else { StromRelaisAn(); Luefter_Drehzahl = 75; } break; case 71 ... 80: if (SommerWinter == 0) { StromRelaisAus(); } else { StromRelaisAn(); Luefter_Drehzahl = 80; } break; case 81 ... 90: if (SommerWinter == 0) { StromRelaisAus(); } else { StromRelaisAn(); Luefter_Drehzahl = 90; } break; case 91 ... 99: // Wenn Temperatur von 91°C bis 99°C if (SommerWinter == 0) // Wintermodus an { StromRelaisAn(); // Relais an Luefter_Drehzahl = 100; // Lüfter auf 100% LED_R_An(); // Rote LED an Speaker(); // Lautsprecher Ton an } else { StromRelaisAn(); Luefter_Drehzahl = 100; } break; } }
Komponententest
Die verwendeten Komponenten wie zum Beispiel die Lüfter oder das Drehpotenziometer wurden vor der Integration in das System getestet. Dies erfolgte über das Schreiben kleiner Testprogramme, indem die fehlerfreie Funktion erkannt werden konnte.
Folgende Testprogramme wurden angelegt und erfolgreich getestet:
- LCD_Display.ino
- Potentiometer.ino
- PWM_Auswertung.ino
- Ultraschall.ino
Unter folgendem Link [SVN-Link SVN] sind die Beispielprogramme vorhanden.
Ergebnis
Das Ergebnis des Fachpraktikums ist eine smarte Ablufttemperatursteuerung für den Einsatz mit Absorberkühlschränken.
Bei steigenden Temperaturen erhöht sich die Drehzahl der Lüfter,gemäß Abbildung X, sodass eine optimale Arbeitstemperatur des Absorberkühlschrankes gewährleistet werden kann. Ebenfalls wurde eine optische Kontrolle mittels einer RGB-LED umgesetzt, sowie eine akustische Ausgabe über einen Piezo-Speaker.
Durch das Display, welcher im realen Verbau im Innenraum vorzufinden wäre, ermöglicht die Thermocontrol dem Anwender, durch die Ausgabe der Temperaturen und der Lüfter Drehzahlen, ein sicheres Gefühl zu haben, dass der Kühlschrank optimale Kühlleistungen erbringen kann.
Das Problem gerade in warmen Urlaubsregionen von einem kühlen Getränk zu Träumen fällt von nun an weg und der Traum wird zur Realität!
Zusammenfassung
Lessons Learned
Durch die Arbeit an dem Projekt Thermocontrol für Absorberkühlschränke konnten wir das gemeinsame Arbeiten an einem realen Projekt erlernen. Es mussten alle Teilaufgaben für das erfolgreiche Abschließen der Arbeit geplant und durchgeführt werden.
Die Disziplinen waren unter anderen Aufgeteilt in:
- Programmierung
- Dort wurden die bisherigen Kenntnisse aus dem Fach Informatik und den dazugehörigen Praktika gefordert und weiter in Eigeninitiative ausgebaut, gerade die Programmierung in der Sprache C kam zum Einsatz.
- Projektplanung
- Die Durchführung eines eigenen Projekts wurde bislang nur theoretisch oder im Praxissemester vertieft, sodass das Projekt uns die Möglichkeit bat unser theoretisches Wissen mit praktischen Erfahrungen zu füllen.
- Elektrotechnik
- Sicherlich mussten auch die erlernten Grundlagen des Faches Elektrotechnik eingesetzt werden, um die Schaltungen richtig umsetzen zu können und auch die Widerstände zu bestimmen.
- Handwerkliches Geschick
- Während der gesamten Bauphase standen wir immer wieder vor kleinen oder auch großen Hürden, welche wir jedoch gut durch den richtigen Einsatz von Werkzeugen und der Bearbeitung von Werkstücken bewältigen konnten.
Es ist auf jeden Fall festzuhalten, dass dieses Projekt dem Lernerfolg in vielen Aspekten des Studiums weiterhilft und einem einen kleinen, aber doch sehr hilfreichen, Einblick in die praktische Arbeit bietet.
Projektunterlagen
Projektplan
Zu Beginn des Projektes wurde folgender Projektplan festgelegt. Die jeweiligen Aufgaben innerhalb des Projektes wurde gemäß dem Projektplan ausgeführt und abgearbeitet.
Projektdurchführung
Zu Beginn des Projektes zur Erstellung einer Thermocontrol, wurde Überlegungen angestellt, wie der Systemaufbau zu gestalten ist. Ebenfalls wurde in diesem Arbeitsschritt auch die notwendigen Bauteile definiert.
Durch den zuvor getätigten Kauf der Funduino-Arduino Box, war nur die Beschaffung der Lüfter und eines Potentiometer notwendig. Im ersten Versuchsaufbau, wurden Lüfter ohne interne PWM-Steuerung verwendet, sodass ebenfalls eine Transistorschaltung notwendig war. Aufgrund der Möglichkeit zur Verwendung von PWM gesteuerten Lüftern wurde die Schaltung im Laufe des Projektes ersetzt. Dieser Austausch hatte aber keine weiteren Auswirkungen auf den Projektaufbau. Weiter ausgeführt ist dieser Punkt in "Lessons Learned".
Zeitgleich wurde mit dem Hardware-Aufbau und des Fertigung des Demo-Ständers begonnen.
Abschließend konnte das Gesamtsystem aufgebaut werden und erfolgreich getestet werden.
YouTube Video
Im nachfolgenden Video ist das Projektergebnis darstellt:
Weblinks
Literatur
→ zurück zur Übersicht: WS 21/22: Angewandte Elektrotechnik (BSE)