Guten Tag,
wie schon viele andere versuche ich meinen 4Pin PWM Lüfter mit der PWM
vom Arduino zu steuern.
Das benötigte PWM Signal für den Lüfter hat eine Frequenz zwischen 21
und 28 Khz. Da per prescaling das Signal nur auf 31Khz gebracht werden
kann, hat das schonmal nicht funktioniert.
Jetzt habe ich das Register, in dem gesetzt wird, wie hoch gezählt wird,
mittels der PWM.h Lib auf 25Khz eingestellt, was auch super
funktioniert.
Voller Motivation hab ich meinen Lüfter (Arctic Cooling F8 PWM)
angeschlossen - und er läuft immer noch auf maximaler Drehzahl.
Ich hab ganz naiv einfach das PWM Signal vom Arduino Uno (Pin 9)
angeschlossen und den Rest des Lüfters an einen 3Pol Lüfterstecker vom
PC.
Was mache ich falsch ? Wäre super, wenn mir jemand einen Tipp geben
könnte. Liegts an der Verkabelung oder dem Signal selbst?
Hier mein Code
Hallo!
Bester Mann schrieb:> Ich hab ganz naiv einfach das PWM Signal vom Arduino Uno (Pin 9)> angeschlossen und den Rest des Lüfters an einen 3Pol Lüfterstecker vom> PC.
Ist GND vom Arduino auch am lüfter angeschlossen?
Passen die Ein-/Ausgangspegel von Arduino <--> Lüfter?
Gibt es eine externe Beschaltung die als Tiefpass wirkt und zu langsam
ist?
Kommt überhaupt ein PWM Signal aus dem Pin raus?
Ich glaub der Fehler liegt darin, dass ich GND vom Arduino gar nirgends
angeschlossen habe. Kann ich das einfach an den GND vom Lüfter mit dran
packen? Nicht, dass das schief geht?
Könnten ja rein theoretisch Spannungsdifferenzen dazwischen sein.
Also das 25KHz signal passt und ich glaub logic level liegt bei 1V ,
oder ? Jedenfalls leuchtet eine grüne led , die ich zwischen pin9 und
gnd schaltet, leicht, dass die Spannung auf jedenfalls irgendwo zwischen
1 und 2 v liegt tippe ich. Das werde ich als nächstes mal messen,sobald
ich irgendwo an ein oszi kann.
Also wohin soll ich den gnd vom arduino schalten?
Die Bilddatei kann ich leider gerade nicht öffnen, bin unterwegs.
Viele grüße
Bester Mann schrieb:> Ich glaub der Fehler liegt darin, dass ich GND vom Arduino gar nirgends> angeschlossen habe. Kann ich das einfach an den GND vom Lüfter mit dran> packen? Nicht, dass das schief geht?> Könnten ja rein theoretisch Spannungsdifferenzen dazwischen sein.
Nein, da können keine Spannungsdifferenzen sein.
Ganz im Gegenteil: erst dadurch, dass du mittels GND eine Verbindung
herstellst, sind sich alle 'Partner' überhaupt erst darüber einig, was
denn eigentlich 0V (also GND) sein soll. Vorher hat jede Schaltung ihre
eigene 'Vorstellung' davon, was das sein soll, und zu allem Überdruss
kann sich das auch laufend ändern.
> Also das 25KHz signal passt und ich glaub logic level liegt bei 1V ,> oder ?
Nö. Der Level ist der Level, mit dem dein Arduino versorgt wird.
Meistens also 5V.
> Jedenfalls leuchtet eine grüne led , die ich zwischen pin9 und> gnd schaltet
ok.
Und verändert sie auch ihre Helligkeit, so wie das Programm das
eigentlich tun sollte?
Hallo Karl,
Ja das passt alles ganz genau, die LED fadet sehr sauber von null auf
max und zurück (nichtlinearer Verlauf berücksichtigt) 5V da würde meine
LED durchbrennen, hab ich schon probiert ;-)
Also sind es dann bestimmt 3.3V. Werde ich jetzt mal messen und mit den
Spezifikationen des lüfters abgleichen.
Aber gnd vom arduino muss angeschlossen werden ?
MFG
Karl Heinz schrieb:> Nein, da können keine Spannungsdifferenzen sein.
Na ja, doch, schon, wenn er den Arduino aus dem PC Netzteil versorgt und
nicht zwischen +5V/0V sondern z.B. zwischen 0V und -5V angeschlossen
hat.
Was aber eher unwahrscheinlich ist.
Hallo Bester Mann,
sieh Dir mal die Spec von Intel dazu an:
http://www.formfactors.org/developer%5Cspecs%5C4_Wire_PWM_Spec.pdf
Das PWM-Signal muss nach Spec per Open Collector bzw. Open Drain vom uC
zum Fan übertragen werden. D.h. Du musst noch einen separaten Transistor
spendieren, um konform nach Spec Deinen Lüfter anzusteuern.
Das Tacho-Signal wird ebenfalls per OC/OC übertragen (Fan -> uC). Den
Pull-Up für das Tacho Signal musst Du selbst "anbringen"
Viel Spaß und Erfolg beim Basteln
Bester Mann schrieb:> Ja das passt alles ganz genau, die LED fadet sehr sauber von null auf> max und zurück (nichtlinearer Verlauf berücksichtigt) 5V da würde meine> LED durchbrennen, hab ich schon probiert ;-)
Du gibst also während der Impulsdauer volle 5V an die Led?
Dann schalte verdammt noch mal einen Vorwiderstand davor.
Grundlagen der Elektrotechnik gelten auch für Arduino Nutzer.
Hallo Udo,
nein, so wie ich geschrieben habe: meine LED leuchtet schwach bis normal
und bei 5V würde sie durchbrennen, daher hab ich auf 1-2V getippt.
Da sie selbst bei 100% Duty Cycle nicht durchbrennt, ist wohl klar, dass
keine 5V anliegen.
Ich werds gleich mal genau messen.
Hm ich dachte ich hab das Antiphysik-Paket mitgekauft als Arduinonutzer
;-)
Ich verbind jetzt einfach das GND vom Arduino mit dem GND vom PC. Wenns
durchbrennt seid ihr Schuld :-D
MFG
Bester Mann schrieb:> Hallo Udo,>> nein, so wie ich geschrieben habe: meine LED leuchtet schwach bis normal> und bei 5V würde sie durchbrennen,
mal halblang bei den Pferden.
Eine LED, die direkt an einen µC Ausgang gehängt wird, brennt nicht
gleich durch. So ein Arduino Ausgang ist ja kein Kraftwerk, der 10A
durch die LED jagen könnte.
> daher hab ich auf 1-2V getippt.
Es ist letzten Endes auch völlig wurscht, denn an einem PWM-Ausgang
liegen keine 1-2V an. Da liegt die volle Versorgungsspannung, nur eben
nicht die ganze Zeit, sondern mehr so wie ein Blinker. An-Aus, mit
wechselndem Verhältnis von An- zu Aus-zeit.
[QUOTE]The following requirements are measured at the PW
M (control) pin of the fan cable connector see
Figure 7 and Table 1:
PWM Frequency: Target frequency 25 kHz,
acceptable operational range 21 kHz to 28 kHz
Maximum voltage for logic low: VIL = 0.8 V
Absolute maximum current sourced: Imax = 5 mA (short circuit current)
Absolute maximum voltage level: VMax = 5.25 V (open circuit voltage)
This signal must be pulled up to a maximum of 5.25V within the
fan[/QUOTE]
Hallo noch einmal,
Verstehe ich es richtig, dass Logic Low maximal 0.8 und Logic High
maximal 5.25V betragen darf? Wie hoch muss Logic High denn mindestens
sein?
Wenn ihr sagt, dass der Arduino 5V am PWM Ausgang liegen hat (was ich
nicht glaube) dann bräuchte ich ja keinen Open Collector an meinem
Ausgang, da die Specs doch eigentlich genau passen würden?
Wenn allerdings nur 1V an meinem PWM Ausgang anliegt als Logic High,
aber mindestens 4 oder 5V benötigt werden, dann müsste ich einen
Transistor hinter schalten, sehe ich das richtig
MFG
Ich nehm alles zurück und Behaupte das Gegenteil : Es liegen exakt 5.00V
zwischen PWM und GND an. Warum meine LED auch bei 100% Duty Cycle nicht
durchbrannte, weiß ich nicht. Normal müsste sie es tun. Ist wohl hart im
Nehmen.
Wenn jetzt aber genau 5.00V als High und 0V als low anliegen - wieso
geht der Lüfter dann nicht und wozu soll noch die Open Collector
Schaltung dahinter?
Bester Mann schrieb:> Ich nehm alles zurück und Behaupte das Gegenteil : Es liegen exakt 5.00V> zwischen PWM und GND an. Warum meine LED auch bei 100% Duty Cycle nicht> durchbrannte, weiß ich nicht. Normal müsste sie es tun. Ist wohl hart im> Nehmen.
Die Led nicht.
Aber dem Arduino geht die Puste aus.
Ich sagte doch, so ein Ardunio ist kein Kraftwerk! Wenn die LED da
direkt drann hängt, dann steigt der Strom weil es in der LED keine
Begrenzung gibt.
Aber: das ist nur die eine Seite der Medaille. Wenn es einen Verbraucher
gibt (die LED), die Strom haben will, dann muss es auch einen
Lieferanten geben (der Arduino), der den Strom liefern können muss.
Nur kann dein Arduino nicht. Nach 40mA geht dem die Puste aus und die
Ausgangsspannung bricht ein.
Karl Heinz schrieb:> Bester Mann schrieb:>> Ich nehm alles zurück und Behaupte das Gegenteil : Es liegen exakt 5.00V>> zwischen PWM und GND an. Warum meine LED auch bei 100% Duty Cycle nicht>> durchbrannte, weiß ich nicht. Normal müsste sie es tun. Ist wohl hart im>> Nehmen.>> Die Led nicht.> Aber dem Arduino geht die Puste aus.> Ich sagte doch, so ein Ardunio ist kein Kraftwerk! Wenn die LED da> direkt drann hängt, dann steigt der Strom weil es in der LED keine> Begrenzung gibt.> Aber: das ist nur die eine Seite der Medaille. Wenn es einen Verbraucher> gibt (die LED), die Strom haben will, dann muss es auch einen> Lieferanten geben (der Arduino), der den Strom liefern können muss.> Nur kann dein Arduino nicht. Nach 40mA geht dem die Puste aus und die> Ausgangsspannung bricht ein.
Ah, jetzt verstehe ich. Dann war das nicht gerade gut, was ich gemacht
hab und die LED ist nur nicht durchgebrannt, weil der Arduino am Ende
war. Verstehe! Hab ich wohl nicht nachgedacht. Danke für die Info. Ich
noch halbwegs Einsteiger im Mikrokontroller Bereich.
Also in den Specs steht, dass eine Open Collector Schaltung nur nötig
ist, wenn mehrere Lüfter an einem PWM Signal hängen.
Um sicher zu gehen, werde ich jedenfalls mein Signal erstmal mit einem
Oszilloskop ausmessen. Wenn das Signal wirklich perfekt passt, dann muss
es wohl an der fehlenden Beschaltung liegen.
Komisch nur, dass das Beispielsignal auf Seite 11 in der PDF genau so
aussieht wie ich es von meinem erwarte.
Spannung meines Signals passt auf jeden Fall schonmal sehr gut.
Fraglich nur, warum die Spannnung auf 3.3V zusammenbricht, sobald ich
den Lüfter anschließe. Vielleicht ein Messfehler ?
MFG
Ist zwar jetzt ein bisschen peinlich, aber vielleicht passiert jemand
anderem der selbe Fehler mal.
Die Steuerug funktioniert schon die ganze Zeit - ich habe nur die ganze
zeit das Tachosignal mit dem PWM Signal verbunden gehabt.
Das blaue Kabel ist das PWM Kabel.
Keine zusätzlichen Bauteile, nichts. Genau so, wie ich es mir gedacht
habe.
Jetzt läuft alles super :-)
Danke trotzdem an alle für eure Tips und eure Zeit !
MFG