Moin,
vor einiger Zeit habe ich mit eurer Hilfe versucht die Lüfter-Schaltung der neuen Platine mir selbst aufzubauen. Ich wollte Euch noch einmal eine Rückmeldung dazu geben und so einen Beitrag zum Projekt leisten. Nachdem ich relativ frustriert (von meiner eigenen Inkompetenz

) die ursprüngliche Schaltung nicht zum Laufen bekommen habe, habe ich es noch einmal mit einer einfachen MOSFET-Schaltung mit zwei Widerständen probiert und mit dem RPIO-code von
@Clayburn The Cremator (
http://www.grillsportverein.de/foru...mit-raspberry-pi.181768/page-116#post-1994132) getestet. Auch dabei hatte ich kuz Schwierigkeiten, doch der Fehler war wie so häufig vor dem Rechner/Raspberry zu finden. Der Testcode ist für einen 4-PIN Lüfter und das habe ich ein ganze zeitlang nicht begriffen. Während in dem fandemo.py der "on_off_pin" zu definieren war, glaubte ich dass auf diesem Pin auch das PWM-Signal gegeben würde, so wie ich es für meinen 3-Pin-Lüfter benötige. Dem ist aber nicht so. In der Zusatzdatei "pwmfancontrol", welche Steuerungsfunktionen auslagert, steht nämlich "hartverdrahtet" der eigentliche PWM-Pin. Das ist sicherlich auch der Fehler, warum ich den Lüfter mit der ursprünglichen Schaltung in der Vergangenheit nicht in der Geschwindigkeit steuern konnte.
Mittlerweile habe ich mir die Datein config.php und wlt_2_pitmaster.py so angepasst, dass es einene zusätzlichen pit-type bzw. Modus gibt. So kann ich über die Web-Oberfläche die entsprechende Ansteuerung für die MOSFET-Schaltung via RPIO-Befehle im 25 kHz-Bereich auswählen. Das Ganze läuft jetzt mittlerweile auch (sogar schon mit der neuen PID-Regelung) und ich bin unendlich glücklich, dass ich es endlich geschafft habe. Nochmals ganz herzlichen Dank an alle Entwickler und Supporter!!!! Falls Interesse bestehen sollte, stelle ich meine Änderungen am Code natürlich gern für alle zur Verfügung.
@Joe16 mir ist noch eine Sache in der wlt_2_pitmaster.py aufgefallen. Wenn ich den Code richtig verstanden haben dann wird in Zeile 315 der Version 2.1.0-0 der letzte Sollwert des Lüfters für den nächsten Schleifendurchlauf gespeichert, um dann zu prüfen ob der Lüfter evtl. zunächst mit einer höheren Anlaufgeschwindigkeit initialisiert werden muss:
Code:
if x != pit_val:
...
if last_pit == 0 and pit_new < 25:
...
else:
...
last_pit = pit_val
Dabei sind mir nun zwei Dinge aufgefallen. Zum einen frage ich mich, ob last_pit überhaupt auf 0 gesetzt wird, falls pit_val kleiener als die Mindestgeschwindigkeit des Lüfters ist. Das würde ja Sinn machen, oder? Zum anderen fällt mir auf, dass last_pit lediglich dann aktualisiert wird, wenn x != pit_val ist. Sollte dies nicht aber immer gemacht werden unabhängig von dieser If-Abfrage? Entweder ich verstehe den Code einfach nicht richtig oder dort ist ein tabstop zu viel reingerutscht in Zeile 315.
Beste Grüße,
Moritz