Forum: Analoge Elektronik und Schaltungstechnik Motoransteuerung mit mosfet


von Dagmar Gertz (Gast)


Lesenswert?

Hallo zusammen, ich bin in der Elektronik nicht sooo bewandert und muss 
für die Schule eine Ansteuerung für Gleichstrom-Motoren mittels 8051- 
Controler zusammenbruzzeln, möglichst mit Sanftanlauf.
Habe gehört, soll am besten mit mosfets funktionieren (mit möglichst 
geringem Aufwand). Hat jemand ein Schaltbild o. ä. und kann mir 
weiterhelfen ???

24 V Motoren, Stromaufnahme ca. 2 Ampere

von wolli_r (Gast)


Lesenswert?

Hi,
empfehle Dir den L298, das geht am einfachsten, vor allem wenn der Motor 
in 2 Richtungen drehen soll.
Für Sanftanlauf programmierst Du in dem Fall eine PWM Steuerung.
Aber auch dafür gibts wieder einen passenden Treiber:
LM18200 (ist aber komplexer)


mfg wolli_r (http://www.tec-shop.de)

von Dagmar Gertz (Gast)


Lesenswert?

Ja, prima,Danke für die Antwort! dann werd ich mich mal auf die Suche 
danach machen.
Zu der PWM- Steuerung hab ich auch schon was gefunden...
Gruss Daggi

von Michael (Gast)


Lesenswert?

Hallo Dagmar,

wenn Du nur einen sanften Anlauf eines DC-Motors brauchst und keine 
weitere Steuerung der Drehzahl, kannst Du durchaus auch einen MOSFET 
(z.B. BUZ11) nehmen und diesen auch direkt mit 5V-Pegeln ansteuern 
(siehe Datenblatt). Da die 8051-MPUs aber passive Pullups an den Ports 
haben, die beim Einschalten zudem schon aktiv sind, würde ein 
angeschlossener MOSFET gleich durchgesteuert und der Motor 'volles Rohr' 
loslaufen. Daher muß das Signal vom Port-Pin mit einem NPN-Transistor 
(z.B. BC337) invertiert werden: Emitter an Masse, Basis an den Port und 
der Kollektor ans Gate. Der Kollektor wird dann noch mit einem Pullup 
(z.B. 10kOhm nach +24V) versehen. Beim Einschalten ist der MOSFET nun 
gesperrt und das Gate wird mit 24V angesteuert, was dann auch die 
Gemüter beruhigen wird, denen 5V am Gate zu wenig erscheinen. Die 
Freilaufdiode parallel zum Motor nicht vergessen! Soweit die Hardware.

Für einen sanften Anlauf muß ledigleich ein PWM-Signal von ca. 30% -> 
100% erzeugt werden, um Anlaufstromspitzen des Motors zu vermeiden. Das 
kann dann auch per Software ohne Interrupts erledigt werden, indem in 
einer Schleife der Port-Pin abhängig von einem Schwellwert 
ein-ausgeschaltet wird. Der Schwellwert beginnt bei ca. 30% und wird 
nach jedem Durchlauf um +1 erhöht, sodaß am Ende der Port-Pin 
eingeschaltet bleibt. Bei jedem Schleifendurchlauf wird noch eine 
Verzögerungsschleife ausgeführt, damit die Anlaufphase des Motors etwa 
0,3 Sekunden beträgt: Laufzeit abhängig vom Compiler, ausprobieren !
Beim Ausschalten regelt der Motor den Auslauf selber (mechanische 
Trägheit des Antriebs). Soll der Motor beim Ausschalten jedoch auch 
Bremsen, dann muß der Motor unbedingt mit einer aktiven Treiberstufe 
angesteuert werden: L298 oder L6203, den ich immer dafür verwende. Es 
ist ein Irrtum, allein mit einem PWM-gesteuerten Transistor die Drehzahl 
regeln zu können. Ein Motor ist zunächst ein Motor und dann ein 
Generator, der durch seine EMK mit die Drehzahl bestimmt. Soweit.

Michael

von Bernhard T (Gast)


Lesenswert?

Hallo Markus, wie ich sehe hast du sicher mehr Ahnung von der Materie 
als ich, aber kann es sein, das du im BUZ11 Datenblatt UGS max = +/-20 
Volt überlesen hast ??

von Michael (Gast)


Lesenswert?

Hallo Berhard,
mit UGSmax hast Du völlig recht; da beruhigt man die einen Gemüter und 
weckt damit die anderen Geister. Ein Widerstand 10k vom Gate nach Masse 
begrenzt die Ansteuerspannung auf 12V.
Andererseits: Dagmar wollte doch etwas bruzzeln. Ist die Spannung da 
nicht doch noch zu gering ? Vielleicht kommt ja ein feedback.

i.A. Markus

von Uwe (Gast)


Lesenswert?

Hi!
Man kann auch einen P-Kanal Mosfet(zb.IRF4905) benutzen.
Der hat S an Plus und D geht auf den Motor +. Zwischen G und S kommt ein 
R von ca.1K(zum sauberen sperren)Zwischen G und K des Treibertrans.kommt 
noch eine 12V Z-Diode und du liegst voll im Arbeitsbereich für UGSmax. 
Es hat vor allem den Vorteil das ein 1 Sinal ein 1 Signal bleibt.
Gruss Uwe

von Michael (Gast)


Lesenswert?

Hallo Uwe,
Deine Schaltung wird wohl funktionieren, hat aber viele Haken und Ösen. 
Daß ein '1'-Signal vom Port auch ein '1'-Signal an den Ausgang (Motor) 
liefert, ist beim 8051 von Nachteil, weil das Teil beim Einschalten 
sofort losläuft.
Eine Last gegen Masse zu schalten hat z.B. den Vorteil, mit einem 
Widerstand im Source-Anschluß per uP den Strom zu messen.
P-Kanal Typen sind zudem kostengünstiger.
Auch ein 10Mohm Widerstand zwischen Gate-Source sperrt einen 
Leistungs-FET 'sauber', in Anbetracht der Eingangskapazität von einigen 
nF dauert der Übergang leitend-sperrend dann aber einige Sekunden 
(geschätzt). 1kOhm sorgt für eine schnelle Abschaltzeit - und die 
Schaltzeiten sind ein generelles Problem.
Ausgehend von einem 8051, der hardwaremäßig keinen PWM-Ausgang hat, und 
wo PWM-Signale mit einigen 100Hz->kHz 'möglich' sind, reicht die 
vorgeschlagene Ansteuerung aus: Schaltverzögerungen/Schaltzeiten von 
einigen us. Einem Entwickler, der z.B. Schaltnetzteile mit FETs 
bestückt, wird sich bei der Vorstellung, einen FET passiv über 10kOhm 
anzusteueren, der Magen im Schleudergang drehen.
Leistungs-MOSFETs sollte man so schnell wie notwendig und so langsam wie 
möglich schalten lassen: massive HF-Störungen bei schnellen 
Schaltzeiten. Typische Treiber für schnelles Schalten sind z.B. TC426. 
Damit kann man aber auch Kurzwellensender bauen (ungewollt).

Wenn jemand die PWM-Ausgänge eines 80C552, oder die der AVRs oder 
anderer MPUs mit höchster Frequenz (um die 20kHz) verwenden möchte, 
empfehle ich den L6203.

Gruß Michael

von Dagmar Gertz (Gast)


Lesenswert?

Hallo Zusammen, erst mal nochmals Danke an alle, dass ihr euch mit 
meinen Problemen rumärgert ;).

