9

Click here to load reader

Brazo robot y Comunicación UART

Embed Size (px)

DESCRIPTION

Brazo robot y Comunicación UART

Citation preview

Page 1: Brazo robot y Comunicación UART

Huber Girón Nieto

Practica 3 y 4

“Comunicación UART y uso de servomotores”

Arquitectura avanzada de sistemas de cómputo

Ing. Electrónica y de Comunicaciones

Profesor: Nicolás Quiroz Hernández

Universidad Iberoamericana Puebla

15 de Mayo de 2012

Page 2: Brazo robot y Comunicación UART

“Comunicación UART y uso de servomotores”

1. INTRODUCCIÓN

En la actualidad la mayoría de dispositivos utilizan microcontroladores, ya que este tipo de dispositivos

permite obtener un manejo de recursos y control en cualquier dispositivo electrónico. Los microcontroladores

permiten ahorrar varias etapas de hardware por software, de los cuales este último solo es programación y

por lo tanto permite disminuir costos al realizar un proyecto.

2. OBJETIVOS

I. General

Realizar un programa en C que controle vario servomotores y utilice comunicación UART.

II. Específicos

-Selección de compilador a utilizar en práctica.

-Realizar un programa en C para realizar comunicación UART.

-Realizar un programa en C para controlar varios servomotores.

-Unir ambos códigos y manejar los servomotores mediante la comunicación UART.

3. MARCO TEÓRICO

I. UART (Zator Systems, 2012)

Puerto serie: La UART- El corazón del sistema de comunicaciones serie es la UART, acrónimo de Universal

Asynchronous Receiver-Transmitter. Es un chip cuya misión principal es convertir los datos recibidos del bus

Page 3: Brazo robot y Comunicación UART

en formato paralelo, a un formato serie que será utilizado en la transmisión hacia el exterior. También realiza

el proceso contrario: transformar los datos serie recibidos del exterior en un formato paralelo entendible por

el bus. La UART es un dispositivo programable en el que pueden establecerse las condiciones que se utilizarán

para la transmisión (velocidad, paridad, longitud y bits de parada). Cuyo protocolo es el siguiente:

Figura 1.- Comunicación UART

II. Modulo Bluetooth (NEOTEO, 2011)

El módulo de desarrollo Bluetooth de Micro ingenia S.L. que se utilizara, el RN41 de Roving Networks, es un

perfecto aliado para eliminar los cables en proyectos o para conectarse a ordenadores y/o teléfonos móviles.

Con un alcance de hasta 100 metros (Clase I), posee antena integrada, es compatible con el estándar

Bluetooth 2.1, permite velocidades de transferencia de hasta 921Kbps, y lo puedes conectar de forma sencilla

mediante la UART (RX/TX) de cualquier microcontrolador, desde donde puedes controlarlo haciendo uso de

sencillos comandos AT. El módulo, además, puede ser alimentado tanto a 5Volts como a 3,3Volts, y para ello

dispone de un puente (jumper) de selección de la tensión de alimentación. El RN41 funciona a 3,3Volts y sus

líneas NO son 5Volts compatibles. De todos modos, posee entradas auxiliares que te permitirán trabajar en

forma directa con el RN41 y un bus Rx/Tx de 3,3Volts.

Figura 2.- Modulo Bluetooth

III. Servomotor (TODOROBOT, 2010)

Un Servo es un dispositivo pequeño que tiene un eje de rendimiento controlado. Este puede ser llevado a posiciones angulares específicas al enviar una señal codificada. Con tal de que una señal codificada exista en la

Page 4: Brazo robot y Comunicación UART

línea de entrada, el servo mantendrá la posición angular del engranaje. Cuando la señala codificada cambia, la posición angular de los piñones cambia. En la práctica, se usan servos para posicionar superficies de control como el movimiento de palancas, pequeños ascensores y timones. Ellos también se usan en radio control, títeres, y por supuesto, en robots. Los Servos son sumamente útiles en robótica. Los motores son pequeños, cuando usted observa la foto de arriba, tiene internamente una circuitería de control interna y es sumamente poderoso para su tamaño. Un servo normal o Standard como el HS-300 de Hitec tiene 42 onzas por pulgada o mejor 3kg por cm. De torque que es bastante fuerte para su tamaño. También potencia proporcional para cargas mecánicas. Un servo, por consiguiente, no consume mucha energía. Se muestra la composición interna de un servo motor en el cuadro de abajo. Podrá observar la circuitería de control, el motor, un juego de piñones, y la caja. Uno es para alimentación Vcc (+5volts), conexión a tierra GND y el alambre blanco es el alambre de control.

Figura 3.- Servomotor desmontado

4. DESARROLLO

I. Metodología

1) Selección de compilador a utilizar en práctica.

En la primera parte de la práctica se seleccionara el compilador de C para utilizar, ya que los diferentes

compiladores poseen diferentes librerías y por lo tanto una menor o mayor facilidad al momento de realizar el

código. Los dos posibles compiladores a utilizar son MIKROC y PICC.

2) Realizar un programa en C para realizar comunicación UART.

En la segunda parte se utilizara el compilador seleccionado para crear u programa que ermita la comunicación

UART con otro dispositivo, con la intención de no usar otro microcontrolador, se realizara esta comunicación

con un módulo Bluetooth al cual la información se le enviara vía celular.

3) Realizar un programa en C para controlar varios servomotores.

Posteriormente utilizando un brazo robótico de 4 servos (Foto 1) proporcionado por la universidad se

realizaran funciones y rutinas suficientes para mantener a los servos fijos en su posición, además de medir os

tiempos mínimos y máximos para mover las partes del robot desde un punto a otro.

Page 5: Brazo robot y Comunicación UART

