Arduino als Temperaturregler? Lüftersteuerung Deluxe?

Kenneth Coldy

Banned
Registriert
Dez. 2011
Beiträge
4.476
Hi,

gibts eigentlich schon Projekte die mit einem Arduino eine Temperaturregelung realisieren?

Wer den Unterschied zwischen 'Regeln' und 'Steuern' nicht kennt bitte auf eine Antwort verzichten, danke.

Hintergrund der Frage: Will meinen PC ohne eigenes Gehäuse in den Schrank integrieren. Anschlüsse, Aufteilung, Luftführung .. geht irgendwie. Aber zuverlässig Festplatten, Grafikkarte, Wandler und CPU mit genau dem minimalen Luftstrom zu versorgen schaffe ich m.E. nur wenn ich die einzelnen Lüfter nicht nur blind hochdrehen lasse sondern zueinander in Beziehung setze - also regele, nicht nur steuere. Das ganze soll natürlich auch dann noch funktionieren wenn der zugehörige PC im Bios steht, also in Hardware.

Mein erstes Problem sind mehrere calibrierte Temperaturmeßfühler.
 
Die Temperaturfühler sind sogar das Hauptproblem.

Nach welcher Messgröße willst du denn regeln? Temperatur der Gehäuseluft?

Ein direktes Abgreifen der Temp-Werte auf BIOS-Ebene wird nicht klappen. Das geht entweder per Programm auf OS-Ebene oder halt leider nur sehr ungenau über Messfühler.
 
Mh, interessante Aufgabe die du dir da stellst.

DrToxic schrieb:
Ein direktes Abgreifen der Temp-Werte auf BIOS-Ebene wird nicht klappen. Das geht entweder per Programm auf OS-Ebene oder halt leider nur sehr ungenau über Messfühler.

Ist das über Messfühler wirklich so ungenau? Klar, wenn ich nen Messfühler irgendwo in zwischen die Rippen des CPU-Kühler stopfe, wird der was ganz anderes messen, als was der eingebaute Sensor ausliest. Aber im Prinzip könnte man das ja von Hand kalibrieren. Einmal von Zimmer- bis Maximaltemperatur aufheizen lassen und parallel mitschreiben, was der Messfühler bei einer bestimmten, SW mäßig ausgelesenen Temperatur liefert. Da ne Ausgleichsfunktion durchlegen und man kann sich näherungsweise zu jeder per Messfühler gemessenen Temperatur ausrechnen, welche Temperatur der PC auslesen würde.

So ähnlich sollte man auch die anderen Komponenten messen können.. beispielsweise könnte ich mir auch vorstellen, dass man aus der "Abluft" der Grafikkarte auf die Temperatur der GPU schließen kann. Halt einmal ne entsprechende Kurve messen, fertig.

Vielleicht keine wirklich tolle Lösung, aber recht simpel zu bewerkstelligen. :)
 
Leider ist das Delta T zwischen Core und Kühlkörper aber auch eine Funktion der Umgebungstemperatur und des Airflows im Gehäuse, welcher sich mit jeder Änderung von Komponenten, Staub, Luftzug in der Bude etc. ändert. Das wird, wenn überhaupt, echt nur eine extrem grobe Näherung.

Dann kann man auch gleich ein paar 140mm Lüfter @7Volt laufen lassen, hat keine sorgen wegen der Temps und unhörbar ist es trotzdem.
 
Ah okay, danke für die Aufklärung.
 
DrToxic schrieb:
Nach welcher Messgröße willst du denn regeln? Temperatur der Gehäuseluft?

Kombiniert. Einlaßtemperatur, Auslasstemperatur, Temperatur der verschiedenen Zonen (interne Sensoren von CPU, GPU und HDD)

Ein direktes Abgreifen der Temp-Werte auf BIOS-Ebene wird nicht klappen.

Deshalb ein Arduino. Der soll auch dann für Wohlfühlklima sorgen wenn vom PC keine Vorgaben mehr kommen.
 
Ein Projekt dazu hab ich noch nicht gesehen aber ich kann etwas zur Temperaturmessung mit Mikrocontrollern beitragen. Ich habe mich da schon für ein anderes Projekt damit beschäftigt und würde zum messen der Temperatur DS18S20 1-Wire Sensoren verwenden, die sollten ausreichend genau sein und da gibts bestimmt auch schon fertige Bausteine für den Arduino. Eine Google Suche "ds18s20 arduino" bringt schon massig treffer. Außerdem kann man so eine fast unbegrenzte Anzahl Sensoren nutzen da man nur einen Digital Pin benötigt:
schematic-dallas-18s20.gif

Die Lüfter würde ich über einen einfachen 2 Punktregler regeln, ein P oder gar PI-Regler ist wahrscheinlich dafür overkill.

Gruß Tek

Edit:

Natürlich hat das schonmal jemand gemacht :P Hier grade gefunden:
http://www.barnesian.com/arduino-powered-smart-fan-controller/
Und der hat wirklich einen PID Regler implementiert...
 
