Hallo,
vorweg: Ich habe noch nie eine PWM-Schaltung aufgebaut und noch nie eine
MOSFET-Schaltung.
Ziel: Ich möchte einen kleinen Modellbaumotor (gemessener Strom bei
4,5V: 1,1A) zwischen Maximalleistung/geschwindigkeit und etwa halbe
Leistung/Geschwindigkeit ca. im 10Sekunden Takt wobbeln lassen.
Vorhanden sind div. 18pol. PIC-Controller (16F84, 16F628, 16F88).
Software sollte kein Problem sein. Manche PICs haben ja fertige
PWM-Module, aber ich kann das für so einen einfachen Fall sicher auch
selbst per Software implementieren.
1. Nur mit etwa welcher Frequenz sollte man so Kleinmotoren via PWM
regeln?
2. (eigentlich Frage). Ich habe mir vor einiger Zeit bei pollin zwei
BUZ21 MOSFETS bestellt. Leider finde ich keine Seite, die halbwegs
einführend solche Leistungsmosfets erklären. Datenblatt habe ich
natürlich.
Ist meine Idee so Halbwegs umsetzbar:
Da der BUZ21 ein N-Kanal MOSFET ist, schließe ich Source an Masse.
zwischen Drain und Vcc schalte ich meinen Modellbaumotor (parallel dazu
noch eine 1N4007 als Freilaufdiode in Sperrrichtung?).
Ans Gate schließe ich über eine Widerstand (oder auch keinen: Ein FET
schaltet ja quasi leistungslos? Da brauche ich dann keinen?) direkt den
(TTL/CMOS-) Ausgang des PICs an.
Muss ich noch was beachten? Schaltet der BUZ21 bei 3,6V (3 Akkus) bis
4,5V (3 Batterien)
überhaupt voll durch?
Der Widerstand des BUZ21 soll <0,85Ohm liegen. D.h. es fallen maximal
P=R*I^2=0,85*1,1^2=1,02W ab. Da braucht's sicher noch keine Kühlung?
Sind meine Ideen soweit in Ordnung? Habe ich was vergessen oder liege
vielleicht vom Verständnis total daneben? Kennt jemand einen guten Link
zu einer Seite mit einführenden Charakter zu MOSFETs, speziell die
BUZ=Typen?
Danke im voraus,
Dominik
Hallo Dominik,
eine Einführung zur FETs kenne ich zwar nicht,
aber das Wichtigste zu Deinen Fragen (Leistung, Durchschalten bei 4V)
gibt die Kurve links oben auf Seite 6 des Datenblatts an.
Sie zeigt Strom und Spannung bei verschiedenen Gate-Spannungen.
Bei einer Gate-Spannung von 4.5V gilt Kurve b, also
der Strom steigt nie über 5 Ampere, der FET ist nicht ganz
durchgeschaltet.
Für 1.1 Ampere Motorstrom (ID) fällt aber nur etwa 0.2 Volt (Vds) ab,
die Leistung ist dann sehr gering (0.22 Watt), das geht noch ohne
Kühler.
Bei 3.6 Volt liegt man aber unter der Kurve a und der FET wird
wahrscheinlich gar nicht durchgeschaltet.
Gruß,
Martin
Dominik,
>>Ein FET schaltet ja quasi leistungslos? Da brauche ich dann keinen?)
Das vergiss besser mal gleich, das ist einer der dümmsten Dinge die in
der Geschichte der Elektronik je geschrieben wurden. Und genau wie der
Quatsch mit dem Eisen im Spinat ist das auch nicht mehr tot zu kriegen.
Leider.
Das gilt bestenfalls für Kleinleistungs-FET, AUF KEINEN FALL gilt das
für Power-Mosfets, wie Du sie verwenden willst/musst.
Um die nämlich ganz aufzusteuern und vor allem schnell, musst Du
regelrecht gewaltige Gateströme fliessen lassen bzw. zulassen. Das liegt
eben daran, dass du eine relativ grosse Gatekapazität schnell umladen
musst. Ganz besonders bei PWM stellt sich das Problem. Du benötigst für
einen (zwar sehr kurzen) Zeitraum einen sehr hohen Gatestrom.
Steuerst du das Gate nicht niederohmig genug an, schaltet der Fet zu
langsam und nicht ganz auf, erwärmt sich stark und verbraucht so
unnötige Energie.
Jochen Müller
Hallo,
erst mal danke für die raschen Antworten!
zu Martin: Um den Motor also wirklich noch sinnvoll bei 3,6V mit nahezu
volle Leistung zu betreiben, sollte ich also besser einen anderen
MosFET-Typ wählen? Werde mir mal genauer die genannte Kennlinie
anschauen, auch bei anderen Typen. Danke!
zu Jochen: D.h. ich muss auf Grund der hohen Gateströme noch ein
(bipolar) Transistor zwischenschalten (die PIC-Ausgänge sind sehr
hochohmig, glaub 10mA können die max. schalten). Kann ich dann überhaupt
noch schnell genug schalten? Ich habe nämlich immer noch keine Plan,
welche Frequenz man beim PWM-Betrieb eines kleinen Modelbaumotor
mindestens benutzen sollte? Reicht 1kHz schon?
Danke,
Dominik
Dominik,
ich würde sagen da reicht auch weniger als 1Khz, so ab 500Hz kann das
klappen. Ich würde den FET erstmal direkt am Portausgang anschliessen,
aber nur über einen kleinen Gatewioderstand. Nicht mehr als 100-470 Ohm
für den Anfang.
Jochen Müller
Genau - einfach mal über 270 Ohm direkt am PIC anschließen. Das ganze
mal laufen lassen und schauen, ob sich der FET zu stark erwärmt. Falls
er das tut, solltes du einen FET-Treiber ->
http://www.mikrocontroller.net/articles/Mosfet-%C3%9Cbersicht
oder eine sogenannte Push-Pull Stufe einsetzen. Die besteht aus einem
npn und einem pnp Transistor (+Widerstände)
So, nachdem ich drei PIC16F628A geschrottet habe, habe ich erst mal
genug für heute :(
Zuerst hat es prima geklappt. Ich habe eine kleines Programm
geschrieben, welche zwischen 50%an 50%aus bis 100%an und 0%aus an
PortA,0 hin und her wobbelt in wenigen Sekunden. Achja, PWM-Frequenz
habe ich 250Hz genommen.
Das ganze auf dem Oszi angeschaut, noch kleine Rechen/Denkfehler
beseitig und dann von PortA,0 über 100Ohm ans Gate vom BUZ21.
Parallel dazu das Oszi an PortA,0 hängen lassen (allerdings gegen
Masse).
Source an Masse, Vcc über sperrende Freilaufdiode an Drain. Parallel zur
Freilaufdiode habe ich dann den Motor angeklemmt. Hat prima
funktioniert! Er lief langsam -> schnell -> langsam -> schnell -> usw.
Das ganze mehrere Minuten lang und der BUZ21 ist höchstens mal handwarm
geworden. Habe dann noch einen anderen Motor mit Propeller genommen,
welcher auch geklappt hat.
Allerdings war es mir nicht langsam genug. Also Motor ab, Spannung ab
und PIC neuprogrammiert, dass er bis 25% runtergeht (minimales
Tastverhältnis von 128an (=128/255) auf 64an (=64/255) geändert).
Nachdem ich den PIC wieder in meine Testplatine gesteckt habe, und die
4,5V Spannung eingeschaltet habe (Motor noch nicht dran), zeigte das
Oszi nichts mehr an an PortA :(. Schlecht.
Auf einer anderen Testplatine auch nichts mehr und PIC wurde im Brenner
nicht mehr erkannt. Am Schaltungsaufbau habe ich nichts verändert, PIC
tot.
Na ja, alles noch mal überprüft, 100Ohm Widerstand durch 470Ohm ersetzt
und einen anderen PIC genommen. Nun zeigt das Oszi eine Gleichspannung
von 1-2V an PortA,0 an, mehr nicht. Auch in einer anderen Testplatine
selbes Ergebnis. PIC lässt sich lesen und schreiben. Habe ihn noch
mehrfach geschrieben und verifiziert (alles in Ordnung). aber am Oszi
kein PWM mehr zu sehen. :(
Also einen nagelneuen PIC genommen (nie benutzt) ans Oszi in anderer
Testplatine: Schönes PWM, welches bis auf 1/4 runtergeht.
Sicherheitshalber wieder auf 128 (50%) hochgesetzt (programmiert) und
noch mal in der Testplatine anzeigen lassen. Nun Software wieder
identisch wie beim ersten PIC, als es funktioniert hat.
Neuen PIC in die Testschaltung mit dem BUZ21 eingesetzt, Motor noch
nicht angeschloss, eingeschaltet, nichts. Oszi zeigt nur Groundlinie am
PortA,0 Ausgang. Sofort wieder abgeschaltet und wieder in die andere
Testplatine => nichts mehr zu messen. PIC lässt sich im Brenner auch
nicht mehr lesen. :(
Ich habe keine Ahnung, wie die alle kaputt gehen konnten. Zu Anfang hat
es ja über lange Zeit funktioniert! Und der Eingang ist ja nur über
470Ohm mit dem Gate des BUZ21 Verbunden. Selbst wenn der voll
durchlässt, dürften bei 4,5V Vcc nie mehr als die erlaubten 10mA fließen
können!
Ich habe die Komponenten meiner PIC-Testplatine dann alle überprüft
(Verpolungsschutzdiode, Elko und 10K Widerstand = Spruts
16F84/62x-Mini-Platine + Verpolungsschutzdiode), die sind auch alle in
Ordnung. Mir ist es echt ein Rätsel, wie die PICs kaputt gehen konnte.
Bisher ist mir noch NIE ein PIC kaputt gegangen und das obwohl ich
schon viel Blödsinn geschafft habe (z.B. falschrum reingesteckt) und die
schon fast am abrauchen waren (zumindest hab ich mir mal den Finger
verbrannt und der PIC lief danach, nach richtigen Einsetzen noch). Die
Dinger sind eigentlich sehr robust.
Wenn Du einen Motor mit zb nur 20% Tastverhältnis ansteuerst, so setzt
Du die 5V Spannung runter auf 1V. Du hast einen StepDown Wandler.
Umgekehrt: Wenn Du den Motor voll laufen läßt, und bremmst ihn dann mit
20% PWM ab, hast Du einen Hochsetzsteller, der dir die vom Motor
generatorisch erzeugte Spannung um Faktor 5 hochsetzt, also auf fast 25V
(ideal).
Das kann den PIC schon schrotten.
Er hat doch nen MOSFET zwischen PIC und Motor. Oder meinst du, dass die
ganze Versorgungsspannung angehoben wird?
@Threadsteller:
Die Freilaufdiode für den Motor hast du schon drin, oder?
Ansonsten sind die PICs wirklich sehr robust - habe auch noch keinen
klein bekommen. Hast du auf deinem Experimentierboard nen Fehlerdrauf.
Könnte ja sein, dass während dem Betrieb ein Drähtchen gebogen wurde und
nun was überbrückt.
Klaro habe ich die Freilaufdiode drin auf einem
Steck-Experimentierbrett. Habe an dieser mit zwei Krokodilklemmen den
Motor abgegriffen (so bin ich eigentlich auf der sicheren Seite).
Ich habe es nun noch ein viertes mal probiert und nun klappt es wieder.
Allerdings kriege ich jetzt seltsamerweise den Motor nicht mehr voll
durchgeschaltet und der BUZ wird heiß. Auch mit dem 100Ohm Widerstand
keinen Unterschied. Mit dem Oszi messe ich aber auch nur 4V am
PIC-Ausgang!
Die Verpolungsschutzdiode nimmt dem PIC noch die 0,5V weg, ist mir jetzt
im Nachhinein eingefallen. Diesmal hab ich den BUZ21 noch vor der Diode
angeschlossen, so dass am Gate wohl 0,5V weniger anliegen. Ich vermute,
dass der BUZ21 deshalb nicht voll durchschaltet.
Vielen Dank,
Dominik
Moin,
soweit ich das hier entnommen habe, wird bei dir der FET über einen
100-Ohm Widerstand von einem Pin des Pic angesteuert.(?) Das macht nach
der Konensatoraufladeformel(mit t/tau=2) 30us pro Flanke, wo der FET
neben den Leitverlusten noch Schaltverluste erzeugt. Eine
Treiberschaltung die schneller durchschaltet, ist hier sinnvoll.
Was die Frequenz der PWM angeht so ist die nicht beliebig und 250Hz viel
zu wenig.
Sie muss mindestens so hoch sein, dass die Statorinduktivität des Motors
es schafft den Strom durch Motor und Freilaufdiodde für die längste
mögliche "Aus"-Phase weiterfließen zu lassen. Wenn der Strom
zwichenzeitlich auf Null geht, gelten die einfachen Regeln für PWM
leider nicht mehr.
Da du ein Oszi hast, kannst du das messen.
Mein Vorschlag für weiteres Vorgehen:
Einen FET-Treiber einbauen.
Dein Testprogramm mit 50/50-Tastverhältnis laden und mit 20KHz anfangen.
Dabei gleichzeitig den absoluten Strom mit dem Oszi durch den Motor
messen. Die Frequenz solange erhöhen, bis der kleinste Wert des Stromes
höher ist als ca. 70% des durchschnittlichen Stromes (=> Bild).
Sind so Daumenwerte. Je höher die Frequenz desto geringer die
Stromwelligkeit, aber auch desto höher die Schaltverluste des FET. Da
muss man einen Kompromiss finden.
Jetzt ein Testprogramm mit dem kleinsten gewünschten Tastverhältnis
laden und schauen, ob der Strom auch da die ganze Zeit größer als Null
bleibt.
Falls nicht: Wieder die Frequenz erhöhen.
Bastler
Das Betreiben von Gleichstrom-Motoren mit Permanentmagneten durch PWM
macht auf Dauer die Magneten "weich" d.h. deren Magnetfeld wird immer
schwächer und sie werden unbrauchbar.
Wenn es denn unbedingt PWM sein muß: Setze einen bipolaren Transistor
als
Leistungsglied ein, Du ersparst Dir den FET-Ärger und die Uce davon
reißt es hier auch nicht raus.
Hochachtungsvoll
Herbert von Caravan
Danke für die Warnung! Der Gleichstrommotor darf auf keine Fall dadurch
schaden nehmen (er ist in ein 600EUR teurem Gerät integriert). Wie kann
ich ihn sonst digital regeln ohne den Dauermagneten zu zerstören? Mit
einem 10Ohm Widerstand klappt das Manuell ganz gut, aber wie macht man
sowas digital ohne dem Motor zu schaden?
Welcher bipolare Transistor würde sich denn hier eignen für die 1-2A?
Ich dachte, sowas würde man generell nur mit MosFETs machen...
zu Bastler: Den Strom am Motors/der Schaltung beobachte ich eh die
ganze Zeit am Labornetzgerät. Wie soll ich mit dem Oszi den Strom
messen? Dazu bräuchte ich noch einen (ohmschen/linearen) Widerstand?
Wieso steigt der 'absolute' Strom mit der Frequenz (und wieso 70% des
Normalwertes), aber nicht die Drehzahl/Motorleistung? ratlos. Da das
Tastverhältnis doch gleich bleibt, müsste es der durchschnittliche Strom
nicht auch (sofern die Freilaufdiode schnell genug den Induktionsstrom
abbaut)?
"Das Betreiben von Gleichstrom-Motoren mit Permanentmagneten durch PWM
macht auf Dauer die Magneten "weich"... "
Jo, das ist richtig, wenn der Stromrippel zu groß wird passiert das mehr
oder weniger schnell. Das spricht wieder für eine hohe Schaltfrequenz.
Was m.E. noch schlimmer ist, ist wenn die Motoren durch unzureichende
Kühlung
zu warm werden.
"Dazu bräuchte ich noch einen (ohmschen/linearen) Widerstand?"
Entweder den oder eine Strommesszange.
"sofern die Freilaufdiode schnell genug den Induktionsstrom abbaut..."
Genau das ist der Punkt: Um den Motor sauber zu regeln soll der Strom
nicht auf Null abgebaut werden!
Er soll vielmehr um einen Mittelwert herumrippeln, wie auf dem Bild.
Vorweg: Mit PWM steuert man die durchschnittliche Spannung über dem
Motor, nicht den Strom!
"Wieso steigt der 'absolute' Strom mit der Frequenz?"
Wenn sich deine Schaltung nicht im "kontinuierlichen Leitbetrieb"
befindet (d.h. die PWM-Frequenz zu niedrig ist) wird der Strom durch
deinen Motor während der Freilaufphase auf Null zurückgehen, bis der FET
wieder einschaltet.
Damit der Motor sauber steuerbar ist, sollte das nicht passieren und die
PWM-Frequenz so hoch sein, dass der Strom in der Freilaufphase nicht
zurück auf Null kommt.
Alternativ zur Erhöhung der Frequenz kann man eine Spule in Reihe zum
Motor schalten und so die Statorinduktivität künstlich vergrößern.
Bastler