Foto1. Brazo robótico de 4 servomotores

4) Unir ambos códigos y manejar los servomotores mediante la comunicación UART.

Por último se unirán ambos códigos y utilizando la comunicación Bluetooth del celular se enviaran datos al

módulo Bluetooth quien a su vez le enviara los datos por UART al microcontrolador y entonces moverá el

brazo a la posición adecuada.

II. Gráficas, Dibujos y Tablas

1) Selección de compilador a utilizar en práctica.

El compilador a utilizar será el MIKROC ya que este posee una gran cantidad de librerías y funciones

adecuadas a la práctica, además de poseer ejemplos necesarios para el uso de la UART (Foto 2).

Foto2. Ejemplos MIKROC

Page 6: Brazo robot y Comunicación UART

2) Realizar un programa en C para realizar comunicación UART.

Se realizó un programa básico de UART donde físicamente solo hay que conectar el TX y RX del

microcontrolador (RC6 y RC7 en el PIC18F4550), y para realizar una comunicación UART con el modulo

Bluetooth el cual solo envía datos al micro a una velocidad de 9600 baudios es el siguiente:

void main() { UART1_Init(9600); // Initialize UART module at 9600 bps Delay_ms(100); // Wait for UART module to stabilize while(1) { if (UART1_Data_Ready()) { // If data is received, dato = UART1_Read(); // read the received data, }

Donde el anterior código únicamente inicia la comunicación UART a 9600 baudios, seguido de un retraso para

esperar que se configure correctamente, posteriormente en el bucle infinito cada que llega un nuevo dato se

activa una bandera y entonces ese nuevo dato se guarda en la variable dato.

3) Realizar un programa en C para controlar varios servomotores.

Utilizando el brazo robótico y sus cuatro servos se crearon rutinas y unciones para controlarlos, una para dar

los pulsos correctos y otra para mandar esos pulsos a 4 servomotores ubicados en los puertos RB0-RB3.

void retraso(int x) { int i; for(i=0; i<=x; i++) {delay_us(100);} }

La función anterior se encarga de crear un retraso de us dependiente de una variable donde al utilizarla por

ejemplo: retraso (10) se generara un retraso de 1000 us.

void servos(void) { PORTB.RB0=1; retraso(servo3); PORTB.RB0=0; PORTB.RB1=1; retraso(servo0); PORTB.RB1=0; PORTB.RB2=1; retraso(servo1); PORTB.RB2=0; PORTB.RB3=1; retraso(servo2); PORTB.RB3=0; delay_ms(20); }

Page 7: Brazo robot y Comunicación UART

A diferencia esta función se encarga de mandar los 4 pulsos necesarios al servomotor para determinar sus

posiciones, esta función utiliza el contenido de las variables servo0, servo1, servo2, servo3 para determinar la

posición estos estarán determinados por la posición necesaria del servo.

III. Mediciones y resultados

1) Tabla de tiempos para mover el brazo robótico.

En la siguiente tabla (Tabla1) se realizó el ancho de pulso necesario para mover al servomotor de cada una de

las partes del brazo robótico para ponerlo desde su menor posición a su mayor posición:

Parte del Brazo robótico Tiempos

Pinza

Abierta 1100 us Cerrada 1800 us

Unión 1

Arriba 1400 us Abajo 2200 us

Unión 2

Arriba 1100 us Abajo 2200 us

Base

0º 600 us 180º 2400 us

Tabla1. Tiempos brazo robot

Page 8: Brazo robot y Comunicación UART

2) Unir ambos códigos y manejar los servomotores mediante la comunicación UART.

Por último se realizó el código final para controlar mediante el celular el brazo robótico, de antemano se

contaba con el programa para celular que manda datos al módulo Bluetooth, este se encarga de mandar

0,1,2,3,4,5, etc. al microcontrolador y mediante estos comandos se puede disminuir o aumentar la posición

del brazo, el código principal utilizando las rutinas ya mencionadas anteriormente es:

int servo0, servo1, servo2, servo3, dato, flag; void retraso(int x); void servos(void); void chekeo(void); void main() { TRISB=0x00; OSCCON|=0x20; servo0=15;servo1=14;servo2=15;servo3=22; dato=1; flag=0; UART1_Init(9600); // Initialize UART module at 9600 bps Delay_ms(100); // Wait for UART module to stabilize while(1) { if (UART1_Data_Ready()) { // If data is received, dato = UART1_Read(); // read the received data, flag=1; } chekeo(); //Dependiendo el valor de dato aumenta o disminuye las variables a mandar a

//la rutina de servos servos(); }

Foto3. Modulo Bluetooth

Page 9: Brazo robot y Comunicación UART

Foto4. Prueba física Práctica

5. CONCLUSIONES

En conclusión se puede decir que utilizar más de un elemento del microcontrolador en ensamblador se

complica sin embargo en C utilizar varios elementos no es tan difícil además de contar con varias librerías

proporcionadas por el compilador que permiten agilizar el proceso de creación de código. Al crear un código

es muy importante tomar en cuenta la facilidad, optimización y aplicación, algo que los microcontrolador PIC

poseen al tener todas las herramientas e información necesaria.

6. REFERENCIAS

NEOTEO. 2011. Modulos Bluetooth. [En línea] 2011. [Citado el: 15 de Mayo de 2012.] http://www.neoteo.com/modulo-

bluetooth-hc-06-android.

TODOROBOT. 2010. Servomotor. [En línea] 2010. [Citado el: 15 de Mayo de 2012.]

http://www.todorobot.com.ar/documentos/servomotor.pdf.

Zator Systems. 2012. Puerto serie: UART. [En línea] 2012. [Citado el: 15 de Mayo de 2012.]

http://www.zator.com/Hardware/H2_5_1_1.htm.