PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AX-12+ Servo ansteuerung



Sven04
20.08.2009, 22:31
Hi Leute,


ich versuche die letzte Zeit einen AX.-12+ Servo anzusteuern leider ohne Erfolg. Ich nutze die uart library von Peter Fleury jedoch bewegt sich der Servos kein Stück.
Zum testen habe ich die TXD Leitung des Atmega32 auf die Data Leitung des AX-12 gehängt und ein Example aus dem AX-12 Datenblatt benutzt, dass die LED einschalten soll. Hat jemand Erfahrung mit dem AX-12 oder könnt ihr mir ein Tipp geben, warum dies nicht gehen könnte.



int main(void) {

uart_init(UART_BAUD_Select(1000000UL, F_CPU));

sei();


uart_putc(0xff);
uart_putc(0xff);
uart_putc(0xfe);
uart_putc(0x05);
uart_putc(0x03);
uart_putc(0x18);
uart_putc(0x01);
uart_putc(0x01);
uart_putc(0xdd);


return 0;
}



Gruß,
Sven

radbruch
20.08.2009, 23:05
Hallo

Mach mal ein while(1); vor das return 0; denn sonst wird main() beendet und der Mega32 stürzt ins Nirwana bevor der USART etwas senden kann.

Wenn das nicht hilft solltest du uns zumindest den Link zum Datenblatt des Servos anbieten...

Gruß

mic

Sven04
20.08.2009, 23:15
Die while schleife hatte ich schon davor aber nochmal versucht leider ohne Erfolg.

Das Datenblatt hatte ich ganz vergessen, hier der Link: http://www.crustcrawler.com/products/bioloid/docs/AX-12.pdf

radbruch
20.08.2009, 23:35
Danke :) Ich hab' keine Ahnung wieviele Datenblätter ich inzwischen schon gesucht habe.

Schau dir mal das Anschlußbeispiel auf Seite 7 an. Ich habe mir das Protokoll noch nicht angeschaut, aber ich befürchte, du mußt senden UND empfangen können. Das dürfte nur am TXD-Pin schwierig sein. Allerdings kenne ich die Fleury-Lib nicht, möglicherweise kann die eine Halbduplex (-immer nur einer sendet) -Funktion. Da es ein serieller Bus ist werden die Servos wohl eigene IDs haben. Ich muss mich erst etwas einlesen, das scheinen mir recht exotische Servos zu sein.

Gruß

mic

[Edit]Ojeoje. Du bist ja Profi in Sachen Servo und serielle Busse. Ich bezweifle, dass ich etwas finde was du nicht erkennst :(

HeXPloreR
28.08.2009, 15:05
Hi zusammen,

da ich mich auch für das programmseitige Ansprechen der AX-12 Servos interessiere, frage ich einfach mal nach ob es schon neue Erkenntnise gibt?

Hast Du einen 74HC126D zwischen RXD und TXD + steuerleitungen gesetzt- oder kann man das halfduplex auch Software seitig beibringen?
( Bildsuche: CM-5 Schematic ) Mega128A - TTL Level half duplex.

Hast du GND des Mega32 mit GND des AX-12 verbunden?
- wenn nicht, dann solltest du das tun. Ich habe zwie LiPO's einen für den CM-5 Controller und einen für die Servos ging auch erst nicht weil ich Masse nicht verbundne hatte ;)

Da die Servos in der Tat jeweils eine eigene ID habe, sollte entweder ein Broadcastbefehl(ID 254) zum LEDRegister(25) gesendet werde, oder die ServoID pauschal über einen Broadcastbefehl in eine bekannte ID geändert werden oder die ID des Servos schon bekannt sein.
Der Broadcastbefehl spricht alle ID's im Netzwerk an, aber erwartet keine Bestätigung eines Servos.

Datenblatt des 74HC126D:
http://www.datasheetcatalog.org/datasheet2/b/0fwdz0ea6ciheapg4rlrua0lycfy.pdf

Link in Robosavy Forum für Bioloid's:
http://robosavvy.com/forum/viewforum.php?f=5

Sonst hab ich nur noch ne Lib - dazu kann ich Dir aber auch sonst nichts weiter sagen:
http://www.dualpob.com/docs/html/files.html

Vielleicht hilf Dir das weiter falls Du es noch nicht besucht hast.



mfg

Sven04
28.08.2009, 23:23
HI Hexplorer,

der 74HC126 ist verbaut, wie es in der Schaltung der Doku beschrieben ist. Es sollte auch softwareseitig machbar sein, doch wollte ich dies nicht über dies Software lösen.
Auch GND ist verbunden und sollte funktionieren. Hba glaub ich auch schon jedes Forum abgesucht, indem ich was darüber gefunden habe. Wenn du dich auch für die Ansteuerung interessierst, könne wir vllt auch zusammen daran entwickeln?


Mfg

HeXPloreR
29.08.2009, 09:21
Hi Sven04,

es gibt hier mindestens einen User der es schon gemacht hat über einen fremden Controller (AVR32) ca. 18St AX-12 anzusteuern und zumindest je eine Soll-Servopositionen anzufahren. Von ihm weiß ich auch das dieser 74HC126 da mit ran muß und nicht schon im MCU drin ist - wer weiß ob ich das jemals selbst gesehen hätte.
Und jemand anderes wollte mit Bascom das Bioloid-Protokoll verwenden.
Ich frage gelegentlich mal nach wie der Stand der Dinge ist.

Mein Bioloid-Roboter wird gerade leider immer noch über den Behavior Prorgammer und Motion-Editor programmiert, weil ich den CM-5 immer noch nicht in C programmieren kann.

Ich habe zusätzlich den RP6 um mir darauf die Vorgänge im C-programmieren anzusehen und zu lernen, aber so richtig bin ich noch nicht dabei.
Daran wollte ich auch einen AX-12 ausprobieren, aber soweit bin ich noch nicht.
Leider kann ich Dir Softwareseitig noch überhaupt nicht wirklich helfen, was das entwickeln einer Ansteuerung ziemlich einseitig machen würde.
Da das nicht meiner Vorstellung von "gemeinsam zusammen" entspricht und ich mir dann ziemlich mies vorkommen würde, kann ich leider nur hoffen das Du gelegentlcih einige Infos hier preis geben wirst ob und wie Du das Problem gelöst hast.

Möglicherweise liegt der Fehler in der Packetform die Du benutzen möchtest, denn für mich sieht es aus als sendest du jeweils alles einzelnt, aber es sollte ein zusammen hängendes Packet sein. Ich weiß allerdings auch nicht ob man das so schreiben muß...


mfg
EDIT: 0xfe = 254 8-[ (erst denken, dann schreiben ;) )

Furioso
03.09.2009, 21:54
Hi Sven

Ich antwort mal hier in deinem Thread:
Ich selber habe die AX-12 mit einem AVR32 am laufen (Hinweis: ist nicht das gleiche wie ein Atmega32)
Die Ansteuerung läuft wie im Manual beschrieben mittels dieser Umschaltung mit dem 74HC126D.
Hinweis: nicht benötigte Pins (ausser 8 und 11) an GND hängen und zur Sicherheit hab ich noch ein 47Ohm Widerstand in der Datenleitung. Und nicht vergessen, dieser Baustein braucht eine Versorgung! Also Pin 7 an GND und Pin 14 an +5V

Zu beachten ist, dass die Baudrate auch Sinnvoll ist (Quarzabhängig). Bei mir läuft das ganze zurzeit mit einer Baudrate von 500000

Kannst du die Servos auch ohne Schaltung ansteuern? Commandos kannst du auch ohne diese Schaltung senden!

Gruss
Ivo

HeXPloreR
10.09.2009, 19:03
Hi,

ich habe gelesen, das jemand die AX-12+ auch mit einem AVR32 angesteuert hat und finde die Idee eigentlich super, da auch noch genug Resourcen da sind, um IK zu implementieren. Nun wollte ich mal wissen, mit welcher Baudrate die Servos vom AVR32 aus angesteuert werden und ob es auch noch detailiertere Beschreibungen zum Aufbau der Hardware und der Software gibt?

Gruß,
Sven

Hi,

ja das wäre sicherlich interessant.
Furioso hat es oben doch hier geschrieben.


mfg