PWM Lüftersteuerung über crontab (in Python?)

  • Hallo zusammen,

    ich versuche mich gerade an einer Lüftersteuerung für einen Pi 3B+.

    Aktuell läuft das Ganze über ein Bash Skript, das minütlich über crontab aufgerufen wird. Hierbei ist es mir jedoch nicht möglich ab einem Temperaturschwellwert etwas anderes als an/aus vorzugeben. Da der Lüfter bei voller Last etwas laut ist bin ich nicht so ganz zufrieden. Ich würde gern per PWM die Drehzahl abhängig von der Temperatur vorgeben.


    Prinzipiell müsste das ja mit mit RPi.GPIO Paket gehen. Ist es möglich den PWM Ausgang nach Beendigung des Programms weiterlaufen zulassen, indem man x.stop() und GPIO.cleanup() weglässt, bzw. diese dann erst bei Unterschreiten einer bestimmten Temperatur setzt? Meine Idee wäre das dann auch wieder über crontab minütlich durchlaufen zu lassen. Oder habt ihr eine elegantere Lösung?

    Besten Dank schon einmal!

  • Moinsen,

    Schaue mal in die Anleitung von GPIOZERO unter dem Kapitel: "17.1.3. CPUTemperature" nach.
    Damit kannst du sehr einfach über eine Mapping Routine deine PWM Lüftersteuerung bewerkstelligen. Der Aufruf wäre dann nur einmalig mit dem Systemstart, das Programm läuft als Endlosschleife in Hintergrund. Zudem kannst du mit den Verweilzeiten sleep aus der Bibliothek time den Abfrageintervall entsprechend anpassen. Das sind nur wenige Programmzeilen Python-Code.


    hier mal ein Funktionsbeispiel dazu:


    Franky

    Franky

    Edited once, last by Franky07: Quellcode ergänzt ().

  • Hallo RapberryJan,


    meiner Meinung nach ist Dein Konzept fragwürdig ("broken design").


    Ein Lüfter-Programm (so es denn wirklich notwendig sein sollte), sollte kontinuierlich laufen und nicht minütlich gestartet werden müssen.


    Ein Lüfter-Programm sollte auch nicht nach überschreiten einer vorgegebenen Temperatur "volle Pulle" den Ventilator einschalten und nach Unterschreiten einer (vielleicht sogar identischen) Temperatur komplett ausschalten.


    Normalerweise sollte eine Temperatursteuerung eine Hysterese beinhalten. Das bedeutet, dass Du zwei Temperaturgrenzen definierst: T1 < T2.

    In einer Endlosschleife misst Du in regelmässigen Abständen die Temperatur T.

    Gilt T > T2 dann wird der PWM-Wert erhöht (z.B. um den Wert 5). Ab einem bestimmten Schwellwert beginnt der Ventilator zu drehen. Ab einem PWM-Wert setzt ein Kühleffekt ein (nicht sofort bei der geringsten Drehung).


    Irgendwann ist T < T2. Da passiert gar nichts. PWM-Wert bleibt unverändert. Das Teil kühlt weiter.


    Irgendwann ist T < T1. Hier verringerst Du den PWM-Wert. Das Teil kühlt schwächer. Irgendwann bleibt der Ventilator stehen.


    Die Temperatur steigt wieder.

    Irgendwann ist T > T1. Auch hier passiert nichts.


    Irgendwann ist wieder T > T2. Siehe oben.


    Der Bereich T1 < T < T2 ist der sog. Hysterese-Bereich.


    Wenn Du das in dieser Form umgesetzt haben solltest, dann wirst Du einen bemerkenswerten Effekt beobachten:

    In Abhängigkeit der Differenz von T1 und T2 sowie dem PWM-Inkrement pegelt sich diese Temperatursteuerung auf einen mittleren PWM-Bereich ein und verbleibt auf einer Temperatur von annähernd exakt (T1 + T2)/2.


    Ich habe eine solche Steuerung auf einem NVIDIA Jetson Nano programmiert. T1 = 36 °C, T2 = 38 °C. Bei normaler Umgebungstemperatur ist T nach wenigen Hysterese-Schleifen bei 37 °C mit minimalen Schwankungen angekommen. Und verbleibt dort...


    Die eigentliche Temperatur-Abfrage inkl. Regelung ist in einer einzigen Zeile programmiert.



    Beste Grüsse


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Prinzipiell müsste das ja mit mit RPi.GPIO Paket gehen. Ist es möglich den PWM Ausgang nach Beendigung des Programms weiterlaufen zulassen, indem man x.stop() und GPIO.cleanup() weglässt, bzw. diese dann erst bei Unterschreiten einer bestimmten Temperatur setzt? Meine Idee wäre das dann auch wieder über crontab minütlich durchlaufen zu lassen. Oder habt ihr eine elegantere Lösung?

    Es gibt die Möglichkeit eine Timer Unit statt Crontab zu nutzen.

    Du könntest auch mittels Service Unit ein Programm autostarten, wenn der Pi eingeschaltet wird.


    Das cleanup() macht GpioZero von selbst das brauchst du dort nicht mit angeben.


    ein Beispiel wie das aussehen könnte:

    Ungetestet.


    PWMOutputDevice

    CPUTemperatur


    Ich weiß jetzt nicht welche Frequenzen für PWM verfügbar sind. Da müsstest du mal schauen.

    Edited 2 times, last by keepfear ().

  • Moinsen keepfear,

    Das ist irgendwie totaler Unsinn was in deinem Codeschnipsel steht.




    Die frequency gibt nur den PWM Bereich an und damit die mögliche Streckung oder Auflösung die mit der PWM Reglung erzielt werden kann.
    Der eigentliche Wert als % Wert oder Wert zwischen 0 und 100 der für die Reglung relevant ist wird über den Parameter value beschrieben.

    Egal was ich mache, weil ich es aufgebaut habe. Wenn ich den value auf 0.5 setze , macht es keinen Unterschied welche Frequenz ich in frequency mit der Definierung angebe. Die Lüfterdrehzahl bleibt die gleiche. Schaut man in das Objekt der CPU-Temperatur ist diese entweder über temperature oder über value als % Wert der Definition CPUTemperature(min_temp = CPU_min, max_temp = CPU_max) auszulesen.



    Will man das über einen LED Balken auswerten nach Doku der Programmcode so aus



    Franky

    Franky

  • Franky07

    Danke.

    Hab ich übersehen und geändert.


    Bei dem anderen bin ich mir nicht ganz sicher ob das PWMOutputDevice mittels source an die CPU gekoppelt werden kann.

    Hast du die Möglichkeit das zu testen?


    Sprich:

  • Normalerweise sollte eine Temperatursteuerung eine Hysterese beinhalten. Das bedeutet, dass Du zwei Temperaturgrenzen definierst: T1 < T2.

    In einer Endlosschleife misst Du in regelmässigen Abständen die Temperatur T.

    Gilt T > T2 dann wird der PWM-Wert erhöht (z.B. um den Wert 5). Ab einem bestimmten Schwellwert beginnt der Ventilator zu drehen. Ab einem PWM-Wert setzt ein Kühleffekt ein (nicht sofort bei der geringsten Drehung).


    Er will aber eine flexible Drehzahl, so wie es z.B. jedes moderne Mainboard anbietet.

    Dort kann man sogar Kurven für die Ansteuerung vorgeben.

    Eine Hysterese ist nicht notwendig, da die Drehzahl des Lüfters über die gemessene Temperatur berechnet wird.


    Die Hysteresen sind z.B. notwendig, wenn Lüfter Ein-/Ausgeschaltet werden. Ohne Hysterese kann es passieren, dass der Lüfter ständig Ein-/Ausgeschaltet wird, was nicht gut für die Lebensdauer des Lüfters ist und nervig ist es auch.


    Franky07 hat ja bereits ein Beispiel gepostet, bei dem einfach linear normalisiert und dann skaliert wird. Er hat sogar bedacht, dass Lüfter eine Mindestdrehzahl benötigen, damit sie überhaupt anlaufen. Da könnte man ggf. noch die Überlegung machen, ob eine Hysterese genutzt wird, um den Lüfter abzuschalten oder auf Mindestdrehzahl laufen zu lassen. Wenn es nicht stört, dass der Lüfter permanent mit mindestens 30 % läuft, braucht man nichts ändern.

  • Moinsen,

    Hast du die Möglichkeit das zu testen?

    Da dein Code keine Bereichsdefinition für das values welches als Generator fungiert angegeben ist, passiert natürlich gar nichts. Siehe:

    CPU_temp = CPUTemperature(min_temp = CPU_min, max_temp = CPU_max)


    Zudem würde sich die Streckung über fan.source nur dann wirklich nutzen lassen, wenn das Anlaufmoment des Lüfters bei value = 0.01 beginnen würde. Aus meinen bisherigen Erfahrungen mit verschiedenen 5 Volt Lüftern, die gepusht betrieben werden, sind hier value-Werte von 0.22 bis sogar 0.35 notwendig.
    Ausgehend vom Grundverhalten, würde bei einem Temperaturbereich 50-90°C der Lüfter erst bei knapp 68 Grad anspringen ... Wohl eher unvorteilhaft.
    Selbstverständlich könnte man auch die Funktionen von GPIOZERO nutzen und die Device Sources wie gpiozero.tools.quantized nutzen, aber wirklich schneller wird das Programm damit auch nicht. Im Gegenteil, mit geringerer PWM Grund-Frequenz beginnt hier ein immer größerer werdender Hystereseeffekt zu wirken. Das Programm welches ich in #2 beigefügt habe läuft bei mir nun schon fast ein Jahr auf einem Board, welches ich als NAS und Printserver mißbrauche. Deswegen besteht auch die Möglichkeit mehrere Value-Werte als LIST zu mappen, damit man mehrere Lüfter an verschiedenen Stellen und einem Gehäuse innerhalb einer Routine durchrechnen kann.

    Franky

    Franky

  • Ich würde gern per PWM die Drehzahl abhängig von der Temperatur vorgeben.

    Kann der Lüfter PWM? Einen normalen Lüfter (ohne Treiber) würde ich jedenfalls nicht dafür verwenden und gleich garnicht über die GPIO versorgen.


    Da ich nicht weiß (oder es übersehen habe) was das für ein Lüfter ist, gehe ich hier vom schlimmsten aus. Da wäre Anlaufstrom wegen drosselung durch PWM zu hoch >> GPIO (oder RPi) tot >> Strom reicht nicht zum drehen des Lüfters >> Bude abgefackelt und Du tot. :shy: Ok, um die Versicherung müsstest Du Dir dann keine Gedanken mehr machen. :fies:


    Ansonsten könnte evtl. das hier für Dich interessant sein: Hofei's aktive PWM Kühllösung für den Raspberry Pi 4

  • Moinsen,

    Um hyle Befürchtungen mal etwas zu zerstreuen, noch folgendes:
    Eigentlich sollte klar sein, daß man keinen E-Motor ohne Schutzmaßnahmen direkt an an einen GPIO Pin hängt.

    Auch reichten manchmal die 3,3 Volt dann doch nicht aus, um einen 5,0 Volt Lüfter auch wirklich zum Anlaufen zu bringen. Daher sollte man diese nicht nur mit 5,0 Volt betreiben, sondern um den GPIO zu schützen, auch noch eine Verstärkerstufe eingesetzt werden.


    Deswegen habe ich mal meine Schaltung, die ich schon länger verwende, nun auch auf eine zum Nachbau geeignet Platine mit allen Beschriftungen ergänzt.


    Diese Schaltung verfügt über eine einfache Spannungskontrolle, einen Eingangsschutz des GPIOs aus einer Sperrdiode (Schottky-Diode), die einen Rückfluß in Richtung GPIO unterbindet, einer Z-Diode die eine zurückschlagende Spannung durch den Treibertransistor, hier ein N-Chanel-MOSFET, wirksam auf 3,3 V begrenzt. Ungekühlt (2N7000 OSEMI) kann diese Schaltung bei 80% PWM Leistung dauerhaft (24/7), bei 100% PWM Leistung und einem Lüfter-Verbrauchsstrom bis 200mA noch einige Stunden (ca.6 h) betrieben werden. Lüfter bis 160 mA können auch in Dauerbetrieb (24/7) bei Vollast betreiben werden.
    Voraussetzung das entweder das PI selber diese 5 Volt bereitstellen kann, oder es muß dafür eine gesonderte Spannungsquelle bereitgestellt werden.

    Schaltplan:



    Layout:



    Fritzing PCB:
    Luefter.zip


    Bauteiliste:
    1x Stiftleiste 5-Pin 2,54mm Raster

    1x Z-Diode TZMC3V3

    1x Schottky-Diode BAT41

    1x Diode 1A

    je 1x Widerstand SMD 1206 1,15kOhm, 47kOhm, 21kOhm

    1x N-Chanel-MOSFET 2N7000 / 2N7002

    1x LED SMD1206 Grün


    Vielleicht finden sich hier auch mehrere Interessenten zusammen, um die Einzelkosten pro Platine nochmals zu reduzieren. Je nach Anbieter kostet dieses Platinchen und Abnahmemenge zwischen 2,65 € und nur noch 0,47 € (50 Stück pro Auftrag).

    ps915 / hyle wäre es möglich, daß man hier auch *.fzz Dateien / Fritzing Layout hier hochladen und einbinden könnte ? Diese jetzt extra noch einmal in eine ZIP zu packen, damit man diese einem Posting anhängen kann finde ich ein klein wenig umständlich ?

    Franky

    Franky

  • Hier ist ja einiges passiert, danke für eure ganzen Kommentare!


    Franky07

    Ich habe deinen Code aus dem zweiten Beitrag direkt mal getestet und der Lüfter gibt etwas seltsame Pfeifgeräusche von sich.. Musste die Mindestdrehzahl etwas hochschrauben das er anläuft. Aber wie gesagt, egal was ich dort einstelle, ich bekomme immer ein recht unangenehmes Pfeifen zu hören, Funktion wäre ansonsten scheinbar gegeben...


    hyle & Franky07

    Ich habe eine relativ ähnliche Schaltung aufgebaut wie Franky, wenn auch auf eine einfache Lochplatine. Habe einen IRLZ44N Mosfet benutzt mit 220 Ohm vor dem GPIO-Pin und einer Sperrdiode über dem Lüfter (also bei dir D3). D1 und D2 hab ich nicht. 10 kOhm Pulldown hab ich noch am GPIO. Betrieben wird der Lüfter dann über den 5 V Pin vom Raspberry. Lüfter ist auf 5 V ausgelegt (https://www.ebay.de/itm/195294…3D%7Ctkp%3ABk9SR_Km95fWYA)


    Meint ihr das Pfeifen liegt daran, dass der Lüfter nicht für PWM geeignet ist?

  • Hallo RaspberryJan,

    Meint ihr das Pfeifen liegt daran, dass der Lüfter nicht für PWM geeignet ist?

    So isses.


    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    • Icon-Tutorials (IDE: Geany) - GPIO-Library - µController-Programmierung in Icon! - ser. Devices - kein Support per PM / Konversation

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Moinsen,

    Das Pfeifen kommt daher das der Schaltvorwiderstand zu klein ist. Ein MOSFET benötigt nur wenige µA !
    Du kannst hier, ich kenne deinen Typen nicht näher, ruhig auf über 10 kOhm gehen.
    Dann kommt der PullDown nicht an den GPIO, sondern hinter den Vorwiderstand. Oder läßt ihn ganz weg ;)
    Ich gehe mal davon aus, das es ein Lüfter ist der nur einen 2 Pin Anschluß hat !?
    ggf Kannst du auch an der PWM Frequenz etwas spielen, bis 50_000 sind möglich. Zu editieren in Zeile 28.


    Franky

    Franky

  • Du kannst hier, ich kenne deinen Typen nicht näher, ruhig auf über 10 kOhm gehen.
    Dann kommt der PullDown nicht an den GPIO, sondern hinter den Vorwiderstand. Oder läßt ihn ganz weg ;)

    Alles klar, werd 220 auf 10k tauschen

    Ich gehe mal davon aus, das es ein Lüfter ist der nur einen 2 Pin Anschluß hat !?

    Ja, genau richtig

  • ggf Kannst du auch an der PWM Frequenz etwas spielen, bis 50_000 sind möglich. Zu editieren in Zeile 28.

    Ich hab gerade noch mal mit diesem Tipp gespielt. Bzw. es versucht. Ich verstehe hier die Angabe gar nicht. Was bedeutet 1_500, bzw. 50_000, also der "_"? In der Doku steht nur das der default Wert 100 ist?!

  • Moinsen,

    Für deinen Lüfter mit 220 mA Last reicht ein IRLML2244 oder ein 2N7002 vollkommen aus ;) Das sind TO92 oder SOT-23 Typen...

    Man schießt nicht mit solchen Monstern auf solche Lüfter Spatzen ;)

    Das ist die besser lesbare Schreibweise in Python für die tausender Trennung ;)

    1_500 = 1.500 = 1500

    usw.

    Franky

    Franky

  • Hallo RaspberryJan,

    So isses.


    Andreas

    Woher willst du das wissen? Steht das im Datenblatt des Lüfters?


    Die hässlichen Geräusche sind die Oberwellen, erzeugt durch die Rechteckspannung.

    Die Induktivität glättet die Rechteckspannung, aber bei einer zu niedrigen Frequenz reicht das nicht aus (Motor stottert z.B. bei 10 Hz).

    Standardmäßig wird 50 Hz verwendet, falls man RPi.GPIO verwendet.

    Da gpiozero RPi.GPIO als Backend verwendet, wird auch dort Standardmäßig 50Hz die Voreinstellung sein.



    Setze unterschiedliche Frequenzen über 50 Hz und mach den Hörtest.

    Hier ist ein ganzer Artikel zu dem Thema: https://drucktipps3d.de/pulsweitenmodulation-und-luefter/

    Fazit: Eine PWM-Frequenz von 500 Hz ist der beste Kompromiss. Zumindest für den Lüfter, den der Autor getestet hat.


    Hier noch was über PWM:

    External Content www.youtube.com
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.


    PS: 50 kHz sind viel zu viel und kontraproduktiv. Also nicht denken, dass eine höhere Frequenz automatisch bessere Ergebnisse bringt. Das kann sich sogar negativ auf den Stromverbrauch auswirken.

  • Hallo,


    zu dem Code aus #2, gibt es noch ein paar Anmerkungen.

    Kommentare sollten dem Leser einen Mehrwer vermitteln. Zu kommentieren was da schon als Code steht macht wenig Sinn und Kommentare zu verwenden um Namen von Konstanten zu erklären ist auch meistens überflüssige Schreibarbeit. Üblicherweise vermitteln Kommentare nicht was der Code macht, sondern warum er das macht. (Wenn das nicht offensichtlich ist.

    Konstanten schreibt man GANZ_GROSS, Klassen in PascalCase-Schreibweise und den Rest klein_mit_unterstrich. Funktionen und Merhoden sollten dabei ihre Tätigkeit beschreiben.

    Es gehört kein ausführbarer Code auf die Modulebene. Ausnahme ist der Einstiegspunkt in die 'main'-Funktion. Aus ihr wird das Programm gesteuert, sprich Funktionen aufgerufen, Argumente übergeben und Rückgaben entgegen genommen.

    'assert' wird verwendet um Programme/Funktionen wärend der Programmierung zu testen und zu überprüfen oder bei Änderungen Fehler zu finden. Wenn ein Programm fertig ist, dann muss 'assert' immer 'True' zurück geben, ansonsten ist ein Programmierfehler vorhanden. Es ist nicht dazu gedacht um Benutereingaben zu kontrollieren und dass ist meiner Meinung nach das, was damit gemacht wird. Den Konstanten schreibt man zu Beginn des Programms, da sie sich im Programmablauf nicht ändern und da man sie schnell anpassen kann. Von daher sehe ich das ähnlich wie Benutzereingaben.

    Funktionen definiert man eher nicht in anderen Funktionen. Das ist kann auch recht unübersichtlich werden.

    'value' kann keine verschiedene Typen gleichzeitig besitzen, daher bietet sich anselle des zweiten 'if' ein 'elif' an und 'else' kannst du weglassen, denn wenn nichts angegeben wird, wird automatisch 'None' zurück gegeben, wie bei einem "leeren" 'return' auch.

    Ich verstehe die Typen-Abfrage nicht, 'CPUTemperature.temperature' gibt einen Wert vom Typ 'float' zurück, siehe hier.

    Zwischenstand, ungetestet:

    Die TODO's muss man noch abarbeiten, wenn man sich um die Typen und Wertebereiche sorgen macht. Wäre es mein Code, würde ich dass alles mit den Werten und Typen vermutlich sein lassen.


    Sorry, dass das nicht ganz zum Thema passt, aber wenn jemand darauf aufbauen will, dann finde ich es so persönlich strukturierter und verständlicher.


    Grüße

    Dennis

    Das Leben ist kein Ponyhof, es ist ne Pferdebraterei! 🎧

  • Hm. Habe noch weiter mit den Frequenzen gespielt, aber wirklich gebessert hat sich da nichts.


    Habe dann den 220 Ohm gegen 10kOhm getauscht und auch den Mosfet einmal getauscht. Jetzt läuft der Lüfter leider gar nicht mehr an. Selbst wenn ich den GPIO einfach durchschalte, der Lüfter also 5 V bekommt. Er macht recht leisere "klick-Geräusche" oder so ähnlich und ab und zu sieht man das er gern will. Hab ihm etwas Schwung gegeben und dann läuft er bei 5 V recht langsam.


    Tja. Ggf hat Andreas Recht und der Lüfter macht es einfach nicht? Mit den 220 Ohm lief der Lüfter an 5 V einwandfrei..

    Die Schaltung orientiert sich ansonsten übrigens an diesem Video:

    External Content www.youtube.com
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.


    Sollte Andreas richtig liegen: Habt ihr einen Tipp für einen 5 V Lüfter der PWM besser kann? Bohrbild sollte gleich sein, also 50 mm x 50 mm Lüfter

  • Moinsen,

    Dennis89 Ich habe die Funktion Mapping nur schnell dort reinkopiert, weil ich einfach zu faul war, auch noch die Bibliothek, wo ich für mich eine ganze Ansammlung solcher Funktionen gesammelt habe, und für verschiedenste Anwendungen nutze hier noch als zweites Code-Listung einzufügen. Das hätte dann wohl für noch mehr Verwirrung gesorgt. :angel:

    DeaD_EyE ich verstehe jetzt zwar nicht die Ausführung zum PWM Pfeifen. Bei mir läuft der Code mit 1500 oder 1_500 Hz Grundfrequenz und ich kann keinerlei Pfeifen wahrnehmen. Sicherlich als Erklärung ja, aber wenn bei 1500 Hz ein Pfeifen auftritt, dann liegt es wohl eher an der Tatsache das die Schaltleitung bestimmt über die Konstante PWM_Min nicht ausreicht den Anlaufpunkt zu überwinden. Oder der Wert ist hier in dem Falle und für diesen Lüfter noch in einem Bereich, wo das Anlaufmoment noch nicht vollständig überwunden wurde. Man kann ja je nach Lüfter mit diesen Zahlenwerten einmal im Trockenen herumspielen, bevor man diese Werte dann in das eigentliche Steuer- oder Regelprogramm übernimmt. ;)
    Ich denke mal rein aus Erfahrungswerten, daß der TO mit dem 10K direkt am GPIO und vor der Schutzdiode und dem 220R Vorwiderstand einen Source Durchbruch herbeigeführt hat, und der FET nicht mehr sauber arbeitet.
    Dazu müßte an mal das FET-Opfer in einen Komponenten-Tester stecken und mit den Grundwerten laut Datasheet vergleichen.
    Da ich auch nicht abschätzen kann welche Gleichrichterdiode er als Blockdiode für den GPIO Schutz verwendet hat, kann die Steuerspannung in Verbindung mit dem Pulldown und den viel zu klein dimensionierten Vorwiderstand den FET durchgejockt haben. Alles Mutmaßungen ja, aber eine andere Erklärung hätte ich jetzt trotz den Codes mit 1500 Hz erst einmal nicht.

    Vielleicht kann der TO uns mal mit seinen neusten Erkenntnissen der Modifikation seiner Beschaltung beglücken ;):danke_ATDE:

    Franky

    PS: Einen verpolt angeschlossenen Lüfte wollt eich jetzt erst einmal noch nicht als mögliche Ursache benennen wollen

    Franky