Ursprünglich wollte ich (als Grob-Elektriker : )) ) den Motor mit einer 
Kurzschlussbremse per Relais bremsen. Deine Vaiante, Michael klingt da 
schon etwas eleganter. Ich soll also einen
L298, wie auch Wolli schon vorgeschlagen hat, oder L6203 benutzen! 
Bleibt da die weitere Verschaltung gleich mit NPN- Transistor und Pull- 
up Widerstand. Wie sieht´s mit PWM aus, was muss ich da machen?

Nochmals schönen Dank für Eure Hilfe!

Daggi

von Michael (Gast)


Lesenswert?

Hallo Dagmar,
wenn Du einen L6203 verwenden möchstest, brauchst Du drei kleine 
Kondensatoren (Vref, boot1, boot2) und einen Elko (min. 2,2mF) parallel 
zu +24V direkt am Treiber. Weitere Transistoren sind nicht notwendig, 
aber ein pullup-Widerstand (10k) von +5 zum Ausgangsport stellt sicher, 
daß der Eingang vom Treiber einen definierten Ruhepegel hat, wenn der uP 
nicht gesteckt ist. Ich würde beide Ein- und Ausgänge vom L6203 
zusammenschalten; eine Kühlung wird nicht nötig sein. Der Motor wird mit 
dem Treiberausgang (out1, out2) auf der einen Seite und mit +24V auf der 
anderen Seite angeschlossen. Vielleicht noch einen Schalter in die 
Zuleitung zum Motor einbauen, um bei 'unvorhergesehenen 
Betriebszuständen' den Motor hilfsweise stoppen zu können. Eine 
Sicherung F10A zum Netzteil schadet auch nicht !

