PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : WinAVR / Servos ansteuern



Siggi83
19.02.2005, 00:53
Hallo zusammen, schlage mich schon seit ein paar Stunden mit dem Thema rum und dachte jetzt wird es doch Zeit mich diesem Forum mal wieder anzuvertrauen...

folgendes Problem:

Habe mich entschlossen für meinen Roboter Servos als Motoren zu verwenden. Sind ziemlich günstig und haben ja gleich ein Getriebe und ne kompakte Bauform.
Habe die schon umgebaut, sprich das Poti duch zwei gleich Widerstände ersetzt und die 360° Begrenzung entfernt.

Habe ja nun die Möglichkeit den Servo in zwei Richtungen drehen zu lassen, aber der will immer nur im Uhrzeigersinn...

Habe als Test ein Impuls mit 1ms Länge erzeugt und nach 20ms den 2ten. Danach einen weiteren Versuch mit 2ms. Eigentlich müssten sich der Servo doch dann in die andere Richtung drehen, oder?

Hat mir jemand vielleicht einen Tipp was ich falsch gemacht habe? Irgendwas übersehen? Wäre auch über einen kurzen Codeschnipsel sehr dankbar...

WinAVR hat ja keine fertigen Funktionen so wie Bascom die das erleichtern könnten, oder?

gruss Siggi

eFFex
19.02.2005, 07:52
verhalten sich modifizierte Servos nciht genau wie normale Gleichstrommotoren?
probier mal die Anschlußkabel zu vertauschen und schau, was dann passiert.

Siggi83
19.02.2005, 10:39
Eigentlich nicht, oder doch?

Soweit ich das im Internet recherchiert habe, kann ich den umgebauten Servo doch ganz normal ansteueren und in beide Richtungen drehen lassen. Hab ja schließlich nicht die Elektronik ausgebaut, sondern nur die Mittelstellung des Potis imitiert (einfacher Spannungsteiler mit zwei gleichen Widerständen).
Falls alle Stricke reißen werd ich mir wohl nächste Woche beim Elektronikhändler meines Vertrauens ein paar L293 kaufen. Dies sollte aber nur die Notlösung sein!
Bin immer noch dankbar über jeden Tipp oder Codeschnipsel den ihr habt...

gruss Siggi

Kjion
19.02.2005, 11:04
Verstehe ich das richtig, das du nur jeweils zwei Impulse geschickt hast ?? Da dürfte das Servo nicht viel mehr machen als kurz zu zucken.

Probier mal die Impulse kontinuierlich zu senden. Ansonsten funktioniert das nicht. Die Impulslänge mit 1 bis 2 ms und die Pause dazwischen mit 20 ms stimmen schon und sollten auch funktionieren...

Notfalls könnte ich dir eine C Routine rauskramen, allerdings benutzt diese zwei Timer um das Signal zu erzeugen ( ich hab die Timer auch noch für andere Sachen benutzt ).

MfG Kjion

Siggi83
19.02.2005, 12:02
Sorry, vielleicht hab ich mich unklar ausgedrückt:

Habe die Impulse in einer Schleife von 20ms immer wiederholt. Einmal habe ich das ganze mit einer Impulsdauer von 1ms gemacht und beim nächsten Versuch mit mit einer Impulsdauer von 2ms. (Waren also zwei unterschiedliche Versuche). Hätte jetzt erwartet, so wie es die Theorie sagt, dass sich bei 1ms der Servo in die eine Richtung dreht und bei 2ms genau in die andere. Problem ist aber nun, dass sich das Ding immer in die gleiche Richtung dreht, wobei bei einer Impulsdauer von 2ms langsamer als bei 1ms.

Kann mir jemand sagen was passiert wenn ich das ganze mit einer Impulsdauer von mehr als 2ms probiere? Wollte das bis jetzt noch nicht ausprobieren, da ich nicht wusste ob mir dann etwas abraucht. Besteht hinsichtlich diesem eine Gefahr?

Werd mich heute Mittag nochmal davor sitzen und schauen ob ich in irgendeinem Punkt weiter komme...

Nach wie vor, bin ich immer noch über jeden Tipp dankbar

gruss Siggi

Kjion
19.02.2005, 14:15
Du könntest es erstmal mit einem normalen Servo probieren. Wenn es da auch nicht klappt, dann ist es sich das am Programm liegt. Nicht das es man gehackten Servo liegt...

Du kannst es auch mit einer Impulslänge von mehr als 2 ms probieren, mache Servos lassen sich mit bis zu 2,3 ms ansteuern bevor sie in die mechanischen Anschläge fahren ( die du ja aber entfernt hast ). Eigentlich sollte es aber mit 1 bis 2 ms passen. Kannst du mal per Oszilloskop dein Signal überprüfen ??

MfG Kjion

Siggi83
19.02.2005, 15:35
Gute Idee,
werd das mal abchecken und mein Oszi vom Staub befreien.

Warum bin ich eigentlich nicht selber drauf gekommen?
Machmal sieht man halt den Wald vor lauter Bäumen nicht mehr...

gruss Siggi

Siggi83
19.02.2005, 16:36
Kurzer Stand meine Bemühungen:

Mit einem "ungehackten" Servo klappt das ohne probleme mit rechts bzw. linkslauf. D.h., mein Programm stimmt wohl.

Muss wohl doch nochmal meinen Umbau begutachten...

gruss Siggi

Siggi83
22.02.2005, 13:05
](*,) Asche über mein Haupt... ](*,)

Habe den Fehler gefunden, hatte jetzt eigentlich nicht wirklich was mit WinAVR zu tun, sondern mit der Elektronik. Der Fehler lag darin, dass ich dachte zwei x-beliebige gleiche Widerstände nehmen zu können. Naja, am Wochenende kam dann die Erleuchtung...
Hab jetzt 2x 2,4k Widerstände eingebaut und nun klappt alles Prima.

gruss Siggi

Kjion
22.02.2005, 20:18
;-)
Das konnte dann natürlich nicht funktioneren. Freut mich das es jetzt geht...

MfG Kjion

LONy-TOOn
19.06.2006, 18:00
hi Siggi83,
ich versuche vergebens meinen servo zum laufen zu bringen.. ich habe einen mega8 mit 8mhz quarz.. kenne mich mit timern kaum aus...

könntest du mir vielleicht mal dein codeschnipsel schicken? vielleicht kapier ichs ja dann ;)

MfG
LONy