Zuletzt bearbeitet:
DrToxic schrieb:
Aber das ist doch genau der Punkt. Wie genau willst du diese Werte denn "extern" abfragen?

Die "internen" Werte muss ich über Tools auf Ebene des Betriebssystems ermitteln und an den Controller übergeben. Ich dachte das sei selbstverständlich.

@Tekwar: Perfekt! Danke Dir vielmals.
 
Zuletzt bearbeitet:
Kenneth Coldy schrieb:
Das ganze soll natürlich auch dann noch funktionieren wenn der zugehörige PC im Bios steht, also in Hardware.

Kenneth Coldy schrieb:
Die "internen" Werte muss ich über Tools auf Ebene des Betriebssystems ermitteln und an den Controller übergeben. Ich dachte das sei selbstverständlich.

Ja, sehr selbstverständlich :rolleyes:

Auf die Erklärung, wie du die internen Temperatursensoren "über Tools auf Ebene des Betriebssystems" auslesen willst, während "der zugehörige PC im Bios steht", bin ich ja jetzt mal gespannt.
 
Menschenskinder... ist das denn wirklich so schwer zu verstehen?

Herkömmliche Lüftersteuerung per PC: Super. Solange das OS läuft. Ansonsten Hitzetod.
Herkömmliche Steuerung per Controller (mcubed?): Super. Berücksichtigt aber nicht die Sensoren des PC.

Mein Ansatz: Controller der die internen Sensoren mit berücksichtigt. Muss aber auch funktionieren wenn der PC im Bios steht, dann eben im Notprogramm ohne dessen Sensoren.
Wo ist denn da jetzt Dein Problem? Schon auf der ersten Seite im Kochbuch steht "Man nehme wenn man hat..."
 
Kenneth Coldy schrieb:
[reduntant]
wenn der PC im Bios steht, dann eben im Notprogramm ohne dessen Sensoren.
[...]

Sag das doch auch von Anfang an so, dann hätte es auch keine 10 Beiträge gebraucht, erstmal zu klären, was du überhaupt willst.

Kenneth Coldy schrieb:
also regele, nicht nur steuere. Das ganze soll natürlich[...]
Wie soll man denn da bitte herauslesen, dass sich das "das ganze" nicht auf das vorher genannte Regeln beziehst, sondern auf einen alternativen Backup-Modus, der nirgendwo erwähnt wird?

Naja, was soll's. Da du ja jetzt weißt, wo du hin willst und auch Sensoren zur Verfügung hast, sollte ja alles klar sein. Quellcode gibt's sicher auch massig im Netz, dann kannst du ja nun bequem loslegen.


edit:
wie weiter oben schon erwähnt, ist dir aber sicher bewusst, dass sich die Temperaturen ggü einem Setup von z.B. 140mm Lüfter@7V wenn überhaupt nur im tiefen einstelligen Grad-Bereich und die Lautstärke (=unhörbar) vermutlich überhaupt nicht ändern wird?
Wobei eine effiziente Luftkühlung so oder so einen vernünftig dimensionierten Innenraum im Schrank erfordert. Wie viel Platz hast du denn da ungefähr? Gibt's Bilder? Oder ist der Schrank noch gar nicht fertig?
 
Zuletzt bearbeitet:
Das Projekt ist insgesamt interessant und ich habe mir auch schon Gedanken in die Richtung gemacht. Eine Idee, die ich noch beisteuern kann zum Thema Temperatur auslesen:

Man kann in der Regel, je nach Board, den oder die PWM-Lüfter an die Temperaturen der verschiedenen internen Sensoren knüpfen (vor allem CPU). Du könntest das so im BIOS einstellen, das PWM-Signal abgreifen, über einen simplen Tiefpass glätten und als Analog-Wert einlesen. Das Ganze zur Sicherheit noch mit anderen Temperatursensoren kombinieren, um eine gewisse Ausfallsicherheit zu erreichen und schon kann es losgehen. Wie gut du den Regler dann auslegst, hängt von deinen Vorlieben und Fähigkeiten ab. Ob du ein komplexes Mehrgrößenregelsystem draus machst, nach dem "Minimum"-Prinzip alle Temperaturen unter einem Level halten möchtest oder was auch immer - ab dann ist es nur noch Software.

Mit ein bisschen mehr Aufwand kannst du auch einzelne Lüfter oder Lüftergruppen komplett abschalten, wenn sie nicht gebraucht werden.

Was ich bisher nicht so gerne gemacht habe war, eigene Programme auf Betriebssystem-Ebene laufen zu lassen, um permanent Daten über die serielle Schnittstelle zu loggen. Egal ob Linux oder Windows - stabil konnte ich das nie zum Laufen bekommen. Sobald ein weiterer USB-Stick oder sonstwas angesteckt wird, verschluckt sich so eine Übertragung gerne mal. Aber auf der anderen Seite kannst du, wie schon erkannt, mehrere "doppelte Böden" einbauen, das heißt, wenn keine Daten per Software kommen, einfach den PWM-Ausgang für Lüfter abfragen, wenn da nichts sinnvolles ankommt, einfach mittels Sensor regeln.

