Hallo, bisher hatte ich noch keine Erfahrung in der Steuerung von Servos durch einen Miconcontroller. Ich hab jetzt jedoch mal an meinem Standartservo von Graupner ein wenig herumpropiert, und siehe da, nach einiger Zeit tüfteln, es geschafft den, dass ich den Servo in eine Richtung steuern kann. Ich habe dazu 2 der Servoleitungen an 5V bzw. 0V gehängt. Die andere Leitung an einen Port, den das Programm an - und aussteuert. Wie gesagt, das funktioniert jedoch nur in eine Richtung. Wenn ich übrigens das Kabel, der Leitung an 0V per Hand dran mach, und weg nehme, dann geht mit jedem Kontakt an 0V der Servo in die andere Richtung. Doch wie kann ich das im Programm realisieren, ich kann ja nicht 0V setzen, und rücksetzen. Wäre nett wenn mir jemand helfen könnte. Danke und schönen Gruß
Tja, der Signaleingang, der gelbe Draht, wird mit einem HCMOS angesteuert. Die Pulsbreite ist 0.8 bis 2.2ms, die Repetitionsrate ist 20ms. Die 20ms muessen nicht so genau sein, die 0.8 bis 2.2ms schon. dh die 0.8 bis 2.2ms sollten mit einem Comparecounter gemacht werden. Z
Danke für eure Hilfe bis hierher. Ich habe, da ich nicht so viel von Timern weiß, die Einstellung der Zeitabstände durch das runterzählen von Registern realisiert. Sollte ja theoretisch genau so funktioniern, oder? Wenn ich den Port 2.0, an dem die Steuerleitung des Servos hängt, für eine Breite von 1ms setzte, und dann eine Pause von 20ms einrichte, dann steuert der Servo wie gewünscht in, für meine Anwendungszwecke genau gewünschter Geschwindigkeit, langsam nach links. So wie ich das verstanden habe müsste man ja nur die zeitliche Länge, in der der Port 2.0 gesetzt ist auf 2ms verlängern, um eine Steuerung nach rechts zu erreichen, richtig? Wenn ich das jedoch mache, wiederum bei einem zeitlichen Abstand von 20ms dazwischen, dann steuert der Servo jedoch wieder nach links, und zwar in einer viel zu schnellen Geschwindigkeit. Wäre nett wenn mir da jemand eine Antwort geben könnte, was ich falsch mache.
Sebastian Feger wrote: > Wäre nett wenn mir da jemand eine Antwort geben könnte, was ich falsch > mache. Was du mal prinzipiell falsch machst: Du stellst die Frage "Warum dein Programm nicht so funkntioniert, wie du dir das vorstellst" zeigst aber dein Programm nicht her.
Hi! <für meine Anwendungszwecke genau gewünschter Geschwindigkeit, langsam <nach links. . . <und zwar in einer viel zu schnellen Geschwindigkeit. Dann stimmt mit deiner 1ms schon irgendwas nicht, weil nur noch winzige Abweichungen von Ist und Soll die Geschwindigkeit absenken. Auch im 2. Fall scheint die Zeit nicht zu passen. Wenn ich mich aber recht entsinne, gibt es auch Servos mit negativer Ansteuerung, also 1-2ms L-Flanke. Wäre allerdings eine Stolperfalle, eigentlich immer positive Flanke. Ein langsames hinlaufen zur Sollposition kannst du nur durch rampenartiges hoch/runterfahren deines Sollwertes erreichen. Dein Grundproblem wird aber vermutlich die Flankenerzeugung überhaupt sein. Da du aber nicht sagst wie du deine Programme erstellst kann dir nicht geholfen werden. MFG Uwe
Ok, im Folgenden mein Programm: include REG_8252.pdf code at 0 mov r1,#1 mov r2,#2 mov r3,#40 mov r4,#250 mov r5,#2 mov r6,#3 mov r7,#4 start: mov a,p1 anl a,r1 cjne a,#1,lioderre sjmp mitte lioderre: mov a,p1 anl a,r2 cjne a,#2,links sjmp rechts links: setb p2.0 acall signalhaltenli clr p2.0 acall pausezwanzig sjmp links rechts: setb p2.0 acall signalhaltenre clr p2.0 acall pausezwanzig sjmp rechts mitte: setb p2.0 acall signalhaltenmitte clr p2.0 acall pausezwanzig sjmp mitte signalhaltenli: djnz r4,signalhaltenli mov r4,#250 djnz r5,signalhaltenli mov r5,#2 ret signalhaltenre: djnz r4,signalhaltenre mov r4,#250 djnz r7,signalhaltenre mov r7,#4 ret signalhaltenmitte: djnz r4,signalhaltenmitte mov r4,#250 djnz r6,signalhaltenmitte mov r6,#3 ret pausezwanzig: djnz r4,pausezwanzig mov r4,#250 djnz r3,pausezwanzig mov r3,40 ret end
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.