PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Motor bremsen (brauche hilfe bei pwm)



goara
24.06.2007, 20:29
Hallo..
habe ein problem, und zwar schwingt ein gelenk durch das nahclafuen des motors imer um ca 15 grad ueber... soll aber genau postionieren..
der motor wird betrieben ueber einen L298
angeblich kann man ja bremsen indem man beide inputs also beide drehrichtungen auf 1 setzt.. da passiert aber gar nichts...
wies jemand ob das so gehn sollte... (kanns vieicht an den freilaufdioden leigen ( sind bis jetz keine schottkys?)

alternativ hatte ich mir ueberlegt noch ne extra bremse ienzubauen.. zb nen relais das den motor einfahc kurzschliesst. relais is aber shclecht wegen dem funke, was koennte man dafuer nehmen??

allerdings waer mir die lösung nur mit dem motortreiber lieber...

danke schon mal...

franzl
24.06.2007, 22:23
hi,
also dass mit beide pins auf 1 müsst normal schon klappen. Kann sein dass es an den Dioden liegt, einfach mal austauschen.
Mfg franz

recycle
24.06.2007, 22:48
angeblich kann man ja bremsen indem man beide inputs also beide drehrichtungen auf 1 setzt.. da passiert aber gar nichts...

Könnte es sein, dass du einfach nur die Bremswirkung deines Motors überschätzt?
Durch Kurzschliessen kannst du ihn bremsen, aber nicht blockeren.
Das soll heissen es ist dann wesentlich scherer den Motor zu drehen, aber mit genug Kraft kann man ihn immer noch drehen.

Stell den Motor doch einfach mal über enable ab und dann dreh in einmal im Bremszustand und einmal im Fahrtzustand ein Stück mit der Hand. Spürst du da einen Unterschied?

Yossarian
24.06.2007, 23:18
Hallo
Du könntest den Motor auch kurzzeitig umpolen.

Mit freundlichen Grüßen
Benno

goara
24.06.2007, 23:34
also wenn ich einfach zum bremsen die drähte zusammen heb, dann bremst er ganz stark, steht fast sofort, beim schalten auf bremsen passiert das nicht..
kurzeitig umpolen hatte ich auch ueberlegt, nur da hab ich dann auch nicht die haltekraft wenn er stillsteht.. und so hinundherzucken wie servos mag ich nicht...

sigo
24.06.2007, 23:47
Hi,

ein Motor entwickelt keine Haltekraft, wenn man ihn kurzschließt, da ja keine Spannung induziert wird.

Normalerweise benutzt man zum dynamischen positionieren einen sog. 4-Quadranten-(Positions-)-Regler mit PID-Regler. Der regelt bei richtiger Parametrierung automatische die Lage aus, auch wenn Kräfte auf das Gelenk wirken.

Wenn du keinen Regler einsetzt, und dein Getriebe genügend Selbsthemmung hat, kannst du evtl. vor Erreichen der Endposition die Drehzahl auf ca. 10-20% reduzieren und dann auf deiner Position stoppen. Da der Bremsweg proportional zu v² (also n²) ist, wird dein Überschwinden deutlich kleiner.

Frage:
Woher bekommst du die Position?
Arbeitest du mit einem Regler?

Sigo

goara
25.06.2007, 00:49
@ sigo
die position kommt ueber ein 10 gang poti, das an einer schnellerdrehenden achse im getreibe ist... ist ungefähr auf ein grad genau, das reicht mir..
das mit dem langsam fahren hatte ich auch ueberlegt.. aber zusätzlich dann noch bremsen wär schöner..
klar haltekraft hat er keine, aber durch die starke untersetzung dreht sich der motor shcon sehr shcnell innen wenn man vorne nur ganz leicht dreht, das ist dann fast wie halten...

radbruch
25.06.2007, 11:51
Vielleicht ein Schneckengetriebe einsetzen, das ist selbsthemmend. Und zum Stoppen kurz Gegenstrom geben, aber vorsichtig, denn die Stromspitzen sind dann recht hoch.

shaun
25.06.2007, 12:40
Der Unterschied in der Bremswirkung zwischen Kurzschluss und L298 lässt sich vermutlich durch die bipolaren Transistoren erklären, der vermeintliche Kurzschluss lässt immer noch 1,5-2V am Motor stehen, da ist die Bremswirkung minimal. Antiserielle MOSFETs mit niedrigem Rds(on) wären da wohl die bessere Wahl.

goara
25.06.2007, 13:55
@ shaun.. das hoert sich gut an... kannst mir da irgendne typenbezeichnung fuer nennen??

goara
25.06.2007, 15:51
haette noch ne frage zu der pwm... kann ich dem port irgendwie sagen das er immer an und ausgehnen soll in bestimmten abständen?
weil wenn ich das mit ner schleife mach in meinem programm dann is das zu langsam, sieht man richtig wie er immer an und aus geht.. das bringt wenig...
bzw mein rnmega2560 hat auch pwm kanäle.. wie benutz ich die denn ??

sigo
25.06.2007, 20:47
unbeidngt die PWM - Kanäle benutzen. Dafür gibt es sicher genügend Code-Schnippel. Einfach mal die Hilfe deiner Entwicklungsumgebung bemühen..

Anstatt des L298 kannst du z.B. einen L6205 nehmen. Der arbeitet mit MOSFET-Brücken. Nennstrom 2,8A. Man kann auch beide Brücken parallelschalten und hat dann 5,6A. Wichtig zu beachten ist, dass der L6205 im Gegensatz zum L298 erst ab ca. 10-12V arbeitet, mit einer externen Versorgung für die MOSFETtreiber auch ab ca. 8V.
Ansonsten ist das Teil echt super. Ein Kühlkörper ist nicht notwendig, da eben nicht 1,5-2 V an den Darlingtons abfallen.
Wenn du nur einen Motor betreibst, kannst du auch den L6202 nehmen, der enthält im Prinzip die gleichen MOSFETs, jedoch nur 1 Brücke und nur für 1,5A. Dafür ist er etwas billiger.

Sigo

pongi
25.06.2007, 20:57
Für PWM-Tutorial siehe mikrocontroller.net.
Gibts für Assembly und AVR-GCC.

goara
25.06.2007, 21:04
wegen dem pwm hab ich hier im wiki eigentlich shcon n gutes tutrial gefunden: https://roboternetz.de/wissen/index.php/Bascom_und_PWM
mir ist nur nicht ganz klar welche ausgänge ich fuer die pwm nehmen kann und welchen timer ich dann nehmen muss...
habe ein rnmega2560
sind das immer die ports wo was mit OC dransteht zb oc1a ??
das waere z.b. pb5 auf pin 24 ?
waer das dann so korrekt? :


Config Pinb.5 = Output
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale = 1

Do
Compare1a = 200
Loop

End

oder kann ich auch andere ports verwenden und andere timer ?
und wenn ich compare1.a mach sind dann alle a ports pwms oder wie sag ich welcher port genommen werden soll ??
edit:
so jetz hab ichs hinbekommen.. nachdem ich 2 stunden datenblatt gelesen hab..
alleridngs is mit immer noch nick klar warum ich den timer nicht enablen muss??