Brauchst du noch Hinweise, wo man 4-Pin-Header, Platinen und sowas herbekommt, oder weißt du sowas bereits?

Ich werde den Thread mal abonnieren und schauen, wie es so weitergeht :-)
 
Das abgreifen des PWM-Signals vom Board ist ein guter Gedanke. Ob das aber noch funktioniert wenn kein Tachosignal zurück kommt? Müßte ich ausprobieren.

Nebenbei: Setz mal keine zu große Hoffnungen auf mich. Ich bin im Programmieren nicht wirklich gut und in Elektronik so ziemlich die Niete. Ich könnte weder eine Schaltung entwerfen (was "barnesian" mit dem Mosfet anstellt habe ich nicht wirklich verstanden) noch könnte ich Dinge die kleiner als eine Münze mit dem Lötkolben bearbeiten ohne dabei einen hübschen braunen Klumpen zu produzieren. Daher ja eingangs auch die Frage ob es schon entsprechende Projekte gibt die man sich als Vorbild nehmen kann um nicht ganz bei Null anzufangen.

Also ich habe jetzt erstmal "einen Arduino" auf meinen Wunschzettel für die Weihnachtsfrau gesetzt.

@All: Welche Arduino Starterkits verwendet ihr zu eurer Zufriedenheit?
 
Einverstanden. Ich wusste nicht, auf welchem Niveau du anfängst. Da ich das Projekt gerade selber auch auf der Liste habe, kann ich natürlich meine Fortschritte nach und nach dokumentieren. Ich sollte an der Stelle aber darauf hinweisen, dass man sich durch Unachtsamkeit und Ungeschick seine wertvolle Computerhardware zerstören kann. Nachmachen ist also alles auf eigene Gefahr. Und wenn du einen ~25€ Arduino nicht "einfach so" kaufen kannst, sollte ich dir vielleicht sagen, dass selbst bei großer Kostendisziplin mehr Geld dabei ausgegeben werden muss als der reine Arduino. Es gibt einige sinnvolle Starterkits, die meisten bieten jedoch eine Menge zusätzlicher Komponenten wie Displays und Motoren, die für dein Projekt nicht nötig sind. Je nachdem, wie knapp der Euro sitzt, würde ich eher einen standard-Arduino Uno und eine gezielte Bestellung der benötigten Komponenten im Elektronikversand empfehlen.
 
Das kommt davon wenn man familieninterne Jokes ungefilter in die Außenwelt schiebt. Die "Herzdame" kriegt den Wunschzettel weil sie nicht meckern darf wenn ihr Herzbube mit ihrem Geschenk für zwei Monate im Bastelkeller (=Computerzimmer) verschwindet.
 
Gut gut, so ein Projekt komplett ohne Budget anzufangen wäre auch nicht sinnvoll. Alleine für Lötkolben und Multimeter (falls nicht vorhanden) gehen schon bestimmte Beträge drauf. Die sind aber gut angelegt, wenn es nicht das letzte Projekt sein sollte.

Ich habe mal ein Flussdiagramm erstellt mit den Zielstellungen, die ich bis jetzt so verstanden habe.

Flussdiagramm.png

Dabei können bis zu 5 Lüftergruppen über PWM gesteuert werden, wenn man den Arduino Uno nimmt. Wenn man die MOSFET-Schaltung von barnesian nimmt, kann man auch 3-Pin-Lüfter in der Drehzahl einstellen. Zudem kann man Lüfter auch komplett an/abschalten.

Erste Aufgaben:
1. Testen der Ansteuerung eines PWM-Lüfters mit dem PWM-Ausgang des Arduino Uno
2. Testen der Tauglichkeit des PWM-Board-Ausgangs des Mainboards
3. Schreiben einer PC-Software, die Systemtemperaturen ausliest und über die serielle Schnittstelle an den Arduino schicken kann (bzw. über eine andere Schnittstelle) -> den letzten Punkt stelle ich ganz hinten auf der Prioritätsliste an, weil all das auch nachträglich per Software gemacht werden kann, wenn die gesamte Schaltung bereits fest verbaut im Rechner steckt.
 
[Bea]Klingt nach nem Plan[/Bea]
 
Ich würde trotzdem wenn, dann über die Spannung und nicht per PWM regeln. Damit kann man dann nämlich wirklich jeden erhältlichen Lüfter regeln und nicht nur die (teureren) Modelle, die über 4Pin/PWM laufen.

Schaltplan dazu gibt's ja schon

Ist eigentlich auch ein (ausschaltbares) Display zur Kontrolle der Temps und Drehzahlen geplant oder ist dir das egal, solange es läuft?
 
Regelung per PWM/Spannung ist für mich nur eine Detailfrage die in einer Subroutine erledigt wird. (Anschlüsse natürlich davon abhängig)

Ein Display für die Lüftersteuerung steht bei mir der Prioritätenliste direkt vor "Fenster und Innenbeleuchtung für den Sat-Receiver" -> brauch ich nicht.
 
Zurück
Oben