Wie eine durch PWM generierte Rechtecksspannung glätten?

Hallo Community,

ich bin schon ne Weile mit meinem Arduino unterwegs. Ich hab eigentlich auch nie Probleme mit der Programierung, das klappt prima. Nur die Elektronik macht mir immer ein paar Probleme.

Folgender Versuch:

Ich hab einen IRLIZ44N, einen N-Kanal-Mosfet, und mit dem Würde ich gerne eine Spannung Regeln.
Ans Gate hab ich einen PWM Ausgang des Arduinos angeschlossen. Restlicher Aufbau ist eigentlich recht simpel:

5V Arduino + --> Verbraucher (12V PC Lüfter) --> Mosfet --> Ground Arduino

Mit 255 PWM bekomm ich saubere 5V am Lüfter raus. Der Lüfter läuft einwandfrei.

Sobald ich den PWM Wert aber verändere, gibt der Lüfter weniger schöne elektronische Geräusche von sich.

Außerdem lese ich am Arduino die Drehzahl des Lüfters ab. Das funktioniert nur bei 255 PWM. Ansonsten werden die Werte utopisch hoch.

Ich gehe davon aus, das der Lüfter die Rechtecksspannung nicht verträgt.

Also das Problem:

Wie glätte ich diese Rechtecksspannung so, dass der Lüfter damit klar kommt?

Ich hab versucht Kondensatoren zwischen 1 und 100µF parallel zum Lüfter zu schalten. Komischerweise steigt dadurch aber die am Lüfter anliegende Spannung so stark, dass er fast immer die vollen 5V bekommt, auch wenn ich den PWM Wert auf unter 100 gestellt habe. Ohne Kondensator liegt der Wert da sonst so um die 2V. Leider funktioniert der Drehzahlsensor trotz Kondensators nicht.

Ich hab ein wenig was über RC Glieder, Tief und Hochpassfilter gelesen, aber wirklich schlau bin ich nicht daraus geworden.

Ich bin kein Elektroniker, ich bin nur experimentierfreudig. Stellt bitte keine zu großen Erwartungen an meine Kentnisse, wenn ihr Antwortet. Danke.

hast du eine Freilaufdiode parallel zum Lüfter?

Und: was für ein Lüfter ist das denn?

Nope. Hab ich nicht.

Gerade mal gegooglet. Also zerschiess ich mir den Mosfet, wenn ich das ohne Freilaufdiode mache?

Ich hab GE und SI Dioden in meinem Bastelkasten. Sind die dafür einsetzbar?

Edit: Ist ein Scythe SY1225SL12L 12V 0.1A Lüfter.

Kann es sein, dass du hier einige schwerwiegende Fehler gemacht hast?
Zum einen darfst du keine Lasten am Ardunino betrieben. Das weglassen der Freilaufdiode schade nicht dem Lüfter, sondern ganz erheblich deinen Arduino.

Hat dein Lüfter einen PWM Anschluss?

Kann es sein, dass du hier einige schwerwiegende Fehler gemacht hast?
Zum einen darfst du keine Lasten am Ardunino betrieben. Das weglassen der Freilaufdiode schade nicht dem Lüfter, sondern ganz erheblich deinen Arduino.

Hat dein Lüfter einen PWM Anschluss?

Danke. Du hast mir genau NULL weitergeholfen. Vielen Dank.

JoBo:
Gerade mal gegooglet. Also zerschiess ich mir den Mosfet, wenn ich das ohne Freilaufdiode mache?

Nein, tutst du nicht. Der Fet hält das aus, da passiert nix.

JoBo:
Ich hab GE und SI Dioden in meinem Bastelkasten. Sind die dafür einsetzbar?

Germanium-Dioden??? Kann es sein, dass dein Bastelkasten schon etwas älter ist? :wink: Wenn, dann eher die Silizium Dioden.

Kurz zur Erklärung: Dein Problem hat eigentlich nichts mit der Glättung von Spannung zu tun, weil den Lüftermotor vor allem der Strom interessiert.

Die Geräusche, die du hörst, stammen von der 490Hz bzw 980Hz PWM-Frequenz des Arduino. Die regt die Wicklung des Motors zum Schwingen an, quasi wie ein Lautsprecher.
Wenn du über die PWM die Spannung am Lüfter einschaltest, dann fängt Strom an zu fließen.
Wenn du wieder ausschaltest, dann möchte der Strom gerne weiterflließen. Hier hilft die Freilaufdiode: durch die kann der Strom bei abgeschaltetem Fet weiterfließen, und fällt dadurch nicht so schnell ab. Es wird leiser. (und du sparst Energie)
Wenn dich das Geräusch immer noch stört, dann mußt du die PWM-frequenz des Arduino ändern.

