PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Roboterarm



Bionade200
06.09.2011, 20:15
Hallo,
hat jemand eine Idee wie man einen Roboterarm mittels Servos realisieren könnte?
Gesteuert sollte er über einen PIC werden.
Danke im Voraus.

eagreen
07.09.2011, 06:02
Ein bisschen unpräzise die Frage ;)

Aber ich denke wenn du das nur mit Servos machen willst wird der Arm sehr klein und sehr schwach weil du an deinen Servo ja keinen 30cm langes Armglied (Hebel!) anbringen kannst ohne extrem an Drehmoment zu verlieren.

Ich würds mit Motor+Getriebe machen

Inventor76
07.09.2011, 10:54
Guckst du z.B. hier: https://www.roboternetz.de/community/threads/52094-Mein-Robo-Projekt

Bionade200
07.09.2011, 16:06
Hey,
danke für die Antwort.
Hauptsächlich gehts mir jedoch darum, wie man einen Servo mittels PIC (Assembler) steuern kann.

eagreen
07.09.2011, 21:29
Die meisten Servos wollen eine PWM mit bestimmter Periode und Pulslänge. Die kann aber von Typ zu Typ unterschiedlich sein.
Hier is recht gut erklärt http://www.rn-wissen.de/index.php/Servos

Bionade200
08.09.2011, 14:57
Ja, ich weiß das ich die 20ms Periodendauer und die 0,5-2ms Impulsbreite benötige.
ich hatte vor das ganze in Assambler zu programmieren.
Ich muss jetzt also 2 Schleifen mit jeweils den 20ms Periodendauer und den 0,5-2ms Impulsbreite in mein Programm schreiben, richtig?

eagreen
08.09.2011, 16:38
Da muss ich mehr oder weniger passen, benutze nur Atmels und programmiere in C....

Keine ahnung obs beim PIC auch so geht, aber beim Atmel muss man nur Timer richtig Parametrieren und hat seine fertige PWM am Ausgangspin.
Ansonsten brauchst du ne Software-PWM, vom Ablaufschema in etwa so:

Einen Timer brauchst du auf jeden fall, damit in einem immer gleichen Takt ein Interrupt generiert wird.
2 Variablen, ich nenn sie mal counter und PWM.
Die Interruptroutine enthält:


counter < PWM ? wenn ja PWMpin = 1
wenn nicht PWMpin = 0
counter um 1 inkrementieren
wenn counter = 200 dann counter = 0


Den Vorteiler des Timers so wählen das er zum zählen von 0 bis counter (in meinem beispiel 200, das ist dann auch die Auflösung der PWM) 20 ms benötigt.
variable PWM entspricht der ON-Time, für die 0,5ms wären das (wenn ich mich nicht verrechnet habe) PWM=5 etc.

Die richtige mischung aus Timer Prescaler und counter maximum kann man sich rausrechnen. Mit mehreren PWM-Variablen und deren abfrage in der Interruptroutine kannst du auch mehrere Signale an verschiedenen Pins ausgeben.
ABER:
Software PWM ist sehr rechenintensiv, je nach Geschwindigkeit deines uC wird dein signal früher oder später zittrig und ungenau, jenachdem was du ihn noch alles machen lassen willst.

Hoffe ich konnte helfen :)

Bionade200
08.09.2011, 16:48
ok danke erstmal. Dann versuch ich mal mein Glück :)