Reparar Servo Dynamixel Ax-12+

martes, 19 de julio de 2011
Existen varias formas de reparar un servo Dynamixel Ax-12+, si no recuerdas que ID y Baud Rate tiene configurado tu servo la solución es muy sencilla ya que el servo se puede reiniciar con el USB2Dynamixel y el Dynamixel Configurator, también se puede hacer esto mismo con un pequeño programa que he hecho con el Arduino, este programa regresa el servo o los servos conectados a un Baud Rate de 1Mbps y ID 1 y al terminar de ser reiniciado el servo se mueve en posiciones aleatorias con lo cual el servo ha sido reiniciado correctamente y esta listo para ser usado.
El programa requiere tener instalada la Biblioteca Dynamixel que he publicado anteriormente.

Descargar Biblioteca Dynamixel


La siguiente forma de reiniciar un servo es un poco más difícil. El primer paso será abrir el servomotor hasta llegar al chip, no es necesario abrir la parte de los engranes, basta con abrir la tapa de atrás que da acceso a este.


El siguiente paso será soldar cables a los pines VCC, GND, RESET, SCK, MISO y MOSI que son los pines de programación de este chip (AVR ATmega8 - 16MHz), los puedes soldar directamente al circuito como yo lo he hecho o al puerto que se encuentra en el extremo derecho, no olvides alimentar el servo al programar y que vcc es 5v no los 10v con los que se alimenta el servo.            

Ya soldados los cables solo hay que conectarlos a nuestro programador de AVR (AVRISP, DRAGON, etc. ) y grabar los archivos Dynamixel_Flash.hex, Dynamixel_EEPROM.hex y Dynamixel_elf.elf, los fuses son: High: 0xC8 Low: 0x1F y  LockBits: 0xEC. 



Yo he utilizado el AVR Studio 4 para hacer esto pero puedes usar cualquier otra interfaz como AVRDUDE etc.


Espero tus comentarios. :P

