16
UNIVERSIDAD NACIONAL AUTONÓMA DE MÉXICO FACULTAD DE INGENIERÍA DEPARTAMENTO DE CONTROL Y ROBÓTICA INSTRUMENTACIÓN VIRTUAL PROYECTO FINAL: BRAZO MÉCANICO CON LABVIEW Y EL MICROCONTROLADOR ARDUINO” Nombre: RAMIREZ CHAVARRÍA ROBERTO GIOVANNI Prof.: ING. CÉSAR CASTRO RENDÓN SEMESTRE 2012-1

73987431 Brazo Robotico Labview Arduino

Embed Size (px)

Citation preview

Page 1: 73987431 Brazo Robotico Labview Arduino

UNIVERSIDAD NACIONAL AUTONÓMA DE MÉXICO

FACULTAD DE INGENIERÍA

DEPARTAMENTO DE CONTROL Y ROBÓTICA

INSTRUMENTACIÓN VIRTUAL

PROYECTO FINAL: “BRAZO MÉCANICO CON LABVIEW Y EL MICROCONTROLADOR ARDUINO”

Nombre: RAMIREZ CHAVARRÍA ROBERTO GIOVANNI

Prof.: ING. CÉSAR CASTRO RENDÓN

SEMESTRE 2012-1

Page 2: 73987431 Brazo Robotico Labview Arduino

Objetivo:

Realizar el control de un brazo mecánico con movimiento por servomotores mediante un

instrumento virtual con el software Labview de National Instruments mediante una interfaz con el

microncontrolador “Arduino”.

Este proyecto consta de la realización, el diseño, fabricación e implementación de un brazo

manipulador a pequeña escala. El objetivo primordial de este proyecto es la realización de un

brazo mecánico para poder ser analizado, probado y estudiado en pequeña escala para en un

futuro y con mejoras pueda ser implementado en la industria.

Introducción

Un robot industrial es un manipulador multifuncional reprogramable, capaz de mover materias,

piezas, herramientas, o dispositivos especiales, según trayectorias variables, programadas para

realizar tareas diversas.

Esta definición, ligeramente modificada, ha sido adoptada por la Organización Internacional de

Estándares (ISO) que define al robot industrial como: Manipulador multifuncional reprogramable

con varios grados de libertad, capaz de manipular materias, piezas, herramientas o dispositivos

especiales según trayectorias variables programadas para realizar tareas diversas.

Los manipuladores, conocidos también como brazos mecánicos son sistemas mecánicos

multifuncionales, con un sencillo sistema de control de los cuales existen 3 tipos:

a) Manual: cuando un operario controla directamente al manipulador

b) Secuencia fija: cuando se repite de forma invariable el proceso de trabajo preparado

previamente

c) Secuencia variable: se pueden modificar características del ciclo de trabajo Una particularidad

de estos robots es que mientras las funciones de trabajo sean sencillas y repetitivas son

ampliamente usados.

Robots de repetición o aprendizaje

Estos manipuladores se limitan a repetir una secuencia de movimientos, previamente ejecutada

por un operador, haciendo uso de un controlador manual o un dispositivo auxiliar. En la fase de

enseñanza el operador usa una pistola de programación con diversos pulsadores, teclas, joysticks,

o bien utiliza un maniquí o desplaza directamente la mano del robot. Esta clase de robots son los

mas conocidos hoy en día en los ambientes industriales y su tipo de programación que incorporan

se conoce como gestual.

Page 3: 73987431 Brazo Robotico Labview Arduino

Planteamiento del Problema:

En un inicio cuando surgió la idea del brazo mecánico para poder asimilarlo a un robot

manipulador, se contaba con la información sobre la DAQ 6063 de National Instruments para

poder utilizar sus contadores de frecuencia para obtener salidas PWM las cuales serían útiles para

la realización de proyecto, sin embargo investigando más sobre la versatilidad de Labview pude

encontrar información sobre cómo integrar al microcontrolador Arduino con Labview y así poderlo

utilizar como una DAQ. La configuración del microcontrolador se menciona en el siguiente punto.

LABVIEW + ARDUINO:

“LA INTELIGENCIA DE ARDUINO RADICA EN SU LENGUAJE DE PROGRAMACIÓN”

El NI LabVIEW Interface for Arduino Toolkit le ayuda a establecer interfaz fácilmente con el microcontrolador Arduino

usando LabVIEW.

Con este juego de herramientas y LabVIEW, usted puede controlar y adquirir datos desde el microcontrolador Arduino.

Una vez que la información está en LabVIEW, analícela usando los cientos de bibliotecas integradas de LabVIEW,

desarrolle algoritmos para controlar el hardware Arduino y presente sus conclusiones en un UI pulido.

Un boceto para el microcontrolador Arduino actúa como un motor de E/S que se conecta con los VIs de LabVIEW a

través de una conexión serial. Esto le ayuda a mover información rápidamente desde pines Arduino a LabVIEW sin

ajustar la comunicación, la sincronización o incluso una sola línea de código C. Al usar Open, Read/Write, Close en

LabVIEW, usted puede tener acceso a las señales digitales, analógicas, moduladas por ancho de pulso, I2C y SPI del

microcontrolador Arduino. Para aprender cómo opera la funcionalidad para que pueda modificar o extenderla, busque

en los subVIs o abra el boceto Arduino.

Nota: El microcontrolador Arduino debe estar conectado a la PC con LabVIEW a través de un enlace USB, serial,

Bluetooth o XBee. Este juego de herramientas no hace posible una operación autónoma.

A partir de la versión 2009 de Labview, National Instruments ofrece la posibilidad de integrar al

microcontrolador Arduino a su ambiente de trabajo, lo cuál nos pueda ayudar en muchos

aspectos, claro está sin llegar a las grandes capacidades de las DAQ propias de National

Instruments, pero ¿cómo realizar esta integración?. A continuación se presenta una breve guía.

1) Descargar y/ o tener instalado el software Labview 2009 o posteriores.

2) Contar con el IDE y el microcontrolador Arduino ( www.arduino.cc)

3) Descargar de la pagina de National Instruments el ToolKit para Arduino

(http://sine.ni.com/nips/cds/view/p/lang/es/nid/209835)

4) Instalar el Toolkit para Arduino en nuestra computadora.

5) Programar Arduino con el firmware desarrollado por National Instruments mediante el IDE

de Arduino, generalmente este Firmware se encuentra ubicado en la siguiente ruta:

Page 4: 73987431 Brazo Robotico Labview Arduino

C:\Program Files\National Instruments\LabVIEW 2011\vi.lib\LabVIEW Interface for

Arduino\Firmware

6) Posteriormente para que exista la conexión entre Labview y Arduino debemos de tener los

drivers NI-VISA en nuestra computadora, en caso de no tenerlos debemos descargarlos de

la siguiente dirección http://www.ni.com/visa/

7) Hecho esto debemos de verificar mediante el MAX de National Instruments en la sección

Devices & Interfaces que tengamos al microcontrolador Arduino en algún puerto de

comunicaciones COM de la computadora, debiendo estar de la siguiente manera.

Page 5: 73987431 Brazo Robotico Labview Arduino

8) Ahora solo nos resta verificar que dentro de LabView tengas habilitados los VI de Arduino,

listos para ser programados y realizar nuestros instrumentos virtuales con la interfaz

Arduino.

** NOTA IMPORTANTE:

En algunas tarjetas de Arduino como en Arduino Duemilanove al ejecutar el vi nos manda un error

5003 que indica que no se localiza Arduino, esto se resuelve de la siguiente manera:

1) Configurar el mismo BAUDRATE en el Firmware de Arduino, en el administrador de

dispositivos de Windows y en Labview.

2) Cambiar la configuración del vi Init de Arduino, como se muestra a continuación

Page 6: 73987431 Brazo Robotico Labview Arduino

