PC Lüfter steuern

Hallo,

ich möchte gerne einen oder zwei PC Gehäuselüfter (3/4-Pin) mittels einem Arduino Uno steuern. Wie realisiere ich das?
Ich habe gelesen die benötigten 12V eines Lüfters nicht vom Arduino zu nehmen, sondern von einem externen Netzteil. Ist das richtig?
Mit einem der PWM Pins (3,5,6,9,10,11) kann ich dann den Lüfter in der Geschwindigkeit steuern. Ist das richtig?

Meine Probleme:

  • Welches Netzteil?
  • Wie schließe ich den Lüfter an? Ein Kabel ist immer +, ein anderes ist -. Das dritte ist die PWM Steuerung. Kann ich also einfach + und - mit einer Netzteil verbinden, und das PWM mit einem Pin am Board?
  • Die meisten Lüfter verlangen 25kHz, der Atmel hat allerdings über 400kHz. Was genau ist das und wie kann ich es runterregeln?

Wie ihr seht bin ich noch nicht so erfahren, möchte aber dennoch die Lüfter regeln können.
MfG Banana

Viele falsche Annahmen dabei, die soltle man erst einmal ausräumen:

BananaCrafting:
Ich habe gelesen die benötigten 12V eines Lüfters nicht vom Arduino zu nehmen, sondern von einem externen Netzteil. Ist das richtig?

Der Arduino arbeitet mit 5V, da gibt es keine 12V. Man könnte allerdings ein 12V-Netzeil anschließen, um am Vin-Pin diese Netzteilspannung abzugreifen. Das hat aber zwei Nachteile: zum einen müsste der Festspannungsregler die Spannungsdifferenz von 7V förmlich verbrennen, zum anderen würde ich der dünnen Leiterbahn zum Vin-Pin nicht allzuviel zutrauen.

BananaCrafting:

  • Wie schließe ich den Lüfter an? Ein Kabel ist immer +, ein anderes ist -. Das dritte ist die PWM Steuerung. Kann ich also einfach + und - mit einer Netzteil verbinden, und das PWM mit einem Pin am Board?

Das dritte Kabel ist ein Open-Collector-Signal für die Drehzahl, also ein Ausgang. Bei solchen Lüftermodellen regelt man die Drehgeschwindigkeit eher über die Höhe der Versorgungsspannung. So machen das herkömmliche Lüftersteuerungen für PCs.

BananaCrafting:

  • Die meisten Lüfter verlangen 25kHz, der Atmel hat allerdings über 400kHz. Was genau ist das und wie kann ich es runterregeln?

Das wiederum sind Lüfter mit einem 4-Pin-Anschluss. Diese werden an die positive Versorgungsspannung von 12V und an Masse angeschlossen, haben den oben erwähnten Tacho- bzw. Drehzahlausgang. Der letzte Pin - und das hast du richtig erkannt wird über eine PWM geregelt. Da gibt es entsprechende Spezifizierungen, dass diese bei etwa 25 kHz liegen soll.
Die PWM-Pins des Arduinos haben (ohne an den Registern zu schrauben) eine Frequenz von ca. 490 Hertz - nicht kHz!

Erstmal danke für deine Antwort!

Zum Netzteil: Ich meinte nicht den Arduino mit 12V zu versorgen, sondern die Lüfter unabhängig vom Board an ein Netzteil zu hängen. Damit die Lüfter dann aus sind, regelt der Arduino sie über PWM auf 0.
Dass müsste doch gehen, oder?

