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.

Controladora de servos SD21 con PIC

El módulo SD21 permite el control de 21 servos de forma totalmente independiente. En este proyecto vamos a comunicar mediante bus I2C la controladora de servos con el PIC 16F876A. Aunque el número de servos puede ser 21 y el programa mostrado está definido para el control de todos ellos, aquí se van a emplear tan solo 3 como muestra del funcionamiento.
Módulo SD21
Como ejemplo demostrativo moveremos el servo 1 en diferentes posiciones a la velocidad máxima. Posteriormente moveremos el servo 2 en otras tantas posiciones pero a una velocidad más reducida. Y finalmente los servos 1 al 3  simultáneamente. 
Módulo SD 21
El módulo dispone de 2 entradas de tensión de alimentación. Por un lado, entrada de entre 6 y 7,2v para alimentación de los servos. Por otro lado, alimentación de 5v para el resto de la electrónica. Pero permite la obtención de los 5v a partir de la tensión de alimentación de los servos mediante el puenteo de dos pines. Estos mismos 5v los vamos a emplear para alimentar el PIC y todo el resto de electrónica externa al módulo. 

Esquema SD21 con PIC

En el SD21 hay 2 registros de lectura. Estos son los registros 64 y 65. El registro 64 proporciona la versión del firmware del SD21:

registro = 64;          //Registro SD21 de valor versión

i2c_start();            // Comienzo de la comunicación I2C...
i2c_write(SD21_ID);     //...con la dirección I2c del SD21...
i2c_write(registro);    //...apuntando al registro de versión
i2c_start();            // Reinicio
i2c_write(SD21_ID+1);   // Cambio a función de lectura
lectura =  i2c_read();  // En lectura información leída
i2c_stop ();            // Finalización de la transmisión

version = lectura;      //En version la versión de firmware

El registro 65 proporciona el valor de la tensión de alimentación. Para obtener el valor real habrá que multiplicar su contenido por 0,039:

registro = 65;          //Registro SD21 de valor de tensión

i2c_start();            // Comienzo de la comunicación I2C...
i2c_write(SD21_ID);     //...con la dirección I2c del SD21...
i2c_write(registro);    //...apuntando al registro de voltaje
i2c_start();            // Reinicio
i2c_write(SD21_ID+1);   // Cambio a función de lectura
lectura =  i2c_read();  // En lectura información leída
i2c_stop ();            // Finalización de la transmisión

voltaje= lectura*0.039; //En voltaje valor de tensión

El resto de registros, 3 por cada servo, controlan la velocidad y posición de cada uno de ellos:

#define  servo1  0

num_servo = servo1;     //Acceso al registro 0 del SD21
velocidad = 0;          //Velocidad máxima
posicion = 2400;        //A la posición +90º


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 de nº de servo 
i2c_write(velocidad);   //velocidad
i2c_write(posicion);    //Parte baja de Posición    
i2c_write(posicion>>8); //Parte alta de posición
i2c_stop ();            //Finalización de la transmisión

La orientación del servo a -90º (ó 0º en una referencia 0-180) se obtiene cargando los registros de posición con el valor 600, 1500 para la posición 0º (90º en una referencia 0-180) y 2400 para +90º (180º en una referencia 0-180). El resto de posiciones son igualmente proporcionales y bastaría aumentar en 10 el valor de una posición concreta por cada grado de más que se desee.

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

En este vídeo se puede comprobar el funcionamiento del programa desarrollado:




Y en este enlace se pueden descargar los archivos del proyecto:

Descargar Controladora SD21 con PIC



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


2 comentarios:

mglaangel dijo...

perdona, como consigo la libreria sd21 para proteus

Robotypic dijo...

Miguel.

EL SD21 no es simulable en proteus.

Related Posts Plugin for WordPress, Blogger...

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