Zu PWM findest Du in der Codesammlung 'PWM per Software' ein 
Beispielprogramm in C. Beim 8051 nimmt man einen 8-bit Timer ohne 
Vorteiler (z.B. TH0), der mit jedem Überlauf per Interrupt die 
PWM-Routine aufruft: bei 12MHz Takt gibt das eine Interruptfrequenz von 
3,9kHz. Probier zuerst zehn Stufen, wobei der Motor mit 390Hz getaktet 
wird. Vereinfacht sieht das so aus (bei Keilemann&Söhne):

#define STUFEN 10
char schritt, wert = STUFEN/3;   /* 30% als Test */

void init_th0()
{
TR1 = 1;  /* TH0 an Takt/12 */
ET1 = 1;  /* TF1-Flag erzeugt interrupt */
EA = 1;   /* alle Interrupts freigeben */
}

void th0_int() interrupt 3 /* TF1-int */
{
if(wert > schritt) PORT.BIT = 0; /* ein (neg. Logik) */
else PORT.BIT = 1;               /* Motor aus */
if(++schritt >= STUFEN) schritt=0; /* von vorne */
}

Den 8051 habe ich seit Jahren nicht mehr verwendet; ich hoffe, die 
Routinen funktionieren dennoch. Ich bin jetzt am Ende, jetzt mußt Du 
selber 'ran. Probiere erst die Software, kostet erstmal kein Geld - nur 
Zeit.

Der 8051 war Deine Vorgabe/Wahl. Wenn hier jemand vorschlägt: 'nimm doch 
einen AVR', dann würde ich dem uneigeschränkt zustimmen. Aber das ist 
eine andere Sache und nicht mehr die Meinige.

Gruß Michael

von Uwe (Gast)


Lesenswert?

Hi!
Ist zwar jetzt etwas daneben aber was soll's.

8051 hat beim einschalten Ausgänge die High sind???
Einen gepullten Input würde ich ja noch verstehen.
Wenn dem so ist nehme ich die niemals in die Hand.
Die Ansteuerung ist übrigens sooo unsauber nicht, sie geht bis ca. 30KHz 
ohne Probl. Mit einem ordentlichen Treiber sind 300KHz Rechteck bei 10 A 
mit einem Power-Mos
durchaus beherrschbar. Ich kann das aber auch nur behaupten weil ich 
gerade erst Versuche zu Schaltreglern hinter mir habe. Ach ja. Strom 
kann man auch in der Masseleitung des Motors messen :)

Der L6203 scheint aber eine recht ordentliche Lösung zu sein.
Gruss Uwe

