INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Projektvorstellung Lüftersteuerung für meinen Server
14.06.2016, 10:27 (Dieser Beitrag wurde zuletzt bearbeitet: 14.06.2016 10:58 von DaniDD.)
Beitrag #1
Projektvorstellung Lüftersteuerung für meinen Server
Ich möchte euch hier meine Lüftersteuerung zeigen mit der ich es endlich geschafft habe meinen Server kühl zu bekommen und das trotzdem nicht die Drehzahlen durch die Decke gehen.
Zunächst einmal basiert das Projekt ein klein wenig auf dieser Lüftersteuerung:
PID PWM geregelte Lüftersteuerung mit Dallas 18B20
und auf diesem Drehzahlmesser:
Drehzahlmesser
Vielen Dank für die Anregungen! Smile

Der Ausgangspunkt war das bei meinem Server, wo 3 Platten im Raid 5 System arbeiten, der Controller überhitzte. Das äußerte sich in dem das Raid plötzlich nicht mehr erreichbar war. Der Lüfter der den Kühlkörper von dem Raidcontroller angewedelt hat war ausgefallen. Ich habe dann den Dallas DS18B20 zwischen die Kühlrippen des Raidcontrollers gequetscht und mit Kabelbindern einen PWM gesteuerten Lüfter davor gebunden. Der Lüfter ist ein 70mm und stammt von einem AMD Boxed Kühler. Gesteuert habe ich das mit dem oben verlinktem leicht modifiziertem Programm. Das funktionierte schon sehr gut und ich wollte mehr. Ich fand es sinnlos dass ich Temperatursensoren auf die Festplatten klebe und ggf in den CPU Kühler quetsche da man an die Temperaturen ja auf anderem Wege ran kommt. Also musste auf PC-Seite (Ubuntu System) ein Programm her das diese Werte ausliest und die an den Arduino weiter gibt. Natürlich interessierten mich aber auch auf Arduino Seite die Drehzahlen und die Temperatur des Controllers.
Alle 5 Sekunden sendet das PC-Programm über USB die Temperaturen an den Arduino und der Arduino seine Werte an das PC Programm wo diese bis jetzt einfach nur ausgegeben werden. Ich schicke diese per Pipe an eine Datei wo diese geloggt werden und man sich die aktuellen per tail anschauen kann.
Raus gekommen ist das angehängte Programm. Ich habe das in Archive gepackt da es ca 10 Dateien sind.

Anmerkungen zum Arduino Programm
  • In der Datei LuefterServer.ino sind die Pins beschrieben. Gesteuert werden 2 Festplattenlüfter, ein Lüfter für den Raidcontroller und einer für die CPU (das Board war passiv)
  • Die Tuningparameter des PID-Reglers sind auf die Festplattensteuerung optimiert. Die Festplatten reagieren relativ träge
  • Ich hatte erst andere Festplattenlüfter (Arctic) die aber an bestimmten PWM Pins pfeifen taten. Ich habe die aber durch Scythe Kama 92mm ersetzt da man diese bis unter 400upm per PWM herunter regeln kann und egal an welchen Pins pfeifen die nicht. Sollte man pfeifende Lüfter haben und daher die PWM Frequenz über die Register anpassen müssen, muss die Drehzahl durch einen Faktor dividiert werden, da der Timer dann "nicht mehr richtig" geht.
  • Genutzt habe ich einen Arduino Nano den ich auf eine Rasterleiterplatte gelötet habe. Auf die Leiterplatte habe ich dann Steckleisten gelötet wo ich dann die Lüfter Kabel drauf stecke
  • Ich wollte ursprünglich CRC8 nutzen um sicher zu gehen dass die Daten auch korrekt ankommen. Bin aber noch nicht dazu gekommen
  • PWM=0 verstehen viele Lüfter als volle Drehzahl. Auch habe ich bei einigen Lüftern nicht bei PWM=1 angefangen da diese bspw ab 80 abwärts nicht langsamer werden
  • Bei dem Nano/Uno kann man nur die Pins 9 und 10 mit SetPinFrequencySafe die Frequenz einstellen. Für die anderen Pins muss man Register setzen. Das habe ich aber auskommentiert
  • Einige Lüfter wenn die zu langsam laufen bringen sinnlos hohe rpm-Werte. Vermutlich weil die nicht mehr gleichmäßig laufen und zuckeln und die Interrupts dann stört
  • Der Nano/Uno haben nur 2 Interrupts, ich musste mir daher 2 zurecht basteln Interrupts
  • Wunsch/Maximaltemperatur ist bei der CPU 65 Grad, beim Controller 55 Grad und bei den Platten 38 Grad. Hatte bei den Platten erst 35, aber da drehten mir die Lüfter oft zu hoch. Was man als Temperatur einstellt das muss jeder selber wissen. Was die Optimaltemperatur für eine Platte ist, da scheiden sich die Geister. Die einen sagen so niedrig wie möglich, die anderen meinen es ist komplett egal, Hauptsache nicht über 70 Grad und die dritten gehen von 30-45 Grad aus und Hauptsache stabil
  • Vermutlich würde ein PI-Regler reichen. Hab das mit dem PID nur so übernommen.

