ESPEasy ESP8266 PC PWM-Lüftersteuerung mit MQTT - 4 PIN Fan

Begonnen von martin8310, 07 Dezember 2019, 22:29:34

Vorheriges Thema - Nächstes Thema

martin8310

Hallo Gemeinde,

wollte euch mal mitteilen, dass ab der Version ESPEasy "mega-20191123" endlich die Drehzahlregelung von den 4 Pin PC Lüftern funktioniert. Vorher ging das auch schon, nur leider konnte die Trägerfrequenz nicht verändert werden, so dass deshalb manche Lüfter gepiept haben.

Der Lüfter wird ganz normal an 12V Angeschlossen und das PWM Signal vom ESP8266 Ausgang an den PIN 4 von dem Lüfter. Da der ESP eine Spannung von ca. 3V am GPIO Ausgang liefert und das PWM Signal bis zu 5 V (Low Signal <0,8V / max. high Signal 5,25V) hoch sein darf, ist die Ansteuerung kein Problem.

Danach muss nur noch ein MQTT Befehl an den ESP geschickt werden und alles läuft wunderbar. ESP Easy muss hierfür nicht großartig konfiguriert werden, es sollte nur MQTT aktiviert sein.


PWM,<GPIO>,<duty>,<duration>,<frequency>

Publish:
ESP_Easy_30/cmd
PWM,16,512,0,25000


Im Beispiel wird der GPIO16 angesprochen. Es wird ein Tastverhältnis (duty cycle: 512) von 50% eingestellt, also halbe Lüfterdrehzahl. Der Wert von Duty kann von 0-1023 eingestellt werden. Die Trägerfrequenz beträgt PWM-Lüfterkonforme 25kHz (25000) und es piept nix.

Was ich noch nicht hinbekommen habe, ist die Auswertung des Tachosignals von den PC Lüftern mit ESP Easy, aber vielleicht kann jemand von euch das Geheimnis verrraten ;-)

Papa Romeo

Hallo Martin,

um ein Signal überhaupt auswerten zu können, müsste man zuerst wissen, wie das Tacho-Signal aussieht.
Dann kann man erst darüber eine Aussage treffen, ob ESPEasy oder Tasmota oder sonstige Software von sich aus in der Lage ist
das Signal so zu verarbeiten oder ob es eventuell für die Verarbeitung erst "aufgearbeitet" werden muss.
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

kroman

Ich häng mich hier mal dran, weil ich das gleiche schon mal mit einem RPI gemacht und auch schon überlegt habe, das irgendwann auf einem ESP umzusetzen.

Der hier dürfte mit ESPEasy pulse counter versucht habe, jedoch nicht erfolgreich wie es scheint.

https://www.letscontrolit.com/forum/viewtopic.php?t=4771

Wiki:
https://www.letscontrolit.com/wiki/index.php?title=Pulse_logic_input

martin8310

Zitat von: Papa Romeo am 09 Dezember 2019, 09:54:41
Hallo Martin,

um ein Signal überhaupt auswerten zu können, müsste man zuerst wissen, wie das Tacho-Signal aussieht.
Dann kann man erst darüber eine Aussage treffen, ob ESPEasy oder Tasmota oder sonstige Software von sich aus in der Lage ist
das Signal so zu verarbeiten oder ob es eventuell für die Verarbeitung erst "aufgearbeitet" werden muss.
Hi Papa Romeo,

danke für deinen Kommentar. Da es sich um normale PWM Lüfter für den PC handelt, die jedes PC Motherboard auswerten kann, wird es mit sicherheit eine Spezifikation geben die alle nötigen Informationen beeinhaltet, oder? Ich bin wirklich überrascht, dass es zu dem Thema ESP8266 und PC Lüftersteuerung so wenige informationen gibt. Es gibt doch wahrscheinlich keine billigere alternative als einen ESP8266 dafür zu nutzen, glaube ich zumindest.

Gruß
Martin

Papa Romeo

Ich denke mal, dass die Motherboard´s soweit ausgerüstet sind, das sie mit Rechtecksignalen und mit analogen Sinus-Signalen zurecht kommen.
In der Regel ist das Tacho-Signal eine Sinuswelle die bei steigender Drehzahl in Amplitude und Frequenz zunimmt. Führt man dieses analoge Signal z.B auf einen OP-Amp der als Schmitt-Trigger (im Prinzip ein Verstärker mit sehr hohen Verstärkungs-Faktor) arbeitet erhält man ein Rechtecksignal. Dieses könnte dann mit PulseCount bestimmt verarbeitet werden. Mit der reinen Analogspannung wird das eher nicht so gut funktionieren. Eventuell etwas bei den höheren Drehzahlen.
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

Klaus0815

Aus einem anderen Forum:

ZitatAll the needed infos are published here:

http://www.formfactors.org/developer/specs/REV1_2_Public.pdf

More specifically,

Voltage 12 ± 1.2V
Peak current (@13.2V) 2A

Tachometer section:
Speed reading: 2 pulses per revolution
Open-collector or open-drain type output
Mobo has pullup

PWM frequency: 21-28 kHz, target 25 kHz
logic low: <=0.8V
Imax: 5 mA
Vmax: 5.25V
PWM duty represents the speed output compared to full speed, linear relationship
If PWM is lower than minimum accepted value for that fan, undetermined behavior according to specs

Fan should match PWM control signal ±10%
Rotor lock and polarity protections are expected
Pins: 1, 2, 3, 4 are black, yellow, green, blue and their function is GND, 12V, sense, control

Du brauchst wohl einen Vorteiler
Oder Du wandelst das signal in ein analoges und misst dieses per ESP?
So genau wird es ja nicht sein müssen, sondern eher eine Funktionskontrolle?

Papa Romeo

Die neueren Lüfter dürften den Spezifikationen entsprechen die Klaus eingestellt hat. Diese haben den Schmitt-Trigger schon integriert und stellen dieses Signal meistens über einen Open-Kollektor-Ausgang zu Verfügung, welches dann keine weiteren Anpassungen an Auswerte-Module, die mit anderen Betriebs-Spannungen arbeiten, erforderlich macht.

Das Tacho-Ausgangssignal ist hier z.B. gut zu sehen

https://www.youtube.com/watch?v=xcyuClnTwxE

Auch der Ansatz der begrenzten Sinuswelle mit abnehmender Amplitude bei sehr niederen Drehzahlen ist gut zu sehen.

...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

martin8310

Hallo,

danke für die Antworten. Also ich brauche nur das Tachosignal direkt an den GPIOxx legen und ESPEasy nur richtig einstellen, korrekt? Was ist mit Vorteiler gemeint, das Tachosignal durch 2 teilen? Das kann doch auch ESPEasy, oder? Grüße und Danke
Martin

Klaus0815

Ich weiss nicht wie schnell ESPEASY die Impulse verarbeiten kann  - ist ja eher für Stromzähler usw gedacht
Vom Ventilator kommen ein paar hundert pro Minute

Mit Vorteiler meinte ich was in der Richtung:

http://mschrod.de/elektronetz/Elektronik/Allgemeines/Quarzteiler/Quarzteiler.html

Papa Romeo

#9
Hallo Klaus,

das mit dem Vorteiler verstehe ich jetzt auch nicht ganz. Ich kenne mich mit ESPEasy jetzt nicht so aus, da ich es nicht nutze, aber eine Teilung durch zwei, so denke ich, dürfte bestimmt kein Problem darstellen und mehr ist eigentlich auch nicht nötig um dann die Drehzahl zu erhalten.
Und die Impulszahl geht schon eher an ein paar Tausend pro Minute.
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

Klaus0815

Hier hat einer mal was von max 1000 Hz heraus gefunden:
https://www.letscontrolit.com/forum/viewtopic.php?t=3647

Mich wundert das nicht, der ESPEASY Pulse counter ist auch eher dazu gedacht, S0-Zähler usw abzufragen, da kommen max 2-3 Impulse pro Sekunde

Mit dem Vorteiler würde ich nicht durch 2 Teilen ( Ich vermute Du meinst wegen 2 Impulsen pro Umdrehung?)
Sondern eher z.B. durch 1024 oder noch mehr
ESPEasy ist vermutlich für diese Aufgabe hier viel zu langsam

Papa Romeo

..ach so, jetzt verstehe ich dich. Du hast Bedenken wegen der Verarbeitungsgeschwindigkeit der Software.

Ich ging von der Hardware aus. Für die dürfte es kein Problem sein.

Bis zu welcher Frequenz ESPEasy Daten verarbeitet, kann ich leider nicht mitreden. Wie schon erwähnt, ich nutze es nicht.
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

Papa Romeo

...hier hat einer was mit ESPEasy gebastelt:

https://www.letscontrolit.com/forum/viewtopic.php?t=3476

...die Auflösung scheint aber nicht besonders zu sein...
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary

martin8310

Hallo,

so ich bin jetzt ein bisschen weiter gekommen. Das Tachosignal muss auf 12V (über ein 10 kOhm Widerstand) gezogen werden. Des weiteren sollte das Tachosignal an dem Eingang vom ESP8266 über einen Spannungsteiler angeschlossen werden (10 kOhm + 10kOhm). Auf dem Oszilloskop sieht das super aus, nur ESPEasy kann leider nicht die Signale Zählen/Auswerten/ oder etwas damit anfangen. Ich denke, da müssen wir noch ein bisschen auf ESPEasy warten ;-)

Gruß und Dank an euch!
Martin

Papa Romeo

Hallo Martin,

mit 10 und 10 kOhm hast du aber immer noch 4 Volt am ESP liegen.
Besser wären 15 und 10 kOhm (ca. 3.4 Volt) oder 18 und 10 kOhm( knapp 3.2 Volt).
Weitere Möglichkeit ohne Spannungsteiler. Den internen Pullup des GPIO´s aktivieren
und eine Diode in Sperrrichtung vom GPIO des ESP´s zum Tachosignal.
(Anode an GPIO, Tachosignal an Kathode)
In der Regel kannst du dir dann sogar auch noch den 10 kOhm Pullup an die 12 Volt sparen.

LG

Papa Romeo
...die richtige Lötspitzentemperatur prüft man zwischen Daumen und Zeigefinger.
...überlasse niemals etwas einer Software, das du hardwaremässig erreichen kannst.
...unvorsichtige Elektriker werden schnell zu leitenden Angestellten.
und...never change a running System...no Updates if not necessary