PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Servosteuerung fast fertig



Smi
07.05.2005, 02:13
Hat mal wieder Zeit mich um mein lieblingsobjekt zu kümmern.
Ich will möglichst den ds20 kopieren zumindest die softwäre.
Mir ist es schon gelungen eine genauigkeit von 20,009 ms bei der schleife zu ereichen.Die Servos haben leider wegen den 4 MHZ bloß 100 stellmöglichkeiten aber das sind schon 1,8 grad genauigkeit bei 180 grad drehungen.von 0,650 bis 2,750 mit 21 µs abständen bei 3 servos zur zeit.
Genau wie ein schrittmotor in vollschrittbetrieb

Idee ist es einen pic 8pin 3 servos eines beins zu steuern der die befehle vom master erhält.Welches bussystem ist gut????

Mir schwebt rs232 vor da es kurz ist und bloß 2 pins brauch.3 gahen auch noch für spi oder iic.find aber das die com den chip ausbremst da ich max 15-18 ms zeit hab Daten zu empfangen !!

mcs
07.05.2005, 12:37
Hi!

Hab auch schon versucht eine Servo-Steuerung auf Basis des PIC12F675 zu proggen. Das Problem war bei mir auch die com mit dem master. Ich hab dann ein eigenes Protokoll gebaut, was die Daten wie bei RS232 überträgt. Allerdings war meine Steuerung lang nicht so genau wie deine, sodass ich die Zeiten nicht so genau eingehalten hab.
Bei meiner Lösung legt der master die sendeleitung für die dauer eines Schleifendurchlaufes auf 1. Dies erkennt der Controller und wechselt in den Empfangsmodus. Dabei zieht der Controller die Empfangsleitung auf 1, was wiederum für den Master heißt: du darsft senden. der master sendet also die Pos.daten an den Controller und der Controller übernimmt sie und wechselt in den Schleifenmodus. Beide müssen natürlich die Leitungen wieder auf 0 setzten, sonst hängt das ganze.
Hoffe das hat geholfen, Matthias

Smi
07.05.2005, 13:51
Hatte noch vor die ganz sache noch genauer zu machen mit 8mhz aber beim kleinen lieber 4.
Ich Hab mir jetzt zuhause auch ein protokoll uberlegt.

Eine mischung von spi und iwire mit einer cs leitung die gleichzeitig Clock ist.Nach neinem überschlägen mußten die 16 ms ausreichen mehr als 3 byte zu senden.bro bit 4µs

Smi
07.05.2005, 14:08
Ach ja ich hab den INTERUPT nicht zum SERVOSTEUERN genommen.
Vorher hat ich 30 STellung weil der interupt nicht aller 0,015 µs alles abarbeiten kann.

Smi
19.05.2005, 01:32
So das progg läuft jetzt auf meinem 12f683 Fehlerfrei.Ich haß0e die Pins bei dem kleinen.Hab zuerst GPIO und TRISIO Vertauscht und mich gewundert wieso error.Naja die Routienen für die übertragung ist auch schon fertig und lauft 15ms lang in den 20ms Servo Pulsen.Die 3 Byte sind in 180µs übertragen.Jetzt kommen die letzten testläufe und verbesserungen aber werde bals ergebnisse presentieren können.

Smi
19.05.2005, 23:53
das ganze ist fas so weit muß die übertragung nur noch syncronisieren das sie nicht so mastertaktabhängig (geiles wort ne) ist dachte so steuerbar von 2 mhz bis open end.spiel auch noch mit dem verbleibenden Pin I oder O das ist hier die frage. Eine Rückmeldung des Beinkontacktes
für das ich das progge wäre schön aber eine sende routine zu implementieren wird knapp.kann mir bis jetzt ja noch alles vorstellen aber wie lange genau die empfangsroutine brauch weiß ich nicht 100% kann der softwäresimulator nicht und hardwäredebug is nicht.Schade.
noch ein Servo währe kein Problem.

@Mahtias
Hattest du nur 1 Richtung oder 2 Für die daten.

mcs
20.05.2005, 15:27
Theoretisch 2, ich hab allerdings nur eine benutzt

mfG Matthias

22.05.2005, 22:53
ich hab jetzt schon versucht einen 0ne wire slave daraus zu machen bis jetzt allerdings ohne erfolg.Hab da 2 pins noch frei!

Smi
31.05.2005, 19:44
So die One Wire Kom. in eine richtung steht.
Kann alle 3 servos genau stellen und die anderen werden nicht beeinflüßt.
Sas One Wire Timing stimmt. Reset Byte1 Reset Byte2 Reset Byte3.
Ein weiterer servo wähe eine sache von 5 min.Die sache ansich steht schon und ich poste sie zum testen.Was jetzt noch in meiner vorstellung liegt.
Das ganze auf 8 statt 4 MHz obwohl ausreichend
Die Komonikation in die andere richtung fehlt noch als kollisionsabfrage des beines.Ein 5ter servo geht leider nicht da pin3 bloß reset oder input sein kann aber ich will ja input

Smi
31.05.2005, 19:53
So wie verschprochen die asm der servosteuerung.
Die Smiwire_Slave.asm in *.inc umbenennen und kompelieren.
ist fur den 12f683.
One wire geht orginal

Reset Byte Reset Byte Reste Byte

Pinbelegung steht in der asm datei.