Anmerkungen zum Linux Programm
  • Ich hatte schon lange schon nicht mehr in C/C++ programmiert gehabt, außer für Arduino. Der Sourcecode ist daher vermutlich nicht... optimal Wink
  • Als Entwicklungsumgebung nutze ich Geany
  • Um das Programm auszuführen müssen die smartmontools und lm-sensors installiert sein
  • Das Programm muss als root ausgeführt werden
  • In einem Festplattenkäfig sind 2 Platten, in dem anderen nur eine Platte. Da wo 2 Platten verbaut sind, wird die höhere Temperatur weiter gegeben
  • Die Strings in der execc.cpp muss natürlich angepasst werden. Auch was "sensors" ausgibt wird vermutlich nicht mit meinem übereinstimmen. Da müsst ihr auch mal schauen wie ihr die Temperatur abgreift, solltet ihr das nutzen

Todo
  • Strings u.ä. in eine Config Datei auslagern
  • Statt die Ausgabe auf die Bildschirmausgabe auszugeben würde ich die Werte gerne in eine Datenbank mit Zeitstempel eintragen
  • Sollte die Verbindung zum PC Programm abbrechen, so müsste das Arduino Programm in einen Notfallmodus gehen und alle Lüfter auf maximale Drehzahl schalten. Programm läuft aber stabil und ist bis jetzt noch nicht abgestürzt
  • Bessere Anpassung der PID-Tuningparameter für den Controller und für die CPU. Aber passt schon. Parameter für Festplattenlüfter zu finden war komplizierter.


Angehängte Datei(en)
.zip  LuefterServer (Arduino).zip (Größe: 5,71 KB / Downloads: 27)
.zip  LuefterSteuerung (Linux).zip (Größe: 14,29 KB / Downloads: 16)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Projektvorstellung: Smarter Gehstock Ardu123 5 1.108 06.07.2016 14:12
Letzter Beitrag: Ardu123
  Projektvorstellung LED Matrix mit seriellem PWM Treiber Bastlerstube 6 1.994 30.04.2016 13:54
Letzter Beitrag: SkobyMobil
  Projektvorstellung: Arduino Gas - Feinstaub Messgerät Bender 33 10.726 23.04.2016 23:48
Letzter Beitrag: Thrillhouse
  PID PWM geregelte Lüftersteuerung mit Dallas 18B20 Wampo 37 17.425 15.03.2016 09:26
Letzter Beitrag: DaniDD
  Projektvorstellung: Arduino RFID Reader liest 125Khz und 13.56 Mhz Tags Bender 1 1.545 09.09.2015 02:51
Letzter Beitrag: Bender
  Lüftersteuerung über Taupunkt daruel 17 10.531 23.08.2014 19:26
Letzter Beitrag: apex

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste