9/08/2016

Introducción a Dynamixel

Saludos,
como ha sido el final de las vacaciones?... Pues imagino que traumático para casi todos, al segundo día ya estábamos mirando el calendario a ver cuándo caían las siguientes. Pero como era de esperar, hay mucho trabajo que hacer.


Hoy os hablare de mi pequeña experiencia con los servos Dynamixel, recordáis la anterior publicación del "el tentáculo que quería reptar",  pues la historia continua. Los tentáculos se emplearán para un Workshop la semana que viene, pero también para la semana que viene tengo que tener tres brazos como estos, para realizar una performance entre otros robots.







Con los servos Dynamixel tenía ganas de trabajar, pues son los 100% bellota de los servos, al igual que su precio. Pero descubrí que hay una familia de pequeñines los XL-320 con un precio razonable. Igual que paso con casi todos los sensores, motores, placas etc. Buscas en google como conectar/controlar con Arduino/Genuino, hay otros tantos, pero es como las consultas de Linux, de Ubuntu hay mas información. Y de cómo controlar estos servos.





Pues es algo tan sencillo como bajarse la librería, abrir uno de sus ejemplos básicos “XL320_servo_example” y a correr. Explicar que este ejemplo emplea la librería <SoftwareSerial.h> para no usarla, el pin de data está conectado directamente al TX del serial Pin 1. Pero podemos emplear el SoftwareSerial y conectar el data al pin 11, y el serial emplearlo de debugger.





Que problemas os encontrareis. Bien el programa “XL320_servo_set_baud_rate_or_id” sí que o cambia el baud rate de comunicación con el servo, pero no nos cambia la dirección, y esto es porque los servos se ponen automáticamente a 9600 baud cuando se le va a cambiar la id, si la velocidad es otra pasa de ti. Aquí os dejo una versión modificada,  simplemente a la variable newID le asignáis la dirección que queréis dar al servo, cargáis el programa conectáis el servo, solamente el que vais a programar y pulsáis el reset, si la configuración se ha realizado correctamente el servo se moverá aleatoriamente, eso si os los dejara a 9600.


Hacer el setup de uno en uno


Otro problema que tendréis, es la imposibilidad de tener feedback del servo, al solo emplear el pin de transmitir, no recibiréis nada del servo y si puenteáis los pines TX/RX tampoco os funcionara. Es malo esto, depende de lo que quieras hacer, tener un servo con muy buenas prestaciones y no poder hacer uso de ellas.





Algunas posibles soluciones 


Soluciones unas cuantas, 74HC126, 74LS241, lo que me obligaba a ir de compras… La mayor fuerza del progreso es la pereza, aunque también es su problema. Porque digo esto, tratar de evitar tenerme que dar un paseo me ha hecho mirar y remirar en webs, foros, etc. Tenía pensado hacer una prueba con el MAX485 que sé que tengo en el trabajo, pero he encontrado algo más simple en esta web. Lo que me ha hecho buscar en las estanterías componentes para conseguir este simple circuito. Pues bien funciona, se puede enviar y recibir información.





Hay una ligera desviación de la orden de movimiento y la lectura que hace pero no es preocupante.



Anakleto.

No hay comentarios:

Publicar un comentario