Pages: 1 [2]   Go Down
Author Topic: PWM Lüftersteuerung - Induktionsgeräusch unterdrücken  (Read 1726 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Faraday Member
**
Karma: 128
Posts: 4130
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
müsste also unter 20Hz gehen.. wie müsste denn der code dafür aussehen?
Das geht nicht. 30Hz ist das niedrigste mit 0x07 für Timer2 und höher. Du musst die Frequenz höher machen.

Für Timer 3 musst du das machen:
TCCR3B = TCCR3B & 0b11111000 | 0x01

Oder:
TCCR3B = TCCR3B & 0xF8 | 0x01

UND 0b11111000(=0xF8) bedeutet, dass die unteren 3 Bits auf 0 gesetzt werden. Der Rest bleibt. Mit diesen 3 Bits wird der Prescaler eingestellt. Das ODER danach setzt die entsprechenden Bits.


Siehe Datenblatt Seite 162:
http://www.atmel.com/Images/doc8161.pdf

Wie man da sieht ist 0x01 kein Prescaler, d.h. der Timer läuft dem Systemtakt.


Logged

Germany, Südlich von Stuttgart
Offline Offline
Jr. Member
**
Karma: 0
Posts: 76
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

okay,.. 30Hz ist ein sehr tiefer ton, der eigentlich nur durch sub-woofer hörbar wird, wenn ich mich nicht täusche..
werde es mal versuchen.. zur verständnis:

die niedrigste frequenz (30Hz) geht nur mit timer2, was die pins 9 und 10 betrifft.
somit müste ich den transistor, an einen von den beiden hängen und der andere ist dann eigentlich nur für digitale befehle sinnvoll nutzbar, weil das veränderte PWM signal ja an beiden pins ausgegeben wird.

daher müsste der code ja so aussehen:

Code:
...
void setup(){
TCCR2B = TCCR2B & 0xF8 | 0x07;
pinMode(9,OUTPUT)
}

void loop(){
analogWrite(9,150);
}

ist das soweit richtig?
Logged

auch um Facebook gibts jetzt eine Arduinogruppe aus Deutschland:

https://www.facebook.com/groups/236954946446659/

Offline Offline
Faraday Member
**
Karma: 128
Posts: 4130
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bei PWM gilt: je höher die Frequenz, desto besser. Bei 30Hz werden die Aus-Zeiten zu lang sein

Und alle Einstellungen die auf Timer2 gehen, gehen auf für Timer3 und Timer4. Das ist was ich mit "und höher" gemeint habe. Nur Timer0 und Timer1 sind intern anders aufgebaut. Die restlichen Timer funktionieren gleich.
Logged

Germany, Südlich von Stuttgart
Offline Offline
Jr. Member
**
Karma: 0
Posts: 76
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

okay,.. dann sollteich doch bei meiner lösung bleiben:

für 50%:
Code:
digitalWrite(motor, HIGH);
delay(50);
digitalWrite(motor, LOW);
delay(50);
für 25%:
Code:
digitalWrite(motor, HIGH);
delay(25);
digitalWrite(motor, LOW);
delay(75);

usw....

Logged

auch um Facebook gibts jetzt eine Arduinogruppe aus Deutschland:

https://www.facebook.com/groups/236954946446659/

Offline Offline
Faraday Member
**
Karma: 128
Posts: 4130
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hast du dich mit der Transistorgeschichte abschrecken lassen? Es ist nicht mal sicher, dass das überhaupt eine Rolle spielt.
Logged

Germany, Südlich von Stuttgart
Offline Offline
Jr. Member
**
Karma: 0
Posts: 76
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

da mein wissen begrentzt ist,.. ich auch nicht so viel zeit habe, da auch meine freundin etwas aufmerksamkeit  braucht,.. usw,....
--will ich eigentlich auch richtig verstehen was ich mache und ich habe auch noch ein LCD (20x4), DHT22, 7seg-shift-register-modul, schalter und den motor dran.. da sollte nur der eine pin, maximal 2 sich verändern..
darum.. :-)
Logged

auch um Facebook gibts jetzt eine Arduinogruppe aus Deutschland:

https://www.facebook.com/groups/236954946446659/

Germany
Offline Offline
Full Member
***
Karma: 5
Posts: 126
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich hab jetzt ne ganze Weile gebraucht, bis ich das halbwegs kapiert habe mit den Timern, bin momentan aber auch noch am Testen.

Möchte einen normalen PC-Lüfter über einen MOSFET ansteuern und habe ebenfalls das Problem mit dem Geräusch. Wenn ich den Timer2 (beim Uno) auf knapp 30kHz setze, klappt das eigentlich wunderbar:

Code:
void setup(){
TCCR2B = TCCR2B & 0xF8 | 0x01;
pinMode(3, OUTPUT)
}

void loop(){
analogWrite(3, 150);
}

Ich kann den Lüfter fast bis zum Stillstand runter regeln, ohne das er störende Geräusche macht  smiley
Ist die hohe Frequenz nun ein Problem für den MOSFET oder stört das nicht weiter? Ist ein IRLD024 (2,5A), und der Lüfter zieht 0,45A bei 12V.
Logged

Offline Offline
Edison Member
*
Karma: 39
Posts: 1177
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ist die hohe Frequenz nun ein Problem für den MOSFET oder stört das nicht weiter? Ist ein IRLD024 (2,5A), und der Lüfter zieht 0,45A bei 12V.

Die Frequenz ist kein Problem für den MosFet. Und da nur sehr niedrige Ströme hast, scheint auch die Verlustleistung kein Problem zu sein.

@Womo-Fahrer: Wie hoch ist denn dein Lüfterstrom?
Mit  RG=125 Ohm sollte Schaltzeiten von ca 2µs drin sein. Wenn deine Ströme auf der Verbraucherseiten nicht zu hoch werden, sollte das reichen. Aber das merkst du, wenn der FET heiß wird.
Probier doch die 31kHz Variante mit dem 125Ohm Gatewiderstand einfach mal aus! Schlimmstenfalls wird dir dein Fet zu heiß!
Logged

Grüße
Gunther

Germany, Südlich von Stuttgart
Offline Offline
Jr. Member
**
Karma: 0
Posts: 76
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hallo zusammen,

nun hab ich weider zeit gehabt zum basteln,.. hab den skech von Spexx benutzt..
beim mega einmal alles umgepint (hatte hauptsächlich 2-13 verwendet) .. also die: 7seg-shift-reg, 20x4 LCD und taster input´s, habe ich alles auf die doppelzeiligen "weiblichen PIN´s" anschlossen. (PIN 22-53)...

gerade laufen noch andere lüfter im wohnmobil, aber der helle ton ist definitiv weg! --> die frequenz-änderung hat seinen zweck erfüllt!!!

vielen dank für den tipp nochmal!! aber jeztt hab ich doch nochmal ne frage, weil ich den transi, auf ein blech geschraubt hab.. ich habe das gefühl, dass der transi wärmer ist.. (!) kann es aber nicht messen(!) --> traue mich uch nicht ohne den laufen zu lassen, da kein ersatz vorhanden momentan! im moment darf der mir auf keinen fall durchbrennen!!!!..

ich verstehe nur nicht so recht, warum der wiederstrand am gate
/basis/steuer eingang relevant ist!? --> um so mehr strom, desto kühler der transi??? ..kann mir das einer erklären oder ein link posten?

gruß andy?
Logged

auch um Facebook gibts jetzt eine Arduinogruppe aus Deutschland:

https://www.facebook.com/groups/236954946446659/

Offline Offline
Faraday Member
**
Karma: 128
Posts: 4130
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Warm werden kann ein Transistor schon. Das ist kein Problem. Er sollte nur nicht heiß werden.

Der Gate-Widerstand ist für den Transistor an sich nicht so relevant. Der ist dazu da damit der Ausgang des Arduino nicht überlastet wird, da der nur 40mA macht.

Wenn der Transistor bei einem höheren Ladenstrom kühler wird, liegt das einfach daran, dass er schneller durchschaltet, da das Gate schneller geladen wird. Das Gate bildet einen kleinen Kondensator. Kondensatoren haben eine Ladekurve in Form einer e-Funktion:
http://www.elektronik-kompendium.de/sites/grd/diagramm/02053011.gif
Um das Gate so schnell wie möglich voll zu laden muss man mehr Ladung drauf packen, bzw. genaugenommen die Ladung in einer kürzeren Zeit. Das entspricht einem höheren Strom.

FETs haben einen sehr niedrigen Widerstand von ein paar Dutzend milliOhm. Aber nur wenn sie voll durchgeschaltet sind - d.h. wenn das Gate seine volle Ladung hat. Dazwischen ist der Widerstand des Gate-Source-Kanal höher und der Strom wird in Wärme umgesetzt (wie an jedem anderen Widerstand auch). Wenn man nur ab und zu schaltet fällt das nicht auf, da der Widerstand nur kurz hoch ist und dann viel Zeit zum Abkühlen ist. Außerdem weil die Kapazität sehr klein ist. Aber jetzt schaltest du alle paar µs. Entsprechend öfters ist der Transistor im linearen Bereich wo der Widerstand höher ist. Bei Schaltnetzteilen die mit mehreren hundert kHz takten und/oder mehrere Ampere schalten wird das extrem. Dafür gibt es dann spezielle MOSFET Treiber um das Gate schnell genug umzuladen und man schaut dass man Transistoren mit einer besonders niedrigen Gate-Kapizität verwendet.

Du kannst wie gesagt einen kleinen NPN davor bauen (z.B. BC337):
http://www.neufeld.newton.ks.us/files/electronics/mosfet-motor/MOSFET-motor-driver.png
Wobei man da R1 dann glaube ich aber niedriger als 10k machen muss.

Dann kommt der Strom für das Gate von der Betriebsspannung und nicht aus dem Controller. Und kann dann höher als 40mA sein.
« Last Edit: November 23, 2013, 07:36:15 am by Serenifly » Logged

Germany, Südlich von Stuttgart
Offline Offline
Jr. Member
**
Karma: 0
Posts: 76
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

also hab ich das soweit richtig verstanden, es gibt eine gewisse zeitverzögerung, wegen dem mini kondensator.. und erst wenn dieser geladen ist (was in dem fall variabel ist, durch den "durchfluss"), wird geschaltet, richtig?
..zum laden zieht dieser verschiedene ströme und (z.B) ab 4A bei 12V(fiktiver MAX wert), kann der transistor, den internen kondensator nicht mehr richtig laden, was zu der überlastung führen kann??
« Last Edit: November 22, 2013, 07:52:10 pm by Womo-Fahrer » Logged

auch um Facebook gibts jetzt eine Arduinogruppe aus Deutschland:

https://www.facebook.com/groups/236954946446659/

Offline Offline
Faraday Member
**
Karma: 128
Posts: 4130
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ja. Du willst den Transistor als Schalter benutzen. Also immer voll sperrend oder voll auf. Es gibt zwei Punkte an deinen keine Leistung (P = U * I) abfällt:
1.) Drain-Strom = 0, Drain-Source-Spannung maximal -> sperrend
2.) Drain-Strom maximal, Drain-Source-Spannung 0 -> leitend (real kann UDS hier auch nicht ganz 0 werden)

Dazwischen hat man immer eine Kombination aus Strom und Spannung, die in einer Verlustleistung abfällt. Transistoren sind aber keine ideale Schalter. Man kann sie schließlich auch als Verstärker verwenden. Man kann sie wenn man weniger Spannung am Gate anlegt (oder bei Bipolar-Transistoren weniger Strom fließen lässt) auch nur teilweise leiten lassen, damit nicht die ganze Spannung am Ausgang anliegt. Das geschieht auch kurz wenn man im Schalter-Betrieb ist, ist aber in diesem Fall eben unerwünscht.

Für Bipolar-Transistoren gibt es dieses klassische Bild zur Arbeitspunkt-Verschiebung und dem verbotenen Bereich:
http://www.elektronik-kompendium.de/sites/slt/0208031.htm

Das gilt ähnlich auch für FETs. Wie da steht "Braucht der Arbeitspunkt für diesen Weg zu lange, wird der Transistor zerstört."

Je länger man braucht um das Gate zu laden, desto länger ist er in diesem Bereich in dem U * I != 0. Bei schneller PWM kommt jetzt noch hinzu, dass er alle per µs den Arbeitspunkt verschiebt. Selbst wenn diese Gerade nicht über Ptot verläuft, heizt sich der Transistor in diesem Bereich auf. Und hat dann auch keine Zeit sich abzukühlen wenn das sehr oft geschieht.


Logged

Pages: 1 [2]   Go Up
Jump to: