====== Flaschenkühler ======
{{:arduino:flaschenkuehler:img_0306.jpg?100 |}}Kalte Getränke sind was Feines, besonders an heißen Sommertagen. Doch kaum steht das Getränk auf dem Tisch, ist es auch schon warm geworden. Ganz klarer Fall: Ein Flaschenkühler muss her. Mein Bastelprojekt im Sommer 2017 ist ein mikroprozessorgesteuerter Flaschenkühler. Der Flaschenkühler kann eine vorgekühlte Flasche auch im heißesten Sommer kühl halten.
Der Flaschenkühler wurde in den Sommermonaten 2017 ausgiebig getestet. Im Testbetrieb hat sich gezeigt, dass einige Modifikationen notwendig sind, die für den zweiten Langzeittest im Sommer 2018 umgesetzt werden.
===== Funktionen des Flaschenkühlers =====
* Der Flaschenkühler kann das Aufwärmen einer vorgekühlten Flasche verhindern. Es kann eine Temperatur von 5°C gehalten werden, niedrigere Temperaturen werden evtl. mit einer besseren Isolierung möglich.
* Die Solltemperatur kann über zwei Taster eingestellt werden.
* Die eingestellte Solltemperatur wird im EEPROM gespeichert.
* Die Soll- und Isttemperatur (und weitere Informationen im erweiterten bzw. Experten-Anzeigemodus) werden auf einem OLED-Display dargestellt.
* Mit einem längeren Druck auf den oberen oder den unteren Taster kann zwischen verschiedenen Anzeigemodi gewechselt werden (einfacher Modus, erweiterter Modus, Expertenmodus).
* Der ausgewählte Anzeigemodus wird im EEPROM gespeichert.
* Es werden die Betriebsstunden gezählt und ebenfalls im EEPROM gespeichert.
* Nach 100 Betriebsstunden empfiehlt der Flaschenkühler im Startbildschirm die Reinigung des Geräts. Insbesondere muss der CPU-Kühler von Staub befreit werden.
* Der Serviceintervallzähler kann mit einem schnellen Doppeldruck auf den oberen Taster zurückgesetzt werden.
* Bei einer Lüfterfehlfunktion (d.h. der Lüfter sollte sich drehen, gibt aber kein Tachosignal aus) wird eine Warnung auf dem Display ausgegeben.
* Abhängig von der eingestellten Solltemperatur arbeitet der Flaschenkühler, sobald die Solltemperatur erreicht ist, sehr leise. Aber auch bei voller Drehzahl des Lüfters ist die Geräuschentwicklung akzeptabel.
===== Komponenten des Flaschenkühlers =====
* Peltier-Element (TEC1-12706), 40 mm x 40 mm, 12 V, 4 Ampere (48 Watt)
* Arduino Nano
* Digitale Temperatursensoren [[arduino:ds18b20|DS18B20]]
* Kühlbecher aus Aluminium
* Rahmen aus GFK und aus dem 3D-Drucker
===== Mechanischer Aufbau =====
Der Flaschenkühler ist mechanisch so aufgebaut, dass notwendige Modifikationen mit möglichst geringem Aufwand vorgenommen werden können. Ein hübsches Gehäuse bekommt der Flaschenkühler erst dann, wenn ausgiebige Tests gezeigt haben, dass alles vernünftig läuft.
==== Rahmen ====
{{:arduino:flaschenkuehler:cassis_gesamtansicht_vorne_mk.png?100 |}}{{:arduino:flaschenkuehler:img_3162.jpg?100 |}} Der Rahmen des Flaschenkühlers ist aus schwarzem GFK gefräst. Die Bodenplatte ist über sechs Abstandshalter aus Aluminium mit der oberen Platte verschraubt. Das Anschlusspanel und die Halterung für die Arduino-Platine sind mit Steckverbindungen zwischen diese beiden GFK-Platten eingespannt. Darüber hinaus hält die Bodenplatte den Lüfter, die obere Platte hält den Kühlkörper und den Kühlbecher. Der Lüfter ist über vier Gummis an den Ecken mit dem Rahmen verbunden, so dass Vibrationen nicht auf den Rahmen übertragen werden. Im Boden ist ein Loch, durch das die USB-Buchse des Arduino Nano erreicht werden kann, so dass Softwareupdates möglich sind, ohne den Arduino umständlich ausbauen zu müssen. Alle anderen Teile sind mit meinem [[3d-druck:hexagon_v2|Delta Printer Hexagon V2]] gedruckt.
{{:arduino:flaschenkuehler:img_0264.jpg?100 |}}{{:arduino:flaschenkuehler:img_0265.jpg?100 |}}{{:arduino:flaschenkuehler:img_0266.jpg?100 |}} Bei dem ersten Langzeittest über mehrere Wochen hat sich gezeigt, dass die Lamellen des CPU-Kühlers regelmäßig von Staub befreit werden müssen. Daher musste die Bodenplatte so angepasst werden, dass der Lüfter zu diesem Zweck nach unten herausgenommen werden kann. Wichtig war mir dabei, dass die Entnahme des Lüfters einfach ist, damit Bequemlichkeit ein möglichst kleines Hindernis darstellt. Die Lösung sieht so aus, dass lediglich zwei Halteklammern zurückgezogen werden müssen, um den Lüfterrahmen samt Lüfter nach unten heraus entnehmen zu können. Es ist kein Werkzeug erforderlich.
==== Kühlung des Peltier-Elements ====
Zur Kühlung der heißen Seite des Peltier-Elements kommt ein CPU-Kühler der Firma Titan (Titan ttc-nc25/HS) zum Einsatz. Dieser Kühler reicht aus, um die entstehende Hitze abzuleiten und baut dennoch hinreichend kompakt. Der Kühlkörper wird von der 92mm-Version des Silent Wings 2 von BeQuiet! angeblasen.
==== Kühlung der Flasche ====
{{:arduino:flaschenkuehler:img_3083.jpg?100 |}} Die Kühlung der Flasche erfolgt durch einen Aluminiumbecher, an dessen Boden die kalte Seite des Peltier-Elements befestigt ist. Der Becher ist eine Einzelanfertigung nach meinen Vorgaben und wurde von der Firma [[https://www.rapidfacture.com/de/|Rapidfacture]] erledigt.((Ich kann Rapidfacture besten Gewissens empfehlen: Der Becher ist maßhaltig, die Lieferzeit wurde auf den Tag genau eingehalten und der Preis lag etwa auf Höhe des Angebots eines Konkurrenten, der aber eine mehr als doppelt so lange Lieferzeit gehabt hätte.)) Es passen Flaschen mit einem Durchmesser von bis zu 72 mm hinein. Der Becher ist etwa 10 Zentimeter hoch. Würde ich in noch einmal anfertigen lassen, würde ich ihn ein paar Zentimeter höher machen. Die Kühlung des Flascheninhalts bleibt auf den Bereich beschränkt, der von dem Becher eingeschlossen wird.
Im ersten Langzeittest des Flaschenkühlers hat sich gezeigt, dass die Wärmeleitpaste mit dem Aluminium des Kühlbechers reagiert. Die Paste scheint auszutrocknen und bröselig zu werden. Daher habe ich für den zweiten Langzeittest mit Wärmeleitpads von Gelid experimentiert. Zwar wird im Internet pauschal behauptet, dass Wärmeleitpads eine schlechtere Wäremleitfähigkeit haben als Wärmeleitpaste. Doch laut Gelid hat das verwendete Wärmeleitpad eine Wärmeleitfähigkeit von 12 W/mK, während viele Hersteller von Wärmeleitpasten eine Wärmeleitfähigkeit von ca. 9 W/mK angeben. Es hat sich jedoch gezeigt, dass die Wärmeleidpads die Wärme tatsächlich schlechter von dem Peltier-Element abführen als Wärmeleitpaste. Das Internet hatte also recht. Verwendet habe ich dieses Mal die metallfreie Wärmeleitpaste MX-4 von Arctic, die sie mit dem Aluminiumbecher verträgt. Sie soll außerdem sehr lange haltbar sein.
==== Wärmeisolierung des Kühlbechers ====
Im ersten Testbetrieb mit dem experimentell aufgebauten Flaschenkühler hat sich gezeigt, dass eine gute Wärmeisolierung der Außenseite des Kühlbechers sehr wichtig ist.
- Damit die an der Außenseite des Kühlbechers angebrachten Temperatursensoren Nr. 3. und Nr. 4, die Temperatur exakt messen können, dürfen sie nicht von der anderen Seite bzw. der Umgebungsluft erwärmt werden.
- Ohne ausreichende Isolierung bildet sich an der Außenseite des Kühlbechers Kondenswasser. Im experimentellen Aufbau kann dieses mit einem Tuch entfernt werden, sobald ein Gehäuse installiert ist, ist das jedoch nicht mehr möglich.
- Um die heiße Seite des Peltier-Elements zu kühlen, muss der CPU-Kühler von einem Lüfter angeblasen werden. Damit dieser mit möglichst geringer Drehzahl laufen kann, sollte das Peltier-Element möglichst nicht unter Volllast betrieben werden. Je besser die Isolierung des Bechers ist, desto weniger Wärme muss das Peltier-Element aus dem Kühlbecher "pumpen".
{{:arduino:flaschenkuehler:img_3178.jpg?100 |}} {{:arduino:flaschenkuehler:img_3195.jpg?100 |}} In einem ersten Testbetrieb über mehrere Wochen (über 400 Betriebsstunden) hat sich gezeigt, dass eine 3 Millimeter starke Isolation aus selbstklebendem Zellkautschuk nicht ausreichend ist. Zwar ließ sich der Kühlbecher auf bis zu 3° Celsius herunter kühlen, aber es bildet sich auf dem Zellkautschuk Kondenswasser. Daher musste die Isolierung des Bechers verbessert werden. Eine Möglichkeit wäre gewesen, einfach dickeren Zellkautschuk zu verwenden. Allerdings ist insbesondere die Isolierung zwischen dem Becherboden und der Oberseite des CPU-Kühlers kritisch, und ausgerechnet hier kann die Isolierung maximal sechs Millimeter stark sein.
Daher habe ich für die zweite Testphase den Zellkautschuk durch Kork ersetzt, der bei gleicher Stärke eine etwa doppelt so große Wärmeisolierung hat.((Einen guten Überblick über die Wärmeleitfähigkeit verschiedener Materialien gibt [[https://de.wikipedia.org/wiki/Wärmeleitfähigkeit|dieser Artikel bei Wikipedia]].)) Zudem wurde die Dicke der Isolierung unter dem Becherboden verdoppelt, an der runden Außenseite sogar vergreifacht und außerdem auch der Ring, mit dem der Alubecher gehalten wird, isoliert. Die gesamte Isolierung ist in einem gedruckten PET-Gehäuse verpackt, die das Eindringen von Feuchtigkeit verhindern soll.
{{:arduino:flaschenkuehler:img_0292.jpg?100 |}}{{:arduino:flaschenkuehler:img_0294.jpg?100 |}}{{:arduino:flaschenkuehler:img_0295.jpg?100 |}}{{:arduino:flaschenkuehler:img_0296.jpg?100 |}}{{:arduino:flaschenkuehler:img_0306.jpg?100 |}}
===== Elektrischer Aufbau =====
{{:arduino:flaschenkuehler:beschriftung_hauptplatine.jpg?100 |}} Das nebenstehende Foto (zum Vergrößern klicken) zeigt die erste Version der Hauptplatine mit der Steckerbelegung. Der Arduino wird mit der USB-Buchse nach unten eingesteckt. Oben rechts befindet sich der Stecker, der die Hauptplatine mit Strom versorgt. Auf dem obersten Pin liegt das PWM-Signal für das Peltier-Element (D09). Der Stecker links daneben versorgt das OLED-Display mit 5 Volt. Darunter befinden sich die Anschlüsse für die Thermistoren. An AREF liegen 3,3 Volt vom Arduino an. Ganz links oben ist der vierpolige Stecker für den Lüfter. Die Minius-Leitung des Lüfters wird mit dem MOSFET (FQP30N06L) geschaltet. Darunter liegt der Stecker für die beiden Taster. An den 2- und 3-poligen Steckern in der Bildmitte wird das OLED-Display angeschlossen.
{{:arduino:flaschenkuehler:hauptplatine.jpg?100 |}} Das Foto links zeigt die zweite Version der Hauptplatine. Die linke Seite der Platine ist identisch mit der ersten Version der Platine (siehe Foto oben). Auf der rechten Seite können nun vier digitale Temperatursensoren ([[arduino:ds18b20|DS18B20]]) angeschlossen werden.
==== Microcontroller ====
Für die Kontrolle des Flaschenkühlers fiel meine Wahl auf einen [[https://store.arduino.cc/arduino-nano|Arduino Nano]]. Der Arduino Nano ist kompakt, liefert an den digitalen Ausgängen 5 Volt, was für PWM-Regelung des Lüfters und die Ansteuerung der MOSFETs wichtig ist, und hat für die wesentlichen Funktionen genügend Programm- und Arbeitsspeicher: [[arduino:flaschenkuehler:programmversion_0.3|Programmversion 0.3]] benötigt etwa 70 % des Programmspeichers, enthält aber im Wesentlichen alle Funktionen der finalen Programmversion. Allein der dynamische Speicher ist etwas knapp: Die Arduino-IDE warnt ab einer Speicherbelegung von 75 % vor möglichen Instabilitäten; eine Auslastung, die mehrfach überschritten wurde. Auch reicht der dynamische Speicher nicht, um eine nach links scrollende grafische Anzeige der Temperaturmesswerte etc. zu realisieren, weil dafür pro Variable 128 Bytes in einem Array gespeichert werden müssten. In der speicheroptimierten [[arduino:flaschenkuehler:programmversion_0.5|Programmversion 0.5]] werden etwa 73 % des dynamischen Speichers verwendet.
==== OLED-Display ====
Der Falschenkühler hat ein OLED-Display, auf dem verschiedene Informationen angezeigt werden können. Verwendet wird das [[https://www.adafruit.com/product/1673|OLED-Display mit 1,27" Diagonale von Adafruit]].
* Hinweise zum Anschluss: https://learn.adafruit.com/adafruit-1-5-color-oled-breakout-board
* Hintergrundinformationen zum SPI: https://www.mikrocontroller.net/articles/Serial_Peripheral_Interface
Das OLED-Display ist an den folgenden Pins angeschlossen:
Arduino Nano Adafruit OLED Breakout Board
GND GND (G)
5V VIN (+)
D13 SCLK (CL)
D11 MOSI (SI)
D5 DC
D6 OLEDCS (OC) CS
D7 RST (R)
Da für SCLK und MOSI die Standard-Pins verwendet werden, müssen im Code nur die Pins DC, CS und RST definiert werden.
Das Senden von Daten an das Display ist sehr langsam. Um das Display vollständig mit Daten zu beschreiben, können schon einmal 100 ms vergehen. Das musste insbesondere bei Messung der Drehzahl des Lüfters berücksichtigt werden. Außerdem wird vermieden, das ganze Display auf einmal zu schreiben. Stattdessen werden immer nur die Zeilen aktualisiert, in denen sich Informationen geändert haben.
==== Bedienung über Taster ====
Die Bedienung des Flaschenkühlers erfolgt über zwei Taster. Mit dem oberen Taster kann die Solltemperatur schrittweise erhöht, mit dem unteren schrittweise verringert werden. Ein langer Druck auf die Taster schaltet durch drei Anzeigemodi ("einfacher Modus", "erweiterter Modus" und "Expertenmodus"). Mit einem schnellen Doppelklick auf den oberen Taster wird der Reinigungsintervalltimer zurückgestellt.
==== Temperaturmessung ====
{{:arduino:flaschenkuehler:img_3172.jpg?100 |}} Es sind insgesamt vier Temperatursensoren verbaut. Sensor Nr. 1 misst an der Rückseite des Geräts die Umgebungstemperatur. Sensor Nr. 2 misst die Temperatur des Kühlkörpers.((Für den ersten Test war dieser Thermistor direkt neben dem Peltier-Element angebracht, für den zweiten Test wurde der Temperatursensor an einer der vier Heatpipes befestigt, um eine saubere Messung sicherzustellen.)) Die Sensoren Nr. 3 und Nr. 4 sind an der Seite des Kühlbechers angebracht (siehe Foto links). Sensor Nr. 3 ist im unteren Bereich befestigt, Sensor Nr. 4 unterhalb der oberen Öffnung.
Während des ersten Langzeittests (bis [[arduino:flaschenkuehler:programmversion_0.5|Programmversion 0.5]]) wurden Thermistoren ([[http://www.mouser.com/ds/2/362/semitec_atthermistor-371460.pdf|Datenblatt]]) verwendet, die über einen Spannungsteiler an jeweils einem analogen Eingang ausgelesen wurden. Eine sehr gute Anleitung für Einbindung von Thermistoren gibt es [[https://learn.adafruit.com/thermistor/overview|hier]]. Nach etwa 400 Stunden haben einige der Thermistoren jedoch ihren Widerstand verändert und somit zunehmend falsche Messwerte geliefert.
Daher wurden die Thermistoren durch den digitalen Temperatursensor [[arduino:ds18b20|DS18B20]] ersetzt (ab [[arduino:flaschenkuehler:programmversion_0.6|Programmversion 0.6]]). Weil dadurch einige komplexe Berechnungen wegfallen, konnte die Verwendung des dynamischen Speichers verringert werden. Der Temperatursensor am Kühlkörper wurde an eine der vier Heatpipes verlegt, damit der Sensor nicht von dem kalten Becherboden gekühlt wird.
==== Lüfterregelung ====
{{:arduino:flaschenkuehler:img_3162.jpg?100 |}} Der Kühlkörper wird von einem PC-Lüfter angeblasen. Verbaut wird die 92mm-Version des Silent Wings 2 von BeQuiet! mit einem 4-Pin-Anschluss. Bei PC-Lüftern mit einem 4-Pin-Anschluss liegt die Betriebsspannung kontinuierlich an. Der dritte Pin gibt ein Tachosignal aus und über den vierten Pin wird die Drehzahl des Lüfters mit einem PWM-Signal gesteuert. PC-Lüfter mit einem 3-Pin-Anschluss haben den Nachteil, dass das Tachosignal nur sehr umständlich ausgelesen werden kann, wenn die Drehzahl per Pulsweitenmodulation der Eingangsspannung gesteuert werden soll, weil auch der Hall-Sensor an dem pulsweitenmodulierten Signal anliegt. Das Problem wird sehr anschaulich auf [[http://www.analog.com/en/analog-dialogue/articles/how-to-control-fan-speed.html|dieser Webseite]] dargestellt. Wie dennoch das Tachosignal ausgelesen werden könnte wird auf [[http://www.pcbheaven.com/circuitpages/PWM_3_Wires_Fan_Controller_with_RPM_feedback/|dieser Webseite]] beschrieben. Mir ist das aber zum einen zu umständlich und erscheint mir zum anderen auch keine "saubere" Lösung zu sein.
Der Silent Wings 2 von BeQuiet! ist ein vierpoliger PC-Lüfter des Typs B.((Siehe dazu die Spezifikationen in [[http://www.formfactors.org/developer%5Cspecs%5C4_Wire_PWM_Spec.pdf|diesem PDF]].)) Das heißt, dass der Lüfter unterhalb eines definierten Duty Cycles mit seiner Minimaldrehzahl läuft. Um den Lüfter auch ganz ausschalten zu können, wurde ein MOSFET verbaut.((Der einzige Nachteil gegenüber einem Lüfter des Typs A ist, dass das Tachosignal bei ausgeschaltetem Lüfter nicht verfügbar ist. Es kann also nicht das Auslaufen des Lüfters nach einem Stopp gemessen werden.)) Die Möglichkeit der vollständigen Abschaltung des Lüfters ist allerdings nicht nötig. Im Alltagsbetrieb läuft der Lüfter mit einer Drehzahl zwischen 1000 und 1500 U/min. Das PWM-Signal zur Drehzahlsteuerung muss eine Frequenz von ungefähr 25 kHz haben. Die PWM-Frequenz des Arduino muss entsprechend angepasst werden, was zum Beispiel mit der [[https://code.google.com/archive/p/arduino-pwm-frequency-library/downloads|PWM-Bibliothek]] möglich ist.
==== Ansteuerung des Peltier-Elements ====
{{:arduino:flaschenkuehler:img_3168.jpg?100 |}} Gekühlt wird der Aluminiumbecher von einem Peltierelement TEC1-12706. Diese Peltierelemente werden offenbar mit sehr großen Fertigungstoleranzen hergestellt. Ich habe zwei dieser Peltierelemente gekauft, eines hat bei 12 Volt eine Verlustleistung von etwa 48 Watt, das andere nur eine von 30 Watt. Verbaut habe ich das mit 48 Watt Verlustleistung.
Die einfachste Möglichkeit, das Peltier-Element zu schalten, wäre eine Zweipunktregelung: Dabei würde das Peltier-Element eingeschaltet, bis die Soll-Temperatur erreicht ist und dann ausgeschaltet. Ab einer definierten Abweichung der Ist- von der Soll-Temperatur würde das Element wieder eingeschaltet.
Der Nachteil einer Zweipunktregelung ist die geringe Effizienz, weil die Wärme im ausgeschalteten Zustand zurück zur kalten Seite fließt. Diese Wärme muss jedes Mal, wenn das Element wieder eingeschaltet wird, zunächst wieder "zurückgepumpt" werden. Dadurch kommt es außerdem zu thermischen Schwankungen, was sich negativ auf die Lebensdauer des Peltier-Elements auswirkt.
{{:arduino:flaschenkuehler:img_3189.jpg?100 |}} Daher fiel die Entscheidung auf eine Ansteuerung per Pulswseitenmodulation mit einer Frequenz von 16 Kiloherz.((Bei dieser Frequenz gibt das Peltier-Element keinen Mucks von sich, und der verwendete MOSFET ist für diese Schaltfrequenz schnell genug.)) Dadurch muss das Peltier-Element nie über einen längeren Zeitraum vollständig ausgeschaltet werden, sondern kann in der Leistung soweit reduziert werden, dass die Temperatur an der kalten Seite konstant gehalten wird. Da das Element nie vollständig ausgeschaltet wird, wird der Wärmetransport nicht unterbrochen und die thermischen Spannungen im Peltierelement bzw. zwischen dem Peltier-Element und dem Kühlbecher bzw. dem Kühlkörper werden minimiert. Diese Schaltung wurde für die erste und zweite Testphase realisiert.
Eine noch elegantere Lösung wäre die Verwendung eines "buck step down converters", der die Spannung und den Strom mit einer maximalen Restwelligkeit von 10% glättet. Um insbesondere die Größe der notwendigen Spule klein zu halten, muss die PWM-Frequenz sehr hoch oder die Spule sehr groß sein.
Die Induktivität und die Kapazität einer solchen Schaltung können mit [[ http://www.daycounter.com/Calculators/Switching-Converter-Calculator2.phtml|diesem Onlinerechner]] berechnet werden. Mit dem Rechner lässt sich sehr schön experimentieren. Es wird deutlich, dass bei einem Duty Cycle von 50% die Spule am größten sein muss. Außerdem wird deutlich, dass die PWM-Frequenz kritisch ist. Soll eine Induktivität von ca. 100 uH ausreichen, muss die Frequenz über 50 kHz liegen. Alternativ oder zusätzlich könnte ein Duty Cycle im Bereich zwischen 30 und 70 Prozent ausgespart werden: Der Rückfluss der Wärme ließe sich auch mit einen DC von unter 30% unterbinden, und eine Regelung der Kühlleistung wäre auch im Bereich zwischen 70 und 100 Prozent möglich. Ohne Einbußen bei der Auflösung hinzunehmen, kann ein Arduino mit einem 16 MHz-Prozessor so konfiguriert werden, dass eine PWM-Frequenz von ca. 60 kHz möglich ist. Bei dieser hohen Frequenz kann der von mir verwendete MOSFET allerdings nicht mehr direkt von dem Arduino angesteuert werden. Es müsste also entweder ein schnellerer MOSFET gefunden werden, oder die Ansteuerung müsste optimiert werden. (Dafür reichen meine Elektronikkenntnisse allerdings – noch – nicht aus. Außerdem muss ein PNP-MOSFET vwewendet werden, die nicht mit 5 Volt angesteuert werden können. Es ist also - für mich - erst einmal zu kompliziert. Einen geeigneten fertigen Regler von der Stange habe ich nicht gefunden.)
Links:
* http://electronics-diy.com/electronic_schematic.php?id=1012
* https://www.adafruit.com/product/1794
==== Stromversorgung ====
{{:arduino:flaschenkuehler:img_3159.jpg?100 |}}{{:arduino:flaschenkuehler:img_3162.jpg?100 |}} Das Peltier-Element, der PC-Lüfter und der Arduino werden mit 12 Volt betrieben. Um die Elektronik vor Verpolung und Überspannung zu schützen, wurde der [[https://www.pololu.com/product/2885|Pololu Step-Down Voltage Regulator D24V150F12]] verbaut. Der D24V150F12 kann bis zu 15 Ampere zur Verfügung stellen, so dass er durch das Peltier-Element nicht zu irritieren sein sollte. Die Betriebsspannung des Flaschenkühlers liegt daher zwischen 15 und 35 Volt. Zum Einsatz kommt ein Netzteil von einem alten IBM Thinkpad. Das wird zwar knallheiß, sollte das laut Datenblatt aber aushalten können.
===== Programmierung =====
Die Programmierung des Arduinos erfolgt Schritt für Schritt. Jede Programmversion fügt mindestens eine Funktion hinzu. Welche Funktionen das sind, welche Probleme zu lösen waren und wie sie gelöst wurden, wird jeweils auf einer eigenen Wiki-Seite erklärt.
* [[Arduino:Flaschenkuehler:Programmversion 0.1]]: Fokussiert auf Ansteuerung des Lüfters
* [[Arduino:Flaschenkuehler:Programmversion 0.2]]: Bindet das OLED-Display und zwei Taster ein.
* [[Arduino:Flaschenkuehler:Programmversion 0.3]]: Verschiedene Anzeigemodi und viele, viele Erweiterungen und Verbesserungen.
* [[Arduino:Flaschenkuehler:Programmversion 0.4]]: Diese Version enthält alle Funktionen.
* [[Arduino:Flaschenkuehler:Programmversion 0.5]]: Fokussiert auf das Feintuning der PID-Regler und entlastet den dynamischen Speicher.
* [[Arduino:Flaschenkuehler:Programmversion 0.6]]: Diese Version enthält vor allem Anpassungen an den digitalen Temperatursensor DS18B20.
===== Tests =====
Bevor der Flaschenkühler ein hübsches Gehäuse bekommt, wird er langfristigen Tests unterzogen.
==== Erster Langzeittest ====
Die erste Testphase erstreckte sich über den Sommer 2017 und über 400 Stunden Betriebszeit. Es zeigte sich, dass der Flaschenkühler im Großen und Ganzen wie erwartet funktioniert. Das Peltier-Element kann den Becher etwa innerhalb einer halben Stunde auf 3 °C herunterkühlen. Gemessen wird Thermistor Nr. 4, der sich am oberen Rand des Kühlbechers befindet. Nachdem die Temperatur erreicht ist, pendelt sich die Leistung (genauer: Der Duty Cycle) bei ca. 80% ein. Der Lüfter läuft dann ca. mit 1200 bis 1300 U/min. Die Temperatur ist allerdings sehr ungleichmäßig verteilt. Wird eine Temperatur von 5 °C eingestellt, messe ich in einer Testflasche in acht bis neun Zentimeter Höhe (tiefer komme ich mit dem Thermometer nicht) etwa vier bis fünf °C, in 15 Zentimeter Höhe ist das Wasser nur noch 12 bis 13 °C kalt. Ein höherer Kühlbecher würde hier Abhilfe schaffen. Andererseits sinkt der Wasserspiegel an heißen Tagen auch recht schnell ab, und durch das Herausnehmen und Kippen der Flasche beim Trinken werden kältere und wärmere Wasserschichten durchmischt, so dass in diesem Punkt kein dringender Handlungsbedarf besteht.
Es zeigte sich allerdings auch, dass einige Modifikationen nötig sind. Zwar ist der Lüfter in der Lage, die heiße Seite des Peltier-Elements hinreichend zu kühlen, ohne dauerhaft mit seiner Maximaldrehzahl zu laufen. Allerdings könnte durch eine bessere Isolierung die Drehzahl reduziert werden, wodurch der Flaschenkühler insgesamt leiser würde und außerdem weniger Staub in das Gerät geblasen und das Wartungsintervall (Reinigung des CPU-Lüfters) vergrößert werden könnte.
In jedem Fall muss der Boden des Flaschenkühlers so modifiziert werden, dass der Lüfter nach unten entnommen werden kann, um die Lamellen des CPU-Kühlers reinigen zu können. Ein versuchsweise vor den Lüfter montierter Staubschutz bremst den Luftstrom so stark ab, dass der Lüfter permanent mit voller Drehzahl läuft.
Außerdem haben gegen Ende des Sommers beide Thermistoren am Kühlbecher falsche Werte gemessen. Diesbezüglich habe ich noch nicht herausgefunden, wo der Fehler liegt. Ist evtl. Feuchtigkeit das Problem?
==== Zweiter Langzeittest ====
Mit der neuen Isolierung werden am Becherboden - gemessen mit einem Küchenthermometer - unter minus 1°C gemessen. Der Temperaturfühler am Becherboden misst dann 2°C, der obere 3,5°C. Für 8°C (Temperatursensor am Becherboden) pendelt sich das Peltierelement bei einem duty cycle von 69% ein. Der Lüfter dreht dann bei einer Umgebungstemperatur von ca. 30°C mit 1150 U/min. Es wäre experimentell zu ermitteln, bei welchem Sollwert für den Kühlkörper der Sweetspot zwischen Lüfterdrehzahl und Effizienz des Peltierelements liegt. Generell hat die Korkisolierung keinen so großen Effekt, wie ich mir erhofft hatte. Immerhin entsteht nun am Becheräußeren kein Kondenswasser mehr. Außerdem hat sich die Zeit deutlich verkürzt, die der Flaschenkühler benötigt, um von Zimmertemperatur auf 8°C herunterzukühlen. Das dauert jetzt nur noch etwa 20 Minuten.
Update: Nach über 1000 Betriebsstunden läuft der Flaschenkühler immer noch tadellos! Auch bei hochsommerlichen Außen- (>35°C) und schwer zu ertragenden Innentemperaturen (> 28°C) erreicht der Flaschenkühler problemlos Temperaturen von 6,5°C, was bei diesen Temperaturen viel zu kalt ist. Aber er kann es.
Update: Auch nach über 1500 Betriebsstunden läuft der Flaschenkühler noch zuverlässig. Das OLED-Display hat allerdings deutlich wahrnehmbar Leuchtkraft eingebüßt.
Tags: #Arduino #Flaschenkühler #Nano #OLED