- Leiton         
Ergebnis 1 bis 8 von 8

Thema: Lüfter PWM ruhig laufen

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    06.03.2011
    Beiträge
    23

    Lüfter PWM ruhig laufen

    Anzeige

    Praxistest und DIY Projekte
    Hallo

    ich habe das Problem das ich einen Lüfter per PWM, bei langsameren Drehzahlen ruhig laufen lassen will.

    Hier die Fakten:
    - Arduino Due
    - IRF 3708 MOSFET, N-CH -> https://www.reichelt.de/mosfet-n-ch-...08-p90229.html
    - Widerstand 5kΩ zu Absicherung auf GND
    - SUN EEC0251B2-0 -> https://www.reichelt.de/axialluefter...0-p260581.html
    ---Spannung DC 12 V=
    ---Leistung 3,85 W
    ---Strom 0,321 A
    ---Drehzahl 2700 U/min

    Klicke auf die Grafik für eine größere Ansicht

Name:	1.jpg
Hits:	11
Größe:	14,9 KB
ID:	35439

    Also der Lüfter läuft. Zu erst habe ich es ganz klassisch per
    Code:
    pinMode(Luefter1_Pin, OUTPUT);
    analogWrite(Luefter1_Pin, Luefter1_Val);
    versucht. Auch an einem PWM Pin (D5) mit erhöhter Auflösung
    Code:
    analogWriteResolution(12);
    pinMode(Luefter1_Pin, OUTPUT);
    analogWrite(Luefter1_Pin, Luefter1_Val);
    nur Summt und Fiebt der Lüfter bei niedrigeren Drehzahlen. (Eigentlich schon ab ~75-60%)

    Bei meiner Suche nach eine Lösung habe ich Hinweise gefunden, das es sich hier wohl ein Problem mit der PWM Frequenz handelt.
    Ich weiß auch das ich die Frequenz für "analogWrite" ändern kann, nur ändern sich damit auch die Timings z.B. für "mills()" und das brauche ich später auch noch.

    Als Lösung habe ich eine spezial Library gefunden.
    https://github.com/antodom/pwm_lib
    Das ist eine PWM Library für den Arduino Due. (Daher auch der etwas exotische Pin 35) So kann ich direkt das Hardware PWM Signal des AT91SAM3X8E anzapfen.

    Mit der Library kann man PWM_PERIOD und PWM_DUTY in "hundredths of microseconds" einstellen, beide Werte sind als uint32_t definiert. Also Werte von 0 bis 4294967295.

    Ich finde jetzt nur keine guten Werte um den Lüfter langsam und ruhig laufen zu lassen.

    Ich weiß das ich da ein Problem (Unwissen) über PWM habe. Ich habe mir ein Grundwissen angelesen, mir fehlen aber die Fachkenntnisse zum irgendwelche Berechnungen anzustellen.

    Könnte mir da jemand helfen mit welchen Werten ich da spielen könnte oder hat sonst einen Tipp?

    Schon mal herzlichen Danke!!!

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    52
    Beiträge
    1.794
    Schreib dir doch einfach ein Testprogramm, was den gesamten Wertebereich mit unterschiedlichen Settings mal in ner Schleife durchspielt.
    Die jeweiligen Werte lässt du dir ausgeben, z.B. auf die serielle Schnittstelle....

    Etliche Lüfter (andere Motoren auch) laufen bei zu niedrigen Werten nicht an, das erzeugt dann brummen, fiepen oder pfeifen- da hilft die Kickstart-Methode: mit Vollgas starten und dann runter regeln.

    Im übrigen: die Sunon-Lüfter sind beliebt wegen der Leistung, aber nicht wegen dem Geräuschpegel.
    Wenn es dir auf die Lautstärke ankommt, nimm lieber nen Noiseblocker.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    06.03.2011
    Beiträge
    23
    Ja so was hatte ich mir auch schon überlegt. Nur das so ein Programm ziemlich lange laufen würde, selbst wenn ich die Schrittweite recht hoch einstelle.
    4294967295 hundredths of microseconds, also 4294967295 Nanosekunde ns sind immerhin 4.29497 Sekunden, dann kommt noch hinzu das es immer etwas dauert bis die Werte ausgeführt werden (ich vermute das ein Update des Registers erst nach einem vollen Durchlauf ausgeführt wird), dazu kommt noch die Trägheit des Lüfters.
    Habe mir ein Programm geschrieben, mit dem ich mit zwei Schiebereglern die Periode und Duty einstellen kann und per Serial an den Arduino sende. Trotzdem bekomme ich auf keine "schöne" Werte.
    Bei allem was ich mir überlegt habe muss ich für alle Schritte sowohl die Periode als auch das Duty einstellen.

    Habe mich schon durch diverse PDFs über den AT91SAM3X8E gewühlt aber der Chip ist lange nicht so "gut" oder besser "einfach Dokumentiert" wie die anderen Arduinos.

    Und zum Lüfter an sich. Ja ich weiß das das nicht das leiseste Model ist aber das geht klar. Will nur kein nerviges Fiepen oder Brummen. (Habe es auch schon geschafft den Lüfter quasi "Springen" lassen = völlig falsche Werte)

    Dachte nur das ich nicht der erste sein kann der vor so einem Problem steht und auch wenn ich was lernen will, muss ich ja nicht jedes Mal das Rad neu erfinden.

  4. #4
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.308
    .. Problem das ich einen Lüfter per PWM, bei langsameren Drehzahlen ruhig laufen lassen will .. wohl ein Problem mit der PWM Frequenz ..
    Simpler Rat: rauf mit der Drehzahl. Leider keine Lösung zu Deiner arduino-Lösung.

    Meine Thermosteuerung mit tiny84 treibt (nur) einen 80mmx80mm-Lüfter (Zweidrahtanschluss!!) in (m)einem Labornetzteil. Dabei hatte ich wenig überrascht festgestellt, dass ich den ruhigsten Lauf bei ner recht hohen PWM-Frequenz erreiche; auch das Oszilloskopbild sieht dabei gut aus. Nu läuft das Ding (oder auch nicht) mit ner PWM-Frequenz 37,5 kHz. ABER eben nicht arduino sondern ne selbst gelötete Lochrasterplatine mit nem tiny85 ohne Quarz, nem A4950 Motortreiber, nem Buzzer für Startton und Warnton bei oberer Temperaturgrenze. Und eben auch nicht arduino-IDE sondern einfaches C. Egal - ich fand die hohe Frequenz gut, auch bei dem kleinen Motor (meiner hat ca. 120 mA) noch ok. Wie erwähnt stufig - meist ist das Netzteil kaum hörbar weils meist ohne Lüfter dreht und wenn dann mit niedriger Drehzahl. Selbst der mittlere Drehzahlbereich ist noch ziemlich leise. Nachteil: das Netzteil ist nun fast durchwegs an . . . :-/

    Code:
    //      Neu ab 16. Feb. 2020
    //      Temperaturstufen, ADC (A8main) und PWM-%
    //      Temp  <  31°            A8main < ADCmin                 PWM =   0 %
    //      32° C .. 36° C          ADCmin < A8main <= ADClow       PWM =  10 % (9,8)
    //      36° C .. 68° C          ADClow < A8main <= ADCmax       PWM =  20 % - 40 %
    //      Temp  >  68° C          ADCmax < A8main                 PWM = 100 % (+Pieps)
    Ciao sagt der JoeamBerg

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    06.03.2011
    Beiträge
    23
    Hallo

    also nach etwas nachdenken und einer Nacht rumprobieren habe ich folgende Werte durch Versuch und Irrtum ermittelt.
    Ich schreibe das damit andere, die das selbe Problem haben ein paar Werte an der Hand haben.

    Also zu erst mal. Das ändern der Periode und des Dutys klappt besser wenn man zu erst ein Stopp ausführt.
    Code:
    pwm_pin35.stop();
    pwm_pin35.start(period, duty);
    Also so, anstatt eines einzigen
    Code:
    pwm_pin35.set_period_and_duty(period, duty);
    Damit entfällt zwar der Rückgabewert von >>set_period_and_duty<< aber das ist, glaube ich, eh nur eine Überprüfung ob Periode und Duty das richtige Datenformat hat und die Periode größer als Duty ist.

    Prozent Periode Duty Bemerkung
    100 5 5
    90 429501 386551
    80 429501 343601
    70 858997 601297
    60 858997 515397
    50 1288493 644248
    40 2147485 858997
    30 2576981 773095
    20 858997 171797 summt leise
    10 858997 85897 summt leise
    0 pwm_pin35.stop();

    Wie schon gesagt, habe die Werte durch Versuch und Irrtum ermittelt, daher sind sie bestimmt nicht optimal und jemand mit mehr Technischen und Mathematischen Wissen, stehen bestimmt die Haare zu berge. Der mag es mir aber gerne erklären

    Einer der Punkte, bei denen ich bestimmt etwas übersehe ist der Wert Duty auf die PWM Library. Auf Wiki und bei anderen Seiten ist Duty, in Zusammenhang mit PWM, als Tastgrad definiert. Also die Prozent des Verhältnis der Impulsdauer zur Periodendauer, was aber bei der LIB nicht so ist. Soweit ich das verstehe beschreibt Duty die Zeit/Dauer des Impulses und nicht die Prozente.
    Wie gesagt, wenn ich mich irre belehrt mich eines besseren und erklärst es mir.

    Wenn jemand meinen Lösungsweg interessiert.
    Ich habe ein kleines Desktop Programm geschrieben das den Max Wert (4294967295) in 10% Schritten bis 0 verkleinert und als Periode verwendet.
    Zu jeder Periode, habe ich als Baum, in negativen 10% Schritten den Duty Wert hinzugefügt. (Periode als Startwert)
    (Periode : Duty)

    4294967295

    |
    |-4294967295:4294967295 - 100%
    |-4294967295:3865470565 - 80%
    |-4294967295:3435973836 - 70%
    |-4294967295:3006477106 - 60%
    ....
    und wo weiter.

    Die Werte habe ich zum Arduino geschickt, auf dem ein Simpler Script läuft der die Werte von der Seriellen Schnittstelle einließt und sie ausführt, mit einer kurzen Rückmeldung zur Sicherheit.

    Auf meinem PC, hat mich dann mein Programm gefragt, wie der Lüfter läuft und die guten Werte gespeichert. Um Zeit zu sparen habe ich nicht weiter nach schon guten Werten gefragt, also z.B. für 100%. Das ist bestimmt kein perfekter Weg aber so hatte ich wenigstens mal ne Vorstellung von dem was ich tue.

    Alles unter 30% wird wohl nicht zu gebrauchen sein aber für mein Projekt sollte das reichen. Eine abschließende Einschätzung kann ich eh erst geben wenn alles für das Gehäuse angekommen ist, ich es zusammengebaut habe und sehe wie es mit dem Lüfter interagiert.

    So ich hoffe irgendjemanden da draußen helfen meiner Werte später mal oder es schreibt jemand was besseres.
    Grüße und so...
    Magier

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von 021aet04
    Registriert seit
    17.01.2005
    Ort
    Niklasdorf
    Alter
    33
    Beiträge
    4.976
    Was du auch machen kannst ist eine Art Schaltwandler zu bauen.

    https://www.roboternetz.de/community...uchentwicklung
    Bei Post 9 habe ich eine Skizze gepostet, eventuell noch mit anderen Bauteilen (z.b. schottkydiode), aber vom Prinzip sollte es so besser sein.

    Mfg Hannes

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Moppi
    Registriert seit
    18.03.2018
    Beiträge
    2.418
    Blog-Einträge
    26
    Wenn es nicht unbedingt PWM sein muss, kann man auch mit einem LM317 und einem MCP 4151-103E/P eine variable Spannungsquelle hinbekommen, die sich per µC einstellen lässt.


    MfG

  8. #8
    Diese Lüfter enthalten eine Regelelektronik für den Brushless Motor - mögen also nicht dauernd ein/ausgeschaltet werden. Bei mir läuft ein Sunon 1,1W/24V von Reichelt perfekt mit einem 22uF parallel zu den Anschlussklemmen.
    Mfg Erich

Ähnliche Themen

  1. Gefälschte Lüfter
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 02.08.2012, 00:30
  2. Lüfter runterregeln
    Von stephezapo im Forum Elektronik
    Antworten: 11
    Letzter Beitrag: 11.06.2011, 23:24
  3. 3 Pin PC lüfter
    Von Naturp im Forum Elektronik
    Antworten: 11
    Letzter Beitrag: 04.05.2011, 01:09
  4. Lüfter Verlustleistung
    Von Dreamer001 im Forum Elektronik
    Antworten: 22
    Letzter Beitrag: 07.11.2007, 20:11
  5. pc-lüfter-sensor
    Von Goblin im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 26.01.2005, 18:41

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •