Você está na página 1de 10

Ingeniera

Mecatrnica
M502

[CONTROL DE
BRAZO ROBTICO
CON GIROSCOPIO]
Jess Gabriel Conejo Cruz
Gonzalo Rojas Huitrn
Ian Vargas Valencia
Alejandro Michel Pichardo

Introduccin

Un servomotor es un motor elctrico que puede ser controlado tanto


en velocidad como en posicin, su funcionamiento se basa en seales
de ancho de pulso recibidas. Un servomotor generalmente puede ser
controlado para moverse de 0 a 180 grados, o un poco mas
dependiendo de cada fabricante.
Los servomotores son muy usados en robtica con tantas aplicaciones
como se puedan ocurrir. Los brazos robticos son una clara muestra
de la utilidad de estos dispositivos para controlar la posicin y poder
ser corregida ante cualquier variacin dentro del mismo servomotor.
Regularmente, los servomotores trabajan con una seal de pulso
modulado (PWM) a 50 Hz, y para la marca HI-TECH, estos dispositivos
son controlado de 0 a 180 grados con un ancho de pulso de 0.5 a 2.5
ms respectivamente.
Por otro lado, la ampliacin del uso de brazos robticos para tareas
complicadas para el hombre, generando as distintas formas de
control de los brazos.
En este trabajo se describe detalladamente el proceso para crear un
control de un brazo robtico mediante comandos de movimiento de
un guante en 3 ejes, el cual se realizo con un sensor de posicin de
giro, conocido como giroscopio, el cual es interpretado por un
microcontrolador, mismo que manda la seal de posicin a los
servomotores.
Tambin, se ha anexado a este trabajo un monitoreo de posicin del
giroscopio en una interfaz de computadora que recibe la informacin
de posicin mediante comunicacin inalmbrica con dispositivos
conocidos como XBEE, los cuales pueden llegar a comunicarse a una
distancia de 1.6Km o mas dependiendo del modelo que se adquiera.
La comunicacin de estos dispositivos se ha programado en el
microcontrolador mediante el programa CSS PIC, y la interfaz se ha
generado con el programa Labview.

Antecedentes
Para hacer posible este proyecto se han usado distintas reas de
aplicacin
mediante microcontroladores,
uso de servomotores,
adquisicin de seal de un giroscopio y comunicacin inalmbrica.
Servomotores
Normalmente un servomotor puede cargar pesos de 3kg o ms,
cambiando entre uno y otro en el tamao y corriente consumida para
su control. Un servomotor puede ser controlado por seales de PWM a
50 Hz, con anchos de pulso de 0.5 a 2.5ms para poder ser
posicionado de 0 a 180 grados.
Un servomotor tiene 3 lneas de conexin, Positivo, Negativo y Seal.
Los 3 cables de conexin pueden cambiar de color, aunque
comnmente se encuentran en rojo, negro y blanco respectivamente.
Al usar un servomotor debe tenerse cuidado en
usar la frecuencia de operacin correcta,
ademas de verificar si el ancho de pulso es el
adecuado, ya que podria forzarse el giro del
motor hasta calentarse o provocar un mal
funcionamiento.
Si se desea mover un servomotor por ejemplo a
30 grados puede usarse una relacion lineal
entre grados y el tiempo de operaacion en
estado alto del PWM.

Fig.1 Servomotor

180 30
=
2.5 ms
x

Donde x representa el tiempo en estado alto del PWM. Este valor de X, debe
proporcionarse al servomotor constantemente ya que para poder mantener
una posicion a 30 grados por ejemplo, debe mantenerse un ancho de pulso
de Xmilisegundos a cada momento. Si se dejara de enviar este ancho de
puslo al servomotor, este se pondria duro o sin movimiento o simplemente
se caera sin presentar resistencia.
Esta seal de PWM es mandada al cable de seal de color blanco, o amarillo
dependiendo de la marca. En la conexin de un servomotor se debe
prevenir que estos suelen requerir una corriente de alto consumo si los
servomotores son grandes o cargan mucho peso. La corriente para aun
servomotor va de 600 mA en adelante.

Giroscopio
Un giroscopio puede medir la velocidad de rotacin sobre un eje
determinado y la posicin angular del sensor en 2 o 3 ejes, el eje X,
Y, y Z. Estos sensores son usados para poder estabilizar la posicin de
aviones, robots, y mantenimiento de maquinas. El funcionamiento del
los giroscopios aterrizan en el campo de rigidez del espacio.
Hay distintos tipos de giroscopio, y varan principalmente en el tipo de
adquisicin de datos de la posicin angular del giroscopio que puede
ser analgica o de comunicacin I2C. En este trabajo se ha utilizado
un giroscopio analgico, donde la posicin angular de 0 grados esta
en un plano horizontal. En este giroscopio el voltaje correspondiente a
0 grados es de 1.36 volts y un giro de hasta 180 grados corresponde
a 3 volts.
Este giroscopio tiene una alimentacin de 3.3v para poder operar.
Cuenta adems con un acelermetro incluido, una lnea de
alimentacin positiva y otra negativa, y 3 salidas analgicas que
tienen un voltaje proporcional a la posicin angular en los ejes X, Y, y
Z.
Es importante decir que en los giroscopios, el ruido en la seal de
salida es comn y muy propio de este tipo de transductores.
Comunicacin inalmbrica por XBEE
Para lograr una comunicacin inalmbrica por medio de XBEE, se
requieren de 2 mdulos, Xbee del fabricante MaxStream. Las ventajas
de estos mdulos es que pueden tener 2 formas de conexin, en
modo transparente, que segn el fabricante, es la comunicacin de
punto a punto, mientras que la segunda forma de conexin se conoce
como API, que es la conexin de un modulo Xbee con una red MESH
de varios mdulos. Todos los mdulos pueden configurarse como
receptor o emisor mediante el programa X-CTU, que proporciona el
mismo fabricante en su pgina de internet. Para poder usar estos
modulos con comunicacin serial, es muy necesario instalar el
controlador FTDI-232, el cual sirve para la mayora de los dispositivos
de comunicacin inalmbrica que requieran una conversin a
comunicacin serial para el ordenador.
Las ventajas
que ofrecen estos dispositivos son bajo consumo, la
gran facilidad de integracin, el alcance de comunicacin y el enlace
de hasta 65,000 dispositivos en una misma red.

Fig.2 Xbee

Ds- PIC 30F4011


Esta es una lnea ms de los microcontroladores que ofrece
Microchip y ha sido necesario usarlo para poder integrar el sistema
de control de servomotores, pues una de sus grandes caractersticas
es que las salida de ancho de pulso, PWM, pueden ser controladas
hasta de 50Hz sin ningn problema, mientras que en otros
microcontroladores de otra familia no pueden lograr un PWM menor a
10kHz. Otra gran particularidad de estos microcontroladores es que
ofrecen una resolucin de hasta 16 bits, para adquisicin y
procesamiento de datos.
Brazo Robtico
El brazo robtico a controlar mediante comandos de movimiento
cuenta con 6 servomotores de varias capacidades de torque cada
uno. Debido a que el giroscopio ofrece seales de posicin de 3 ejes,
se ha controlado solamente la mitad de la cantidad de motores que
tiene disponible el brazo robtico.
Desarrollo
Para comenzar a integrar todos los dispositivos se ha experimentado
con el giroscopio para poder obtener los valores experimentales de
salida en los 3 ejes de posicin angular. Para poder realizar este
experimento se ha programado el microcontrolador con 3 entradas
analgicas a 10 bits, y poder obtener el numero que represente al
sensor en su menor estado de angular en cualquier eje y su mayor
voltaje entregado a su mayor posicin angular en cada eje. Una vez
realizado este procedimiento se ha encontrado que la menor lectura
analgica es de 200 aproximadamente en el microcontrolador, que es
de 1.3 volts haciendo la conversin correspondiente, mientras que el
numero ms grande que entrega el sensor en cada eje, vara entre
400 y 450, que son aproximadamente 3 volts.
Programacin

Los comandos de programacin de un PIC varan poco con respecto


de los DS-PIC, la sintaxis es prcticamente la misma, aunque en
algunas ocasiones se le tenga que agregar algunas letras o
referencias.
Para la lectura analgica del sensor de posicin, se habilitaron 3 pines
para la conversin de lecturas Analgicas a Digitales a 10 bits. Para
realizar esta funcin se ha escrito de la siguiente forma:
setup_adc_ports(sAN0|sAN1|sAN2|sAN3);
setup_adc(adc_clock_internal);
En estas lneas, se han habilitado 4 entradas analgicas, 3 para la
lectura de la posicin angular de los 3 ejes y otra por si se desea
colocar algn otro sensor analgico, tal como un sensor de
temperatura. Observe que se le agrega una s a cada entrada para
indicar que el tipo de microcontrolador usado es de 16 bits, aunque a
pesar de ello es posible modificar la resolucin de lectura de los ejes,
tal como se hizo a 10 bits.
Despus de haberse declarado, se ha colocado la funcin dentro del
cdigo main para poder leer y guarda cada dato en una variable.
set_adc_channel(0); //selecciona canal 0 del convertidor ADC
delay_us(5);
x=read_adc();
En estas lneas se han ledo el canal A0, que lee el valor de tensin en
el pin A0. Se ha puesto un retraso casi nulo debido al a Trabajo
realizado por el multiplexor para seleccionar los canales de lectura
analgica. Se ha considerado que el nmero que guarde la lectura se
direccione a X, la cual es de tipo unsigned int16.
Este mismo proceso se realiza con la 2 entradas restantes del
microcontrolador que toman la lectura de los pines de salida del
sensor de posicin.
Despus, para el control de los servomotores se ha declarado el uso
de los comparadores PWM para el DS-PIC, el cual tiene disponibles 4
canales para esta funcin.
Para declarar el uso de los pwm a una frecuencia de 50Hz, es
necesario el nmero
setup_compare(1, COMPARE_PWM | COMPARE_TIMER2);
setup_compare(3, COMPARE_PWM | COMPARE_TIMER2);