En el Case “USB/Serial” Debajo de la leyenda “Wired, wait for Arduino to exit boot loader” como

constante asignada al tiempo de espera, por default viene un valor de “1000”, éste debe ser

sustituido por “2000” como en la figura anterior.

En Resumen LABVIEW + ARDUINO:

Fácil acceso para DIO Arduino, AI, PWM, I2C y SPI desde Labview

Boceto del motor de E/S para cargar en Arduino

Ejemplos para tareas básicas y sensores

Inalámbricos con Bluetooth o XBee

Velocidades: USB enlazada (200 Hz) e inalámbrico (25 Hz)

El boceto abierto Arduino y los VIs del juego de herramientas le ayudan a personalizar la funcionalidad

Page 7: 73987431 Brazo Robotico Labview Arduino

Diseño del Brazo Mecánico:

Para el diseño del brazo mecánico tomé como base el siguiente dibujo:

Cómo podemos observar, el brazo tendrá 2 articulaciones, una en el hombro y otra en el codo, así

como la capacidad de girar 180° sobre su propio eje, esto nos indica que nuestro brazo tendrá dos

grados de libertad, un grado por cada articulación.

El material para la construcción debe ser ligero, por lo que decidí utilizar hojas de PVC echas

especialmente para su utilización en robótica, ya que es fácilmente manipulable para ser cortado y

de costo accesible.

Dimensiones:

-Base 25 cm de diámetro

-Primer eslabón (vertical) 25 cm de largo por 8 de ancho

-Segundo eslabón (del hombro al codo) 12.5 de largo por 8 de ancho.

-Tercer eslabón (terminal) 10 cm de largo por 8 de ancho.

ELECTRÓNICA DEL BRAZO:

Como hemos mencionado el brazo contará con dos articulaciones, y una rotación sobre su propio

eje. En un principio se decidió utilizar un servomotor para cada articulación ( total 2 servomotores)

y para el giro del brazo un motor a pasos. En primera instancia tuve problemas para poder realizar

la secuencia para accionar la lógica del motor a pasos unipolar ( 6 hilos) ya que no puedo tener

una bloque de Arduino en Labview que me permita hacer algo parecido a un corrimiento de bits,

Page 8: 73987431 Brazo Robotico Labview Arduino

después de días de pruebas logré el funcionamiento del motor a pasos con una secuencia de

medio paso. Pero surgió otro problema en el laboratorio no se contaba con una fuente de

corriente variable, indispensable para el funcionamiento ya que el motor al momento de tener

carga demanda más corriente y ésta no podía ser suministrada por el arreglo de transistores

Darlington del circuito integrado ULN2003 y por tanto necesitaba de aumentar la corriente en la

fuente, cosa que fue imposible de realizar al no tenerla en el laboratorio.

Entre comillas este problema era fácil de solucionar, poner otro servomotor en lugar del motor a

pasos, pero no contaba con los recursos para poder adquirirlo, y después de unos días logre

comprarlo y así todo problema se solucionó.

Finalmente el brazo tiene tres servomotores para su movimiento uno por cada articulación (2) y

uno para el giro sobre su propio eje (1).

A continuación se muestra una imagen del brazo y sus articulaciones.

¿Cómo funcionan los servomotores?

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 línea de entrada, el servo mantendrá la posición angular del engranaje.

Cuando la señal 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. Un servo, por consiguiente, no consume mucha

energía. El servomotor tiene 3 cables de conexión externa. Uno es para alimentación Vcc

(+5volts), conexión a tierra GND y el alambre de control.

El motor del servo tiene algunos circuitos de control y un potenciómetro (una resistencia variable)

esta es conectada al eje central del servo motor. En la figura se puede observar al lado derecho del

circuito. Este potenciómetro permite a la circuitería de control, supervisar el ángulo actual del

servo motor. Si el eje está en el ángulo correcto, entonces el motor está apagado. Si el circuito

chequea que el ángulo no es el correcto, el motor girará en la dirección adecuada hasta llegar al