Zum Anschluss: Um PWM benutzen zu können benötige ich also zwingend einen 4-Pin Lüfter?
[-> http://media.bestofmicro.com/N/8/304100/original/cooler_connector_01.jpg (Der dritte von links)]?

Was muss ich denn tun, um die 400Hertz auf 25000Hertz zu bekommen?

MfG Banana

Du solltest auch einen 3-Pin Lüfter mit 12V versorgen können wenn du ihn mit einem Transistor ansteuerst. Am besten einen Logic Level FET wie den IRLZ44 nehmen.

Bedeutet das, dass ich anstatt einem externen Netzteil auch einen Transistor in die Schaltung einbauen kann, um die 5V Spannung des Arduinos auf 12V zu bringen? Und wenn ja, wie?

Den Transistor brauchst du, um die externen 12 Volt zu schalten.

Den Lüfter kannst Du nicht per PWM an den 12V regeln. Du brauchst zwingend einen Lüfter mit PWM-Eingang.
Grüße Uwe

Wenn man auf Google Image Search sucht gibt es da schon Schaltungen. Ist aber ein wenig komplizierter als einfach den Lüfter an einen Transistor zu hängen, da die meisten Motoren schon Elektronik integriert haben. Meistens wird da ein LC-Filter verwendet um die PWM-Spannung zu glätten.

Aber das ganze richtig zu dimensionieren ist in diesem Fall wahrscheinlich zu schwierig. Deshalb wäre ein Lüfter mit entsprechendem Anschluss angebrachter.

Ich habe in meinem Projekt drei 3-Pin-Lüfter angeschlossen. Die Drehzahl der Lüfter wird unabhängig voneinander über die Temperaturen geregelt, die von drei (der vierte misst nur die Gehäusetemperatur) 18s20 erfasst werden. Jeder Lüfter dreht also nur so schnell wie nötig. Die Temperaturschwellen (Min und Max) werden nicht einzeln pro Lüfter eingegeben, sondern global für alle Lüfter.

Ist das in etwa das, was du machen möchtest?

Frank

Ja, genau!

Ich habe ein selbstgebautes Gehäuse mit Raum für einen LAN Veteiler, einen übertakteten Raspberry Pi und weiteren Geräten. Diese verursachen unter voller Last doch ein wenig Hitze. Nicht so viel dass ein Gerät davon zerstört werden könnte, dennoch fühle ich mich wohler wenn ich Lüfter einbaue. Zudem soll das angeblich (?) die Lebenszeit erhöhen.

Ich habe einen NTC Sensor der die Temperatur im Gehäuse misst (evtl. kann ich später weitere Sensoren anbringen). Der Aduino soll nun ab einer bestimmten Temperaturmarke die 2 Lüfter anschalten, und später wieder ausschalten. Also im Grunde das, was du auch gemacht hast.

Wie hast du dein Projekt denn vollbracht? Wer versorgt die Lüfter mit Strom? Benutzt du auch PWM?
MfG Lukas

Über einen Vorwiderstand (Wert muss ich nachschauen) habe ich für jeden Lüfter an je einen PWM-Ausgang einen BUZ11 gehangen. Daran dann jeweils einen Lüfter. Die Spannungsversorgung für die Lüfter ist natürlich extern. Wichtig ist, dass du die Masse von Arduino und externer Versorungsspannung verbindest.

Dann noch die Temperatursensoren angeschlossen und fertig.

Wenn es dir nur um eine simple temperaturgesteuerte Lüftung geht, nimm doch sowas: Lüfter Temperaturregelung für 12V Gleichspannungslüfter

Das ist einfacher und günstiger.

Wenn du dafür einen Arduino einsetzen möchtest, dann lass dir doch zumindest die Temperaturen auch gleich auf dem Display anzeigen. Wenn das Gehäuse sowieso selfmade ist, sollte das doch kein Problem sein. So siehst du wenigstens etwas von dem Aufwand, den du treibst.

Ich erweitere mein Projekt immer um ein einziges weiteres Feature. So habe ich nicht zu viel Baustellen gleichzeitig. So benenne ich dann auch die Sketche. Ohne ihn getestet zu haben, habe ich den letzten (finalen) Sketch zum Thema Lüftersteuerung mal angehangen. Wie gesagt, keine Garantie. Beim Überfliegen habe ich gesehen, dass die Kommentare bezüglich der Portnummern nicht passen. Das musst du dann auf deine Anforderungen abändern.

Frank

Luefter_Drehzahl_ueber_Temp_steuern_3.ino (3.15 KB)

Ich weiß die Grafik ist grottig (!), aber ich muss mich etwas beeilen gerade deswegen nur Paint...

Aber wieso muss ich die Masse des Arduinos mit der Externen Quelle verbinden?
Achja, die Quelle ist natürlich 12V und der Arduino ist auch angeschlossen. Temperatursensorschaltung habe ich mal rausgelassen, die habe ich schon fertig gesteckt.
Was ist an dem "Schaltplan" falsch? Bitte nicht verspotten, ich habe zwar Ahnung von Software und Programmierung, nicht aber von "Hardwaretechnischem" und Schaltungen.

LG Lukas

So wird das nicht klappen. Du kannst einen 3-Pin-Lüfter nicht direkt ansteuern. Bei meinem Bauvorschlag ist der dritte Pin nicht notwendig. Er gibt sowieso nur ein Signal aus.

Du steuerst mit dem PWM-Signal des Arduino den BUZ11 an. Der schaltet dann entsprechend dem PWM-Signal (0 bis 5 Volt) die 12 Volt auf den Ventilator. Wenn ich heute Abend daheim bin, versuche ich mich mal an einer Handskizze. Dann wird es vielleicht etwas klarer.

Frank

edit: "Aber wieso muss ich die Masse des Arduinos mit der Externen Quelle verbinden?"

Nur die beiden Massen müssen verbunden werden. Sonst funktioniert das nicht. Dein Arduino ansich bleibt so mit Spannung versorgt wie bisher (Netzteil, PC-USB, etc...) Die beiden Lüfter werden über eine komplett separater Spannung versorgt. Die hat nichts mit dem Arduino zu tun. Wenn du den mit 12 Volt versorgst, dann wird der Spannungsregler auf dem Arduino seeeehr warm. Das ist für die Lebensdauer ganz sicher nicht zuträglich.

Hast du denn eine 12 Volt Spannungsquelle, die du anzapfen kannst? Wenn nicht, nimm am besten ein Schaltnetzteil für die Steckdose (ähnlich dem für das Handy, nur halt 12 V) Du musst nur darauf achten, dass es genug Strom liefert. Bei zwei Lüftern sollte 1 A ausreichend sein. Wenn die Lüfter nicht auf maximaler Drehzahl laufen müssen, reicht theoretisch auch ein Netzteil mit geringerer Spannung.

Danke für deinen Aufwand :smiley:

Ich dachte immer ich könnte einen Arduino PWM Ausgang mit dem Lüfter verbinden und dann über analogWrite() Werte von 0 bis 255 senden um die Geschwindigkeit einzustellen (0 = 0%, 255 = 100%)

Über einen Vorwiderstand (Wert muss ich nachschauen) habe ich für jeden Lüfter an je einen PWM-Ausgang einen BUZ11 gehangen.

Ein Vorwiderstand ist bei FETs nichts unbedingt nötig, da die Ansteuerung über Spannung erfolgt und nicht mit Strom (es sei den die Frequenz liegt bei vielen kHz, wie bei Schaltnetzteilen). Bei Bipolar-Transistoren ist der Vorwiderstand dazu da den Basis-Strom zu begrenzen. Bei FETs sollte man statt dessen einen ca. 100k zwischen Gate und Masse einbauen, damit die Gate-Kapazität schneller entladen wird. Gerade bei PWM. Sonst sehen die Flanken zunehmend wie die Ladekurve eines Kondensators aus. Spielt bei der geringen Frequenz der Arduino PWM wahrscheinlich keine so große Rolle, aber es schadet nicht.

@BananaCrafting
Der Arduino macht nur 40mA pro Pin bei 5V. Das reicht bei weitem nicht um einen Lüfter zu betreiben.

Gilt für 3-Pin-Ventis:
Ist auch im Prinzip richtig. Nur kann der Ausgang weder die Spannung, noch den nötigen Strom liefern, um den Ventilator zu bewegen. Daher muss da ein Mosfet dazwischen, dem diese Aufgabe übertragen wird. Der wird dann per PWM angesteuert und steuert damit die entsprechende Spannung auf den Venti. Ich habe den BUZ11 genommen, weil ich davon noch einen ganzen Schwung liegen habe. Moderner wäre zum Beispiel ein IRLZ34N Bauteil: IRLZ34N - Mikrocontroller.net Aber der BUZ11 tut es für den Zweck ebenso gut - zumindest bisher in meinem Projekt.

Frank

edit: Serenifly war schneller...
Das mit den Flanken werde ich mir mal anschauen - danke für den Hinweis!

Also so in der Richtung?

Oder steuert der BUZ11 nicht den PWM Eingang des Lüfters, sondern reguliert die Spannung vom externen Netzteil?

LG Lukas

Gelegenheitsbastler:
Das mit den Flanken werde ich mir mal anschauen - danke für den Hinweis!

Wie gesagt fällt das bei den 400-500Hz des Arduinos wahrscheinlich nicht auf. Sehr gut möglich, dass das dann noch ein richtiges Rechteck-Signal ist. Aber bei steigenden Frequenzen (im kHz Bereich) bleibt halt immer weniger Zeit um das Gate umzuladen. Das hängt auch mit der Größe der Gate-Kapizität zusammen. Da gibt es Unterschiede.

Bei dieser einfachen Schaltung ließt man halt auch oft, dass damit die Elektronik der Lüfter u.U. nicht mehr richtig arbeitet. Deshalb wird oft das PWM-Signal geglättet, damit da wieder eine Gleichspannung anliegt.

@BananaCrafting
Nein. Gate an den Arduino. Source an Masse. Und Drain an die Masse des Lüfters. Diese Transistoren sind i.d.R. Gate/Drain/Source wenn die von vorne drauf schaust. Siehe Datenblatt.

Nein, so ist es falsch.

Ich hatte doch beschrieben wie es funktioniert.

"Daher muss da ein Mosfet dazwischen, dem diese Aufgabe übertragen wird. Der wird dann per PWM angesteuert und steuert damit die entsprechende Spannung auf den Venti."

Der BUZ11 hat drei Pins. Einer wird mit PWM verbunden. Masse Arduino wird mit Masse externe Spannungsquelle verbunden. Lüfter wird mit 12 Volt (externe Spannung) verbunden. Masse von externer Spannung geht auf den "Eingang" des BUZ11. Der "Ausgang" des BUZ11 geht auf Minus (gleich Masse) des Lüfters.

Nun wird per PWM bestimmt, wie hoch die Spannung ist, die über die Masseleitung der externen Quelle an den Venti geht.

Frank

edit: Und wieder war er schneller. Sag mal, wie schnell kannst du tippen? Ich dachte ich wäre nicht grad langsam, aber du bist echt fix.

Sorry :frowning:

Wegen IRLZ...
Der Unterschied ist halt, dass der BUZ11 zwar bei ca. 2-4V anfängt zu leiten, aber nicht voll durchschaltet. FETs brauchen i.d.R. 8-10V Gate-Source Spannung um vollständig aufzumachen. Ein Logic Level FET schaltet schon bei 5V voll durch. Bei dieser vergleichsweisen geringen Leistung (die Transistoren sind für zig Ampere ausgelegt) fällt das nicht auf, aber wenn man wirklich Leistung schaltet muss man da aufpassen.