INTRODUCCION Implementar el siguiente proyecto utilizamos Lego
Mindstorms NXT. Con Matlab desarrollamos la programación
del Brazo Robótico. El manejo de sensores, servomotores y
microcontroladores complementamos el proyecto.
DESCRIPCION DEL PROYECTO El proyecto consiste en la
construcción de una banda transportadora con brazo
robótico. En la banda circularán recipientes
llenados a diferentes niveles de producto. Estos niveles
serán medidos con el sensor de ultrasonido. Se utilizan
dos sensores infrarrojos en la banda.
DESCRIPCION DEL PROYECTO El brazo robótico
clasificará los recipientes según el nivel medido.
El brazo tendrá 2 grados de libertad, utilizando 2
servomotores para mover la base de brazo y un motor que
controlará el gipper o garra.
DESCRIPCION DEL PROYECTO Contará con un sensor de luz para
detectar la presencia de los recipientes. La banda será
controlada por un microcontrolador, el que tendrá como
dispositivo de entrada dos sensores de luz infrarrojo y como
dispositivo de salida un servomotor.
APLICACIONES: Mejorar la calidad de una línea de
producción en una industria envasadora de bebidas.
Recipientes que no cumplen con el nivel son retornados para que
cumplan los requerimientos.
Fundamento Teórico Para el desarrollo del Proyecto se
usaron varias herramientas de Hardware y Software. El Kit de Lego
Mindstorms NXT tiene su software de programación, que
funciona en base a LabView. En nuestro caso usaremos herramientas
de programación alternativas, de esta forma trabajaremos
un en entorno de diseño e ingeniería.
Herramientas de Hardware utilizadas. En esta sección se
detallan los equipos utilizados para la construcción del
brazo robótico y la banda transportadora . Para el primero
se uso Lego Mindstorms . Para la segunda parte se usó
materiales y componentes apropiados para la implementación
de prototipos electrónicos.
Lego Mindstroms Lego Mindstroms es un juego de robótica
fabricado por la empresa Lego, el cual posee elementos
básicos de las teorías robóticas. Lego
Mindstorms puede ser usado para construir un modelo de sistema
integrado con partes electromecánicas controladas por
computador.
Lego Mindstroms NXT El bloque NXT es una versión mejorada
a partir de Lego Mindstorms RCX . Debido a la
comercialización de los bloques programables, Lego
vendió la generación NXT en dos versiones:
Versión Educativa y Comercial.
Lego Mindstroms Microcontrolador El microcontrolador que posee es
un ARM7 de 32 bits, que incluye 256 Kb de memoria Flash y 64 Kb
de RAM externa. Posee mayores capacidades de ejecución de
programas, evitando que los procesos inherentes de varios
paquetes de datos colisionen y produzcan errores en la
ejecución del software.
Lego Mindstroms Entradas y Salidas En el bloque de NXT existen
cuatro entradas para los sensores, y tres entradas para los servo
motores. Las salidas de energía aún son tres
localizadas en la parte posterior del bloque, haciendo que la
conexión para los motores y partes móviles sean de
más fácil acceso.
Lego Mindstroms Comunicaciones El bloque de NXT puede comunicarse
con el computador mediante la interfaz de USB que posee.
Conectividad con Bluetooth no tan sólo permite conectarse
con otros bloques, sino también con computadores, palms,
teléfonos móviles, y otros aparatos con esta
interfaz de comunicación.
Lego Mindstroms Sensor de Luz de Lego Mindstorms El sensor de luz
es sin duda uno de los más útiles e interesantes de
todo el kit del Lego Mindstorms NXT. Este sensor le permite a
nuestro robot distinguir entre luz y oscuridad.
Lego Mindstroms Sensor de Ultrasonido Los ultrasonidos son antes
que nada sonido, exactamente igual que los que oímos
normalmente, salvo que tienen una frecuencia mayor que la
máxima audible por el oído humano.
Lego Mindstroms Sensor de Tacto El sensor de contacto permite
detectar si el bloque que lo posee ha colisionado o no con
algún objeto que se encuentre en su trayectoria
inmediata.
Lego Mindstroms Sensor de Sonido El sensor solo detecta la
“cantidad” de sonido. Este sensor lee el sonido
ambiental y nos regresa una medida de 0 a 100%. Estos valores
corresponden mas o menos a: 4-5% Una casa silenciosa. 5-10%
Alguien hablando lejos. 10-30% Es una conversación cerca
del sensor o música en un volumen normal. 30-100% Gente
gritando o música a volumen alto.
Lego Mindstroms Servomotor de Lego Mindstorms NXT Los motores de
la serie Lego Robotics han sido de tres tipos, los cuales son
independientes al bloque. Entrega movilidad al sistema
dinámico según las necesidades de
construcción. Los servos además de incluir un motor
eléctrico convencional también incluyen un sensor
de posición. Fig. 2.1.7 Diseño interno del
servomotor de lego NXT
Equipos adicionales utilizados Pic16F628A Es un microcontrolador
CMOS FLASH de 8 bits Capaz de operar con frecuencias de reloj
hasta de 20 MHz . Posee internamente un oscilador de 4 MHz.
Equipos adicionales utilizados Servomotor Hitec HS311 Los servos
son un tipo especial de motor de D.C. que se caracterizan por su
capacidad para posicionarse de forma inmediata en cualquier
posición dentro de su intervalo de operación. El
servomotor espera un tren de pulsos que se corresponde con el
movimiento a realizar.
Equipos adicionales utilizados Sensor de luz Infrarrojo
Están diseñados especialmente para la
detección, clasificación y posicionado de objetos;
la detección de formas, colores diferencias de superficie,
incluso bajo condiciones ambientales extremas. En su interior
contiene dos elementos, uno es un diodo emisor de luz infrarroja
y el otro un fototransistor, este último mide la cantidad
de luz infrarroja en algún objeto, esta medición
depende de la claridad del objeto a sensar.
Herramientas de Software Programación de Lego Mindstorms
NXT La programación del Lego Mindstorms se realiza
mediante el software que se adjunta en el empaque original, el
cual trae el firmware del robot y un programa que emula un
árbol de decisiones. Una de las principales
características de este software de programación,
es su entorno visual, el cual emula la construcción por
bloques, dando la posibilidad a cualquier usuario aprendiz
acostumbrarse rápidamente a la programación de
bloque.
Herramientas de Software Matlab y Simulink Es un ambiente de
cómputo, de alta ejecución numérica y de
visualización. MATLAB integra el análisis
numérico, calculo de matrices, procesamiento de
señales, diseño de sistemas de potencia, Mapeo y
tratamiento de imágenes, instrumentación y
adquisición de datos. Simulink es una herramienta para el
modelaje, análisis y simulación de una amplia
variedad de sistemas físicos y matemáticos.
Herramientas de Software Cygwin Nos servirá para ejecutar
instrucciones en un entorno similar LINUX, es básicamente
un simulador de UNIX que ejecuta los programas GNU ARM y
Nexttool. GNU ARM Es un compilador que convierte los archivos
creados desde matlab (archivos *.m) o cualquier otro programador
que use lenguaje C o C++. NXTOSEK Es una plataforma de
código abierto para LEGO MINDSTORMS NXT.
Herramientas de Software RWTHMindstormNXT y Embedded Coder Robot
NXT Es un toolbox que ha sido desarrollado para el control de
LEGO MINDSTORMS robots NXT con MATLAB a través de una
conexión inalámbrica Bluetooth o vía USB.
Embedded Coder Robot NXT es la librería que proporciona
los bloques de Mindstorm NXT para desarrollar un modelo en
Simulink.
Herramientas de Software MikroBasic Es una herramienta de
desarrollo que se permite realizar proyectos para
microcontroladores PIC. Proporciona una solución
fácil para aplicaciones, sin comprometer el rendimiento o
el control, desarrolla rápidamente y desplegar
aplicaciones complejas.
Herramientas de Software Proteus Es un paquete de software para
el diseño de circuitos electrónicos que incluye
captura de los esquemas, simulación analógica y
digital combinadas y diseño de circuitos impresos. El
paquete está compuesto por dos programas: ISIS, para la
captura y simulación de circuitos; y ARES, para el
diseño de PCB’s.
Herramientas de Software Programador de Microcontroladores PIC
Kit 2 El PICkit 2 es un programador fabricado por Microchip para
programar toda su línea de microcontroladores. El
programador fue diseñado para programar los
microcontroladores en circuito (ICSP) lo que significa que puede
programar los microcontro-ladores montados directamente en tu
aplicación y/o protoboard.
Implementación del proyecto El desarrollo del proyecto
consistió en 2 etapas, una de ellas el la
construcción de un prototipo utilizando las herramientas
de Lego Mindstorms, La segunda etapa consiste en la mejora del
prototipo, pero esta vez utilizando las herramientas de software
de Matlab y Simulink, con el fin de obtener mediciones en tiempo
real de los sensores, visualizar estos valores en una escala de
tiempo y tomar decisiones desde el entorno de Matlab.
Prototipo Inicial Utilizando el principio del llenado de botellas
de cola, diseñamos un robot capaz de seleccionar botellas
completamente llenas de otras que no contengan el nivel exacto de
líquido, esto puede ser utilizado en el control de calidad
para un proceso de llenado de botellas.
Prototipo Inicial Construcción La primera versión
de la banda consistía en un brazo selector de envases con
diferentes niveles de líquido, estos niveles eran
representados franjas de colores en unos recipientes
transparentes, es decir el sensor de luz se lo utilizó
para medir estos dos colores (banco y negro). Fig. 3.1.1 Pruebas
de lectura utilizando sensor infrarrojo
Prototipo Inicial El brazo robótico solo tiene 2 motores,
uno controla el gripper y el otro mueve el eje del brazo,
mientras que la banda transportadora es controlada por un tercer
motor Fig. 3.1.2 Garra controlada por servomotor
Prototipo Inicial Programación: Fig. 3.1.3
Programación en Lego Mindstorms de la banda
Transportadora
Prototipo Inicial Creamos un bloque llamado SENSOR_LUZ,
aquí verificamos el nivel de líquido en la botella,
si el nivel es el requerido, simplemente la banda continua
girando, en caso de detectar un nivel inferior, activamos en
brazo robótico Fig. 3.1.4 Programación en Lego
Mindstorms del Brazo Robótico
Prototipo Inicial
Proyecto Final Luego de la construcción y
programación del prototipo, notamos ciertos errores en el
diseño del mismo, ya que el sensor de ultrasonido lo
utilizábamos para medir presencia de objetos y no para su
función básica que es medir distancias, entonces se
decidió hacer un cambie en a ubicación de los
sensores. Fig. 3.2.1: Esquema, ubicación de los sensores y
motores.
Diseño electrónico del controlador de la Banda.
Circuito del Sensor de luz Para obtener señales
analógicas en el microcontrolador, proveniente de los
sensores de luz, utilizaremos un amplificador operacional, para
nuestro caso elegimos el LM324, el cual contiene 4 Opams
(Amplificadores Operacionales) en su interior. Fig. 3.4.1:
Circuito acondicionador de un sensor infrarrojo.
Diseño electrónico del controlador de la Banda.
Circuito del Microcontrolador Para controlar la banda utilizamos
el PIC16F628A, al tener muy pocas entradas y salidas que manejar
se eligió este microcontrolador, también por su
facilidad al momento de armar el circuito ya que este PIC posee
un oscilador interno. Fig. 3.4.2: Circuito controlador de la
Banda transportadora
Código de programa del microcontrolador program servomotor
dim in as byte dim Vel as byte dim cont1 as word Main: INTCON = 0
TRISA = 1 TRISB = 0 TRISB.0 = 1 TRISB.1 = 1 PORTA = 0 PORTB = 0
PORTA = 0 PORTB.4 = 1 Delay_ms(500) PORTB.4 = 0 Delay_ms(500)
PORTB.4 = 1 Delay_ms(500) PORTB.4 = 0 Delay_ms(500) PORTB.4 = 1
Delay_ms(500) PORTB.4 = 0 Delay_ms(500) While true if (PORTB.0 =
0 ) then PORTB.4 = 1 PORTB.2 = 1 Delay_us(900) PORTB.2 = 0
Delay_us(1100) if (PORTB.1 = 1 ) then PORTB.5 = 1 PORTB.2 = 0
Delay_ms(2000) for cont1 = 0 to 700 PORTB.2 = 1 Delay_us(900)
PORTB.2 = 0 Delay_us(1100) next cont1 else PORTB.5 = 0 end if
else PORTB.4 = 0 Delay_ms(4000) PORTB.5 = 0 end if wend PORTB.2 =
0 PORTB.4 = 1 Delay_ms(2000) PORTB.4 = 0 End.
PROGRAMACION EN MATLAB DIAGRAMA DE FLUJO
ESTA PRESENTACIÓN CONTIENE MAS DIAPOSITIVAS DISPONIBLES EN
LA VERSIÓN DE DESCARGA