Die Drehzahl liest du über das Tachosignal?
Dadurch, dass du den Lüfter fest an 12V hängen hast, und die Masse schaltest, wirst du dir wahrscheinlich auch das Tachosignal versauen. Aber suche ich nochmal.

Stefan hat natürlich recht: einen Lüfter sollte man nicht über die 5V des Arduino versorgen...

Aber nochmal zu deinem Tachosignal: ich denke das wird nicht funktionieren.
Leider habe ich zu deinem Lüfter keine Datenblatt gefunden, aber da das Tachosignal üblicherweise über einen Hall-Sensor erzeugt wird, der ja auch eine Versorgungspannung braucht, wir das bei PWM-Betrieb immer nur Mist erzeugen.

Die Alternative wäre, wirklich eine geregelte Gleichspannung zu erzeugen, die über den Arduino gestellt werden kann, aber das ist aufwändiger. Brauchst du denn das Tachosignal?

Eine andere Alternative wäre, gleich einen Lüfter mit PWM-Ansteuerung zu nehmen. (die haben 4 Pins)

Mal kurz zum Tachosignal, das ist ein Open Collector. Du musst also das Signal zusätzlich mit einem Pullup-Widerstand gegen 5V schalten. Bei jeder Umdrehung wird das Signal dann zweimal auf Masse gezogen, wenn du jedoch Masse schaltest, kannst du eigentlich gar keinen Flankenwechsel sehen. Wenn dabei die Werte unrealistisch hoch werden, stimmt vermutlich was an der Schaltung nicht.

Danke für die sehr ausführliche Antwort!

Das meiste ist aus so nem Kosmos Elektronik Kasten von meinem kleinen Bruder, der hat den aber nie benutzt. Ist nicht mehr der jüngste, bzw. ist Kosmos wahrscheinlich auch nicht sehr aktuell :smiley:

Hab eine Diode parallel zum Lüfter geschaltet. Das scheint sich aber nicht auf das Geräusch auszuwirken. Habs auch während des Betriebs ein und aus gesteckt und verglichen. Aber kein Unterschied wahrzunehmen. Drin bleiben tut sie trotzdem.

Ja das Tachosignal wird (sehr wahrscheinlich) von einem Hall-Sensor im Lüfter ausgelesen. Ist ein Stinknormaler 3Pin Lüfter.
Das Signal lese ich am Pin 2 (edit: Pin2 des Arduinos) ein (zusätzlich über einen 15k Widerstand mit 5V vom Arduino verbunden). Mit Hilfe von Interrupts lass ich zählen wie oft pro Sekunde und rechne dann auf Minuten hoch.

Der Lüfter hängt der einfachheit halber derzeit nicht an 12V sondern an den 5V des Arduinos. Wie gesagt, ich will im Moment nur experimentieren und das schien mir vorerst das einfachste zu sein.

Lüfter mit PWM fällt für mich flach. Ich möchte wirklich eine saubere Spannung erzeugen und regeln. Ich dachte eigentlich das es auf diese Art oder so ähnlich möglich sein müsste. Mein Multimeter zeigt auch an, dass die Spannung geregelt wird. Es zeigt nur nicht an das es ständig zwischen 0 und 5V springt. Und das ist wohl der springende Punkt.
Ich hatte gehofft es wäre möglich das durch einen Kondensator so träge zu machen, dass es sich effektiv in der Mitte einpendelt.

Du hast geschrieben es sei ein Problem, dass ich an der Masse schalte. Würde es in dem Fall etwas nutzen wenn ich am Pluspol schalte?

Danke nochmal, dass du dir so viel Zeit nimmst.

JoBo:
Hab eine Diode parallel zum Lüfter geschaltet. Das scheint sich aber nicht auf das Geräusch auszuwirken. Habs auch während des Betriebs ein und aus gesteckt und verglichen. Aber kein Unterschied wahrzunehmen. Drin bleiben tut sie trotzdem.

Das kann nicht sein. Wenn du PWM fährst muß eine Diode zumindest Auswirkungen auf die Drehzahl haben. Sichtbar und hörbar.
Wenn sich gar nichts ändert ist sie vielleicht kaputt?

