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
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)
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
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
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 ??
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
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
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
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
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
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
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
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
> 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
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.
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
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.