von Peter D. (peda)


Lesenswert?

Hallo Uwe,

das mit High nach Reset hat schon seinen Sinn:

Wenn Pins als Eingänge verwendet werden, fließt so nur der schwache 
Strom durch die Pull-Up-Widerstände von wenigen µA.

Wenn die Pins dagegen auf low gesetzt würden, extern aber high-Pegel 
anliegt, ist das quasi ein Kurzschluß und etwa 50mA würden fließen 
müssen.

Für das Schalten von Geräten muß man eben nur darauf achten, das die 
Logik invertiert ist, d.h. high = aus, low = an.


Für die Ansteuerung eines Motors mit Richtungsänderung benötigt man 
entweder eine Vollbrücke oder man nimmt einen MOSFET und Relais zur 
Richtungsumschaltung.

Der L298 ist mit Vorsicht zu genießen, der hat weder Freilaufdioden noch 
Überlastschutz. Ist halt schon ziemlich alt.
Ich hab schon Dutzende davon qualmen gesehen, bis ich schließlich eine 
Strombegrenzerschaltung in die 24V-Versorgung eingebaut habe.


Falls man die PWM nicht in Software machen will, kann man auch einen 
T89C51RD2 nehmen, der hat 5 * 8-bit-PWM in Hardware (PCA).


Peter

von Uwe (Gast)


Lesenswert?

Hi!
@Peter
gepullte Eingänge verstehe ich ja auch, nur bei Michael klang das so als 
wären da Ausgänge die High bringen.
Da war ich doch glatt von den Socken. Meine Treiber sind übrigens 
generell mit 1K nach GND gelegt schon um solche Pull Up "Ausgänge" zu 
behindern. Oder sind die 8051 Pull Up's <10K ?
Gruss Uwe

von Peter (Gast)


Lesenswert?

> Der L298 ist mit Vorsicht zu genießen, der hat weder Freilaufdioden noch
> Überlastschutz. Ist halt schon ziemlich alt.

Da gibt es aber auch (schon lange) den L298D mit eingebauten 
Freilaufdioden.

> Ich hab schon Dutzende davon qualmen gesehen, bis ich schließlich eine
> Strombegrenzerschaltung in die 24V-Versorgung eingebaut habe.
Ist ja interessant, wo der L293 sogar einen eingebauten thermischen 
Überlastschutz hat. Verrat uns doch mal wie man den austricksen kann ;-)

> Falls man die PWM nicht in Software machen will, kann man auch einen
> T89C51RD2 nehmen, der hat 5 * 8-bit-PWM in Hardware (PCA).
Wieso in Software? Die AVRs machen das doch auch hardwaremässig, oder?

Gruss,

Peter

von Peter (Gast)


Lesenswert?

Sorry, hab den L298 mit dem L293 verwechselt (schäm)

mit :-) Gruss,

Peter

PS: Also der L293D ist empfehlenswert, damit habe ich auch schon 
gearbeitet. Der ist relativ unkaputtbar, da er eingebaute Freilaufdioden 
und einen thermischen Überlastschutz hat.

von Peter D. (peda)


Lesenswert?

Hallo Uwe,

mit 1k nach GND ist ein 8051 aber dauerhaft auf Low.


Hallo Peter,

Es soll doch ein 8051 sein. Und der T89C51RD2 ist ein 8051-Derivat und 
kein AVR.


Der L298 hat deshalb immer gequalmt, weil der Motor mit einem 
D-SUB-25-Stecker angeschlossen wurde, und das gab immer Masseschlüsse 
beim Reinstecken. Das war aber nicht auf meinem Mist gewachsen. Ich hab 
dann nur die Strombegrenzerstufe nachgerüstet.


Peter

von Uwe (Gast)


Lesenswert?

Hi
Was!? 8051 schaffen keine 2,5mA, die kommen mir nicht auf den Tisch.
Gruss Uwe

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
Noch kein Account? Hier anmelden.