Simulado un Dispositivo Dynamixel en Controladores Bioloid

jueves, 11 de agosto de 2011 12 Comentarios, Dejar un Comentario
Existe una forma de agregar sensores como acelerometros, gyros etc. a tu controlador Bioloid compatible con la comunicación de los servos Ax-12, esto se logra simulando ser un servo pero enviando datos de este tipo de sensores además de ser compatible con Daisy Chain lo cual ahorra conectores hacia tu placa controladora y conectandolos directamente a cualquiera de tus servos.

Cuenta con características como tener un ID y solo responder tras ciertos comandos acordes con el protocolo que manejan los servos Dynamixel Ax-12, Ademas su pueden combinar varios sensores en un mismo dispositivo como lo es el Gyro, sensores de temperatura y todo tipo de sensor según tus necesidades.

He usado un Arduino para el envío de datos hacia el controlador Bioloid por su fácil programación y gran variedad de códigos que te ayudaran a implementar nuevas funciones en el Dispositivo.


De esta forma ya no será necesario conectar una fuente en el Jack o USB ya que se alimentara de la misma fuente de los servos, evitando exceso de cables en tu robot. Posteriormente podrás construir tu propia placa arduino con componentes SMD para la reducción de su tamaño.


Debido a que la librería HardwareSerial no es tan rápida como los servos Ax-12 tendremos que sacrificar la velocidad a unos 200,000 bps para que al arduino no le cueste procesar las peticiones del controlador Bioloid, tendrás que reducir la velocidad de todos los servos a la misma que el Arduino para lograr una buena comunicación con todos los dispositivos.

Los pines o cables  que saldran de este nuevo dispositivo serán los mismos que el de un servo Ax-12, Pin GND-> Conectado al GND del arduino, pin Vin-> Conectado al pin Vin del arduino y pin Data-> Conectado a los pines Tx y Rx del Arduino por ser un Half Duplex Usart.

Descagar Sketch Arduino Half Duplex Usart Sensor for Bioloid. 

En el Sketch la velocidad esta definida por BAUD_RATE  a 9600, cambiar este si se desea utilizar una diferente. El acelerómetro tendrá que ir conectado a A1 y A2 siendo eje x y eje y respectivamente.

Solo sube este sketch a tu arduino haz las conexiones y estará listo para ser conectado al daisy chain de tu controlador Bioloid.*Puede ser que tengas que modificar un poco el coligo para ajustar tu sensor.

Espero tus comentario.

Biblioteca Dynamixel Download

143 Comentarios, Dejar un Comentario


Actualizado 13/06/2013              Version 1.2.1

Importante: En la actualización de la biblioteca V1.2.1 las instrucciones cambian de ser Ax12.instruccion a Dynamixel.instruccion ya que es capaz de trabajar con diferentes modelos de estos servomotores, también el nombre de la biblioteca a sido modificado siguiendo el estándar de notación CamelCase.

Online Documentation by CornDog: http://austinlpalmer.com/Projects/Documentr/#/home


SourceForge Project: Download Library



*SoftSerial remplazara al antiguo SoftwareSerial (El remplazo no afecta el comportamiento del SoftwareSerial solo hace algunas funciones publicas para poder ser llamadas por la Biblioteca Dynamixel ) y es necesaria incluirla en el Sketch #include “SoftwareSerial.h”

**Las versiones de Dynamixel Serial1, Serial2 y Serial3 solo son para Arduino Mega ya que los otros arduinos no cuentan con estos puertos seriales.

***La velocidad por SoftSerial se vera reducida ya que la comunicación es hecha a través de pines que no fueron diseñados para esa actividad. (La lectura por SoftwareSerial aun no funciona ya que Softwareserial no realiza una lectura correcta )
Recomiendo leer el Manual de estos servomotores para un mejor entendimiento.

Versiones anteriores de estas bibliotecas pueden ser descargados desde aquí.

- Special thanks to Ambarish Parasar for making the translation of the documentation.

Reparar Servo Dynamixel Ax-12+

martes, 19 de julio de 2011 25 Comentarios, Dejar un Comentario
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

Arduino y Dynamixel AX-12

sábado, 22 de enero de 2011 452 Comentarios, Dejar un Comentario

Después de un largo tiempo he aquí una Biblioteca para controlar los actuadores Ax-12A de Dynamixel.
Estos Servos son bastante increíbles, parece que no les podría faltar nada, ya que pueden devolver Temperatura interna, Voltaje, Posición y Velocidad; Esto lo logra ya que tiene un microcontrolador ATmega8 el cual se comunica atravez de Half Duplex UART-TTL.

Estas bibliotecas sirven para comunicarse con los servomotores Dynamixel de varias formas en diferentes pines de las placas Arduino.

La comunicación se realiza a través del puerto Serie (UART o USART) del Arduino por lo que estos puertos utilizados se volverán exclusivos para comunicarse con el servomotor Dynamixel.

La alimentación de estos Servos es con una fuente de 9.6v y uniendo la tierra del arduino con la tierra de la fuente del Servo para que la comunicación no tenga errores de interpretación y la biblioteca pueda funcionar correctamente.La alimentación del Servo y del Arduino también puede ser de la misma fuente por lo que Vin del Arduino tendrá que tener un voltaje de 9.6v (Este es el voltaje sugerido por Robotis).


Las conexiones de alimentación del Servo con otras versiones y modelos de arduino funcionan de la misma forma.

Para utilizar estas bibliotecas se necesita un buffer tri-estado, se puede hacer con dos circuitos integrados 74HC04 y 74HC126 tal como recomienda Bioloid y utiliza en sus controladores o pueden usar un solo circuito integrado 74LS241 que yo recomiendo ya que es más sencillo de utilizar y/o conectar. Los pines de comunicación cambiaran según sea la Biblioteca que se quiera utilizar.



Circuito Savage Electronics - Dynamixel Serial:

Circuito Savage Electronics - Dynamixel Serial1:


Circuito Savage Electronics - Dynamixel Serial2:


Circuito Savage Electronics - Dynamixel Serial3:


Circuito Savage Electronics - Dynamixel SoftSerial:




Video Demostrativo: