RobotyPic son proyectos básicos de electrónica con microcontroladores PIC, de aplicación en el mundo de la robótica didáctica, con archivos fuente creados mediante el compilador CCS PIC C COMPILER en lenguajeC.

Brazo Robot de 6 ejes con PIC y SD21

Consiste en el control de un brazo de 6 ejes con un PIC. En este caso se va a utilizar, junto con el PIC, una controladora de servos SD21. Por supuesto se podría prescindir de ella y controlar los servos directamente con el PIC tal como se mostró en el caso de un brazo con 4 ejes simplemente añadiendo otras dos señales moduladas para el control de los dos servos adicionales. Sin embargo, el uso de esta controladora aporta ciertas ventajas, como el poder separar la alimentación de los servos (de 6V a 7,5V) de la alimentación del circuito lógico (5V) con una única fuente de alimentación y aportar mayor fuerza a los servos al proporcionarles una tensión superior a los 5V.




Como muestra didáctica, el ejemplo realizará un ciclo repetitivo del brazo robot. Este ciclo consistirá en recoger una pieza de una posición inicial y depositarla en una segunda ubicación. Vuelve a recoger la pieza y la retorna a  la posición inicial. Por supuesto todo de una forma autónoma. El ciclo se repetirá indefinidamente.





Lo primero será difinir, en la cabecera del programa, los valores de los registros del SD21 con su correspondiente eje o servo:


#define  servo1  0 
#define  Servo2  3 
#define  Servo3  6          
#define  Servo4  9                                  
#define  Servo5  12 
#define  Servo6  15
 
Para cada uno de los ejes, deberemos enviar la información correspondiente para la nueva posición desde el PIC al módulo SD21. Esto lo haremos mediante en bus I2C. La subrutina de comunicación será la siguiente:


void sd21_servo(byte SD21_ID,int num_servo,int velocidad,int16 posicion){
   i2c_start();            //Comienzo de la comunicación I2C ...
   i2c_write(SD21_ID);     //...con la dirección del SD21...
   i2c_write(num_servo);   //...apuntando al registro del servo num_servo
   i2c_write(velocidad);   //velocidad
   i2c_write(posicion);    //Parte baja de Posicion    
   i2c_write(posicion>>8); //Parte alta de posicion
   i2c_stop ();            //Finalización de la transmisión
}

Cuando queremos establecer una posición del brazo, indicamos las posiciones de cada uno de los ejes o servos además de la velocidad con la que queremos que se produzca el movimiento, y hacemos una llamada a la subrutina anterior:


velocidad = 10;
num_servo = servo1;
posicion = 1500;                
sd21_servo (SD21_ID, num_servo, velocidad, posicion);

Esto para cada uno de los servos. Para cada nueva posición del brazo  completo enviaremos la información de todos los ejes. Cuando alguna posición  no varíe o la velocidad sea la misma no será necesario enviar esa información concreta, ya residente en el SD21:


//Movimiento nueva posición
velocidad = 10;
num_servo = servo2;
posicion = 2000;                 
sd21_servo (SD21_ID, num_servo, velocidad, posicion);
num_servo = servo3;
posicion = 1200;                
sd21_servo (SD21_ID, num_servo, velocidad, posicion);
velocidad = 15;
num_servo = servo4;
posicion = 1850;                
sd21_servo (SD21_ID, num_servo, velocidad, posicion);
num_servo = servo5;
posicion = 1500;                 
sd21_servo (SD21_ID, num_servo, velocidad, posicion);

Previamente habremos configurado las variables empleadas en el control:


int velocidad;          //Valor de velocidad de servo
int16 posicion;         //Valor de la posición del servo
int num_servo;          //Identificación del servo a controlar



[+/-] Ver / Ocultar programa completo en C


Los archivos se pueden descargar en este enlace:

Descargar brazo robot 6 ejes


El proyecto contenido en el artículo ha sido diseñado con la versión v4.084 de CCS PIC C COMPILER



El servo mostrado a continuación es el modelo que se ha empleado en el diseño. Dentro de su gama es de los más económicos con respecto a sus prestaciones. No es necesario emplear el mismo servo pero se añade como orientación a la hora de elegir el modelo a emplear en este tipo de sistemas.








No hay comentarios:

Related Posts Plugin for WordPress, Blogger...

CONTACTA - (Haz referencia del artículo sobre el que trata la consulta o comentario)