ángulo correcto. El eje del servo es capaz de llegar alrededor de los 180 grados. Normalmente, en

algunos llega a los 210 grados, pero varía según el fabricante. Un servo normal se usa para

controlar un movimiento angular de entre 0 y 180 grados. Un servo normal no es mecánicamente

capaz de retornar a su lugar, si hay un mayor peso que el sugerido por las especificaciones del

fabricante.

El cable de control se usa para comunicar el ángulo. El ángulo está determinado por la duración de

un pulso que se aplica al alambre de control. A esto se le llama PCM Modulación codificada de

Pulsos. El servo espera ver un pulso cada 20 milisegundos (.02 segundos). La longitud del pulso

Page 9: 73987431 Brazo Robotico Labview Arduino

determinará los giros de motor. Un pulso de 1.5 ms., por ejemplo, hará que el motor se torne a la

posición de 90 grados (llamado la posición neutra). Si el pulso es menor de 1.5 ms., entonces el

motor se acercará a los 0 grados. Si el pulso es mayor de 1.5ms, el eje se acercará a los 180

grados.

Servomotores utilizados en el brazo:

1 Servo marca Vigor de 1.5Kg de Torque para la articulación que contiene al eslabón terminal.

1 Servo marca Vigor de 3Kg de Torque para la articulación que contiene al eslabón entre el

hombro y el codo.

1 Servo marca Vigor de 3Kg de Torque para el giro completo del brazo sobre su propio eje.

Conexión de los Servomotores a la tarjeta Arduino.

En la siguiente imagen se muestran las conexiones realizadas al microcontrolador Arduino para el

control de los servomotores, en ésta imagen solo se muestran dos servomotores pero lo lógica de

conexión del tercero es idéntica.

Page 10: 73987431 Brazo Robotico Labview Arduino

Para la alimentación de los servos (5V) podemos utilizar la propia del microcontrolador, por lo

tanto el voltaje va al pin de 5V, la tierra el pin GND, y los cables de control de los servos a los pines

elegidos por el usuario, en mi caso utilice el 2, 3 y 4.

PANEL FRONTAL DE LABVIEW

Page 11: 73987431 Brazo Robotico Labview Arduino

Control de giro del brazo sobre su propio eje.

El primer control que el usuario debe de personalizar el que indicará los grados de giro del brazo

sobre su propio eje valores entre 0 y 180 grados y la velocidad de giro (valores entre 1 y 10) en

orden creciente éstos valores son directamente proporcionales a la velocidad. Esto es 1 para lo

mas lento posible y 10 para lo más rápido.

Page 12: 73987431 Brazo Robotico Labview Arduino

Éste control permitirá al brazo girar desde el origen a los grados y velocidad seleccionados por el

usuario y regresar al origen al llegar a los grados indicados.

Controles de las articulaciones.

Estos controles actúan idénticamente para las articulaciones, el usuario ingresa el valor de los

grados que desee que gire en los controles numéricos, mediante teclado o moviendo el KNOB

respectivo, así cada servomotor se moverá de acuerdo a lo indicado por el usuario mediante éstos

controles, entre 0 y 180 grados.

El panel frontal cuenta con un botón de paro para detener la ejecución del programa.

DIAGRAMA DE BLOQUES

El primer paso para indicar a Labview que utilizaremos la interfaz con el microcontrolador Arduino

es el bloque Init, con el cuál estaremos iniciando la comunicación entre ambos, cabe mencionar

que debemos agregar una constante o control para indicar el puerto de comunicaciones utilizado

por Arduino, el cual se verifico previamente mediante MAX.

Bloque Init

El toolkit de Arduino para Labview nos da la posibilidad de trabajar directamente con

servomotores, mediante bloques que son sencillos de trabajar.

El siguiente bloque que se debe agregar para indicar el número de servos a utilizar, en mi caso son

tres, por lo que basta con agregar una constante para indicarlo.

Ahora debemos de incializar los servomotores, ponerles un nombre y decir en que pines de

Arduino están conectados, para ello agregamos constantes en las terminales “ServoNumber” y

“Pin” respectivamente.

Todo esto lo hacemos fuera del ciclo while que nos permitirá ejecutar de manera constante el

programa, como se muestra en la siguiente imagen.

Page 13: 73987431 Brazo Robotico Labview Arduino

Dentro del ciclo while el siguiente paso es agregar los bloques de escritura al servo y lectura al

servo, estos nos permitirán agregar los controles numéricos para indicar los grados de giro al

servomotor y posteriormente para que el Arduino haga la lectura de dicho valor y se veo reflejado

directamente en el servo.

Escritura en el servo:

Lectura del servo:

En el caso del servo que permite el giro del brazo sobre su propio eje no fue tan directa la solución

para poder realizar su movimiento de forma automática, para ello fue necesario realizar la

multiplicación del valor de control numérico de velocidad de giro por el número “i” que contiene

la iteraciones del ciclo while y dividir éste resultado entre el valor de los grados que el usuario

desee que el brazo gire. Con éste resultado final podemos indicar el bloque “escribir en el servo”,

la velocidad y posición del servo.

Todo esto se muestra en la siguiente imagen y cabe mencionar que como si estuviéramos

utilizando una DAQ de National Instruments el clúster de trabajo debe ser unido entre los bloques

Page 14: 73987431 Brazo Robotico Labview Arduino

del programa así como el clúster de error, que nos indicará el posible error en caso de encontrar

algún fallo en la ejecución del programa.

Finalmente debemos indicar que el trabajo de Arduino ha terminado mediante el bloque Close

. El cuál debe colocarse fuera el ciclo while y agregar el bloque de error simple para que

Labview sea capaz de indicarnos de manera explícita el estado del clúster de error.

Page 15: 73987431 Brazo Robotico Labview Arduino

OPERACIÓN AUTOMÁTICA DEL BRAZO

En éste instrumento virtual vimos que solo uno de los servos opera de manera automática, por lo

que es completamente posible que los tres servos lo hagan de manera simultanea, y así tener un

comportamiento automático del brazo.

Para ello basta con extrapolar la información proporcionada anteriormente sobre la operación

realizada para indicar al primer servo la velocidad y posición de él, a los demás servos.

Teniendo un diagrama de bloques similar al siguiente:

CONCLUSIONES.

Al terminar el proyecto los objetivos se cumplieron plenamente, durante la realización se tuvieron

ciertos problemas como lo del motor a pasos, la configuración del microcontrolador con Labview

al tener el error 5003, pero después de investigar y a ensayo y error se pudieron solcuionar.

Decidí llevar a cabo el control del brazo con el microcontrolador Arduino y Labview ya que me

pareció un excelente complemento para la clase de Instrumentación Virtual de la cuál obtuve

todos los conocimientos sólidos de Labview para programar instrumentos virtuales, y no

quedarme solo con la DAQ utilizada en el laboratorio si no extender mis conocimientos a

situaciones de la vida profesional diaria como lo es en nuestro campo el uso de

microcontroladores. Además fue una excelente opción para poder trabajar desde mi hogar en el

proyecto al no tener la necesidad de la DAQ y solo poder trabajar en el laboratorio sujeto a ciertos

horarios.

Page 16: 73987431 Brazo Robotico Labview Arduino

La versatilidad de Arduino me permitió poder resolver los problemas de manera sencilla y eficaz,

además de su tamaño y costo.

Finalmente puedo concluir que es un proyecto muy completo ya que se lograron combinar

conocimientos de Instrumentación Virtual, Automatización, Microcontroladores, Electrónica y

Robótica de manipuladores.

REFERENCIAS

http://sine.ni.com/nips/cds/view/p/lang/es/nid/209835

http://www.youtube.com/watch?v=k6pC1dq40W4

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

http://www.superrobotica.com/motores.htm

http://www.electronicaestudio.com/

Robots Manipuladores Industriales, Iñigo Madrigal Rafael, Ed. Alfaomega, Universidad Politénica

de Catalunya