Probleme mit PWM Lüfter

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Ich habe mir einen PWM 12V Lüfter (4-Draht) zugelegt.

    Nach meinem Verständnis kann ich den direkt über GPIO ansteuern. Mit 12V beschalten läuft der Lüfter los, ich bekomme ich aber nicht gebremst/ aus. Meine Idee war, eine 12V Lüfter über PWM an und auszuschalten und nur nachrangig zu regeln.

    Dummerweise kommt ich gerade nicht a.d. Code ran, aber ich habe auf 25000 Hz gesetzt und weder mit start(0), stop() oder ChangeDutyCycle(50) kann ich etwas bewirken.

    Als nächstes werde ich eine LED parallel schalten und versuchen die Lüftergeschwindigkeit zu lesen. Aber vielleicht hat ja jemand so schon eine Idee?!

  • Hey road-movie

    Das Thema habe ich gestern bearbeitet.

    Versuchs mal mit pigpio

    Hier der Code:

    PHP: PWM-fan
    import pigpio
    
    pwm_fan = 13    # Pin
    freq = 25000    # Frequenz 25 Mhz
    dutycycle = 40  # Speed in %
    
    pi = pigpio.pi()
    pi.hardware_PWM(pwm_fan, freq, dutycycle * 10000)
    pi.stop()

    Über einen :thumbup: freue ich mich;)

  • Ein Datenblatt des Lüfters finde ich nicht. Es ist ein Arctic P12 PWM: https://www.arctic.ac/de_de/p12-pwm-pst.html

    Meines Erachtens sind die 4-pin PWM Lüfter Standard: https://folk.uio.no/kyrrens/divers…V1_2_Public.pdf

    Nach meinem Verständnis hat der Lüfter einen Transistor eingebaut und ich kann ihn direkt beschalten.

    Jetzt habe ich folgendes Experiment gemacht: Pin 1/2 an 12V angeschlossen und Pin 4 (control) offen gelassen: Der Lüfter läuft. Control an Masse: der Lüfter bleibt stehen.

    Jetzt habe ich Fan Control an GPIO 17 angeschlossen und den auf Low gesetzt. Der Code ging vorher mal mit einer LED. Der Lüfter geht nicht aus, als wäre nichts passiert. Ich habe 5mal nachgezählt, es ist der richtige Pin (ich habe auch mal 11 probiert).

    Ich vermute, dass es an meinem Elektronikunverständnis liegt, aber ich verstehe nicht, warum Fan Control auf Masse den Lüfter abschaltet aber nicht GPIO auf LOW?!

    Code
    import RPi.GPIO as GPIO
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(17, GPIO.OUT)
    GPIO.output(17, GPIO.LOW)

    i2c: Danke für Deinen Code, ich denke der obige Test ist fundamentaler zur Fehlersuche.

    Any ideas?

  • Also der 1. Pin ist GND der verbindest du mit GND von deinem Raspberry PI und dem GND deiner 12 V Spannungsquelle. Der 2 Pin verbindest du mit 12V von deiner Spannungsquelle.

    Der 3 Pin kannst du weglassen und der 4 Pin verbindest du direkt mit dem Raspberry PI GPIO 17, wie DU sagtest: wenn du den 4 Pin mit GND verbindest, dann dreht er sich nicht.

    Wenn du den 4 Pin mit 3.3V verbindest, dann dreht er mit 100% Speed.

    So nun, wenn ich deinen Code anschaue, sehe ich nirgends das du den Pin 17 auf High (3.3V) setzt. Eventuell hat es mit der LED funktioniert, da der Pin 17 noch nicht klar definiert wurde und nicht auf LOW (0V) gezogen wurde somit könnte es sein das der Pin 17 irgendwo bei 1V rumhängt.

    Über einen :thumbup: freue ich mich;)

    Einmal editiert, zuletzt von i2c (23. Juli 2019 um 11:35)

  • Danke für die Ausführung, aber ich kann nicht ganz folgen.

    Der Lüfter dreht sich immer mit max-Speed. Mit GPIO (egal wie programmiert) und wenn der Pin frei ist. Ich vermute, der Lüfter hat intern einen Pullup auf 5V?! Nur wenn ich händisch mit dem Kabel auf GND gehe, geht der Lüfter aus.

    Mein Programm setzt definiert definiert 0. Mein Ziel ist ja, dass der Lüfter bei Bedarf aus geht (die Geschwindigkeit zur Regeln ist nur nice to have). Ich verstehe nur nicht, warum der Lüfter das nicht registriert?!

  • Wo kannst du nicht folgen?

    Die beschriebene Verkabelung oder Code?:helpnew:

    Ich vermute, der Lüfter hat intern einen Pullup auf 5V?!

    Also bei mir funktioniert das Projekt mit PWM Lüfter problemlos mit 3,3V (be quiet! SilentWings 3 PWM)

    Ich kann mir nicht vorstellen, dass es da X verschiedene Spezifikationen gibt für die PWM Lüfter ...

    Ich sehe das Problem an deinem Code:denker:

    Code
    import RPi.GPIO as GPIO
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(17, GPIO.OUT)
    GPIO.output(17, GPIO.LOW)

    Über einen :thumbup: freue ich mich;)

  • Ah cool, Du beschaltest Deinen PWM Lüfter direkt per GPIO?


    Siehst Du etwas an meinem Code, was den Lüfter nicht ausschalten sollte? Ein Punkt ist, dass GND für den Lüfter vom separatem 12V Netzeil kommt. Sollte ich GND von Raspi und GND des 12V Netzteils verbinden?

    Ich kann Deiner Argumentation nicht folgen, was den Code betrifft. Die Beschaltung ansonsten ist für den Lüfter klar (12V und GND vom Netzteil), denn der Lüfter läuft ja. Und Fan Control an GPIO.

    Am Ende wird es (hoffentlich) ein peinlicher Fehler meinerseits sein.

  • Ein Punkt ist, dass GND für den Lüfter vom separatem 12V Netzeil kommt. Sollte ich GND von Raspi und GND des 12V Netzteils verbinden?

    Entweder verwendest Du einen Optokoppler, damit wären deine beiden Stromkreise galvanisch voneinander getrennt, oder du verbindest die beiden GND's vom RPi und Netzteil. Anders funktioniert es nicht, ein Stromkreis muß immer geschlossen sein und Spannung braucht einen Bezugspunkt. Es muß aber ausgeschlossen werden, dass von deinem Lüfter keine höhere Spannung als 3,3V direkt an die GPIO's gelangen kann, sonst steigt evtl. Rauch auf und dein RPi erleidet einen Schaden.

    Einmal editiert, zuletzt von Fliegenhals (23. Juli 2019 um 11:35)

  • Genau;)

    Pin 1 GND vom Lüfter zu GND vom Raspberry PI und zum GND vom 12 V Netzteil

    Pin 2 +12V vom Lüfter zu deinem 12V Netzteil

    Pin 3 Tach vom Lüfter kannst du leer lassen

    Pin 4 PWM vom Lüfter direkt an Raspberry PI GPIO 17

    Ja. Sorry ich muss auch noch ein wenig üben Hilfeleistungen zu geben:)

    Eigentlich sollte wie bei deinem Code und der richtige Verdrahtung der Lüfter stehen bleiben. Also so wie, wenn du den Pin 4 vom Lüfter auf GND steckst von Hand. Wenn du nun von Hand den Pin 4 vom Lüfter auf die 3,3V steckst vom Raspberry PI, dann soll er mit Max-Speed drehen. Geht das soweit?

    Wenn das soweit geht, dann sollte das auch mit deinem Programm funktionieren (GPIO17)

    im jetzigen Programm würde der Lüfter einfach stehen bleiben da du im Programm sagst LOW (0V) wenn du im Programm HIGH (3,3V) setzt, dann sollte der Lüfter Drehen.

    Hier ein Code wo der Lüfter 10 Sek eingeschalten wird und nach 10 Sek wieder ausgeschaltet wird. Das in einer Schlaufe.

    Python
    import RPi.GPIO as GPIO
    import time
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(17, GPIO.OUT)
    
    while True:
        GPIO.output(17, GPIO.HIGH) # Pin einschalten (3,3 V)
         time.sleep(10)
         GPIO.output(17, GPIO.LOW) # Pin ausschalten (0 V)
         time.sleep(10)

    Über einen :thumbup: freue ich mich;)

  • So, das war es! :) Ich habe die beiden Massen verbunden und alles ist gut. Der Tipp war von einem Freund, der genau weiß, dass meiner Elektrotechnik nicht zu trauen ist. :) Das gemeinsame Potential ist mir absolut klar, nur beim Basteln hatte ich nicht daran gedacht (weil ich auch noch nie elektronisch gebastelt habe).

  • Ich habe die beiden Massen verbunden und alles ist gut. Der Tipp war von einem Freund,

    :-/:no_sad:


    oder du verbindest die beiden GND's vom RPi und Netzteil. Anders funktioniert es nicht, ein Stromkreis muß immer geschlossen sein und Spannung braucht einen Bezugspunkt.

    Also der 1. Pin ist GND der verbindest du mit GND von deinem Raspberry PI und dem GND deiner 12 V Spannungsquelle. Der 2 Pin verbindest du mit 12V von deiner Spannungsquelle.

    Ähh sorry aber der Hinweis wurde dir hier schon 2x gegeben.

  • :-/:no_sad:


    Ähh sorry aber der Hinweis wurde dir hier schon 2x gegeben.

    Völlig richtig: i2c hat es in #7 genau so beschrieben, ich hatte es nur überlesen - weil ich eben überhaupt nicht i.d.R. gedacht habe. Vor #10 hat mich der Freund dann direkt gefragt, ob ich ein gemeinsames Potential habe und dann ist auch bei mir der Groschen (langsam) gefallen.

    Ich danke Euch für Eure Beteiligung! Da kommen bestimmt noch mehr Fragen :)

    Ich denke, ich gehe vom 12V Lüfter auf einen 5V Lüfter, dann spare ich mir das mit den zwei Netzteilen.

  • Ich denke, ich gehe vom 12V Lüfter auf einen 5V Lüfter, dann spare ich mir das mit den zwei Netzteilen.

    Das mit zwei Netzteilen ist doof:|

    Ich verwende ein Step-Up Modul, um aus 5V die 12V zu erzeugen, so kann ich den Lüfter + Raspberry PI unterwegs einfach mit einer Powerbank betreiben. Oder du nimmst ein Step-Down Modul, um aus 12V die 5V für den Raspberry Pi zu erzeugen.

    Über einen :thumbup: freue ich mich;)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!