MeisterKühler

Arduino Lüftersteuerung, Projekt DeliciousWhiskey

Willkommen in der Mk-Community Foren Hardware Bastelecke Arduino Lüftersteuerung, Projekt DeliciousWhiskey

Ansicht von 21 Antwort-Themen
  • Autor
    Beiträge
    • #503533
      G-SezZ
      Teilnehmer

      Servus,Ich möchte hier mal mein kleines Arduino Projekt vorstellen. Weil ich ganz unkreativ bin, und gerade eine Flasche Aberlour A’Bundah auf dem Tisch stand, hat es den Namen Delicous Wiskey bekommen. ;)Ursprünglich war nur ein PWM Konverter geplant, um mehrere 4-pin PWM Lüfter mit dem analogen Anschluss meiner Aquastream XT steuern zu können. Am Ende wurde daraus eine eigenständige Lüftersteuerung, weil ich mit dem Regler der Aquastream XT sehr unglücklich war. (Es ging wohl schneller eine eigene Steuerung zu programmieren, als mit der Aquastream eine halbwegs zufriedenstellende Einstellung für den PID Regler zu finden. Eine mit der die Lüfter niemals schneller drehen als wirklich nötig))Im Anhang findet ihr den Source Code und einen kleinen Schaltplan. Wer Lust hat die Steuerung nach zu bauen soll das gerne tun. Das geschieht natürlich auf eigene Gefahr. Ich bin selbst kein Elektronik Profi, und kann für nichts garantieren. Ich programmiere in Eclipse, aber mit den Header und cpp Dateien müsste die Arduino IDE auch klar kommen. Zusätzlich werden noch die EEPROM, math und Time libs benötigt.Funktionsumfang: – 4 Temperatursensoren (10K Thermistor) – 4 Lüfter Kanäle (4-pin PWM) – 1 analoger Lüfter Eingang (3-pin) – Manueller Modus (fixe Geschwindigkeit) – PWM Konverter Modus (analog 0-12V zu 4-pin PWM) – Temperatur gesteuerter Modus (Ziel Temperatur) – Intelligentes Management der Lüfter unterhalb ihrer der Mindestdrehzahl. – Auswertung der Drehzahl – Bedienung und Statusanzeige über ein serielles Terminal – Log Ausgabe über seriell Schnittstelle – Maximalwert Speicher – Spannungsversorgung 12V vom Netzteil, 5V wahlweise vom Netzteil oder über USB TemperatursensorenZur Steuerung wird nur der Wert des ersten Temperatursensors verwendet, die anderen drei dienen nur der Information. Kalibriert werden können sie derzeit nicht. Die Abweichungen lagen mit identischen Sensoren bei unter 0.5K zueinander und 1.5K zu meinem Fieberthermometer. Vielleicht baue ich noch eine Möglichkeit zur Kalibrierung ein. Aber besonders exakte absolute Werte finde ich nicht sonderlich wichtig, braucht man ja nur zu Vergleichszwecken und nicht zur Steuerung.Lüfter KanäleAn jeden der vier Kanäle kann theoretisch eine unbegrenzte Anzahl von Lüftern angeschlossen werden, da sie direkt vom Netzteil mit 12V versorgt werden. Ein weiteres PWM-Hub nicht nötig.Analoger EingangDer analoge Eingang kann mit einem 3-pin Lüfter Anschluss einer externen Steuerung oder des Mainboards verbunden werden. Im PWM Konverter Modus werden die Lüfter entsprechend dieses Signals gesteuert. Hier wird auch das Tacho Signal des ersten Lüfters ausgegeben.Manueller ModusDie Lüfter können auf eine fixe Geschwindigkeit von 0-100% eingestellt werden.PWM Konverter ModusDer Arduino misst die Spannung am analogen Eingang und lässt die PWM Lüfter entsprechend drehen.Temperatur gesteuerter ModusDie Lüfter werden vom Arduino auf eine eingestellte Zieltemperatur hin gesteuert. Die “Regelung” ist super simpel, und zugleich die effektivste die ich mir vorstellen kann. Um die Zieltemperatur wird ein 5K Fenster gesteckt. Innerhalb dieser 5K wird die Geschwindigkeit einfach von 0-100% geregelt. Sinn einer Lüfter Steuerung ist es ja nicht die Temperatur auf 1K genau zu regeln. Schließlich wollen wir in unserem PC kein Frühchen brüten, sondern nur einen groben Grenzwert nicht überschreiten. Den wenigsten Lärm produzieren Lüfter bei möglichst niedriger Drehzahl. Die niedrigste mögliche Drehzahl für Hitzeentwicklung X ist immer die, bei der die Temperatur konstant bleibt. Diese konstante Temperatur stellt sich von ganz alleine innerhalb des 5K Fensters ein. Je nachdem wie ambitioniert die Zieltemperatur gewählt ist kann sie etwas ober- oder unterhalb des exakten Zielwertes liegen. Da es bei dieser Art der Regelung nicht zum Übersteuern kommt treten fast keine Schwingungen auf. Wichtig ist aber, wie bei jeder Steuerung, dass der Wassertemperatursensor möglichst gute Werte liefert. Gut bedeutet dass er eine direkte Rückmeldung über die Kühlleistung der Lüfter gibt!Intelligentes Management der LüfterDa Lüfter eine Einschaltschwelle haben, unter der sie sich nicht drehen, kann man die Kühlleistung normalerweise nur oberhalb dieser steuern. Wird weniger Kühlleistung benötigt kann der Arduino aber einzelne Lüfter Kanäle ganz abschalten, während er die übrigen auf der Mindestdrehzahl hält. Somit laufen bei niedriger Last immer nur so viele Lüfter wie tatsächlich gerade gebraucht werden. Es kann auch eingestellt werden dass einer, oder mehrere Kanäle niemals ganz abgeschaltet werden. Dieses Management findet in allen drei Modi statt. Beispielsweise im PWM Konverter Modus: Bei 3V (=25%) am anlogen Eingang und 50% Einschaltschwelle, würde die Hälfte der verwendeten Kanäle mit 50% laufen, und die andere Hälfte wäre aus.Auswertung der DrehzahlPro Kanal kann die Drehzahl eines Lüfters ausgewertet werden. Die Auswertung erfolgt über die Pulsdauer des Tacho Signals und ist daher etwas ungenau. 10-20% fixe Abweichung in meinen Tests. Ich finde dass das ausreicht, da mich nur ein relativer Vergleich zum Beispiel zu den Werten von gestern interessiert. Man könnte sie genauer messen, indem man per Interrupts die Anzahl der Pulse pro Zeit zählt, aber das war mir zu viel Aufwand. Das Tachosignal des ersten Lüfter Kanals wird zudem am analogen 3-pin Anschluss ausgegeben, dass eine externe Steuerung auch etwas zum Anzeigen hat. Bedienung und Statusanzeige über ein serielles TerminalBedient werden kann der Arduino über ein serielles Terminal, an jedem PC oder Gerät das seine serielle Schnittstelle über den USB Port erkennt (Tablet, Smartphone, Windows, Linux, etc…). Die Einstellungen werden im eeprom gespeichert und bleiben auch nach einem Neustart aktiv. Zum Betrieb ist keine USB Verbindung zum PC nötig. Der Arduino arbeitet völlig autark. Ich habe ihn z.B. schon am AIO Wasserkühler meines NAS getestet, wo ich ihn mangels Peripherie per Tablet konfiguriert habe. Temperaturen, Drehzahlen, und ein paar weitere Infos werden im Sekundentakt über die Schnittstelle gesendet. Zudem kann eine Befehlsübersicht ausgegeben werden.Log Ausgabe über die seriell SchnittstelleNeben einer für Lesbarkeit formatierten Ausgabe kann man den Arduino auch in einen log Modus versetzen, in dem er in einem vorgegebenem Intervall alle Daten Semikolon getrennt ausspuckt. Diese Daten kann man z.B. mit dem RS232 Logger von Eltima loggen, und dann in Office schöne Graphen erstellen.Maximalwert SpeicherDie jeweils höchste Temperatur pro Sensor bleibt gespeichert bis der Arduino neu startet. Noch nicht die beste Lösung, da er meistens durch eine Terminalverbindung neu startet. Da ich aber auch nicht will dass man ihn immer wieder manuell löschen muss, muss ich mir dafür noch etwas anderes ausdenken. (Vielleicht beim Neustart den alten Wert nochmal ausgeben bevor er gelöscht wird, oder so.)Spannungsversorgung Die Schaltung wird direkt vom Netzteil versorgt und benötigt 12V für die Lüfter und 5V für den Arduino. Ich habe einen Jumper eingebaut, um die 5V trennen zu können, wenn der Arduino per USB verbunden ist. Das sollte nicht unbedingt nötig sein, gibt aber zumindest ein sichereres Gefühl. Vor allem wenn die USB Verbindung zu einem anderen PC oder Tablet geht.ZukunftspläneIch wollte noch ein GUI in Qt schreiben. Die Datenübertragung auf der Seite des Arduinos ist schon so gut wie fertig. Mir fehlt aber momentan die Zeit das zu Ende zu bringen, das macht ja mehr Arbeit als der Code für den Arduino. Vielleicht hat ja jemand Lust? ;)Außerdem spiele ich mit dem Gedanken den Arduino nebenbei noch die Beleuchtung steuern zu lassen. (adressierbare, also animierbare LEDs, bspw Adafruit Neopixel). Aber da das smoothing der Sensorwerte, und messen der Lüfterdrehzahlen momentan sehr viel Rechenkapazität belegt müsste ich die wohl grundlegend anders aufbauen. Also vielleicht bekommt die LED Steuerung einen eigenen Arduino. Noch ein paar AnmerkungenDer Arduino Nano arbeitet mit 490Hz und 980Hz PWM, je nach pin. Die meisten Lüftersteuerungen nutzen wesentlich höhere Frequenzen. Mit allen Lüftern mit denen ich testen konnte klappte es aber problemlos. (Noctua NF-A140, Thermalright TY150, und irgend ein unbekanntes Scythe Modell).Manche PWM Lüfter haben intern eine minimale Geschwindigkeit vorgegeben. Mein Thermalright hält sich z.B. selbstständig über 40% wenn das PWM Signal niedriger ist. Er lässt sich über den PWM pin auch nicht abschalten (Pin ständig auf Masse ziehen). Das A und O für eine gute Regelung ist ein guter Messwert der Wassertemperatur. Der absolute Wert spielt keine große Rolle, wichtig ist die Reaktionszeit und die Position des Sensors. Was wir brauchen ist eine möglichst direkte Rückmeldung über die momentane Kühlleistung der Radiatoren. Dazu sollte der Sensor hinter dem Ausgang des letzten Radiators sitzen. Außerdem sollte man ihn nicht gerade an eine große thermische Kapazität hängen, weil ihn das träge macht. Also lieber einzeln in einem Stück Schlauch, als zusammen mit drei Adaptern, Kugelhahn, T-Stück und vier Fittings im Kupferblock des Ausgleichsbehälters. Ein Film Sensor, den man mit Klebeband außen an ein Fitting klebt, kann unter Umständen bessere (schnellere) Werte liefern als ein großer Messingklumpen der im AGB hängt.Mein Praxistest:In meiner Custom Wakü funktioniert die Regelung super, ohne nennenswerte Schwingungen. Es werden 3×2 und 1×3 Lüfter gesteuert. Im Idle bleibt 1 Kanal immer an, unter leichter Last laufen 2-3 Kanäle mit minimaler Drehzahl, und unter Volllast alle 4 mit etwas höherer Drehzahl. Tritt Last auf gleicht der Temperaturverlauf einem Logarythmus, der sich einem Grenzwert nähert und ihn niemals erreicht.Für meinen NAS habe ich schon eine zweite Schaltung gebaut. Dort steuert er den Lüfter eines AIO CPU Wasserkühlers (zugleich Gehäuselüfter), und macht ebenfalls einen guten Job. Den Sensor habe ich einfach mit Klebeband an den Ausgang des Radiators geklebt und etwas gegen Luftzug isoliert.Wer den Code einfach mal ausprobieren will, die Baudrate für die serielle Verbindung beträgt 115200. Sendet man den Buchstaben h in ASCII antwortet der Arduino mit einer Befehlsübersicht. Befehle brauchen weder carriage return noch line feed, werden aber auch mit diesen akzeptiert.Der Button hat zwei Funktionen: Hält man ihn während des Starts gedrückt (oder während eines Resets) wird das eeprom auf Werkseinstellungen zurück geschrieben. Außerdem wird der analoge Eingang auf den aktuellen Pegel kalibriert (falls Spannung anliegt). Im Betrieb löst der Button eine Art Notfallmodus aus, dann wird in den manuellen Betrieb gewechselt und alle Lüfter laufen mit 100%, bis zum nächsten Neustart (des Arduinos).

    • #955058
      Kiro
      Teilnehmer

      Schicke Idee und nette Anleitung :)Respekt an die Mühe :)Ich hab ein Arduino One Board, meinst du, man könnte das Programm auch für diesen nehmen, wenn die Pins entsprechend belegt werden??

    • #955063
      G-SezZ
      Teilnehmer

      Wenn du mit One den Uno meinst, ja. Der hat einen analogen pin zu wenig, könntest aber dann den Button auf einen digitalen legen. Hab den nur auf analog, weils vom Platz besser gepasst hat.

    • #955067
      Kiro
      Teilnehmer

      Ja gut im Buch wurde von One geredet, die Bezeichnung ist eigentlich Uno. Sorry, falls ich da für Verwirrung sorgte 😀 😀 :DOK, da werde ich mir das Ganze mal zu Gemüte führen 🙂

    • #955072
      Freezing
      Teilnehmer

      Danke für Deine Mühe, das Projekt hier vorzustellen und die Sourcen zu veröffentlichen. Ich bin selbst noch in der Experimentierphase mit meinem Arduino und kann ein, zwei Schnipsel des Source gut gebrauchen.Danke nochmals und schöne Weihnachten!

    • #955075
      G-SezZ
      Teilnehmer

      Ich bin nicht gut im kommentieren, wenn etwas unklar ist, frag einfach.

    • #955089
      Kiro
      Teilnehmer

      Hey 🙂

      Ich nutze Arduino Nightly und bekomme beim Übersetzen/Verifizieren immer eine Fehlermeldung 🙁 🙁

      [SPOILER]

      Arduino: 1.5.6-r2 (Windows 8), Board: “Arduino Uno”

      DeliciousWhiskey.cpp:1:30: error: DeliciousWhiskey.h: No such file or directory
      DeliciousWhiskey.cpp:3: error: ‘Fan’ does not name a type
      DeliciousWhiskey.cpp:5: error: ‘Sensor’ does not name a type
      DeliciousWhiskey.cpp: In function ‘void setup()’:
      DeliciousWhiskey.cpp:8: error: ‘BUTTONPIN’ was not declared in this scope
      DeliciousWhiskey.cpp:8: error: ‘INPUT’ was not declared in this scope
      DeliciousWhiskey.cpp:8: error: ‘pinMode’ was not declared in this scope
      DeliciousWhiskey.cpp:9: error: ‘HIGH’ was not declared in this scope
      DeliciousWhiskey.cpp:9: error: ‘digitalWrite’ was not declared in this scope
      DeliciousWhiskey.cpp:10: error: ‘Serial’ was not declared in this scope
      DeliciousWhiskey.cpp:12: error: ‘digitalRead’ was not declared in this scope
      DeliciousWhiskey.cpp:13: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:14: error: ‘delay’ was not declared in this scope
      DeliciousWhiskey.cpp:19: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:21: error: ‘Fans’ was not declared in this scope
      DeliciousWhiskey.cpp:22: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp: In function ‘void loop()’:
      DeliciousWhiskey.cpp:27: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:28: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:29: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:30: error: ‘UI’ has not been declared
      DeliciousWhiskey.cpp:31: error: ‘BUTTONPIN’ was not declared in this scope
      DeliciousWhiskey.cpp:31: error: ‘digitalRead’ was not declared in this scope
      DeliciousWhiskey.cpp:32: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:34: error: ‘UI’ has not been declared
      DeliciousWhiskey.cpp: At global scope:
      DeliciousWhiskey.cpp:37: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp: In function ‘void AnalogSignalRead()’:
      DeliciousWhiskey.cpp:38: error: ‘uint16_t’ was not declared in this scope
      DeliciousWhiskey.cpp:38: error: expected `;’ before ‘reading’
      DeliciousWhiskey.cpp:39: error: ‘reading’ was not declared in this scope
      DeliciousWhiskey.cpp:39: error: ‘value_12V’ was not declared in this scope
      DeliciousWhiskey.cpp:39: error: ‘map’ was not declared in this scope
      DeliciousWhiskey.cpp:41: error: ‘analoginput’ was not declared in this scope
      DeliciousWhiskey.cpp: At global scope:
      DeliciousWhiskey.cpp:44: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:44: error: variable or field ‘setMode’ declared void
      DeliciousWhiskey.cpp:44: error: ‘uint8_t’ was not declared in this scope
      DeliciousWhiskey.cpp:48: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp: In function ‘void Analog2PWM()’:
      DeliciousWhiskey.cpp:49: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:49: error: ‘analoginput’ was not declared in this scope
      DeliciousWhiskey.cpp: At global scope:
      DeliciousWhiskey.cpp:52: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp: In function ‘void modeSelect()’:
      DeliciousWhiskey.cpp:53: error: ‘mode’ was not declared in this scope
      DeliciousWhiskey.cpp:55: error: ‘regulate’ was not declared in this scope
      DeliciousWhiskey.cpp:61: error: ‘manualPWM’ was not declared in this scope
      DeliciousWhiskey.cpp:63: error: ‘manual’ was not declared in this scope
      DeliciousWhiskey.cpp: At global scope:
      DeliciousWhiskey.cpp:68: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp: In function ‘void regulate()’:
      DeliciousWhiskey.cpp:69: error: ‘int16_t’ was not declared in this scope
      DeliciousWhiskey.cpp:69: error: expected `;’ before ‘deviation’
      DeliciousWhiskey.cpp:70: error: ‘deviation’ was not declared in this scope
      DeliciousWhiskey.cpp:70: error: ‘Sensors’ was not declared in this scope
      DeliciousWhiskey.cpp:70: error: ‘targetTemp’ was not declared in this scope
      DeliciousWhiskey.cpp:71: error: ‘uint8_t’ was not declared in this scope
      DeliciousWhiskey.cpp:71: error: expected `;’ before ‘pwm’
      DeliciousWhiskey.cpp:72: error: ‘pwm’ was not declared in this scope
      DeliciousWhiskey.cpp:73: error: ‘pwm’ was not declared in this scope
      DeliciousWhiskey.cpp:74: error: ‘pwm’ was not declared in this scope
      DeliciousWhiskey.cpp:74: error: ‘map’ was not declared in this scope
      DeliciousWhiskey.cpp:75: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:75: error: ‘pwm’ was not declared in this scope
      DeliciousWhiskey.cpp: At global scope:
      DeliciousWhiskey.cpp:78: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp: In function ‘void manual()’:
      DeliciousWhiskey.cpp:79: error: ‘requestedPWM’ was not declared in this scope
      DeliciousWhiskey.cpp:79: error: ‘manualPWM’ was not declared in this scope
      DeliciousWhiskey.cpp:81: error: ‘Fans’ was not declared in this scope
      DeliciousWhiskey.cpp: At global scope:
      DeliciousWhiskey.cpp:84: error: ‘uint8_t’ does not name a type
      DeliciousWhiskey.cpp:88: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp: In function ‘void runFans()’:
      DeliciousWhiskey.cpp:89: error: ‘fanCount’ was not declared in this scope
      DeliciousWhiskey.cpp:90: error: ‘Fans’ was not declared in this scope
      DeliciousWhiskey.cpp: At global scope:
      DeliciousWhiskey.cpp:94: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:94: error: variable or field ‘setPwm’ declared void
      DeliciousWhiskey.cpp:94: error: ‘uint8_t’ was not declared in this scope
      DeliciousWhiskey.cpp:100: error: ‘Fan’ has not been declared
      DeliciousWhiskey.cpp:100: error: ISO C++ forbids declaration of ‘Fan’ with no type
      DeliciousWhiskey.cpp: In function ‘int Fan(int, int)’:
      DeliciousWhiskey.cpp:101: error: ‘fanNumber’ was not declared in this scope
      DeliciousWhiskey.cpp:101: error: ‘fanCount’ was not declared in this scope
      DeliciousWhiskey.cpp:103: error: invalid use of ‘this’ in non-member function
      DeliciousWhiskey.cpp:104: error: invalid use of ‘this’ in non-member function
      DeliciousWhiskey.cpp:105: error: ‘startPWM’ was not declared in this scope
      DeliciousWhiskey.cpp:106: error: ‘rpm’ was not declared in this scope
      DeliciousWhiskey.cpp:107: error: ‘pwm’ was not declared in this scope
      DeliciousWhiskey.cpp: At global scope:
      DeliciousWhiskey.cpp:110: error: ‘Fan’ is not a class or namespace
      DeliciousWhiskey.cpp: In function ‘void readrpm()’:
      DeliciousWhiskey.cpp:112: error: ‘rpmReadings’ was not declared in this scope
      DeliciousWhiskey.cpp:113: error: ‘pinTacho’ was not declared in this scope
      DeliciousWhiskey.cpp:113: error: ‘LOW’ was not declared in this scope
      DeliciousWhiskey.cpp:113: error: ‘pulseIn’ was not declared in this scope
      DeliciousWhiskey.cpp:114: error: ‘rpmReadings’ was not declared in this scope
      DeliciousWhiskey.cpp:116: error: ‘tachoPulses’ was not declared in this scope
      DeliciousWhiskey.cpp:117: error: ‘rpmReadings’ was not declared in this scope
      DeliciousWhiskey.cpp:119: error: ‘uint16_t’ was not declared in this scope
      DeliciousWhiskey.cpp:119: error: expected `;’ before ‘reading’
      DeliciousWhiskey.cpp:121: error: ‘reading’ was not declared in this scope
      DeliciousWhiskey.cpp:121: error: ‘rpmReadings’ was not declared in this scope
      DeliciousWhiskey.cpp:122: error: ‘rpm’ was not declared in this scope
      DeliciousWhiskey.cpp:122: error: ‘reading’ was not declared in this scope
      DeliciousWhiskey.cpp: At global scope:
      DeliciousWhiskey.cpp:126: error: ‘Fan’ is not a class or namespace
      DeliciousWhiskey.cpp: In function ‘void begin()’:
      DeliciousWhiskey.cpp:127: error: ‘pinPWM’ was not declared in this scope
      DeliciousWhiskey.cpp:127: error: ‘OUTPUT’ was not declared in this scope
      DeliciousWhiskey.cpp:127: error: ‘pinMode’ was not declared in this scope
      DeliciousWhiskey.cpp:128: error: ‘pinTacho’ was not declared in this scope
      DeliciousWhiskey.cpp:128: error: ‘INPUT_PULLUP’ was not declared in this scope
      DeliciousWhiskey.cpp:129: error: ‘startPWM’ was not declared in this scope
      DeliciousWhiskey.cpp:129: error: ‘fanNumber’ was not declared in this scope
      DeliciousWhiskey.cpp:129: error: ‘minPWM’ was not declared in this scope
      DeliciousWhiskey.cpp:129: error: ‘usedFans’ was not declared in this scope
      DeliciousWhiskey.cpp: At global scope:
      DeliciousWhiskey.cpp:133: error: ‘Fan’ is not a class or namespace
      DeliciousWhiskey.cpp: In function ‘void setPwm()’:
      DeliciousWhiskey.cpp:134: error: ‘fanNumber’ was not declared in this scope
      DeliciousWhiskey.cpp:134: error: ‘usedFans’ was not declared in this scope
      DeliciousWhiskey.cpp:135: error: ‘requestedPWM’ was not declared in this scope
      DeliciousWhiskey.cpp:135: error: ‘startPWM’ was not declared in this scope
      DeliciousWhiskey.cpp:136: error: ‘minPWM’ was not declared in this scope
      DeliciousWhiskey.cpp:136: error: ‘pwm’ was not declared in this scope
      DeliciousWhiskey.cpp:137: error: ‘pwm’ was not declared in this scope
      DeliciousWhiskey.cpp:138: error: ‘alwaysOn’ was not declared in this scope
      DeliciousWhiskey.cpp:138: error: ‘pwm’ was not declared in this scope
      DeliciousWhiskey.cpp:138: error: ‘minPWM’ was not declared in this scope
      DeliciousWhiskey.cpp:139: error: ‘pwm’ was not declared in this scope
      DeliciousWhiskey.cpp:140: error: ‘pwm’ was not declared in this scope
      DeliciousWhiskey.cpp: At global scope:
      DeliciousWhiskey.cpp:143: error: ‘Fan’ is not a class or namespace
      DeliciousWhiskey.cpp: In function ‘void runFan()’:
      DeliciousWhiskey.cpp:144: error: ‘pinPWM’ was not declared in this scope
      DeliciousWhiskey.cpp:144: error: ‘pwm’ was not declared in this scope
      DeliciousWhiskey.cpp:144: error: ‘analogWrite’ was not declared in this scope
      DeliciousWhiskey.cpp: At global scope:
      DeliciousWhiskey.cpp:147: error: ‘Sensor’ has not been declared
      DeliciousWhiskey.cpp:147: error: ISO C++ forbids declaration of ‘Sensor’ with no type
      DeliciousWhiskey.cpp: In function ‘int Sensor(int)’:
      DeliciousWhiskey.cpp:148: error: invalid use of ‘this’ in non-member function
      DeliciousWhiskey.cpp:149: error: ‘temp’ was not declared in this scope
      DeliciousWhiskey.cpp:150: error: ‘maxTemp’ was not declared in this scope
      DeliciousWhiskey.cpp: At global scope:
      DeliciousWhiskey.cpp:153: error: ‘Sensor’ is not a class or namespace
      DeliciousWhiskey.cpp: In function ‘void readTemp()’:
      DeliciousWhiskey.cpp:156: error: ‘pin’ was not declared in this scope
      DeliciousWhiskey.cpp:156: error: ‘analogRead’ was not declared in this scope
      DeliciousWhiskey.cpp:158: error: ‘log’ was not declared in this scope
      DeliciousWhiskey.cpp:161: error: ‘temp’ was not declared in this scope
      DeliciousWhiskey.cpp:163: error: ‘checkMaxTemp’ was not declared in this scope
      DeliciousWhiskey.cpp: At global scope:
      DeliciousWhiskey.cpp:166: error: ‘Sensor’ is not a class or namespace
      DeliciousWhiskey.cpp: In function ‘void checkMaxTemp()’:
      DeliciousWhiskey.cpp:167: error: ‘temp’ was not declared in this scope
      DeliciousWhiskey.cpp:167: error: ‘maxTemp’ was not declared in this scope
      DeliciousWhiskey.cpp: At global scope:
      DeliciousWhiskey.cpp:170: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp: In function ‘void reset()’:
      DeliciousWhiskey.cpp:173: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:173: error: ‘MODE’ was not declared in this scope
      DeliciousWhiskey.cpp:174: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:174: error: ‘USEDFANS’ was not declared in this scope
      DeliciousWhiskey.cpp:175: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:175: error: ‘FANMINPWM’ was not declared in this scope
      DeliciousWhiskey.cpp:176: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:176: error: ‘FANSALWAYSON’ was not declared in this scope
      DeliciousWhiskey.cpp:177: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:177: error: ‘FANRPMDIVIDER’ was not declared in this scope
      DeliciousWhiskey.cpp:180: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:180: error: ‘TRGTEMP’ was not declared in this scope
      DeliciousWhiskey.cpp:181: error: ‘uint16_t’ was not declared in this scope
      DeliciousWhiskey.cpp:181: error: expected `;’ before ‘val’
      DeliciousWhiskey.cpp:182: error: ‘val’ was not declared in this scope
      DeliciousWhiskey.cpp:182: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:183: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:185: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:186: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:187: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:188: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:189: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:190: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:190: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:191: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:191: error: ‘MANUAL’ was not declared in this scope
      DeliciousWhiskey.cpp:192: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:193: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp: At global scope:
      DeliciousWhiskey.cpp:197: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:197: error: variable or field ‘write16’ declared void
      DeliciousWhiskey.cpp:197: error: ‘uint8_t’ was not declared in this scope
      DeliciousWhiskey.cpp:197: error: ‘uint16_t’ was not declared in this scope
      DeliciousWhiskey.cpp:203: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:203: error: variable or field ‘write8’ declared void
      DeliciousWhiskey.cpp:203: error: ‘uint8_t’ was not declared in this scope
      DeliciousWhiskey.cpp:203: error: ‘uint8_t’ was not declared in this scope
      DeliciousWhiskey.cpp:208: error: ‘uint8_t’ does not name a type
      DeliciousWhiskey.cpp:212: error: ‘uint16_t’ does not name a type
      DeliciousWhiskey.cpp:219: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp: In function ‘void loadPrefs()’:
      DeliciousWhiskey.cpp:220: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:220: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:221: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:221: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:222: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:222: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:223: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:223: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:224: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:224: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:225: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:225: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:226: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:226: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:227: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:227: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:228: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:228: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp: At global scope:
      DeliciousWhiskey.cpp:231: error: ‘UI’ has not been declared
      DeliciousWhiskey.cpp: In function ‘void report()’:
      DeliciousWhiskey.cpp:233: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:233: error: ‘nextReport’ was not declared in this scope
      DeliciousWhiskey.cpp:233: error: ‘millis’ was not declared in this scope
      DeliciousWhiskey.cpp:234: error: ‘sendLog’ was not declared in this scope
      DeliciousWhiskey.cpp:235: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:236: error: ‘showReport’ was not declared in this scope
      DeliciousWhiskey.cpp:236: error: ‘timeOut’ was not declared in this scope
      DeliciousWhiskey.cpp:238: error: ‘Serial’ was not declared in this scope
      DeliciousWhiskey.cpp:241: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:254: error: ‘Sensors’ was not declared in this scope
      DeliciousWhiskey.cpp:274: error: ‘Fans’ was not declared in this scope
      DeliciousWhiskey.cpp:286: error: ‘Fan’ is not a class or namespace
      DeliciousWhiskey.cpp:290: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp: At global scope:
      DeliciousWhiskey.cpp:298: error: ‘UI’ has not been declared
      DeliciousWhiskey.cpp: In function ‘void printHelp()’:
      DeliciousWhiskey.cpp:299: error: ‘showReport’ was not declared in this scope
      DeliciousWhiskey.cpp:300: error: ‘timeOut’ was not declared in this scope
      DeliciousWhiskey.cpp:300: error: ‘millis’ was not declared in this scope
      DeliciousWhiskey.cpp:301: error: ‘Serial’ was not declared in this scope
      DeliciousWhiskey.cpp: At global scope:
      DeliciousWhiskey.cpp:320: error: ‘UI’ has not been declared
      DeliciousWhiskey.cpp: In function ‘void readSerial()’:
      DeliciousWhiskey.cpp:321: error: ‘Serial’ was not declared in this scope
      DeliciousWhiskey.cpp:322: error: ‘uint16_t’ was not declared in this scope
      DeliciousWhiskey.cpp:322: error: expected `;’ before ‘val’
      DeliciousWhiskey.cpp:323: error: ‘uint8_t’ was not declared in this scope
      DeliciousWhiskey.cpp:323: error: expected `;’ before ‘inByte’
      DeliciousWhiskey.cpp:324: error: ‘inByte’ was not declared in this scope
      DeliciousWhiskey.cpp:326: error: ‘showConfig’ was not declared in this scope
      DeliciousWhiskey.cpp:329: error: ‘val’ was not declared in this scope
      DeliciousWhiskey.cpp:330: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:331: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:335: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:336: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:340: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:341: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:343: error: ‘Fans’ was not declared in this scope
      DeliciousWhiskey.cpp:347: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:348: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:352: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:353: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:355: error: ‘Fans’ was not declared in this scope
      DeliciousWhiskey.cpp:359: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:360: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:363: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:364: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:367: error: ‘showReport’ was not declared in this scope
      DeliciousWhiskey.cpp:371: error: ‘timeOut’ was not declared in this scope
      DeliciousWhiskey.cpp:371: error: ‘millis’ was not declared in this scope
      DeliciousWhiskey.cpp:372: error: ‘pollConfig’ was not declared in this scope
      DeliciousWhiskey.cpp:377: error: ‘pollData’ was not declared in this scope
      DeliciousWhiskey.cpp:381: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:382: error: ‘eeprom’ has not been declared
      DeliciousWhiskey.cpp:384: error: ‘setTime’ was not declared in this scope
      DeliciousWhiskey.cpp:392: error: ‘Serial’ was not declared in this scope
      DeliciousWhiskey.cpp: At global scope:
      DeliciousWhiskey.cpp:397: error: ‘UI’ has not been declared
      DeliciousWhiskey.cpp: In function ‘void showConfig()’:
      DeliciousWhiskey.cpp:398: error: ‘showReport’ was not declared in this scope
      DeliciousWhiskey.cpp:399: error: ‘timeOut’ was not declared in this scope
      DeliciousWhiskey.cpp:399: error: ‘millis’ was not declared in this scope
      DeliciousWhiskey.cpp:400: error: ‘Serial’ was not declared in this scope
      DeliciousWhiskey.cpp:403: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:415: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:418: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:420: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:422: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:425: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:428: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp: At global scope:
      DeliciousWhiskey.cpp:433: error: ‘UI’ has not been declared
      DeliciousWhiskey.cpp: In function ‘void pollConfig()’:
      DeliciousWhiskey.cpp:434: error: ‘uint16_t’ was not declared in this scope
      DeliciousWhiskey.cpp:434: error: expected `;’ before ‘values2send’
      DeliciousWhiskey.cpp:435: error: expected `;’ before ‘checksum’
      DeliciousWhiskey.cpp:437: error: ‘checksum’ was not declared in this scope
      DeliciousWhiskey.cpp:437: error: ‘values2send’ was not declared in this scope
      DeliciousWhiskey.cpp:439: error: ‘values2send’ was not declared in this scope
      DeliciousWhiskey.cpp:439: error: ‘checksum’ was not declared in this scope
      DeliciousWhiskey.cpp:440: error: ‘Serial’ was not declared in this scope
      DeliciousWhiskey.cpp:443: error: ‘send16bit’ was not declared in this scope
      DeliciousWhiskey.cpp: At global scope:
      DeliciousWhiskey.cpp:447: error: ‘UI’ has not been declared
      DeliciousWhiskey.cpp: In function ‘void pollData()’:
      DeliciousWhiskey.cpp:448: error: ‘uint16_t’ was not declared in this scope
      DeliciousWhiskey.cpp:448: error: expected `;’ before ‘values2send’
      DeliciousWhiskey.cpp:449: error: expected `;’ before ‘checksum’
      DeliciousWhiskey.cpp:451: error: ‘values2send’ was not declared in this scope
      DeliciousWhiskey.cpp:451: error: ‘Sensors’ was not declared in this scope
      DeliciousWhiskey.cpp:453: error: ‘Fans’ was not declared in this scope
      DeliciousWhiskey.cpp:456: error: ‘checksum’ was not declared in this scope
      DeliciousWhiskey.cpp:456: error: ‘values2send’ was not declared in this scope
      DeliciousWhiskey.cpp:458: error: ‘values2send’ was not declared in this scope
      DeliciousWhiskey.cpp:458: error: ‘checksum’ was not declared in this scope
      DeliciousWhiskey.cpp:459: error: ‘Serial’ was not declared in this scope
      DeliciousWhiskey.cpp:462: error: ‘send16bit’ was not declared in this scope
      DeliciousWhiskey.cpp: At global scope:
      DeliciousWhiskey.cpp:467: error: ‘UI’ has not been declared
      DeliciousWhiskey.cpp: In function ‘void sendLog()’:
      DeliciousWhiskey.cpp:469: error: ‘Serial’ was not declared in this scope
      DeliciousWhiskey.cpp:469: error: ‘hour’ was not declared in this scope
      DeliciousWhiskey.cpp:471: error: ‘minute’ was not declared in this scope
      DeliciousWhiskey.cpp:473: error: ‘second’ was not declared in this scope
      DeliciousWhiskey.cpp:475: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:477: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp:479: error: ‘Sensors’ was not declared in this scope
      DeliciousWhiskey.cpp:487: error: ‘Fans’ was not declared in this scope
      DeliciousWhiskey.cpp: At global scope:
      DeliciousWhiskey.cpp:497: error: ‘UI’ has not been declared
      DeliciousWhiskey.cpp:497: error: variable or field ‘send16bit’ declared void
      DeliciousWhiskey.cpp:497: error: ‘uint16_t’ was not declared in this scope
      DeliciousWhiskey.cpp:502: error: ‘FanController’ has not been declared
      DeliciousWhiskey.cpp: In function ‘void read()’:
      DeliciousWhiskey.cpp:503: error: ‘millis’ was not declared in this scope
      DeliciousWhiskey.cpp:503: error: ‘nextRead’ was not declared in this scope
      DeliciousWhiskey.cpp:505: error: ‘Sensors’ was not declared in this scope
      DeliciousWhiskey.cpp:506: error: ‘Fans’ was not declared in this scope
      DeliciousWhiskey.cpp:508: error: ‘FanController’ has not been declared

      Dieser Report hätte mehr Informationen mit
      “Ausführliche Ausgabe während der Kompilierung”
      aktiviert in Datei > Einstellungen

      [/SPOILER]

    • #955103
      G-SezZ
      Teilnehmer

      Den Code in der ARduino IDE zu kompilieren finde ich so am einfachsten:-Neues Projekt starten und speichern.-zwei neue Tabs erstellen und so benennen wie die beiden cpp und h Dateien. Und dann den Inhalt der Dateien jeweils dort hinein kopieren. (sollte eigentlich auch klappen wenn man die Dateien nur in den richtigen Ordner legt, aber das will bei mir auch nicht)- in der .ino die includes setzen:#include #include #include #include “DeliciousWhiskey.h”dann sollte es funktionieren.Ich habe die Qellen von 1.5.5r2 benutzt. Die Änderungen von 1.6 habe ich mir noch nicht angesehen.EEPROM und math sollten mit der Arduino IDE kommen. Meine Time lib ist diese hier:https://github.com/PaulStoffregen/TimeEs gibt viele Time libs, die meisten sollten funktionieren. Bspw auch die DateTime aus dem Playground. Ich verwende nur ganz simple Methoden wie setTime() und hour(), die werden von fast jeder lib bereit gestellt.

    • #955292
      Horstelin
      Teilnehmer

      Schicke Sache, allerdings ist die von der Industrie vorgegebene PWM-Frequenz 25kHz. Dass die Arduinos nativ nicht mal ein 1kHz können überrascht mich ehrlich gesagt… 25kHz sollten sich aber durch ein Software PWM mit Interrupts leicht implementieren lassen. LG Urs

    • #955295
      G-SezZ
      Teilnehmer

      Naja, was heißt sie können nur 1kHz. Das ist halt der default prescaler. Man kann ihn auch ändern und somit auf bis zu 32kHz bzw 64kHz kommen:https://arduino-info.wikispaces.com/Arduino-PWM-FrequencyAber da alle von mir getesteten Lüfter auch mit den niedrigen Frequenzen wunderbar funktioniert haben, habe ich mich damit nicht weiter aufgehalten. In den meisten Lüftern wird eh nicht viel mehr stecken als ein Transistor und eventuell ein Filter. Dabei spielt die Frequenz ja keine große Rolle.

    • #955296
      Horstelin
      Teilnehmer

      G-SezZ;526894 said:
      Aber da alle von mir getesteten Lüfter auch mit den niedrigen Frequenzen wunderbar funktioniert haben, habe ich mich damit nicht weiter aufgehalten. In den meisten Lüftern wird eh nicht viel mehr stecken als ein Transistor und eventuell ein Filter. Dabei spielt die Frequenz ja keine große Rolle.

      Ich glaube du unterschätzt die Komplexität der heutigen PC-Lüfter um einiges 😉

      Sieh dir mal die Spezifikationen an:

      http://www.formfactors.org/developer/specs/4_Wire_PWM_Spec.pdf

      In jedem Lüfter steckt ein µC (oder andere aktive Elektronik) der den Motor regelt, ansonsten könnte man die verschiedenen Regelkurven nicht implementieren. Wenn du den Lüfter nun mit 1kHz oder sogar 0.5kHz fütterst, dann sorgt lediglich die Trägheit des Lüfters dafür, dass dieser scheinbar bei konstanter Geschwindigkeit läuft. Der Lüfter interne Controller wird immer zwischen 0 und 100% schwanken, weil er dass Signal 25 mal pro Sekunde öfter abtastet als du ihm Informationen fütterst.
      Dass das funktioniert ist keine Frage, schließlich hat man dass seit Jahren schon so mit 3-Pin Lüftern gemacht. Man ist aber schließlich davon abgekommen weil reines An-aus PWM bei vielen Lüftern hört 😉

    • #955397
      VJoe2max
      Teilnehmer

      Mal ganz unabhängig von den PWM-Frequenzen – ein sehr schönes Projekt, das du da durchgeführt hast :d:.

      Finde es immer wieder interessant, dass es Leute gibt, denen das Programmieren scheinbar wirklich Spaß macht. Bei mir ist das leider nicht so, aber mit so einer schönen Anleitung und einem Programm, was alles Wesentliche schon kann, könnte ich mir durchaus vorstellen, auch mal in die Arduino-Welt hinein zu schnuppern. Hab zwar momentan keinen Verwendungszweck für so eine Steuerung, aber ich hoffe ich denke dran, wenn das mal wieder der Fall sein sollte.

    • #959823
      Freezing
      Teilnehmer

      Hi G-SezZ!Du hattest angeboten, dass man Dich bei noch offenen Fragen einfach ansprechen kann. Also los gehts:1) Nochmals zur PWM-Ansteuerung: Du hast mit der Standardfrequenz des Arduino also keine Probleme mit PWM-Lüftern gehabt? Auch kein Pfeifen im Betrieb? Irgendwo hatte ich mal gelesen, dass wenn man einen Lüfter per PWM mit dem Arduino drosselt, dann kann man oft ein störendes Pfeifen oder Rattern vom Lüfter hören und der Vorschlag war dort, dass man den Timer des Arduino Richtung 25, 32 oder 64 kHz verschiebt. Du siehst weiterhin keine Notwendigkeit dafür?2) Kann man als einfache serielle Testkonsole den “Serieller Monitor” der Arduino-IDE verwenden? Muss da was besonderes noch einstellen (wg. CR/LF)?3) Wenn ich die Lüfter manuell steuern möchte, dann sende ich über die Konsole ein “m3” (für manuellen Modus) und dann noch ein “s50” für 50% PWM-Speed, korrekt? (Das M3 kann man sich jedoch auch schenken, da das der Default ist).Danke und schöne Grüße 🙂

    • #959829
      Freezing
      Teilnehmer

      Danke für die Antwort 🙂

      G-SezZ;531665 said:
      Ich hatte die Lüfter Steuerung als install & forget System gedacht. Hat gut funktioniert, hab alles vergessen und nichts dokumentiert. 😉

      Na, das spricht doch genau für Dein System. Keine Wartung, keine Modifikation nötig. Alles richtig gemacht!

    • #959828
      G-SezZ
      Teilnehmer

      Hi. Ich hatte die Lüfter Steuerung als install & forget System gedacht. Hat gut funktioniert, hab alles vergessen und nichts dokumentiert. ;)1) Ich kann nur für die Lüfter sprechen die ich damals selbst getestet habe.

      (Noctua NF-A140, Thermalright TY150, und irgend ein unbekanntes Scythe Modell)

      Mit denen hatte ich keinerlei Geräusche. Die Noctuas habe ich seitdem in Betrieb, ohne irgendwelche Probleme. Der Arduino arbeitet völlig autark, ohne USB Verbindung. Ich habe selbst die Wassertemperatur nach den ersten Wochen nicht mehr kontrolliert. Grafikkarten und CPU wurden über den Sommer kaum wärmer als im Winter. Der Arduino hat natürlich die Lüfter dazu etwas schneller laufen lassen.2) Der Serielle Monitor der Arduino IDE funktioniert wunderbar, beachte die Baudrate von 115200. CR oder LF sind nicht nötig. Der Arduino sollte direkt anfangen Messdaten zu schicken wenn du die Konsole verbindest.3) m3 müsste korrekt sein. Die Hilfe die auf den Befehl h hin ausgegeben wird sagt zwar m2, da habe ich wohl vergessen den Text zu aktualisieren als ich den Notfallmodus eingebaut habe. s50 ist korrekt.Ich kann es gerade selbst nicht testen, weil ich erst mal den PC zerlegen müsste um ein USB Kabel an den Arduino zu stecken. Hab den hinter der Front versteckt. 😉

    • #959830
      G-SezZ
      Teilnehmer

      Jepp, aber ich musste erst mal im Quelltext nachschauen wie das ganze bedient wird. 😉

    • #959831
      Neron
      Keymaster

      Du kannst den Quelltext ja auch als OpenSource hier veröffentlichen, wenn du das möchtest. 🙂

    • #959833
      Freezing
      Teilnehmer

      Der Source ist doch hier mit dran und eigentlich ganz gut verständlich 🙂

    • #959832
      G-SezZ
      Teilnehmer

      Der hängt doch oben am Ausgangspost. Hab ihn selbst vorhin runter laden müssen, weil ich gerade im Büro bin. 😉

    • #959836
      Sc0rp
      Teilnehmer

      Hallo,

      ich finde dein Projekt auch super – ich werde deinen Code und deinen Aufbau genau studieren.

      Abgesehen von der PWM-Frequenz-Problematik (zu der ich auch schon recht viel in anderen Quellen gelesen hatte) noch eine Frage:

      Warum bindest du nicht digitale Sensoren (ala DS18[B]20) an? Zumindest Einer als Referenzsensor sollte ja kein Problem sein.

      Sc0rp

    • #959837
      Neron
      Keymaster

      G-SezZ;531669 said:
      Der hängt doch oben am Ausgangspost. Hab ihn selbst vorhin runter laden müssen, weil ich gerade im Büro bin. 😉

      Sorry, hab ich in Tapatalk nicht gesehen. 🙂

    • #959841
      Freezing
      Teilnehmer

      Ich hab gerade mal ein bisschen damit rumgespielt (habe es statt auf einem Nano auf einem Uno am Laufen) und mit Deinen Einstellungen ebenfalls kein PWM-Fiepen. Klasse!

Ansicht von 21 Antwort-Themen
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.
 
Zur Werkzeugleiste springen