23 Comentarios, Dejar un Comentario:

  • You are the man! Great tutorial. Could you post the firmware becouse I can't seem to find it anywhere on the web. BDW it seems that the files you uploadad are corrupt. When I unzip them the files have no extension and are empty.

  • Savage

    Hi, I have already check and download the files and they seem to be ok, check your unzip program.

    http://www.megaupload.com/?d=EKL5SQN0

  • Hi. Seems that I found my problem. After trying everything else I came to the conclusion that I probably fried the Atmea8 inside my motor. :-( I supose that I connected it the wrong way. The thing that led me to belive this is when I run avrdude I get this message:
    avrdude: Device signature = 0x000000
    avrdude: Yikes! Invalid device signature.
    avrdude: Expected signature for ATMEGA8 is 1E 93 07

    So it seems that my chip is totaly unresponsive. Ah well....

    Anyway I apreciate your help with this problem. I wouldn't have figured it out without you. Best wishes and if you ever come to Croatia I'm buying you a beer. In fact several. :-)

  • Savage

    Dont worry that also can be fix, does chips are cheap. Thanks about the beer but i don't see me going there, :D well good luck with your projects, greetings from Mexico. :p

  • hola, he perdido comunicación con el dynamixel, solo presenta el led encendido, y RoboPlus no encuentra al dynamixel.

  • Josué Alejandro Savage

    Ya has intentado grabar el Atmega8 con los archivos de este post? Si es un Ax-12?
    Este programa en el arduino Reinicia el servo a los valores de fabrica sin importar el ID o Baud Rate:

    #include "DynamixelSerial.h"

    long BaudRates[] = {1000000,666667,500000,400000,333333,285714,250000,222222,
    200000,181818,166667,153846,142857,133333,125000,117647,111111,105263,100000,
    95238,90909,86957,83333,80000,76923,74074,71429,68966,66667,64516,62500,60606,
    58824,57143,55556,54054,52632,51282,50000,48780,47619,46512,45455,44444,43478,
    42553,41667,40816,40000,39216,38462,37736,37037,36364,35714,35088,34483,33898,
    33333,32787,32258,31746,31250,30769,30303,29851,29412,28986,28571,28169,27778,
    27397,27027,26667,26316,25974,25641,25316,25000,24691,24390,24096,23810,23529,
    23256,22989,22727,22472,22222,21978,21739,21505,21277,21053,20833,20619,20408,
    20202,20000,19802,19608,19417,19231,19048,18868,18692,18519,18349,18182,18018,
    17857,17699,17544,17391,17241,17094,16949,16807,16667,16529,16393,16260,16129,
    16000,15873,15748,15625,15504,15385,15267,15152,15038,14925,14815,14706,14599,
    14493,14388,14286,14184,14085,13986,13889,13793,13699,13605,13514,13423,13333,
    13245,13158,13072,12987,12903,12821,12739,12658,12579,12500,12422,12346,12270,
    12195,12121,12048,11976,11905,11834,11765,11696,11628,11561,11494,11429,11364,
    11299,11236,11173,11111,11050,10989,10929,10870,10811,10753,10695,10638,10582,
    10526,10471,10417,10363,10309,10256,10204,10152,10101,10050,10000,9950,9901,
    9852,9804,9756,9709,9662,9615,9569,9524,9479,9434,9390,9346,9302,9259,9217,
    9174,9132,9091,9050,9009,8969,8929,8889,8850,8811,8772,8734,8696,8658,8621,
    8584,8547,8511,8475,8439,8403,8368,8333,8299,8264,8230,8197,8163,8130,8097,
    8065,8032,8000,7968,7937,7905,7874,7843};
    void setup(){
    pinMode(13,OUTPUT);
    for ( int i = 0; i <= 254;i++ ){
    Dynamixel.begin(BaudRates[i],2); // inicializa la comunicacion.
    Dynamixel.reset(254); // Cambia el Baud a 1000000 ( 1Mbps )
    }
    Dynamixel.begin(1000000,2); // Comprobacion.
    }
    void loop(){
    digitalWrite(13,ON);
    Dynamixel.move(1,random(200,800));
    delay(1000);
    }

  • Rigo

    Hola que tal? Disculpa amigo, lo que pasa es que ya cargue el programa de reset, pero después de ejecutar el programa el servo ya no funciona, ¿Tengo que volver a configurarlo?

  • Josué Alejandro Savage

    Hola, al realizar un reset el servo vuelve a sus valores de fabrica como ID 0 BaudRate 1Mbps etc.

  • José Pablo Téllez Vázquez

    que tal amigo, soldé los cables a mi servo, y cuando quise descargar los archivos para programarlo, éstos ya no están en linea, podrías subirlos a otro server? o mandarlos a mi correo porfavor? te agradeceré infinitamente.

  • José Pablo Téllez Vázquez

    Por cierto, mi correo es jpablotellezv@gmail.com
    ojalá puedas ayudarme

  • Josué Alejandro Savage

    Hola, una disculpa ya no tengo esos archivos, ya he buscado por ellos y no los tengo mas, estos archivos se pueden extraer de cualquier otro Servo en buen estado con ayuda del AVR studio y un programador, solo se extraen los archivos de programación. y esos pueden ser programado en otros servos. Saludos

  • Andres Sandoval

    Hola! Josue
    Veras tengo un problema con un servomotor AX-12A el led rojo se queda encendido todo el tiempo y no recibe ninguna información, ya intente con el código que nos compartes y quería preguntarte si tu sabes cual es la razón o como solucionarlo, de antemano gracias.

  • Josué Alejandro Savage

    Hola Andres, el LED se prende cuando se le indica que así lo haga y cuando hay un error, el error seguramente es sobre la alimentación ya que desde el principio se mantiene encendido, verifica que estés enviando el suficiente voltaje para alimentar el motor y que tampoco sobrepase los limites de alimentación. Te recomiendo verificar con el Datasheet del Motor.
    http://www.electronickits.com/robot/BioloidAX-12(english).pdf

  • yeison buitrago

    hola josue mire la verdad tengo el mismo problema que andres y le estoy enviando 9.3 V al motor y siempre a funcionado con ese voltaje entonces no se como hacer para reiniciar el motor ya que el led se queda prendido y en el pc no me lo reconoce.

  • Josué Alejandro Savage

    Hola, Con que lo estas alimentando? con una fuente o una batería? Hace lo mismo si solo lo energizas? Saludos.

  • yeison buitrago

    con una fuente y si, si solo lo energizo hace lo mismo es probable que se haya dañado??

  • Alejandro Mendez Navarro

    Yo tengo el mismo problema, el led rojo de del ax-12a (ID=12) se queda encendido. No lo detecta el CM-530.

  • yeison buitrago

    la verdad he intentado muchas cosas pero nada, Alejandro si puedes solucionar el problema te agradecería me colaboraras con la solución.

  • cristian machuca

    Saludos, se uede utilizar tu librería para setear el servo a un ID, o solo se puede reseter los servos a su configuración original??

  • Carolis Tumbaco

    Hola! Josue
    Veras tengo un problema con un servomotor AX-12A el led rojo se queda encendido todo el tiempo y no recibe ninguna información, en si el mismo problemas de Andres, por fa ayuda alguien ya encontro la solución.

  • Josué Alejandro Savage

    Hola, si se puede reiniciar el Motor a sus configuración de fabrica original, el problema del led rojo es probablemente debido a un problema de alimentación, te recomiendo vuelvas a verificar que estés usando el voltaje correcto. Saludos

  • Hola.
    Por favor, en donde podria encontrar los archivos Dynamixel_Flash.hex, Dynamixel_EEPROM.hex y Dynamixel_elf.elf ???

    Me hacen mucha falta para reprogramar un servo que tengo frito y al que he cambiado el Atmega8.
    Muchas gracias.
    top7chip@gmail.com

  • Jose Angel

    hola me podrían decir como controlar el Dynamixel AX-12 mediante el uso de solo comando no necesito usar la librería ya que por medio de comunicación poner el motor a un cierto grado ejemplo: letra"A" +10 grados letra "B"-10 grados place help angelito310390@hotmail.com

  • Publicar un comentario en la entrada