Hi Leute, ich habe da ein Problem das mich verfolgt und an dem ich schon 2 Tage bzw. zwei Nächte festhänge. Habe das Web bereits ausgiebig befragt daher jetzt dieser Post. Die Drehzahl meines PWM-Lüfters mit Arduino Leonardo gesteuert ist viel zu langsam. Es geht darum, dass ich zur Kühlung einer 100W LED einen CPU-Kühler betreiben will, wie er standardmäßig beim i5 dabei ist. Genau heisst der E97378-001. Das gute Stück ist einer der Lüfter mit 4 Anschlüssen, namentlich: |GND|+12V|Hall-Sensor|PWM-Input| (Datenblatt war leider nicht zu finden, dafür aber dieses allgemeine Dokument über PWM-Lüfter: http://www.formfactors.org/developer%5Cspecs%5CREV1_2_Public.pdf) Mein eigentliches Ziel war es bloß den Lüfter einmal auf 100% Laufen zu lassen um seine Kühlfähigkeit zu testen. Um danach eventuell eine Temperaturregelung und Steuerung der LED mit einem ATTINY85 aufzubauen. Das Problem dabei: Der Lüfter ist schlauer als er aussieht. Nach dem ich die Versorgungsspannung anschliesse dreht der kurz hoch und verharrt danach auf einer geringeren Drehzahl (geschätzt so in etwa 40-50% seines Könnens.) Zieht man den PWM-Pin auf Masse, dreht er extrem langsam so wie es sich gehört. Zieht man den Pin jedoch auf 5V passiert gar nichts und er bleibt bei der Leerlauf-Leistung. Das liegt wohl daran, dass der Lüfter bei 97% PWM am schnellsten sein soll. Damit der Lüfter sich ansteuern lässt schreibt der Hersteller eine PWM-Frequenz von 25kHz vor. Laut irgendwelcher Foren soll die normale Arduino Frequenz von 490Hz wohl auch funktionieren, was bei mir nicht geklappt hat. Da man die PWM-Frequenz nicht so ohne weiteres Benutzerfreundlich verändern kann, bleibt nichts anderes übrig als die Timer "manuell" zu setzen. Dazu gibt es jede Menge Anleitungen, zumindest für den UNO, für den Leonardo eher nicht so. Hab natürlich ein paar Sachen gefunden und die mal ausprobiert. Ergebnis: Ja man kann die Drehzahl steuern. Aber nur von fast null bis zu den besagten 40-50% bei offenem Eingang. Versetzte Momentan den Timer4 in Mode 4 um 23.437Hz zu bekommen was in der Toleranz der 25kHz liegen sollte. Den Code den ich von http://r6500.blogspot.de/2014/12/fast-pwm-on-arduino-leonardo.html geklaut habe stelle ich der Vollständigkeit halber mal mit ein. Gibt es Dinge zu beachten die ich vergessen habe? Oder ist TIMER4 einfach falsch Konfiguriert? Liesse sich das ganze auch mit TIMER1 erledigen, ich habe da keine passende Frequenz gefunden. Gäbe es eine elegante Möglichkeit genau 25kHz PWM-Frequenz zu erzeugen? Und hat jemand Erfahrung im ansteuern dieser Lüfter und irgendeinen brauchbaren oder unbrauchbaren Tipp auf Lager? Ich bin für jede Anregung dankbar. Vielen Dank für eure Hilfe im Voraus. /********************************************************** Fast PWM on pins 6, 13 (High Speed TIMER 4) Do not use analogWrite to pins 6 or 13 if using this functions as they use the same timer. Those functions will conflict with the MSTIMER2 library. Uses 7 PWM frequencies between 2930Hz and 187.5kHz Timer 4 uses a PLL as input so that its clock frequency can be up to 96MHz on standard Arduino Leonardo. We limit imput frequency to 48MHz to generate 187.5kHz PWM If needed, we can double that up to 375kHz **********************************************************/ // Frequency modes for TIMER4 #define PWM187k 1 // 187500 Hz #define PWM94k 2 // 93750 Hz #define PWM47k 3 // 46875 Hz #define PWM23k 4 // 23437 Hz #define PWM12k 5 // 11719 Hz #define PWM6k 6 // 5859 Hz #define PWM3k 7 // 2930 Hz // Direct PWM change variables #define PWM6 OCR4D #define PWM13 OCR4A // Terminal count #define PWM6_13_MAX OCR4C // Configure the PWM clock // The argument is one of the 7 previously defined modes void pwm613configure(int mode) { // TCCR4A configuration TCCR4A=0; // TCCR4B configuration TCCR4B=mode; // TCCR4C configuration TCCR4C=0; // TCCR4D configuration TCCR4D=0; // TCCR4D configuration TCCR4D=0; // PLL Configuration // Use 96MHz / 2 = 48MHz PLLFRQ=(PLLFRQ&0xCF)|0x30; // PLLFRQ=(PLLFRQ&0xCF)|0x10; // Will double all frequencies // Terminal count for Timer 4 PWM OCR4C=255; } // Set PWM to D6 (Timer4 D) // Argument is PWM between 0 and 255 void pwmSet6(int value) { OCR4D=value; // Set PWM value DDRD|=1<<7; // Set Output Mode D7 TCCR4C|=0x09; // Activate channel D } // Set PWM to D13 (Timer4 A) // Argument is PWM between 0 and 255 void pwmSet13(int value) { OCR4A=value; // Set PWM value DDRC|=1<<7; // Set Output Mode C7 TCCR4A=0x82; // Activate channel A } /*************** ADDITIONAL DEFINITIONS ******************/ // Macro to converts from duty (0..100) to PWM (0..255) #define DUTY2PWM(x) ((255*(x))/100) /**********************************************************/ void setup() { pwm613configure(PWM23k); pwmSet13(0); } void loop() { PWM13=255; }
Wenn du von einer CPU Frequenz von 16Mhz ausgehst, kannst du mit Timer 4 genau 25kHz erzeugen, wenn du ihn in einem der Waveform Modes bringst, in denen TOP durch OCR4C bestimmt wird. Siehe dazu das ausführliche Datenblatt des Mega 16U4/32U4 Table 15.18. Dann setzt du TOP (in OCR4C) auf 160 und den Prescaler auf 4. Ergibt 16000000Hz / 4 = 4000000Hz. Wenn der Timer dann nur bis 160 zählt, sinds genau 25kHz. Leider ist die PWM Auflösung dann nur noch 0-159, du verlierst also etwas, das sollte aber bei einem Lüfter nicht so tragisch sein. Eigentlich sollte das mit deiner Library schon gehen, wenn du nur den Wert in OCR4C änderst:
1 | // Terminal count for Timer 4 PWM
|
2 | OCR4C=255; |
Da die Jungs hier von der PLL ausgehen, sind die Werte etwas anders. Der 23kHz Mode ist hier schon am nächsten, ein leichtes Verringern des Wertes in OCR4C sollte die Frequenz auch leicht erhöhen. Die Rechnerei überlasse ich aber dir :-)
:
Bearbeitet durch User
Pete123 schrieb: > Das Problem dabei: Der Lüfter ist schlauer als er aussieht. Nach dem ich > die Versorgungsspannung anschliesse dreht der kurz hoch und verharrt > danach auf einer geringeren Drehzahl (geschätzt so in etwa 40-50% seines > Könnens.) Zieht man den PWM-Pin auf Masse, dreht er extrem langsam so > wie es sich gehört. Zieht man den Pin jedoch auf 5V passiert gar nichts > und er bleibt bei der Leerlauf-Leistung. Das liegt wohl daran, dass der > Lüfter bei 97% PWM am schnellsten sein soll. Das hat nix mit schlau zu tun... wenn du den PWM Pin auf GND oder VCC legst - was hat er dann?! Genau! Keine Frequenz - also kein PWM Signal. Also niedrigste Stufe. Wenn er intelligent gewesen wäre, würde er bei Frequenzverlust auf 100% hochziehen. Der Wirkungsgrad ist bei 97% der höchste. Die schnellste Geschwindigkeit hat er, logischerweiße, bei 100%. Im übrigen ist es seehr seeeeeehr mutig eine 100W LED mit einem für 95W TDP angegeben Kühler kühlen zu wollen... dann auch noch mit den PWM Frequenzen spielen wollen... du kannst froh sein wenn der Kühler bei 100% läuft und deine LED dennoch kein schaden nimmt.
Draco schrieb: > Im übrigen ist es seehr seeeeeehr mutig eine 100W LED Die 100 Watt sind die von der LED aufgenommene Leistung. Da LEDs einen gewissen Wirkungsgrad (um 20%) haben, werden hier nicht 100 Watt Abwärme produziert, sondern ein gewisser Anteil auch in Form von Licht abgegeben. Hier werden also "nur" etwa 80 Watt in Form von Abwärme abzuführen sein. Ohne eine Temperaturüberwachung und gegebenenfalls Notabschaltung der LED halte ich einen für unter optimalen Bedingungen für 95 Watt gedachten Kühler allerdings auch für ... etwas wagemutig; irgendwann setzt sich der Lüfter mit Staub zu, was den Wärmeumsatz drosselt.
Draco schrieb: > Im übrigen ist es seehr seeeeeehr mutig eine 100W LED mit einem für 95W > TDP angegeben Kühler kühlen zu wollen... Du vergleichst Äpfel mit Birnen. 1. Eine LED ist kein idealer Heizer, sie gibt auch etwas Leistung als Licht ab. 2. Vergleiche mal, welche Gehäusetemperatur die CPU verträgt und welche die LED.
Meinst man kann das nicht direkt vergleichen?! Würde mich mal interessieren was man hinten an so ner LED abführen muss. Welche LED will er denn nutzen, gibt ja nicht so viele Anbieter in dieser Größenordnung?! Eine CPU mit ~100W TDP verbrät ja auch nicht alles in Wärme.
Draco schrieb: > Eine CPU mit ~100W TDP verbrät ja auch nicht alles in Wärme. Also bei voller Auslastung schon, TDP ist nämlich die freigesetzte Wärme unter Volllast, und nicht die Stromaufnahme.
TDP steht für Thermal Design Power, also die Verlustleistung (Wärme) die die Kühlung abführen muss. Der normale Intel Boxed Kühler für 95 W TDP sollte also 95 W Wärmeleistung abführen können. Da deine 100 W LED ja sicherlich einen Wirkungsgrad > 10 % hat, ist deine thermische Verlustleistung kleiner als 90 W, somit sollte das der Kühler schaffen. Was die Ansteuerung des Lüfters betrifft: Laut Spezifikation (http://www.formfactors.org/developer%5Cspecs%5C4_Wire_PWM_Spec.pdf), muss der Lüfter ohne angeschlossenes PWM-Signal (Blaues Kabel offen) bei 12 V 100 % Drehzahl liefern. Wenn er das nicht tut, ist der Lüfter defekt. Das offene Kabel entspricht hierbei einem dauerhaften 1-Signal also 100 % PWM. Das PWM Signal muss ein open-collector (oder open-drain) Signal sein. Also du ziehst das Signal nur nach Masse, ein Pullup Widerstand sitzt im Lüfter. Wenn du da 5 V drauf gibst, ist das kein gültiger Signalzustand, genau so wenig ist ein PWM Signal mit 0V/5V ein gültiges Eingangssignal. Siehe auch Kapitel 2.3 und 2.4 in der oben verlinkten Spec. Rev. 1.3. Schalte z.B. an deinen Ausgang vom Timer über einen 1k Ohm Widerstand die Basis von einem BC547 und den Emitter nach GND. An den Kollektor kommt dann das blaue Kabel vom Lüfter. Mfg Bimbo385 PS: ich hab schon viele solcher Lüfter angesteuert, das geht eigentlich hervorragend mit nem µC.
:
Bearbeitet durch User
Vielen Dank erstmal für die Hilfe. Hab mal um zu verdeutlichen was ich meine ein Video gemacht. http://sendvid.com/qvbroc68 Hier kann man schön sehen bzw. hören wie er bei offenem Eingang voll hochdreht und dann wieder runter. Ist das gute stück also defekt so ausgelegt oder gibt es einen Trick um auf 100% zu kommen? @mschoeldgen Ahh besten Dank dann ist der Groschen auch bei mir gefallen. Also Bei einem prescaler von 8 mit 48MHz PLL haben wir dann 6MHz. Dann ist alles was es noch zu tun gilt 6.000.000/25.000=240. Also OCR4C=240. Ok das ist wirklich nicht so schwer. @Draco War ja auch nur als Test gedacht. Hab natürlich auch nicht vor das ganze Langfristig ohne Temperaturüberwachung laufen zu lassen. Hab den Lüfter gerade umsonst haben können also wollte ich das mal ausprobieren. @Bimbo385 Dann könnte es tatsächlich sein dass der einen defekt hat. Denn nach dem Einschalten dreht der einmal richtig hoch und geht danach auf seine "100%" die ungefähr 40% von dem Startvorgang sind. Werde mich heute mal an eine Drehzahlmessung setzten. Dann dürfte sich das ja klären. Falls das was der Lüfter macht alles ist was er kann, könnte es sich ja evtl. auch lohnen die defekte? Steuerung zu überbrücken. Dann mache ich halt meine eigene Steuerung es dürfte ja ein Transistor ausreichen. Btw, warum muss ich den PWM Pin über einen Transistor ansteuern? Ist nicht der eigentliche Sinn von dem PWM-Pin, dass er nur einen kleinen Steuer-Strom führt? Ich werde es aber trotzdem mal ausprobieren.
Pete123 schrieb: > Btw, warum muss ich den PWM Pin über einen Transistor ansteuern? Ist > nicht der eigentliche Sinn von dem PWM-Pin, dass er nur einen kleinen > Steuer-Strom führt? Ich werde es aber trotzdem mal ausprobieren. Weil der keine 5 V sehen möchte. Du musst ihn abwechselnd mit GND - offen - GND - offen ansteuern und das kann dein AVR nicht, selbst wenn du den Pin als Eingang konfigurierst, stört die Schutzdiode.
Genau so wie Malte sagt, es geht nicht um den Strom. Der beträgt wenn überhaupt wenige mA, sondern um den 5 V Zustand, der nicht gültig ist. Sondern es ist open-collector gefordert, also Kurzschluss nach Ground und offen im Wechsel. Dein Lüfter verhält sich definitiv nicht korrekt. Scheint ne Macke zu haben. Ich habe gerade noch mal einen von meinen zahlreichen Intel-Boxed Kühlern angetestet. Der geht bei offenen Steuereingang einfach auf 100 % und bleibt da. Das mit den 100 % bei offenen Eingang kommt auch nicht von ungefähr, sondern ist die Voraussetzung zur Abwärtskompatibilität. Du kannst so ein 4-Pin Lüfter z.B. auch einfach an einen 3-Pin Anschluss vom Mainboard stecken. Er gibt dann halt vollgas, bzw. lässt sich über die Spannung regeln, wenn das MoBo das kann. Mfg Bimbo385 PS: Nimm bitte beim nächsten Video einen Hoster der nicht 10 min braucht, um mir ein 30 s Video zur Verfügung zu stellen ;-)
Bimbo 3. schrieb: > Dein Lüfter verhält sich definitiv nicht korrekt. Scheint ne Macke zu > haben. Oder war dein "offen" Test mit PWM-Eingang an den µC angeschlossen und nur dem Pin auf Eingang? Dann siehe oben.
@maltest, @bimbo385 Ahh das macht sehr viel Sinn. Hab das ganze nochmal mit nem BC547 versucht, Logik im Code invertiert und siehe da es funktioniert besser als vorher. Die Regelung ist etwas konstanter, aber seinen verlorenen Speed hat er natürlich nicht wiederbekommen :'(. Zumal ich es für unmöglich halte den Lüfter auseinander zu nehmen und heile wieder zusammen zu bauen um an die Elektronik zu kommen, werde ich mich wohl nach einem neuen Lüfter umschauen müssen und den anderen für etwas mit weniger Wärmeabfuhr zurücklegen (hab da noch 5 20W LEDs auf Lager). Meint ihr die Dinger sind irgendwo Ausschussware und man kann die da umsonst bekommen. Die gibts doch so häufig da kommt es mir fast falsch vor 5€ dafür zu bezahlen. Hatte gedacht man könnte vielleicht diese Intel Kühler benutzen, den Lüfter abmachen und als passive Kühlung für 20 oder 10W LEDs benutzen. Der Lüfter müsste ja nichtmal funktionieren.
Also die Kühler sind bei jedem Selberbastler der sein Rechner baut und was auf sich hält übrig weil eh ein besserer Kühler drauf kommt. Da sollte sich doch was in deiner Nähe finden. Ich weiß grad nicht wo, aber ich hab noch welche rumzuliegen. Zumindest die Lüfter, die Kühlkörper finden bei mir immer Verwendung.
Hab bestimmt 6 oder 7 boxed Kühler rum liegen. Die neueren, flachen aus Vollaluminium für die i3/5/7 habe ich nie verbaut, viel zu laut. Die alten, hohen mit Kupferkern für LGA775 waren ganz OK, wenn die eigenen Ansprüche nicht zu hoch waren. Zum wegwerfen waren mir die immer zu schade, aber verkaufen kann man die nicht. Wenn du aus der Nähe (PLZ: 31547) kommst, kannst du einen bei mir abholen für lau. Mfg Bimbo385
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.