setup_compare(4, COMPARE_PWM | COMPARE_TIMER2);


Esta escritura de lneas de cdigo declara el uso del TImer2 que se
encarga de establecer la frecuencia de trabajo de 50 Hz de cada
salida pwm. El equipo ha decidido tomar los comparadores 1,3 y 4 ya
que el 2 fue difcil de encontrar en la tarjeta de desarrollo, sin
embargo el funcionamiento de ambos es el mismo, y se pudo haber
ocupado el comparador pwm 2.
Dentro de la funcin principal void main se ha configurado la
frecuencia de trabajo del timer 2:
setup_timer2(TMR_INTERNAL | TMR_DIV_BY_8, 0x30D4);
Donde se ha colocado un prescaler de 8, para poder lograr un numero
lo bastante accesible para obtener una frecuencia de 50Hz con el
menor trabajo y ms tiempo de procesamiento. Como sugerencia al
lector, si se desean mejorar el periodo de trabajo del PWM, se
recomiendo usar los prescaler lo ms pequeos posibles para evitar
tantos desbordamientos dentro del microcontrolador y provocar un
funcionamiento saturado. El numero hexadecimal 0x30D4 ha sido
calculado analticamente para poder obtener una frecuencia de 50 Hz
y est completamente ligada al nmero del Prescaler, que es ocho.
Para el control de los servomotores se requiere como mnimo un
periodo de estado alto de 0.5ms. Debido a que e microcontrolador es
de 16 bits, el duty de la funcin PWM debe ser un numero de 16 bits
igualmente, que puede ser de 0 a 65,535 pero para un periodo de 0.5
ms se ha determinado que el numero proporcional es de 16,038,
aunque experimentalmente, los servomotores ocupados lograban
llegar a su ngulo mnimo con el numero 320.
Para el ngulo mximo, se localizo que el numero adecuado para
colocar dentro del duty era el 2100 como mximo. Para poder
controlar la posicin del servomotor, se debe cambiar el valor del
ancho de pulso de 3
Fig.3 Programa
raz

20 a 2100 cambiando
proporcionalmente
a
los
valores
del
giroscopio, el comando
para realizar el cambio
de ancho de pulso se
muestra
a
continuacin:
duty3=320+((z200)*3.66);
delay_ms(120);
set_pwm_duty(4,duty3);

Donde se ha declarado un ancho de


pulso como mnimo de 320, al que se le
ira
sumando
un
valor
constante
multiplicado por la diferencia del valor
del giroscopio, esta conversin puede
cambiar los valores que se reciben de la
lectura del giroscopio en el eje z y as
poder obtener u numero de ancho de
pulso de 16 bits de entre 320 y 2100.
Este mismo proceso se realizo para los 3
ejes de movimiento y controlar el ancho
de pulso de 3 motores distintos.
Finalmente para el monitoreo de la
posicin angular del sensor en los 3 ejes se ha usado la comunicacin
Xbee, misma que se configuro a una velocidad de 9600 baudios a
travs del puerto serial. Esta configuracin tambin se logra con el
programa X-CTU. El cual establece protocolos de comunicacin entre
Xbee, este mismo fue usado para poder controlar la comunicacin
entre un modulo emisor y otro receptor, el mismo que se ha
conectado al ordenador para enviar los datos de monitoreo a travs
del puerto serial.
Para imprimir los valores de la posicin del sensor, se ha usador la
comunicacin rs-232 dentro del microcontrolador y los valores de

imprimen como normalmente se hace en la comunicacin serial de un


microcontrolador.
#use rs232(baud=9600, xmit=PIN_F3,rcv=PIN_F2)
Lo nico que cambia con otros microcontroladores son los pines de
envo y recepcin de datos.
Para imprimir los valores de las posiciones angulares se ha puesto
una impresin corriente en el cdigo:
printf("y=%ld",duty2);
putc(13);
Finalmente
lograda
la
comunicacin
entre
el
emisor,
que
es
el
microcontrolador
y
el
receptor
que
es
la
computadora
se
ha
realizado la interfaz de
usuario en el programa Labview. El cual recibe una cadena

Fig.4 monitoreo
de posicin

independiente con los valores de X, Y, y Z, y el programa se encarga


de descomponer la informacin obtenida en una grafica de cada eje.

Conclusiones
-

El uso de giroscopios es bastante complicado de mantener


estables, pues reciben mucha sensibilidad y adems el
acondicionamiento es masa difcil, pero se ha resuelto poniendo

algunos retardos despus de la lectura analgica del sensor en


el microcontrolador.
El control de un brazo robtico se torna difcil cuando el
funcionamiento de ancho de pulso de los motores no es
correspondiente al calculado analticamente.
El microcontrolador es capaz de controlar hasta 6 servomotores
conociendo como declarar los pines restantes.

Você também pode gostar