JoBo:
Ja das Tachosignal wird (sehr wahrscheinlich) von einem Hall-Sensor im Lüfter ausgelesen. Ist ein Stinknormaler 3Pin Lüfter.
Das Signal lese ich am Pin 2 (edit: Pin2 des Arduinos) ein (zusätzlich über einen 15k Widerstand mit 5V vom Arduino verbunden). Mit Hilfe von Interrupts lass ich zählen wie oft pro Sekunde und rechne dann auf Minuten hoch.

Wie gesagt, dann zählst du dir deine PWM-Pulse mit.

JoBo:
Lüfter mit PWM fällt für mich flach. Ich möchte wirklich eine saubere Spannung erzeugen und regeln.

Kernfrage: Willst du eine Gleichspannung die du mit dem Arduino steuern kannst, und nimmst den Lüfter nur zum experimentieren, oder willst du einen Lüfter regeln? Das sind zwei verschieden Dinge.

JoBo:
Ich dachte eigentlich das es auf diese Art oder so ähnlich möglich sein müsste. Mein Multimeter zeigt auch an, dass die Spannung geregelt wird. Es zeigt nur nicht an das es ständig zwischen 0 und 5V springt. Und das ist wohl der springende Punkt.

Das kann dein Mulitmeter nicht anzeigen, weil es 490 mal pro sekunde passiert. Und wenn es da anzeigen könnte, dann könntest du es nicht lesen. :slight_smile:

JoBo:
Du hast geschrieben es sei ein Problem, dass ich an der Masse schalte. Würde es in dem Fall etwas nutzen wenn ich am Pluspol schalte?

nein, das hilft wohl nicht.

Kernfrage: Willst du eine Gleichspannung die du mit dem Arduino steuern kannst, und nimmst den Lüfter nur zum experimentieren, oder willst du einen Lüfter regeln? Das sind zwei verschieden Dinge.

Ich würde gerne einen oder mehrere Lüfter regeln, indem ich ihm eine gleichspannung servier, mit der auch der Hallsensor und die evtl. restliche Elektronik (z.B. Blockier- / Wiederanlaufschutz) klar kommen.

Das wird dann schwieriger werden.
Eine echte Gleichspannung, die vom µC aus steuerbar ist, ist aufwändig.
man könnte: einen DAC nehmen, und mit dem einen herkömmlichen Spannungsregler steuern.
oder über ein R2R Netzwerk und einem Spannungsregler arbeiten.
oder über PWM und RC-Glied eine Steuerspannung erzeugen, die dann über OPs verstärkt wird.
vielleicht gibt es ja Spannungsregler mit digitalen Schnittstellen? (ja, gibt es: Products | Analog Devices

Oder, du nimmst vielleicht doch Lüfter mit integrierter PWM-Steuerung?
Man müßte genaueres über dein Projekt wissen, um hier sinnvolle Aussagen treffen zu können.

Also, ich hab mal noch ne andere Diode getestet, das Geräusch bleibt gleich.
Wenn ich aber zusätzlich noch nen 100µF parallel dazuschalte dann verschwindet das Geräusch und auch der Tacho funktioniert.

Nur Leider liegen dann statt 3.7V nun 4.7V an.

Update: Auch mit 10µF verschwindet das Geräusch fast komplett. Aber der Tacho funktioniert nicht mehr xD

JoBo:
Nur Leider liegen dann statt 3.7V nun 4.7V an.

Während der FET schaltet, kann genug Strom fließen, damit der Elko geladen wird. Er gibt während der PWM-Pausen seine Energie wieder ab. Er glättet deine Spannung nahe dem Maximalwert. Du müsstest mit Hilfe einer passenden Induktivität (Spule) den Strom begrenzen.

Ganz ehrlich verstehe ich nicht, was gegen einen 4pol-Lüfter spricht. Er hängt an 12V. GND+PWM-Anschluss werden mit dem Arduino verbunden. Schon kannst du völlig stressfrei ohne FET deinen Lüfter regeln.

Hallo,

ihr redet doch sicherlich bei der Diode von einer Freilaufdiode. Dann müßt Ihr ihm auch sagen das er diese in Sperrrichtung einbauen muß.

Du kannst mal versuchen die PWM Frequenz zu erhöhen:
http://playground.arduino.cc/Main/TimerPWMCheatsheet

Dazu muss man nur die Prescaler Einstellung des entsprechenden Timers verändern. Und besser einen Pin verwenden der nicht durch Timer0 gesteuert wird, da sonst die Zeiten von millis() und delay() nicht mehr passen.