77
UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL SAN NICOLAS INGENIERIA EN ELECTRONICA PROBLEMA DE INGENIERIA TECNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB Integrantes: Marchiano Damián Perez Ramiro Zapata Gerónimo Docentes: Ing. Felipe Poblete Ing. Mariano Gonzalez AÑO 2013

UNIVERSIDAD TECNOLOGICA NACIONAL … paletizadora... · TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB 3 OBJETIVOS DEL TRABAJO OBJETIVOS El objetivo de este

Embed Size (px)

Citation preview

UNIVERSIDAD TECNOLOGICA NACIONAL

FACULTAD REGIONAL SAN NICOLAS

INGENIERIA EN ELECTRONICA

PROBLEMA DE INGENIERIA TECNICAS DIGITALES III

MAQUINA PALETIZADORA

VIGILADA POR CAMARA WEB

Integrantes: Marchiano Damián

Perez Ramiro

Zapata Gerónimo

Docentes: Ing. Felipe Poblete

Ing. Mariano Gonzalez

AÑO 2013

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

2

INDICE

OBJETIVOS DEL TRABAJO

OBJETIVOS .................................................................................................................................... 3

MATERIAS INTEGRADAS .......................................................................................................... 3

POSIBLES APLICACIONES ......................................................................................................... 4

PROFESORES ENTREVISTADOS ............................................................................................... 4

BIBLIOGRAFIA ............................................................................................................................. 4

DESARROLLO

INTRODUCCION ........................................................................................................................... 5

DIAGRAMA EN BLOQUES DEL SISTEMA ............................................................................... 6

TEORIA DE FUNCIONAMIENTO ............................................................................................... 6

COMUNICACION DEL SISTEMA ............................................................................................... 8

DIGITALIZACION DEL SISTEMA ............................................................................................. 11

MOVIMIENTOS DEL SISTEMA ................................................................................................ 13

CIRCUITOS ELECTRONICOS

DESARROLLO PLACAS Y CIRCUITOS ELECTRONICOS .................................................. 19

SISTEMA NEUMATICO .............................................................................................................. 37

PROGRAMA DEL MICROCONTROLADOR PIC .................................................................... 40

SOFTWARE DE LA PC - LABVIEW ........................................................................................... 50

PROGRAMA CAMARA WEB - VISION BUILDER AI ............................................................. 59

PRUEBAS REALIAZADAS

PRUEBAS CON CAMARA WEB ................................................................................................. 63

PRUEBAS EN LA COMUNICACION RS-232 ............................................................................ 67

CONCLUSIONES

CONCLUSION DEL PROYECTO DE INGENIERIA ................................................................. 70

CONCLUSION PERSONAL DEL GRUPO DE TRABAJO ........................................................ 70

ANEXOS

LISTADO DE PROGRAMAS ....................................................................................................... 71

FOTOS DEL PROYECTO

FOTOS DEL PROTOTIPO ............................................................................................................ 74

FOTOS MAQUINA PALETIZADORA ....................................................................................... 74

FOTOS PANTALLA OPERATIVA ............................................................................................. 77

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

3

OBJETIVOS DEL TRABAJO

OBJETIVOS

El objetivo de este proyecto, consiste en realizar (a escala) un sistema capaz de cumplir con

todos los requisitos necesarios para paletizar las cajas de productos (de un tamaño determinado)

provenientes de una cinta transportadora, correspondientes de un proceso industrial definido, de

forma segura y controlada. En simples palabras, debe ser capaz de transportar una caja a través de

una cinta transportadora, detenerla en el momento correcto, sujetarla con el brazo robótico y realizar

los movimientos correspondientes, para finalmente colocar la caja en la posición seteada por el

operador, cumpliendo con ciertas condiciones seguras. Todos estos movimientos deben ser

automáticos, y controlados por la PC. Pero nuestro proyecto no termina ahí; al mismo tiempo, el

objetivo principal y novedad de la maquina paletizadora, será desarrollar un sistema de captura y

tratamiento de imágenes (TDI), el cual nos permita controlar la zona de trabajo del equipo. Se

obtendrán imágenes continuas de la zona donde se depositan las cajas para su posterior despacho.

Este espacio se corresponderá a nuestra área "critica", por presentar posibilidades de superposición

de tareas, con mayor probabilidad a un accidente. Se buscara una vigilancia continua, con el fin de

evitar incidentes y/o accidentes (en caso de que alguna persona se encuentre cruzando por donde no

debe) o si el operador seteo el "DESPACHO" de la caja, estando la zona ocupada (por otra caja o

una Yale). Con esta información, generaremos alarmas, avisos de invasión de zona, y

condicionantes para posterior toma de decisiones (por ejemplo detener el brazo en caso de invasión

de zona de despacho al momento de estar ejecutando dicho movimiento, para un posterior

reconocimiento de esta "parada del sistema", y finalmente llevar al brazo y la carga, a una posición

segura).

La PC se encargará del control de los movimientos y el TDI; utilizando el programa

LabView, quien también cumplirá la función de interface entre el sistema y el usuario. Finalmente,

un microcontrolador PIC será quien cumpla la función de drive y concentrador de variables, junto

con el puente H y un sistema de medición.

MATERIAS INTEGRADAS

Electrónica Aplicada I [Transistores bipolares - Puente H]

Técnicas Digitales II [Conversión A/D - Microprocesadores]

Maquinas e Instalaciones Eléctricas [Motores]

Sistemas de Control [Control de procesos]

Técnicas Digitales III [Procesamiento y transmisión digital de señales – Adquisición y

tratamiento de imágenes]

Software en Tiempo Real [Programación orientada a objetos - Labview]

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

4

POSIBLES APLICACIONES

En una producción en serie, se requiere de la ayuda de maquinaria, para aumentar el tiempo

de servicio y así poder obtener mayor rentabilidad en la producción. La etapa donde se paletiza el

producto, no escapa a este punto. Por tal motivo, es necesario el aporte de una maquina destinada a

cumplir con el acomodamiento de las cajas con productos, en los correspondientes palets. Esta tarea

es realizada por una maquina paletizadora. Las mismas están compuestas por un brazo robótico,

sumado al sistema de pinza o ventosa, adaptado para el paletamiento del producto que corresponda.

Dejando de lado el desarrollo del sistema de control del movimiento del brazo, el punto

principal del proyecto, y novedad aplicada a este proceso, será la implementación de un sistema de

seguridad, utilizando una cámara web. La misma tomara imagen continua de la zona de despacho,

monitoreando cualquier invasión de objetos imprevistos, para trasmitir dicha información al control,

el cual tomara la decisión más apropiada (acción segura, programada en la lógica). Con este

dispositivo y el correcto sistema de tratamiento de imagen, se buscara evitar superposición de tareas

sobre la zona de trabajo, donde intervendrían otros equipos u operadores (como una Yale o auto-

elevador).

Como podemos apreciar, este proyecto está destinado a la etapa de acopiamiento y despacho

de productos en cajas. Siendo un sistema seguro, por su novedoso sistema de monitoreo continuo

con cámara web, y totalmente automático, permitirá optimizar el final de todo proceso productivo

en serie; incrementando la confiabilidad, producción y disponibilidad, lo que repercutirá en la

disminución del estrés del personal de operaciones.

PROFESORES ENTREVISTADOS

Profesor Hugo Franzini: Funcionamiento y configuración de servomotores.

Profesor Alejandro Lucchesi: Control PID para motoreductor cc.

Grupo de investigación GADIB: Programación en Labview.

BIBLIOGRAFIA

Tecnicas Digitales III - Ing. Felipe F. Poblete / Ing. Mariano M. Gonzalez

Curso de programacion en C. - Miquel A.Garcies

"Pololu Maestro Servo Controller" Manual de usuario para configurar y controlar

servomotores

Datasheet: PIC16F877A

Datasheet: MAX232

Datasheet: L6201PS

NATIONAL INSTRUMENTS - www.ni.com

Foro de opiniones de National Instruments - www.forums.ni.com

Libro: Ingeniería de Control Moderna (Editarial PEARSON) - Katsuhiko Ogata

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

5

DESARROLLO

INTRODUCCION

El sistema a desarrollar consiste en una maquina paletizadora de cajas. El mismo estará

compuesto por una cinta transportadora, la cual será comandada por un sistema de arranque manual

y una parada dispuesta por una barrera infrarroja. Además, la maquina paletizadora, contará con un

brazo robótico, el cual tendrá varios movimientos, comandados por diferentes motores

(servomotores y motoreductor). Finalmente, se instalará una cámara web, con la cual podremos

hacer un seguimiento de la zona de trabajo o descarga de cajas. El control de todo el sistema y

tratamiento de imagen, estarán a cargo del una PC, donde correrá el programa en Labview. Esta

aplicación es una útil herramienta que servirá como scada del sistema. Además, utilizaremos

diversas funciones para cumplir con los diagnósticos necesario y correspondientes registros del

sistema. Por otra parte, un microcontrolador PIC, cumplirá la función de conversión A/D y D/A,

para efectuar la interface entre las partes electro-mecánicas y el programa.

A continuación, podemos apreciar el modelado del brazo robótico (imagen en 3D), para

tener una idea del componente principal que conforma la maquina paletizadora:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

6

DIAGRAMA EN BLOQUES DEL SISTEMA

El siguiente esquema, define los diferentes bloques de nuestro sistema, las relaciones entre

cada uno de ellos y las etapas de comunicación de toda nuestra maquina paletizadora:

Gracias al diagrama en bloques, podemos apreciar básicamente, cómo interactúan las

distintas partes del sistema. Se debe tener en cuenta la acción de control que se lleva a cabo

internamente en la Computadora (PC), mediante el programa desarrollado en Labview. Se recuerda

en este punto que el objetivo principal de este informe es el desarrollo de la captura y tratamiento de

imagen (dispositivo remarcado en el diagrama en bloques, con color oscuro), correspondiente a la

zona de trabajo del brazo robótico; como también, el procesamiento y transmisión de la información

de todo el sistema.

TEORIA DE FUNCIONAMIENTO

Siendo el objetivo primordial del proyecto, controlar el movimiento del brazo robótico en

función de la información obtenida a través de la cámara web, acotaremos ciertos aspectos del

sistema, los cuales son irrelevantes. Estos pasan a ser de importancia secundaria, para centrar

nuestro enfoque, en el desarrollo de adquisición y tratamiento de imagen, para la posterior toma de

decisiones sobre el sistema de paletización. Hecha la aclaración, enumerados las condiciones que

acotan nuestro sistema:

Las cajas serán de un único tamaño (para nuestro caso, se considera paletizar cajas de

madera oscura, de las siguientes dimensiones: 5cm x 3,5cm x 1cm).

El brazo podrá ubicar las cajas dentro de una zona de trabajo limitada, la cual queda

definida según Figura 1, entre 90° y 270°.

La zona de trabajo será vigilara continuamente por una cámara web, para evitar

superposición no deseada de cajas o algún posible accidente (colisión contra Yale u

operadores que estén circulando por esta área delimitada). Se programarán alarmas y

parada total del sistema.

En caso de parada total del sistema a causa del control de vigilancia por cámara web,

el operador deberá forzar un permisivo colocado en pantalla, para poder resetear este

"disparo", y así recuperar control del proceso. Sera quien opere la maquina

paletizadora, el responsable de setear la posición a dirigirse, luego de un "disparo".

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

7

Se considera 0° como el punto de inicio o reposo del sistema (sobre la cinta

transportadora); ver Figura 1.

El seteo de la posición donde el operador desee depositar la caja, se ingresara de a una

por ves, quedando bloqueado dicho ingreso de datos, mientras el brazo se encuentre en

movimiento. En caso de querer detener el movimiento y cambiar dicho set-point, se

deberá pulsar "PARAR MOTOR" para frenar movimiento, habilitándose el campo

para ingresar nueva posición.

El seteo del Puerto VISA, le corresponde al personal de mantenimiento (para nuestro

caso, utilizaremos el COM4, correspondiente al adaptador Serie-USB, previamente

configurado); siendo imposible modificar para el operador.

Se buscara programar una aplicación 100% automática. Tendremos la opción

semiautomática, donde contaremos con comandos individuales (ya incluidos en el

programa original), los cuales corresponden a: pulsador TOMAR CAJA, seteo de

posición final y pulsador DEJAR CAJA.

Para avanzar sobre la confección del programa en Labview, el cual controlara cada acción

que realice la maquina paletizadora, generando las ordenes para los movimientos de los motores y

demás operaciones; primero debemos definir el funcionamiento del sistema. Los movimientos o

acciones correctas del proceso, serán las siguientes:

Iniciar en posición de reposo (0°).

Dadas las condiciones y permisivos correspondientes, iniciar proceso de paletizacion.

Encender cinta transportadora y llevar caja hasta fin de la misma.

Tomar caja con brazo robótico, utilizando la ventosa la cual funciona con vacio de

aire.

Mover brazo robótico hasta posición seteada por operador (si corresponde a sector de

descarga, tener en cuenta vigilancia por cámara web).

Dejar caja en posición seteada.

Retornar brazo robótico a posición de reposo o inicial (para continuar con el proceso).

ACLARACION: El sistema de vigilancia monitorea continuamente la zona de despacho,

informando sobre cualquier invasión de dicha área, a través de los indicadores en pantalla. De

acuerdo a la configuración programada, se plantean tres posibilidades:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

8

Se invade la zona mientras el sistema está en reposo; por ende no se activa ninguna

alarma (solo se prenden indicadores al momento de la "invasión").

Se invade la zona mientras se esta paletizando cajas hacia un área diferente a la de

despacho; por ende el sistema sigue funcionando en automático, pero se activa una

alarma la cual indica: "ALARMA ZONA INVADIDA DURANTE EL MOVIMIENTO".

Se invade zona mientras se esta paletizando cajas hacia el área de despacho; por ende

el sistema se detiene por completo, indicando: "DISPARO DEL SISTEMA - PROBABILIDAD DE

ACCIDENTE". Una vez minimizado este inconveniente, debemos reconocer el permisivo

"RESET PARADA" para recuperar control y setear nueva posición a donde quiero ir. Podrá

ser nuevamente la de despacho, volver a reposo, o dejar la caja en una nueva

ubicación.

Conociendo el funcionamiento del sistema, el cual tendrá la opción de ser automático o

semiautomático, enunciaremos en una breve lista de puntos, el instructivo que deberá cumplir el

operador de la maquina paletizadora:

Asegurarse que el brazo se encuentre en la posición inicial o de reposo (0°). De lo

contrario, llevarlo a la misma utilizando comando de Set-Point de posición (SP).

Colocar la caja en el inicio de la cinta transportadora.

Corroborar que todos los permisivos se encuentren habilitados.

Pulsar el botón "TOMAR CAJA" ubicado en el scada de la PC.

Una vez sujetada la caja por la ventosa, cargar en pantalla (comando SP), la posición

donde se desea dejar la caja.

Una vez en posición (brazo quieto), pulsar el botón "DEJAR CAJA", ubicado en el

scada de la PC.

Cada uno de los movimientos, sea el del brazo yendo a la posición inicial o a la seteada por

el operador, como las acciones de tomar o dejar la caja, se realizando de manera automática. El

sistema cumplirá con los pasos mencionados dentro de un funcionamiento normal, o sea, mientras

no se presenten problemas de operación; o como ya mencionamos, mientras no actúe el sistema de

vigilancia por cámara web.

COMUNICACION DEL SISTEMA

En este proceso, el encargado de controlar todo el sistema, es una PC. La velocidad de

procesamiento de información, dependerá de la rapidez con la que se puedan transmitir los datos

entre el microcontrolador y la PC. Para este análisis, debemos tener en cuenta varios factores

intervinientes en el proceso de transmisión de la información.

Conociendo la velocidad de transmisión del protocolo RS232 utilizado en nuestro sistema,

será necesario acotar los tiempos y demás factores, para una correcta sincronización. Definimos la

velocidad de transmisión en 9600 baudios, o sea, 9600 bits por segundos. Además, se configura el

protocolo, para comunicar paquetes de 8 bits.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

9

En nuestro caso, usaremos 4 "letras", o sea, 4 paquetes de 8 bits cada uno, para enviar la

información desde el microcontrolador hacia la PC; obteniendo una velocidad de transmisión de la

información, basada en los siguientes cálculos:

4 [bytes] = 4 . 8 [bits] = 32 [bits]

9600 bits ………………. 1 segundo

32 bits ……..………….….. X = 32 / 9600

El tiempo que demora la comunicación en transmitir el paquete de datos es:

X = 3,33 milisegundos

Podemos observar que nos encontramos por debajo del límite de velocidad de transmisión

de paquetes de datos que requerimos transmitir; evitando así, la perdida de información.

Por otro lado, tenemos configurado al conversor ADC del microcontrolador, en 10 bits, por

ende, tendremos una resolución de 2^10, lo cual equivale a 1024 “cuentas" o divisiones del rango.

De esta forma, obtenemos una muy buena apreciación en la lectura de los grados:

Siendo el CERO = 0° y el SPAN = 270°

270° / 1024 = 0,26°

Vemos una lectura mínima de casi 1/4 de grado, lo que nos brinda una resolución más que

aceptable para el control de posición del brazo robótico. Para definir mejor las correspondencias de

estas igualdades, efectuamos una tabla con valores mínimos, medios y máximos de las variables

intervinientes en la medición de posición del brazo:

VARIABLE UNIDAD VALOR

MINIMO

VALOR

MEDIO

VALOR

MAXIMO

Posición porcentual Porcentaje

[%]

0 50 100

Posición Real Grados [°] 0 135 270

Tensión

Potenciómetro

Voltaje [V] 0 2,5 5

Entrada Puerto Serie Cuentas 0 512 1024

Para la transmisión de la información desde la PC al microcontrolador (uC), planteamos

nuevamente un paquete de 8 bytes:

Cada bytes (letra) contiene parte de la información que sale del controlador (PC), la cual

será interpretada por el uC. Los bits B7, B6 y B5 contienen la variable de velocidad del motor, la

cual se encuentra en el rango de 0-500 "cuentas". El bit B4, indicara el sentido de giro, siendo 0

para girar aumentando la posición en grados, y 1 para disminuir, volviendo a 0º. El bit B3 nos dirá

cuando queramos tomar la caja, mientras que el bit B2, le dirá al microcontrolador cuando

queramos dejar la caja. El bits B1 le dará aviso al PIC, cuando se produzca el disparo de emergencia

de todo el sistema (siendo una de las principales causas, el monitoreo con la cámara web); forzando

la detención de todos los movimientos. Esto frenara todo el sistema, dejándolo en reposo; siendo

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

10

necesario un reconocimiento de la falla del operador, y la posterior operación manual, para

normalizar la falla. Esta tarea que suena tediosa para el personal que comande la maquina

paletizadora, buscara evitar posibles incidentes o accidentes. Finalmente el bits B0, queda de

reserva, para futuras necesidades del proceso. El PIC leerá esta referencia, comandando la entrada

del circuito PWM (variable manipulada) que regulará la velocidad y sentido de giro del

motoreductor.

Para definir mejor las correspondencias de estas igualdades, efectuamos una tabla con

valores mínimos, medios y máximos de las variables intervinientes en control de posición del brazo:

VARIABLE UNIDAD VALOR

MINIMO

VALOR

MEDIO

VALOR

MAXIMO

Referencia Porcentual Porcentaje

[%] 0 50 100

Salida del PID Cuentas

0 250 500

Salida del PIC Ancho de

pulso 0 512 1023

Salida del PWM Tensión [V]

0 6 12

Velocidad del motor RPM

0 3 6

Para la transmisión de información entre el PIC y la PC, se armo un cable utilizando un

conector DB9 y uno del tipo USB. A continuación, un esquema y tabla del conexionado entre la

placa del circuito del microcontrolador, y el adaptador USB/Serie:

La comunicación RS-232 se efectúa básicamente con 2 pines del conector, uno para la

lectura y el otro para la escritura. Los datos viajan de manera digital, como 1 y 0, respetando la

siguiente tabla:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

11

Se utilizo un adaptador estándar, para efectuar la conversión de protocolo, de USB a RS-232

(Serie). Con respecto a la configuración de la electrónica, para comunicarnos con la PC vía RS-232,

es de la siguiente manera:

El integrado MAX232, cumple la función de convertir las señales del puerto serie RS-232 a

señales compatibles con niveles TTL de nuestro circuito lógico. Se utiliza como interfaz de

transmisión y recepción para las señales RX, TX, CTS y RTS. El mismo, posee salidas para

manejar niveles de voltaje del RS-232 (aprox. ± 7.5 V) que las produce a partir de un voltaje de

alimentación de + 5 V utilizando multiplicadores de voltaje internamente en el MAX232 con la

adición de condensadores externos. Esto es de mucha utilidad para la implementación de puertos

serie RS-232 en dispositivos que tengan una alimentación simple de + 5 V.

DIGITALIZACION DEL SISTEMA

En este punto, ampliaremos la información desarrollada en el punto anterior, llamado

"COMUNICACION DEL SISTEMA"; con la intención de mencionar algunas de las problemáticas,

que surgieron durante el desarrollo de la maquina paletizadora con vigilancia por cámara web.

Como en todo proyecto, contamos con varias etapas de avance, que van encaminando el

desarrollo del mismo. Al momento de plantear la conversión de las señales analógicas, en señales

digitales, para su posterior tratamiento informático, surge la necesidad de acotar ciertas cuestiones.

Para entender de que estamos hablando, desarrollaremos 4 inconvenientes o cuestiones principales:

la precisión en la medición, la sincronización de la comunicación, la frecuencia de muestreo y la

rapidez del controlador.

Precisión en la medición: la variable medida ingresa al conversor Analógico-Digital que

tiene incorporado el uC. Es un conversor configurable en 8 o 10 bits, dándonos una precisión de

256 o 1024 valores en el rango de medición. En nuestro proyecto, pensamos utilizar 8 bits en una

medición de 270º, el cual nos daba una resolución de 1,05º/cuenta del ADC; lo cual a simple vista

indica el gran error que se genera en la medición (debido a la mala precisión). Por lo tanto, optamos

por usar 10bits, lo cual nos implica una resolución de 0,26º/cuenta del ADC; logrando así una buena

resolución (con variaciones cercanas a 1/4 de grado) y obteniendo un error mínimo,

considerablemente menor a 1º.

Sincronización de la comunicación: Para establecer de manera correcta un lazo de

comunicación, debemos sincronizar el envío y la recepción de datos, en ambas partes intervinientes.

Un ejemplo podría ser una conversación entre dos personas, donde ambas hablaran al mismo

tiempo; obviamente se perdería información. Para el sincronismo se opto por definir con mayor

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

12

prioridad a una de las partes, en este caso, a la PC. Nos referimos a definir un orden en la

comunicación. Por ende, por más que el microcontrolador estuviese listo para escribir en el puerto

serie (o en su defecto empiece a escribir antes de recibir el comando de inicio por parte de la PC),

no sucederá nada. El PIC deberá esperar a que la PC, le envíe un paquete de información, para

producirse la conmutación de una bandera de estado en el uC, para que este luego, devuelva la

información que corresponda (lectura instantánea del potenciómetro). El siguiente grafico temporal

nos muestra el orden en la comunicación:

En los primeros intentos de establecer la comunicación entre PIC y PC, al no tener

establecida una regla para sincronizar, por más que se regulaban los tiempos para no perder

información, la comunicación se perdía. Este inconveniente se soluciono, al lograr la sincronización

entre ambos equipos.

Frecuencia de muestreo: Si la frecuencia de muestreo no es la correcta, por más que

logremos obtener una medición precisa; se establezca que ambos dispositivos se encuentre bajo una

norma de sincronismo; y se defina la velocidad de transmisión de datos correctamente; el sistema

fallará. El problema se inducirá a causa de la mala digitalización de la señal.

En nuestro programa (dentro del microcontrolador PIC), la medición de la variable se realiza

de una manera casi permanente. Esto se logro haciendo que el uC mida la variable instantánea

(señal del potenciómetro) cada 5mSeg (milisegundos); lo que genera una frecuencia de muestreo de

200Hz. Por ende:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

13

5mS ----- 1 muestra

10mS ----- 2 muestras

1000mS ------ 200 muestras

Con esto se logra que el uC lea más rápido la variable de lo que se tarda en enviarla (salir

del PIC, viajar por el protocolo RS-232 y llegar a ser leída por la PC). De esta manera, se cumple el

objetivo de enviar los datos más “actuales” o "instantáneos" a la PC.

Rapidez del controlador: para obtener una respuesta aceptable del controlador, debemos

efectuar los cálculos dentro de un tiempo mínimo de ejecución. Esto debe establecerse, para obtener

una respuesta, acorde a las variaciones del proceso. Haciendo el análisis de tiempos, se establece

una velocidad en la iteración del cálculo de la salida del controlador, de 5mSeg. Este periodo de

programa (aplicación Labview en la PC) de 5 milisegundos, me permite obtener una respuesta más

rápida que la velocidad de comunicación establecida; por ende, se cumple con uno de los requisitos

para el buen funcionamiento del controlador.

MOVIMIENTOS DEL SISTEMA

En esta sección dejaremos de lado la parte de señales de control, para pasar a desarrollar los

movimientos del brazo y la cinta transportadora. Para dichas acciones, se utilizan 2 tipos de

motores, los cuales se corresponden a los siguientes:

servomotores de corriente continua con sistema de control integrado

motorreductor de corriente continua e imán permanente

El motor de corriente continua, es una máquina que convierte la energía

eléctrica continua en mecánica, provocando un movimiento rotatorio. En la actualidad existen

nuevas aplicaciones con motores eléctricos que no producen movimiento rotatorio, sino que con

algunas modificaciones, ejercen tracción sobre un riel. Estos motores se conocen como motores

lineales. Estos dispositivos se corresponden a los más versátiles dentro de las industrias. Su fácil

control de posición, par y velocidad la han convertido en una de las mejores opciones en

aplicaciones de control y automatización de procesos. La principal característica del motor de

corriente continua es la posibilidad de regular la velocidad desde vacío a plena carga.

En la actualidad, los rotores que conforman la parte móvil de los motores de CC, se han

hecho con inercias muy pequeñas, de modo que se disponen, comercialmente, con una elevada

relación de par motriz a inercia; teniendo algunos constantes de tiempo extremadamente pequeñas.

Gran parte de los motores de CC utilizados en el control de procesos son de excitación

independiente. Esto nos brinda la posibilidad de controlarlos aplicando la señal de mando al

devanado de excitación (motor gobernado por el inductor) o bien al devanado inducido del motor

(motor gobernado por el inducido). En nuestro caso se trata de un motorreductor de imán

permanente gobernado por el inducido, el cual se detallara más adelante.

Motorreductores: Son dispositivos generalmente empleados para realizar trabajos donde se

requiera de gran torque de tracción; por ejemplo la tracción de transportes y en movimientos en lo

cual se requiera de gran torque al mover pesos; o bien requerimientos de baja velocidad en los

cuales un motor con velocidad controlada no pueda lograrlo.

Los mismos están compuestos por dos partes: El motor y la Caja Reductora.

Hay una gran diversidad de moto-reductores, con motores DC o AC; o bien con distintas

variaciones del diseño de la caja reductora, como por ejemplo: Cicloidales, sin fin y corona,

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

14

Planetaria - Epicicloidal, etc. En nuestro caso usamos motorreductores de 12Vdc con caja reductora

Planetaria - Epicicloidal de 3 y 5 etapas, como se observa en la siguiente imagen:

Reductor Planetaria - Epicicloidal

En nuestro sistema completo, utilizamos dos de estos motorreductores, empleados para el

movimiento de la base y la tracción de la cinta transportadora de cajas. Así mismo, empleamos dos

modelos distintos para cada etapa mencionada. Esto se debe, básicamente, a la disposición del

material y reducción de costos del proyecto. Para el caso, aplican de manera aceptable:

Movimiento de Base: Motorreductor Ignis modelo MR6-4.3.

Tracción de cinta transportadora: Moto-reductor Ignis MR4-15.

Movimiento de Base: Este movimiento, es el más importante para el proyecto, y es el

controlado por el PID programado en la PC. El moto-reductor, a diferencia de los servomotores, es

un dispositivo que requiere de un control. Por diversos errores aleatorios, presenten en el proceso,

como la inercia del movimiento giratorio, hacen que el brazo no se detenga exactamente en la

posición deseada, lo cual genera que el dispositivo no funcione correctamente. Para solucionarlo se

le acopla un potenciómetro multivueltas, solidario al eje de motorreductor (mediante un par de

engranajes idénticos), de manera tal de no perder el paso y mantener la relación 1 a 1 (una vuelta

del reductor será igual a una del eje del potenciómetro).

A continuación se detallan las características del MOTORREDUCTOR IGNIS, empleado en

el movimiento giratorio del brazo robótico:

Como se puede ver, en nuestro caso, el modelo del dispositivo es MR6-4.3; esto nos indica

que corresponde a un reductor de 4.3 RPM a 12VCC, con un eje de salida diámetro 6mm. A

continuación, podremos observar la tabla de características del moto-reductor utilizado para el

movimiento principal del brazo robótico:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

15

TABLA CARACTERISTICA DE LAS CAJAS REDUCTORAS DISPONIBLES SEGUN VERSION - EJEMPLO RESALTADO

De la tabla anterior se puede ver como nuestro motorreductor dispone de una caja reductora

de 5 etapas con una relación de 1413 vueltas del motor en 1 del eje de salida y una cupla máxima de

20 kgf/cm. Los motores de CC de imán permanente tienen, en teoría, un comportamiento lineal

ideal, es decir que la velocidad desarrollada será proporcional al voltaje aplicado lo cual no es

completamente cierto en todo el rango de voltajes. Esto se debe a la zona donde el dispositivo no se

mueve frente a una tensión de alimentación de baja amplitud. Esto es causado por la inercia misma

del moto-reductor, la cual se tendrá en cuenta al momento de configurar el controlador PID

correspondiente al movimiento giratorio del brazo.

Una de las condiciones críticas para obtener un buen funcionamiento al utilizar un

motorreductor en el control de un movimiento, consiste en obtener una medición libre de

perturbaciones y lineal, de la posición real en cada momento del brazo robótico. Para nuestro caso,

luego de algunas pruebas fallidas con otros elementos de medición, decidimos utilizar un

potenciómetro multivueltas (10 vueltas) de 2KΩ. A esta elección, se le sumo un circuito divisor de

tensión, conformado por un preset y dos capacitores (para filtrado de ruido), utilizado para calibrar

la unidad de medición. Con la implementación de este circuito, será posible obtener en forma

precisa, una variación de 0 a 5 Vdc, dentro de un radio de giro de 270°. Dicho dispositivo, tendrá un

alcance máximo de 7,5% del rango del mismo, o sea 2000Ω. Por ende, cuando el brazo gire 270°, el

potenciómetro medirá 150Ω (corresponde al 7,5% de 2000Ω). Para obtener esta respuesta en el

funcionamiento, fue necesario setear el preset en 570Ω.

Gracias a la etapa de medición y a su conexionado, veremos reflejada a la variación de la

posición angular del brazo robótico, en la tensión del terminal variable del potenciómetro, de

manera proporcional. Para mantener esta relación lineal (% giro igual % tensión), se debe realizar

un acople, el cual debe ser sólido y confiable, para no ocasionar errores de medición o fallas en el

sistema de control. Dicho acople se realiza mediante 2 engranajes, uno sólido al eje del

motorreductor de CC, mientras que el otro, se monta en el eje del potenciómetro multivueltas.

Podemos ver el montaje de elemento de medición, en la siguiente imagen:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

16

Al utilizar un par de engranajes totalmente iguales (misma cantidad de dientes e igual

tamaño), la relación es 1:1, lo cual mantiene una linealidad, evitando conversiones complejas en la

programación; respetando la siguiente tabla:

TENSION =

GRADOS =

RADIANES

0Vdc ~ 5Vdc 0° ~ 270° 0 ~ 3/2π

Movimiento de tracción de la cinta transportadora: Este movimiento, es realizado por un

Motorreductor IGNIS MR4-15; que según los datos brindados por el código del modelo, se trata de

un dispositivo de 15RPM a 12VCC con eje de salida de 4mm.

TABLA CARACTERISTICA DE LAS CAJAS REDUCTORAS DISPONIBLES SEGUN VERSION - EJEMPLO RESALTADO

De la tabla anterior se puede ver como nuestro motorreductor dispone de una caja reductora

de 3 etapas con una relación de 280 vueltas del motor en 1 del eje de salida y una cupla máxima de

7.79 kgf/cm.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

17

Servomotores: A continuación, se detallaran las características de estos dispositivos, para

interiorizarnos luego, en las aplicaciones de cada uno.

El servomotor es un dispositivo de movimiento el cual tiene 3 partes fundamentales, como

se pueden apreciar en el siguiente esquemático:

DESARME DE UN SERVOMOTOR

La primera parte se corresponde al motor y tren de engranajes; la segunda es la placa

controladora; y la tercera el elemento de medición. El motor suele ser de corriente continua de imán

permanente, el cual esta acoplado a un tren de engranajes que varía su relación; haciendo más lento

la velocidad de salida del servo; pero a su vez presenta una ganancia en torque. Debido a que un

servo suele girar entre 0º y 180º que este sea más lento (en el orden de 0.17seg/60º) no sería una

desventaja, y que posea gran torque sería una gran virtud.

La placa controladora es la encargada de medir la posición del eje de salida del servo, para

ello se acopla un elemento de medición (el cual suele ser un potenciómetro) al tren de engranajes

mencionado anteriormente; de esta manera a medida que el eje gira, el pote lo sigue solidario,

enviando la tensión medida a la placa controladora. Esta placa, es la encargada de recibir un pulso,

mediante el cual obtiene la posición a la que debe posicionar el eje. Una vez recibida tal señal,

genera el error con respecto a la señal medida; para luego hacer girar al motor para el lado

correspondiente, hasta llegar al Set Point obtenido a través del pulso.

Una ventaja que posee el servo es que se puede trabajar en dos formas distintas. En este

proyecto empleamos ambas: con refresco de pulsos y sin refresco de pulsos. La diferencia entre

ellos se observa cuando aparece una fuerza que tiende a variar la posición del servo, Cuando no se

refresca el pulso, la placa de control ve la variación en el eje de salida, pero al no tener la orden de

ir a alguna posición esta no actúa; y de esta manera no genera el esfuerzo del servo de mantener la

posición y emplear su torque máximo. En cambio, al refrescar el pulso, la placa controladora se dé

cuenta de que hay algo que está modificando la posición del eje de salida y actúa haciendo fuerza en

sentido opuesto para mantener la posición indicada mediante el pulso.

En los movimientos de giro de muñeca, dedos, y movimiento de muñeca no vamos a

refrescar los pulsos ya que la misma caja reductora se encarga de vencer a la gravedad. En cambio,

en los movimientos de hombro y codo si debemos refrescar los pulsos ya que las cajas reductoras

son vencidas por la gravedad.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

18

Por ende, los servomotores (servos) empleados en este proyecto, son los encargados de

realizar los movimientos del brazo robótico (Maquina paletizadora). Este Brazo cuenta con seis

grados de libertad, es decir, 6 movimientos independientes entre sí:

Giro de la Base.

Movimiento del Hombro.

Movimiento del Codo.

Movimiento de Muñeca.

Giro de muñeca.

Movimiento Dedos.

Para cada uno de estos desplazamientos, se emplea los siguientes dispositivos,

respectivamente:

Motorreductor Ignis MR-6 4, 3.

Servomotor Hitec HS-805MG.

Servomotor Hitec hs-5755MG.

Servomotor E-Max ES3001.

Servomotor E-Max ES3001.

Servomotor Hitec HS205MG.

A continuación se detallan las graficas de funcionamiento de los servomotores con sus

pulsos, tensiones de alimentación y torques correspondientes:

TABLA CARACTERISTICA DE LOS SERVOMOTORES UTILIZADOS EN LA MAQUINA PALETIZADORA

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

19

Relación Pulso – Posición de los servos

Características Tensión-Torque de los servos

CIRCUITOS ELECTRONICOS

DESARROLLO PLACAS Y CIRCUITOS ELECTRONICOS

Para el comando de los motores, la electroválvula, y el sistema de medición de posición

angular del brazo robótico, se opto por utilizar un microcontrolador PIC 16F877A; el cual reunía

los requisitos que este proyecto demandaba. Este dispositivo electrónico será el encargado de dar

las ordenes de movimientos de todos los sistemas periféricos de la maquina paletizadora. A

continuación desarrollaremos el hardware usado como drive e interface entre el proceso y el sistema

operativo.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

20

Introducción del diseño electrónico: En esta oportunidad, para desarrollar las

funcionalidades del brazo, dividiremos el sistema completo en cuatro bloques fundamentales (a

diferencia del diagrama funcional en bloques utilizado en el punto "DIAGRAMA EN BLOQUES DEL

SISTEMA"), siendo "Brazo Robótico" y "Transporte de cajas", uno solo:

La PC será la encargada de realizar el control del movimiento angular (el cual requiere

precisión) resuelto con el motorreductor de CC, y los movimientos combinados (y pre-seteados) de

los servomotores; enviándole esta información, a la "Placa de control con uC" (que contiene el

PIC). Para efectuar esta transmisión, utilizaremos el protocolo de comunicación RS232. La "Placa

de control con uC", será responsable de adquirir los datos de la PC, realizar la conversión adecuada,

y enviar las señales de posición (moduladas en ancho de pulso o PWM) a los servomotores y al

circuito de puente H que comanda el motorreductor. A su vez, deberá enviar constantemente la

posición angular del brazo robótico (vía RS232 a la PC), para controlar este movimiento utilizando

el programa Labview.

Por otra parte, la fuente de alimentación será la encargada de proveer la energía necesaria a

todas las plaquetas electrónicas. La misma, generá alimentaciones de 5Vcc, 6Vcc, 8Vcc,12Vcc y

24Vcc, con hasta 2 amperes máximo por tensión entregada; presentando muy buena estabilidad. Es

importante minimizar los ruidos, aislar adecuadamente cada etapa de los circuitos, y tener igual

referencia de masa en todas las placas; ya que las mismas se encuentran relacionadas, e interactúan

entre sí. Como verán, se hiso hincapié en esta etapa, punto que no deja de ser importante; ya que

nos permitió ahorrar tiempo al momento de analizar fallas, sabiendo que nuestra "Fuente de

Alimentación" era confiable.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

21

Placa de control con uC: Esta placa comanda los movimientos de la maquina paletizadora. A

continuación podremos apreciar, el circuito de la placa de control:

Para un mejor desarrollo, dividiremos esta placa en varios bloques funcionales:

Alimentación.

Control.

Comunicación

Control de motor base

Control de Transporte.

Manipulación de señales

Bloque de Alimentación: Este bloque es el encargado de adecuar la alimentación eléctrica

que entrega la placa y va hacia los sensores y demás circuitos integrados.

Las mismas están conformadas por los dos puertos USB (alimentación 1 y 2), los cuales son

empleados como conectores de acople rápido para la sencilla conexión con la fuente de

alimentación; lo que nos permite distribuir de forma más sencilla las tensiones en las plaquetas. Las

carcasas se corresponden al GND.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

22

En Alimentación 1 tenemos:

Pin 4 – 24Vcc

Pin 3 – 12Vcc

Pin 2 – 8Vcc

Pin 1 – 5Vcc

En el puerto denominado Alimentación 2 tenemos:

Pin 4 – 6Vcc

Pin 3 – 12Vcc

Pin 2 – 8Vcc

Pin 1 – 5Vcc

Del puerto Alimentación 1 se emplean el pin 4 de 24Vcc, para alimentar un regulador de

voltaje LM7805, empleado para alimentar eléctricamente al corazón del bloque de control, es decir,

al uC. Los capacitores colocados en el regulador, cumplen la función de filtrar los ruidos de la red

eléctrica. A su vez, se emplea un diodo led para la indicación visual de que el uC está encendido.

Los pines 1,2 y 3 se emplean para alimentar eléctricamente los sensores y servomotores que forman

parte del brazo.

Por otra parte, se emplea de Alimentación 2 el pin 1 y 3; el pin 1 provee 5Vcc para los

sensores de la barrera infrarroja del transporte, la señal de enable para el puente H y la alimentación

para el MAX232 y el MC74HC14N (los cuales detallaremos más adelante). Además, el pin 3,

provee los 12Vcc para la alimentación del Relé TTE (correspondiente a la cinta transportadora) y la

alimentación para el motor del mismo.

Bloque de control: El bloque de control consta de un micro controlador (uC) PIC 18F877A

el cual es el corazón del bloque y placa de control. El uC será el encargado de ejecutar las

instrucciones provenientes del control ubicado en la PC, mediante protocolo serie. Las principales

características del mismo son:

Arquitectura de 10bytes.

Memoria flash de 4kB.

RAM 368 byte.

EEPROM 256 byte.

Frecuencia Max. de operación: 20MHz.

Conversor A/D de 8 canales.

Comparadores: 2.

Módulos CCP: 2.

Timers: 2 de 8 bits, 1 de 16bits.

Comunicación: RS232, I2C.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

23

El pin-out del mismo es:

Para funcionar, en el pin 1 (MCLR/VPP), el uC precisa un circuito de reset, el cual al es

negado, entonces debe tener 5Vcc (estado alto) para no recetarse, y al ver en el mismo un 0Vcc

(estado bajo) se resetea, según:

El pin 2 (AN0), es configurado como entrada analógica; a él llegara una tensión de 0 a

5Vcc. El uC lo empleara como un conversor A/D de 10 bytes, entonces entre 0 y 5Vcc habrá 1024

pasos. Cabe aclarar que en el mismo pin se encuentra un capacitor, el cual cumple la función de

filtrar los ruidos, de manera tal de que este no afecte la medición. Una vez obtenido el dato, se

podrá determinar la posición en la cual se encuentra la base mediante la siguiente fórmula:

Posición = (Valor ADC x 270) / 1024

En el Pin 4 (AN2), el uC recibirá la señal proveniente del diodo infrarrojo receptor del

transporte de pallets. Cuando este sensor se ve con el transmisor, envía una señal de 5Vcc al

MC74HC14N, este la rectificara e invertirá, entregando 0Vcc. Por lo que el uC entenderá que al

tener un estado lógico bajo en ese pin las cajas no han cortado el haz de luz, por lo que el transporte

encendería hasta que las cajas lo corten; en dicho caso, el MC74HC14N tendrá 0Vcc en su entrada,

rectificando e invirtiendo a 5Vcc que es lo que el uC comprenderá como “caja presente”. Se opto

por utilizar un sistema "bobo" para el control de la cinta transportadora, debido a su papel

secundario en este proyecto. No obstante, el funcionamiento cumple perfectamente las necesidades

planteadas, siendo más que posible, el mejoramiento de esta sistema auxiliar.

En los pines 13 (OSC1/CLKIN) y 14 (OSC2/CLKOUT) se debe conectar el elemento

oscilador que servirá de reloj al uC. En este caso, se prefirió usar un cristal de 20MHz para

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

24

aprovechar la velocidad del uC; y así evitar que el tiempo de ejecución de instrucciones del mismo

no nos sea una limitante. Para ello nos manejamos con el manual del uC que establece:

De aquí se observa las conexiones necesarias del cristal con el uC; de la tabla se obtiene un

cristal de 20MHz un capacitor de 10-22 pF, en nuestro caso, se instalo junto al cristal, dos

capacitores de 22pF.

En los pines 11 y 32 (Vdd) se le debe aplicar la tensión de alimentación; para que no nos

afecte el ruido, le instalamos capacitores de 10pF.

En los pines 12 y 31 (Vss) se les debe dar tierra (GND) o bien 0Vcc; mientras que los pines

16 (RC1/T1OSI/CCP2) y 17(RC2/CCP1) son los puertos que el uC empleara para enviar las señales

al puente H, que controla el motorreductor de la base. El pin 16 estará aplicada al pin Lpwm (giro

contrario a las agujas del reloj) y el restante el pin Rpwm (giro en sentido de las agujas del reloj) de

la placa del puente H (se explicara más adelante). La señal generada por el uC en estos pines, son en

forma de PWM (modulación por ancho de pulsos), donde el ciclo de trabajo será de 0 a 100% en un

margen de 1023 pasos; tendrá una frecuencia de 10KHz según:

A través del pin 20 (RD1), el uC será capaz de enviar la señal para activar el motor del

transporte de cajas. Al poner el puerto en cuestión en un estado lógico alto, la cinta comenzara a

funcionar; caso contrario, estará apagada. Esto lo hará, según sea el estado en el pin 4 (AN2) si es

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

25

que la barrera infrarroja no esa obstaculizada (recordar que en dicho caso, vera un estado lógico

bajo en ese puerto). La circuitería aplicada al pin en cuestión, será explicada más adelante.

Los pines 25(RC6/TX/CK) y 26(RC7/RX/DT), son los dos pines empleados para realizar la

comunicación vía RS232. El pin 25, es empleado para la transmisión de datos hacia el MAX232 y

el pin 26 es el de recepción de datos desde el MAX232 el cual se verá en el próximo bloque. Para

darnos cuenta cuando la PC nos envía los datos, así leerlos, emplearemos la interrupción de datos

recibidos, esto se apreciara en el programa del uC, y será la modalidad utilizada para sincronizar la

comunicación.

Los pines 40(RB7/PGD),39(RB6/PGC),38(RB5),37(RB4) y 36(RB3/PGM), son los

empleados para el envió de las señales a los servomotores del brazo. Estas señales, son pulsos en

PWM con una frecuencia de 50Hz (cada 20mS). Como la salida en PWM propia del micro son dos

(CCP1 y CCP2) que ya la hemos empleados para el control del puente H; se decidió realizarlo de

esta manera, debido a que el uC para generar una frecuencia de 50MHz, necesita tener un cristal

cuya frecuencia de oscilación sea muy chica, y esto haría más lenta la capacidad de procesamiento

de datos del uC, lo cual generaría complicaciones. Es por esto, que emplearemos una propiedad del

uC que es el Timer 1. Mediante este timer, lo que hacemos es setearlo de manera tal que este genere

una interrupción cada 20mS:

Fout = Fclk / (4 x Preescaler x (65536 – TMR1) x Count)

50Hz = 20MHz / (4 x 4 x (65535 – 63896) x 15, 25)

50HZ = 49,98Hz

Entonces, al ejecutarse esta interrupción cada 20mS, lo que el uC realiza es enviar un pulso

cuya duración suele ser de unos uS (generalmente de 900 a 2000uS dependiendo del servomotor) en

los pines mencionados. De esta manera, se genera una señal en PWM con otros medios

independiente a los módulos CCP.

Placas y sistema de comunicación: Como ya se adelanto, la comunicación con la PC se

realiza vía RS232. Debido a que el uC tiene sus salidas TTLs con niveles de voltaje de 0 a 5V, y la

PC opera con niveles de -15 a +15Vcc, se requiere de un dispositivo traductor; en este caso el

empleado es el MAX232. Este circuito es un transmisor/receptor doble que incluye un generador de

voltaje capacitivo para alimentar el conversor TIA/EIA-232-F a partir de una fuente singular de 5V.

Cada receptor convierte la señal de entrada TIA/EIA-232-F en una señal de niveles de 5V

TTL/CMOS. Por el otro lado, cada conversor, hará el proceso inverso. Es decir, convertirán las

señales TTL/CMOS en señales con niveles TIA/EIA-232-F.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

26

A continuación se detalla el pin-out y la aplicación típica:

Como puede observarse en la imagen, es un dispositivo que se puede emplear de forma muy

sencilla con solo 5 capacitores externos.

Teniendo en cuenta el pin-out del IC, se procede a realizar las conexiones: el pin 25 (TX)

del uC va conectado al pin 10 (TTL / CMOS INPUT) del MAX 232 y el pin 26(RX) del uC al pin 9

(TTL/CMOS OUTPUTS).

Asimismo, se conectó el pin 7 (RS-232 OUTPUT) del MAX232 al pin 2 del conector DB9 y

el pin 8 (RS-232 INPUT) del MAX232 al pin 3 del conector DB9. Esto se logro a través de un

puerto USB, con el objetivo de minimizar espacio en la placa; ya que solo usamos 3 pines del

puerto serial de la PC. El pin-out del mimo es:

Control de motor de la base: El control del motorreductor de la base, se logra través de un

circuito diseñado para el control de giro y velocidad de motores de CC, denominado puente H. En

nuestro proyecto empleamos un puente H integrado, cuyo IC tiene el código L6201PS. Algunas

características son:

Voltaje de alimentaciones superiores a 48Vcc.

Pico máximo de corriente de 5A (2A máx. para L6201).

Corriente total RMS sobre el L6201: 1A; L6202: 1.5A; L6203/L6201PS: 4Amp.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

27

RDS (ON) 0.3 (valor típico a 25 C).

Protección por conduction cruzada.

Compatible con señales de manejo TTL.

Frecuencias de operación por encima de 100 KHz.

Protección térmica.

Fuente lógica interna.

Alta eficiencia.

El diagrama en bloque del integrado es el siguiente:

Se puede ver que es un puente H, el cual opera con transistores de salida DMOS; y estos le

proporcionan al circuito la capacidad de trabajar a altas frecuencias y tensiones. Se puede observar

que hay un pin, denominado “enable”; el cual debe estar en estado alto (5Vcc) para que, al enviar la

señal de Lpwm o Rpwm (en el diagrama serán IN1 o IN2 respectivamente), el motor gire hacia un

lado o hacia el otro.

Más allá de las particularidades del circuito ya mencionadas, este se comporta de manera

similar al siguiente circuito, el cual es más didáctico, y utilizaremos de manera esquemática, para

explicar el funcionamiento:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

28

En este caso, los transistores Q1 y Q6 (generalmente son 2N2222 o BC547) son los

transistores de excitación de los transistores de potencia Q2, Q3, Q4 y Q5; donde Q2 y Q4 son

complementarios con Q3 y Q5; ya que los primeros son PNP los segundos NPN (generalmente

suelen ser TIP31C y TIP 32C).

Al aplicar la señal Lpwm, en la base se Q1 se activan los transistores Q2 yQ5 aplicando la

tensión del motor en el punto “a” tierra o 0Vcc en el punto “b”, provocando que el motor gire en

contra de las agujas del reloj, según:

Al aplicar la señal Rpwm, en la base se Q2 se activan los transistores Q3 yQ4 aplicando la

tensión del motor en el punto “b” tierra o 0Vcc en el punto “a”, provocando que el motor gire a

favor de las agujas del reloj, según:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

29

Nota: Cabe aclarar que las señales Lpwm y Rpwm no se deben dar nunca de manera simultánea; ya

que se realizaría un cortocircuito. El circuito del IC L6201PS posee protección, para evitar este tipo

de falla.

Como dijimos antes, este circuito nos permite controlar tanto sentido de giro como la

velocidad del motor; entonces pasamos a explicar lo segundo.

Para variar la velocidad del motoreductor, lo que se realiza es enviar la señal Lpwm

modulada a una frecuencia fija variando el ciclo activo o de trabajo; es decir le enviamos una señal

en PWM. Al enviar un estado lógico constante, los transistores quedan activos y el motor ve como

si tuviera aplicados en sus bornes la tensión (VCC) de la fuente de alimentación. Al darle un ciclo

de trabajo de por ejemplo el 50% a la señal Lpwm, lo que hacemos es que los transistores

comiencen a swichear la alimentación sobre el motor, de forma tal que este ve en sus bornes, un

tensión igual a VCC/2. A continuación se presenta una tabla comparativa:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

30

Si superponemos la salida del microcontrolador (PWM), con la salida del puente H (la cual

se corresponde al nivel de tensión en bornes del motor), se obtiene lo siguiente:

Como se observa en el grafico anterior, la tensión que reciba el motoreductor, la cual

generara los cambios en su velocidad y sentido de giro, dependerá directamente del ancho de pulso

que entregue en microcontrolador PIC al circuito puente H. Este ancho de pulso será directamente

proporcional, a la salida del controlador PID, programado en la PC.

Por otro lado, el funcionamiento de los servomotores es diferente. En principio veremos

similitud con respecto al método de comando del motoreductor, ya que también reciben una señal

del tipo PWM, como en el caso anterior; no obstante, su control es un poco más complejo. Este

funcionamiento se encuentra desarrollado dentro de la sección "MOVIMIENTOS DEL SISTEMA", punto

"Servomotores". A continuación, detallaremos la placa del puente H, la cual (en un principio, fue

diseñada y confeccionada por nosotros, para luego comprar una directamente armada.

Placa del puente H: Esta plaqueta está basada en el circuito integrado L66201PS , el cual es

un controlador de puente completo para aplicaciones de control de motores que combina

transistores aislados de potencia DMOS con CMOS, y circuitos bipolares en el mismo chip. Los

transistores de salida DMOS puede funcionar con tensiones de alimentación de hasta 42V y a

velocidades de conmutación de alta frecuencia. Todas las entradas lógicas son TTL, CMOS y

compatible con el mC. Además, cada canal del dispositivo está controlado por una entrada lógica

separada (medio puente), mientras que un común permite controlar ambos canales:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

31

Las características más importantes son:

Voltaje de alimentación: 12V-30V

Pico de corriente máximo: 5A

Corriente RMS: 4A

RDS (ON): 0.3 Ohm (a 25°C)

Compatible con señales TTL

Opera con frecuencias mayores a 100KHz

Protección por sobre temperatura

Alimentación lógica interna

Alta eficiencia

Condicionamiento de corriente y voltaje de salida a través de CT y CV.

El microcontrolador PIC genera a través de sus dos puertos con salidas de PWM, dos

señales de 10KHz de frecuencia, con un ciclo de trabajo de 0 a 100%. Estas son las entradas Rpwm

y Lpwm de la placa en cuestión, lo cual hará que el motor gire hacia un lado o hacia el otro. Dicho

porcentaje del ciclo de trabajo vendrá dado por la PC, como resultado del control PID de la misma.

Los pines B+ y GND son las alimentaciones lógicas de la placa donde B+ son los 12Vcc y

GND corresponde a 0Vcc.

El pin EN es la habilitación de los puertos de giro Rpwm y Lpw. Si el pin EN se encuentra

en un estado bajo, (0V) por más que aparezca la señal de giro Rpwm o Lpwm el motor no se

moverá; para que esto suceda se tiene que dar que EN y Rpwm o Lpwm estén en estado alto (5V).

Cabe aclarar que no se pueden dar la condición EN, Rpwm y Lpwm en estado alto ya que esto

supondría un corto interno del L6201PS.

El pin CT es la protección por sobre corriente, en nuestro caso el motorreductor consume

aproximadamente 200mA, y la carga que tiene no le hace realizar esfuerzos como para que esta

supere los 4A; por tal motivo no lo empleamos.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

32

El pin CV es la protección por sobretensión, esta tampoco la usamos ya que el máximo de

tensión de nuestra fuente es de 24Vcc y la placa soporta hasta 30Vcc.

En el dibujo de la bornera vemos como en la parte superior va conectado el motor a

controlar y abajo del mismo va la fuente de alimentación perteneciente al motor. Cabe aclarar que la

tensión aplicada en el pin B+ y la alimentación del motor son distintas. B+ es 12Vcc y la

alimentación del motor puede ser 6, 12, 18, 24...30V.

El tamaño de la placa es realmente pequeño, no obstante, cumple perfectamente con los

requisitos necesarios para el control de nuestro motorreductor.

Control de Transporte: Como se adelanto, a través del pin 20 (RD1), el uC será capaz de

enviar la señal para activar el motorreductor del transporte de cajas, el circuito aplicado es:

Al poner el puerto en cuestión en un estado lógico alto (5Vcc), el uC activa la base del

transistor BC547 el cual trabaja en corte y saturación, es decir, opera como una llave electrónica; de

esta manera queda polarizada la bobina del relé, cambiando este su estado.

Se puede ver que el motor del transporte, con el relé desactivado, recibe por un pin fijo

0Vcc y por el NC también, por lo que no se va a mover.

Al activarse el relé, el pin fijo se mantiene, pero el selector del relé pasa al contacto NA

donde se le aplican 12Vcc al motor y este comenzará a moverse.

El diodo, el capacitor y la resistencia, forman de un circuito de descarga de la bobina del

relé; esto se realiza debido a que al cortarle la tensión a la bobina, esta genera una fem para

oponerse al cambio y esta puede llegar a dañar el transistor.

Manipulación de señales: Por cuestiones prácticas, y errores que se presentaron en las etapas

de pruebas, fue necesario incluir un circuito, el cual tratase la señal débil, proveniente de la barrera

infrarroja, antes de ser ingresada al uC. La misma cumple la función de definir la presencia o

ausencia de la caja; por lo cual, dicha información debe ser precisa. A esta débil señal, de

aproximadamente 2Vcc, se le sumaba el inconveniente de que puede oscilar, generando un error en

el microcontrolador, haciendo que este se "confunda". Para solucionar dicha problemática, se

realizó es el siguiente circuito:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

33

Tanto el emisor (TX) y el receptor (RX) son alimentados con 5Vcc. La diferencia entre

ambos es que el retorno del diodo TX va a una resistencia a masa para cerrar el circuito; mientras

que el RX, activa con 2 voltios la base del transistor BC547; el cual opera en corte y saturación, lo

que implica que le envía una señal de 5Vcc al Schmitt-trigger inversor. Este la rectificará e invertirá

haciendo llegar al pin AN2 0Vcc ante la ausencia de cajas. Al aparecer las cajas y cortar la barrera

infrarroja, el transistor se pone a masa por medio de la resistencia de 150 ohms; provocando que el

MC74HC14 la rectifique e invierta entregando 5Vcc en el pin AN2 del uC. En otras palabras,

cuando el microcontrolador detecte una señal de 5Vcc, se deberá a que la barrera infrarroja está

siendo atravesada por una caja; en caso que vea un estado lógico bajo, la barrera e encontrara sin

obstáculos. A continuación se presenta un diagrama de las señales anteriores:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

34

La fuente de alimentación: Es la encargada de entregar toda la energía necesaria para el

correcto funcionamiento de las demás placas, servo y motores. Por ser un sistema estático y simple,

no deja de ser realmente importante. En este proyecto, hay una gran diversidad de tensiones, donde

trabajaremos con: 5Vcc, 6Vcc, 8Vcc, 12Vcc y 24Vcc. Estas se obtienen a partir de los reguladores

de voltaje de la familia LM78XX que son una serie de reguladores de 3 terminales que se pueden

conseguir con una gran variedad de voltajes haciéndolos útiles en un gran rango de aplicaciones.

Cada uno de ellos posee limitación de corriente y apagado por sobre temperatura, haciéndolos muy

duraderos. Si se los ayuda a disipar la temperatura, pueden llegar a entregar hasta 1,5 amperes.

Las principales características son:

Corriente de salida hasta 1 Amper s/protección

Gran variedad de voltajes de saldas.

Protección térmica

Protección contra corto circuitos

La topología típica de conexión, es la siguiente:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

35

A continuación, detallaremos con un esquemático, el circuito correspondiente a la fuente

de alimentación:

La tensión de 220Vca entra al transformador el cual la reduce a 24Vca; luego pasa por el

rectificador de onda completa y se obtienen lo 24Vcc con alto nivel de rizado. Para minimizar este

fenómeno eléctrico, se utiliza el capacitor de 4700uFx35Vcc. Luego, siguen las etapas de

regulación, donde se obtiene todos los niveles de tensiones mencionadas anteriormente.

La etapa de 5Vcc, consta de dos LM7805 en paralelo, los cuales generan 5Vcc a partir de

los 24Vcc.Debido a que estos integrados son capaces de entregar hasta 1A, se utiliza un

conexionado en paralelo, lo cual permitirá entregarles hasta 2A. Se instala un led de señalización

para saber si se encuentran funcionando.

La etapa de 8Vcc, consta de dos LM7808 en paralelo, los cuales generan 8Vcc a partir de

los 24Vcc. Como en el caso anterior, se utiliza el conexionado en paralelo (para obtener hasta 2A) y

el led de señalización de estado.

La etapa de 12Vcc, consta de dos LM7812 en paralelo, los cuales generan 12Vcc a partir de

los 24Vcc. Como en los casos anteriores, se utiliza el conexionado en paralelo (para obtener hasta

2A) y el led de señalización de estado.

La etapa de 24Vcc, consta de dos LM7824 en paralelo, los cuales regulan finamente los

24Vcc a la salida del capacitor de filtro, quedando disponible para emplear. Como en los casos

anteriores, se utiliza el conexionado en paralelo y el led de estado.

La variante es la fuente de 6V, donde se emplea el regulador de voltaje variable LM317T.

Este regulador es capaz de entregar hasta 1 ampere. El circuito empleado desde la hoja de datos del

fabricante es:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

36

Debido a que los 6Vcc son para alimentar a los Servomotores, y como ellos harán fuerza

para sostener el brazo, consumirán más de 1 ampere, por ende el LM317T se quemaría. Entonces,

para solucionar el problema se le adiciona un transistor de paso, según el circuito:

El transistor de paso, es un transistor TIP32C, el cual soporta hasta 4 amperes. El mismo

estará censando la corriente que atraviesa por el LM317T, a través de la resistencia de 0,7 ohms x

5W. Cuando la corriente que atraviesa al LM37T es mayor o igual a 1 ampere, se generará una

caída de tensión de 0,7V que activará la base del TIP32C, produciendo que este entre en

conducción. De esta manera se entregará el amperaje requerido por la carga, evitando la destrucción

del regulador.

El brazo robótico y el transporte: Tanto el brazo robótico, como la cinta transportadora, son

partes operativas del sistema, las cuales poseen más mecánica y mecanismos, que electrónica.

Por un lado, el brazo robótico tiene alojada en la base del mismo, una placa de conexiones.

La misma es empleada para realizar la comunicación con la placa de control. En la siguiente

imagen, podremos apreciar el lay-out correspondiente:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

37

Como se observa, esta placa tiene dos borneras; una de ellas tiene dos conexiones, y es

empleada para conectar el cable que va desde la salida del PWM del puente H con el cable del

motorreductor de la base. La otra bornera, tiene 4 alojamientos; en ella se conecta el cable de

alimentación proveniente de la placa de control. A través de este cable se alimenta con 5Vcc, 8Vcc

y 12Vcc, se señalizó con diodos led´s a cada tensión para saber que el brazo está alimentado.

Además de lo expuesto anteriormente, en esta placa y en la de control, hay dos terminales

DB9. Estos terminales son empleados para transmitir las señales del uC hacia los servomotores, y

también para recibir las señales del potenciómetro del giro de la base.

Por el lado del transporte, solo se tiene la barrera infrarroja, la cual está conformada por un

diodo emisor y otro receptor que se encuentran cableados; al igual que el motorreductor que realiza

el tiro de la cinta transportadora.

SISTEMA NEUMATICO

Para el traslado de las cajas, desde el fin de la cinta transportador (inicio movimiento del

brazo), hasta la posición seleccionada por el operador, necesitábamos diseñar y sistema auxiliar

capaz de sujetarlas y depositarlas correctamente en función de nuestra demanda; y para ello se opto

por un sistema neumático. En el extremo del brazo, se encuentra montada una ventosa, la cual

utilizando vacio (que se obtiene por medio de una pieza maquinada basada en el principio de

venturi), succiona la caja y la sujeta, hasta ser depositada en el espacio que desea el operador. La

elección de este elemento, favorece el acomodamiento de las cajas, ya que no intervienen en los

costados de la misma, ahorrando espacio en el paletamiento del producto.

A continuación describiremos los elementos utilizados para el armado del sistema

neumático de la maquina paletizadora, a través de esquemas y gráficos característicos; donde

podremos aprecia la funcionalidad del generador de vacio MICRO, utilizado en el proyecto:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

38

Para cumplir con la presión y calidad de aire requerido, se decide utilizar el sistema de aire

comprimido de la facultad. Sin embargo, a modo informativo, se utilizo un compresor para ciertas

pruebas de funcionamiento, donde el sistema respondió correctamente. A continuación, podremos

apreciar las curvas características de este dispositivo, punto a tener en cuenta para obtener un buen

funcionamiento en la succión de las cajas a paletizar:

Como se observa en las graficas, se busco trabajar dentro del rango optimo de presión de

entrada, para obtener una buena succión en la ventosa. Por otra parte, describiremos el elemento de

succión, el cual fue seleccionado teniendo en cuenta el tamaño y peso de las cajas. Dicha ventosa

nos permite sujetar las cajas para el correspondiente traslado, dentro del proceso de palatización:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

39

Para la conmutación del estado de la ventosa (con o sin succión), se utiliza una

electroválvula marca MAC, la cual es comandada por una bobina de corriente continua de 24Vcc,

con un consumo de 8,5Watts. La misma corresponde al modelo 111B-611JB; y se encuentra

detallada en el siguiente cuadro, extraído del catalogo oficial de MAC:

Además se utilizaron los accesorios correspondientes, como ser conectores de codo

oscilante, conector rápido recto, etc., todos de la marca MICRO. Sumado a lo mencionado, se

instalo aproximadamente 1 metros de tubo de poliuretano (PU) de 2,5mm de diámetro interior y

4mm de diámetro exterior.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

40

PROGRAMA DEL MICROCONTROLADOR PIC

El software del brazo robot fue diseñado mediante la plataforma de programación PIC C

Compiler, el cual emplea el leguaje de “C++”; pero con un set de instrucciones especificas para

cada uC; donde su compilador es capaz de interpretar para crear el archivo en hexadecimal *.hex.

A continuación una captura de pantalla de la computadora, durante la correspondiente

programación del microcontrolador:

Una vez obtenido el archivo en hexadecimal, empleamos el software PICKit2; el cual nos

permitirá grabar en la memoria del PIC el programa diseñado, el cual está contenido en el archivo

*.hex; según se puede apreciar en la siguiente captura de pantalla de la aplicación mencionada:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

41

Al finalizar con estas acciones, el PIC estará listo para ser colocado en la plaqueta, y cumplir

con las aplicaciones programadas.

Diagrama en bloques del software: A continuación se presenta un diagrama en bloques del

software creado en PIC C para el uC. Este se encargara del comando del motorreductor (realizando

la conversión del pedido por parte de la PC, a la señal PWM correspondiente), servomotores (ídem

motorreductor, pero con diferentes características en la señal PWM), transporte (pedido de

movimiento), neumática (señal a EV), medición y transmisión de datos.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

42

Según se ve en el diagrama de flujos, al comenzar el programa principal, el uC se fija si es

el arranque desde cero; es decir, si es el primer ciclo del programa. En este caso, el uC no conoce la

posición de los servos, por tal motivo, lo que hace es llevarlos a la posición de reposo y transmitir el

valor del ángulo en el cual se encuentra posicionado. Una vez logrado, actualiza el valor del PWM,

el cual en el arranque de pone en cero. Si la PC con el sistema de control lo requiere, se actualizara

según los datos que esta le envíe. Lo mismo pasa con el sentido de giro.

Actualizado el PWM y sentido de giro, se precede a ver si la PC requiere que se tome una

caja. Si es así, el uC espera 50ms y comienza por activar el TTE el cual tiene una rutina fuera del

programa principal. Cuando aparece una caja, se detiene y el brazo se acciona para buscarla. Activa

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

43

la EV(electroválvula) de aire, espera dos segundo para que succione y vuelve al reposo con la caja

tomada.

Si la PC no requiere que tome una caja, o bien ya la tomó, el uC procede a ver si hay que

dejarla. Si no hay que dejarla, vuelve al inicio, donde ya no es un arranque desde cero, y procede a

enviar posición de la base y actualizar nuevamente el PWM y sentido de giro. En el caso de que la

PC requiera dejar la caja, el uC activara los servos para dejar la caja, desactivara el aire y esperara 2

segundos. Luego, irá a una posición de reposo intermedia para no mover la caja, y luego a la

posición de reposo total. A continuación se expresa el código del diagrama en bloques, totalmente

comentado:

while (TRUE) //Comienza el programa ppal.-

{//----------------- Mando los servos al reposo, primer ciclo ---------------------------------

While(i==0){

Grados(); // Envió la posición de la base y recibo datos desde la PC

Reposo_total(); //Seteo los parámetros de los servo para buscar ir a reposo

Servos_buscar(); //Activo los servos

delay_ms(50); //Espero 50mS

i=1; // para que no entre más en la rutina de inicio desde cero

}//------------------------------------------------------------------------------

//------- Rutina de TX de datos y actualización de PWM de forma constante ------

loop: if(data_convert[5]==1) //Me fijo si la PC me avisa de una emergencia

{Emergencia();} // si es asi llamo a la sub rutina

Grados(); // Envió los datos de posición a la PC para el control

PWM(xpwm,giro); // Modifico la velocidad y sentido de giro

output_low(codo1); // Fuerzo al inicio, el cero en las salidas de los servos.-

output_low(hombro1); // Fuerzo al inicio, el cero en las salidas de los servos.-

output_low(muneca1); // Fuerzo al inicio, el cero en las salidas de los servos.-

output_low(giromune1); // Fuerzo al inicio, el cero en las salidas de los servos.-

output_low(dedos1); // Fuerzo al inicio, el cero en las salidas de los servos.-

//------------------------------------------------------------------------------

//Rutina para buscar las cajas con los servos

bb=data_convert[4]; // Tomo lo que solicita la PC

while(bb==1) // Me fijo si la pc requiere con un 1

{delay_ms(50); //espero 50mS.

TTE(); //Activo el tte de cajas, llamando a su rutina

if(ir_led==1){ //Me fijo si la barrera está cortada

Buscar_cajas(); //Seteo los parámetros p/ activar servos p/buscar las cajas, llamo su

rutina

Servos_buscar(); //Activo los servos para buscar la caja , llamando a su rutina

output_high(EV); //Activo la Electroválvula para chupar la caja, llamando a su rutina

delay_ms(2000); //Espero que la ventosa sujete la caja, dos seg.

Reposo_total(); //Seteo los parámetros p/activar servos p/reposo las cajas, llamo su rutina

Servos_buscar(); //Activo los servos para buscar la caja, llamo su rutinas

}

bb=0; //Cond. de seguridad para no entrar nuevamente en la rutina la llevo

a 0

}

//------------------------------------------------------------------------------

//Rutina para dejar las cajas de los servos

dd=data_convert[5]; // Me fijo sí que dato me envío la PC

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

44

while(dd==1) // Me fijo si la pc lo requiere con un 1.

{

Dejar_cajas(); //Seteo los parámetros para activar los servos para buscar las cajas

Servos_dejar(); //Activo los servos para dejar la caja , llamando a su rutina

delay_ms(2000); //Espero 2 segundos para soltar ben la caja

Reposo_dejar(); //Seteo los parámetros p/activar servos p/reposo interm., llamo su

rutina

Servos_dejar(); //Activo los servos, llamando a su rutina

Reposo_total(); //Seteo los parámetros p/activar servos p/reposo total, llamo su rutina

Servos_dejar(); //Activo los servos, llamando a su rutina

dd=0; //Condición de seguridad, para no entrar nuevamente en la rutina

}

}//cierre while //Cierre del while infinito del programa ppal.

}//Cierre main //Cierre del main.

A continuación se presentan un las subrutinas del uC, correspondientes a los movimientos y

TX de datos, las cuales se ejecutan en el programa principal del uC.

Modificación del PWM y el giro: PWM(xpwm,giro);

Se presenta el diagrama en bloques de la subrutina:

LA BASE SE

MUEVE

SI NO

ENVIO UN “1” ENVIO UN “0”

PARA QUE

LADO GIRA?

HORARIOANTI

HORARIO

ACTIVO

pwm2

ACTIVO

pwm1

RETURN

A continuación se presenta el código empleado, totalmente comentado:

//----------------------------------------- Comienzo subrutina del pwm.------------------------------------

----

void PWM(int32 xpwm, int32 giro)

{ // Modifico variable de estado.-

if(xpwm==0){ envío[5]=0;} // Si esa quieto se envía un 0, para saber estado del

brazo.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

45

else{ envío[5]=1;} // Si esa moviendo se envía un 1, para saber estado del

brazo.

//Búsqueda del origen, hacia donde está el transporte.

if(giro==1){ // Si giro es 1, sentido anti horario.

set_pwm2_duty(0); // seteo PWM2 con 0.

set_pwm1_duty(xpwm); // seteo PWM1 con XPWM, es decir, la velocidad pedida.

} //Búsqueda del Angulo

if(giro==0){ // Si giro es 0, es sentido horario;

set_pwm1_duty(0); // seteo PWM1 con 0

set_pwm2_duty(xpwm); // seteo PWM2 con XPWM, es decir, con la velocidad

pedida.

}return; //Fuerzo la salida de la subrutina

}//-----------------------------------------------------------------------------------------------------------------

Subrutina de mando del transporte: TTE();

A continuación se presenta el diagrama en bloques de la subrutina:

ESTADO

DE

BARRERA

ESTA EN 0 ESTA EN 1

PRENDO

TTE

ESTADO

DE

BARRERA

ESTA EN 1

ESTA EN 0

ESPERO

500uS

APAGO EL

TTE

RETURN

A continuación se presenta el código totalmente comentado:

//---------------------------------- Comienzo la subrutina del movimiento del tte.------------------------

void TTE(void)

{ while(true){ //Genero un bucle infinito.

ir_led=0; //fuerzo la variable a un cero.

ir_led=input_state(barrera); //Me fijo estado del la barrera óptica

//si ir_led=0, significa que no hay cajas presentes

//por eso enciendo el tte hasta que aparezca una caja

if (ir_led==0) { // Me fijo si la variable ir_led es igual a cero

do{ // Hago lo siguiente, hasta que ir_led=1.

output_high(tte_on); //Prendo el tte hasta que

ir_led=input_state(barrera); //en el puerto de barrera tenga un 1

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

46

} while(ir_led==1); //Me fijo si la variable ir_led e igual a 1, si es así

salgo.

delay_us(500); //Espero medio segundo

output_low(tte_on); } //Apago el tte

if (ir_led==1){output_low(tte_on); //Si ir_led=1, no hago nada porque hay cajas

return;} } // Fuerzo la salida de la subrutina

} -------------------------------------------------//Cierre del programa ppal.----------------------------

Subrutina de envío de datos: Grados();

A continuación se presenta el diagrama en bloques de la subrutina:

LEO EL

ADC

ENVIO EL

DATO

SALGO DE

LA RUTINA

A continuación se presenta el código totalmente comentado:

//---------------------------------- Comienzo rutina de envío de la Posición -----------------------------

void Grados(void)

{ a = read_adc(); //Leo el valor del ADC

printf("%lu \r\n",a); //Lo envío

delay_ms(10); //Espero 10mS

return; } //Fuerzo la salda de la subrutina

//----------------------------------------------RUTNA PARA BUSCAR CAJAS CON LOS SERVOS

Subrutina de manejo de servos: Servos_buscar(); y servos_dejar();

A continuación se presenta el diagrama en bloques de la subrutina:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

47

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

48

A continuación se presenta el código totalmente comentado:

void Servos_buscar(void)

{ah=0; //Fuerzo la variable a 0, esta cuenta la cantidad

if(data_convert[5]==1){Emergencia();} //Me fijo si hay emergencia.

while(true) // de pulsos enviados a los servos para moverlos despacio

{ah=ah+1; //la voy incrementando de a 1

//----------------------- Movimiento del servo del hombro --------------------------

if(serhom==hombro){goto c;} //si el valor de servo de hombro no varió, salto a mover otro

servo

if(serhom<=hombro){ //si el valor de servo de hombro es menor al set point

hombro=hombro-25; //decremento el valor del valor actual de a 25

output_high(hombro1); // pongo estado alto la salida del servo

delay_us(hombro); // espero una cierta cantidad de uS, para gen el pulso tipo

PWM.

output_low(hombro1);} // pongo a cero la salida

delay_ms(5); //Espero 5ms.

if(hombro<serhom) //si el valor de servo de hombro es mayor al set point

{hombro=hombro+25; //incremento el valor del valor actual de a 25

output_high(hombro1); // pongo estado alto la salida del servo

delay_us(hombro); //espero una cierta cantidad de uS, para gen el pulso tipo

PWM.

output_low(hombro1); // pongo a cero la salida

delay_ms(5);} //Espero 5ms.

//----------------------- Movimiento del servo del codo --------------------------

c:if(sercodo==codo){goto d;} //si el valor de servo de hombro no varió, salto a mover otro

servo

if(sercodo<=codo) //si el valor de servo de codo es menor al set point

{codo=codo-18; //decremento el valor del valor actual de a 18

output_high(codo1); // pongo estado alto la salida del servo

delay_us(codo); //espero una cierta cantidad de uS, para gen el pulso tipo PWM.

output_low(codo1); // pongo a cero la salida

delay_ms(5);} //Espero 5ms.

if(codo<sercodo) //si el valor de servo de hombro es mayor al set point

{codo=codo+18; //incremento el valor del valor actual de a 18

output_high(codo1); //pongo estado alto la salida del servo

delay_us(codo); //espero una cierta cantidad de uS, para gen el pulso tipo PWM.

output_low(codo1); //pongo a cero la salida

delay_ms(5);} //Espero 5ms.

//----------------------- Movimiento del servo de la muñeca --------------------------

d:if(sermune==mune){goto e;} //si el valor de servo de hombro no varió, salto a mover otro

servo

if(sermune<=mune) //si el valor de servo de muñeca es mayor al set point

{mune=sermune; // copio set point en variable de servo.

output_high(muneca1); //pongo estado alto la salida del servo

delay_us(mune); //espero una cierta cantidad de uS, para gen el pulso tipo PWM.

output_low(muneca1); //pongo a cero la salida

delay_ms(5);} //Espero 5ms.

if(mune<sermune) //si el valor de servo de muñeca es menor al set point

{mune=mune+5; //incremento el valor del valor actual de a 5

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

49

output_high(muneca1); //pongo estado alto la salida del servo

delay_us(mune); //espero una cierta cantidad de uS, para gen el pulso tipo PWM.

output_low(muneca1); //pongo a cero la salida

delay_ms(5);} //Espero 5ms.

//----------------------- Movimiento del servo de giro de muñeca --------------------------

e:if(ah<=sergmun) //si el valor de servo de giro muñeca es mayor o igual al set

point

{output_high(giromune1); //pongo estado alto la salida del servo

delay_us(sergmun); //espero una cierta cantidad de uS, para gen el pulso tipo

PWM.

output_low(giromune1); //pongo a cero la salida

delay_ms(5); //Espero 5ms.

//----------------------- Movimiento del servo de los dedos --------------------------

if(ah<=serdedo) //si el valor de servo del dedo es mayor o igual al set point

{output_high(dedos1); //pongo estado alto la salida del servo

delay_us(serdedo); //espero una cierta cantidad de uS, para gen el pulso tipo

PWM.

output_low(dedos1); //pongo a cero la salida

delay_ms(5);} //Espero 5ms

if(ah==40){i=1;grados();return;}}} // Si ah== 40, mando la posición y salgo de la rutina.

De esta manera finalizamos con el detalle del programa del microcontrolador, quien será el

responsable de comandar los movimientos de la maquina paletizadora. Este simple pero confiable

drive, funcionara como "esclavo" del sistema de control; el cual se ejecutara dentro de la PC. Este

ultimo dará las órdenes (interactuando con el operador que manipule al sistema) a través de la

aplicación Labview; la cual desarrollaremos a continuación.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

50

SOFTWARE DE LA PC - LABVIEW

Para realizar el control de la zona de descarga, monitoreada por cámara web, para el

comando completo del brazo robótico y demás movimientos del proceso, se opto por implementar

un programa en la PC, utilizando el software Labview. Además de cumplir con estas tareas, se

utilizaron las prestaciones del programa, para diseñar las pantallas de operaciones y registros

correspondiente. El proyecto que se genero, incluye las librerías necesarias para las funciones

utilizadas, como así también, las diferentes aplicaciones y variables globales. A continuación, una

captura de imagen del proyecto en labview, de la maquina paletizadora vigilada por cámara web:

Como podemos apreciar, el encabezado del árbol corresponde al nombre del proyecto

"TEC_DIG_3_PROYECTO" y su extensión del tipo: lvproj. Siguiendo con el orden, se encuentra el

archivo "Adquisicion imagen - Rev5.vbai", programado en una aplicación de Labview (VISION

BUILDER AI). El mismo contiene la configuración de la cámara web, su posterior tratamiento de

imagen y obtención de información, como la detección de objetos o conteo de cajas listas para

despachar. El programa de dicha aplicación, se desarrollara más adelante. Continuando con el orden

descendente, nos topamos con el programa principal, llamado "TP_TEC_DIG_3_Rev9.vi". Como

podemos observar, tanto esta aplicación como la mencionada anteriormente, contienen un numero

de revisión, el cual fue aumentando, frente a modificaciones grandes (metodología utilizada para

seguir un orden de avances). El mismo contiene todo el control de la maquina paletizadora, lo cual

desarrollaremos a continuación. Finalmente, debajo de lo mencionado, se encuentran las variables

globales, utilizadas para trasmitir información entre las aplicaciones ("Adquisicion imagen -

Rev5.vbai" y " TP_TEC_DIG_3_Rev9.vi "), y posterior a estas, las librerías utilizadas.

Para comenzar con el desarrollo del programa principal, se mencionaran los comandos,

indicadores y demás controles del proceso, que se encuentran en la pantalla de operación del

sistema:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

51

Como podemos observar, el scada diseñado nos ofrece las siguiente información, presentada

en varios formatos:

Indicadores luminosos "PRESENCIA EN LATERALES" y "PRESENCIA INGRESO

CAMIONES", utilizados para controlar zona de descargas

Indicador numérico de cantidad de cajas en zona de despacho

Botón de selección "MANUAL"

Comando "SET-POINT-MANUAL"

Pulsador para ubicar caja en zona de despacho, de forma automática

Pulsadores "TOMAS CAJA" y "DEJAR CAJA"

Cuadro con imágenes continuas de zona de despacho (área monitoreada)

Indicador luminoso "ALARMA ZONA INVADIDA DURANTE EL MOVIMIENTO"

Indicador luminoso "DISPARO DEL SISTEMA - PROBABILIDAD DE

ACCIDENTE"

Checkbox "PERMISIVO" para "RESET PARADA"

Pulsador "RESET"

Indicadores numericos "i for loop COM" e "i for loop PID"

Selection "Puerto VISA"

Indicador analógico de la posición del brazo (en unidad de grados)

Indicador numérico "POSICION BRAZO [Grados]"

Pulsador "PARAR MOTOR"

Indicador luminoso que advierte forzamiento disparado motor brazo robótico

Visto los comandos e indicadores de la pantalla, con los cuales podremos operar el sistema

de paletización y controlar aspectos referidos a un proceso seguro y acotado; pasamos a explicar la

programación en Labview.

Comunicación: Se programan los bloques correspondientes a la comunicación serie,

protocolo RS-232. En primer lugar, debemos iniciar o abrir el puerto, para que este se prepare para

ejecutar la acción posterior de lectura y escritura:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

52

Como se explica en "DIGITALIZACION DEL SISTEMA" sección "Sincronización", para

efectuar la sincronización entre la PC y el microcontrolador, se debe escribir primero, para luego

efectuar el comando de lectura, así el PIC sabrá cuando enviar el paquete de datos con la

información de la posición del brazo:

Posterior a esta pantalla, colocamos un retardo de 1mSeg, que a simple vista parece no

influir en nada; pero este comando, se utilizo para sincronizar y ajustar los tiempos de lectura y

escritura. Si en algún mantenimiento se requiere modificar el retardo entre el comando de escritura

y el de lectura, se podrá ajustar desde este temporizador:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

53

Luego de la espera de 1mSeg, se procede hacer la lectura de la información proveniente por

el puerto serie seteable; en nuestro caso el COM4 (configuración que se realizo desde

Administración de dispositivos en Windows, para usar el adaptador Serie-USB). Como se puede

observar en el grafico siguiente, la información ingresa al bloque de lectura de 8 bytes (en donde

solo utilizaremos 4 bytes). Se deja configurado como 8 bytes, ya que mismos fueron utilizados

durante las pruebas y ajustes durante el desarrollo del proyecto. Se considera conservarlos, en caso

de que, en algún mantenimiento se requiera ampliar la información recibida del PIC. Luego, pasa

por un selector utilizado para filtrar el ruido cuando el brazo esta posicionado en 0º y las

perturbaciones hacen negativo este valor. De la salida del selector tenemos un bloque que calculan

la extensión de la entrada y un indicador numérico (utilizado por nosotros en las configuraciones; se

encuentra oculto) que muestra el valor sin tratamiento que ingresa por el puerto serie (numero entre

0 y 1024). Conociendo la extensión del valor de entrada (unidad, decenas, centenas o miles),

seleccionaremos que salida del bloque de función, vamos a utilizar. Finalmente, la salida se dirige al

indicador llamado %. También se observa, el contador de interacciones "i for loop COM', que nos

dirá si la rutina se está ejecutando:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

54

Finalmente, debemos cerrar el puerto para finalizar con la rutina de comunicación. Esta

tarea, se efectúa con el bloque "VISA Close":

Para mantener la sincronización y la correcta comunicación entre el microcontrolador y la

PC, debemos implementar un retardo o Delay de 5mSeg, colocado en la última secuencia:

De esta forma concluye la programación de la comunicación en el software Labview, para el

protocolo RS-232.

Programa principal: Daremos una explicación concreta y general del programa principal,

para no explayarnos demasiado en desarrollo de cada función correspondiente al software Labview;

por lo cual se consideran de conocimiento previo, ciertos aspectos de programación en bloque. A

continuación, cinco capturas de pantalla, donde se observa la programación del "for infinito" o lazo

principal:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

55

En la primer pantalla, vemos la programación de una subrutina, que cumple la función de

importar una tabla Excel, la cual contiene la correspondencia entre la variable de comunicación

serie que recibe labview, y la posición real del brazo. Básicamente, para realizar un lineamiento

"fino" de la lectura del movimiento giratorio del brazo robótico, el cual definirá la correcta

ubicación de cada caja paletizada. Para ajustar esta tabla, se recurrió a efectuar varias pruebas, para

adquirir datos e interpolar dicha relación. A continuación mostramos parte de la tabla, para

comprender mejor el "arreglo" del que estamos hablando:

Como vemos en la tabla, el bloque colocara en su salida, el valor apuntado por la entrada, la

cual tendrá una variación entre 0 y 1023.

Por otra parte, podemos apreciar un bloque ubicado en la parte superior derecha, el cual

limita la variación de posición del brazo que leemos; dentro de un margen configurable por

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

56

nosotros. De esta forma, filtramos los ruidos que podrían generar picos irreales de variación,

produciendo una lectura errónea.

En la segunda pantalla podemos apreciar el tratamiento analógico de la señal de entrada,

donde se programo un filtro digital. Básicamente, se compara el valor actual de posición con el de

la rutina anterior, si estos son iguales, se mantiene la salida anterior, si hay una diferencia positiva o

negativa, se efectúa el incremento correspondiente en una unidad mínima (o sea un 0,26 grado) de

la posición anterior. Por la velocidad que tiene nuestro proceso, donde el motor gira a una velocidad

máxima de 6rpm, nunca tendremos una variación mayor a 0,26º en una interacción de 5mSeg.

En la tercer pantalla, podemos apreciar como formamos el paquete de 8 bits, que contendrá

la información enviada desde la PC al PIC:

Los bits B7, B6 y B5 contienen la variable de velocidad del motor, la cual se encuentra en el

rango de 0-500 "cuentas" (valor que interpretara perfectamente el microcontrolador). El bit B4,

indicara el sentido de giro, siendo 0 para girar aumentando la posición en grados, y 1 para

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

57

disminuir, volviendo a 0º. El bit B3 nos dirá cuando queramos tomar la caja, mientras que el bit B2,

le dirá al microcontrolador cuando queramos dejar la caja. Finalmente, el bits B1 le dirá al PIC

cuando se produzca un disparo (ver en pantalla variable "DISPARO DEL SISTEMA - PROBABILIDAD DE

ACCIDENTE"), y el bits restante B0, quedara como reserva. Como se puede aprecia, optamos por

implementar una metodología sencilla de trasmisión de la información; no obstante, se obtuvieron

resultados más que aceptables, lo que cumplía con los requisitos planteados.

En la cuarta pantalla, podemos apreciar el control PID del movimiento circular del brazo

robótico, impulsado por el motorreductor. El mismo está programado en bloques que contienen las

subrutinas proporcional, integral, derivativa, tiempo diferencial y Set_Min_Mov. El desarrollo e

interpretación de estos bloques se considera de conocimiento del lector. Vemos el cálculo del error,

que consiste en la diferencia entre SP (SetPoint) y el "Indicador Aguja" variable local que comanda

el indicador analógico de posición, y que corresponde a la posición del brazo. Con dicho error, se

hacen los cálculos proporcional, derivativo e integral, se suman y se obtiene la salida del PID. Esta

señal, no sale directamente al uC. Primero pasa por el bloque limitador, donde acotamos dicha señal

en una banda coherente para el proceso, y para ser interpretada por el PIC. Luego, tenemos el

bloque Set_Min_Mov, donde tratamos la salida del controlador para eliminar la banda muerta; zona

donde el motor no se mueve ya que debemos primero, vencer la inercia propia del motor.

Finalmente, la señal se trata para ser enviada al microcontrolador PIC, el cual dará la orden para

mover el motorreductor.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

58

En la quinta pantalla, podemos observar mayormente, la programación del registro de

información. Se genera un archivo Excel, el cual se almacenara en la dirección "D:\Gero\Facultad\",

bajo el nombre "BRAZO.xls". La información que contendrá esta tabla, se corresponderá a:

"FECHA" (fecha con formato mes/día/año que se extrae del sistema operativo Windows); "HORA"

(base de tiempo con formato hora:minutos:segundos que se toma también del sistema operativo;

donde veremos que cada segundo contiene 200 mediciones); "Error" (corresponde al valor error que

se debe corregir); "PRESENCIA LATERALES" (valor booleano correspondiente a la detección de

invasión por los laterales de la zona de despacho); "PRESENCIA INGRESO" (valor booleano

correspondiente a la detección de invasión por el ingreso de camiones a la zona de despacho);

"DISPARO POR DETECCION" (valor booleano correspondiente al disparo de todos los

movimientos del sistema, por invasión de la zona de despacho cuando se paletiza una caja en dicha

área); y "GRADOS" (valor analógico correspondiente a la posición en grados del brazo robótico).

Además, podemos observar la base de tiempo o delay de 5mSeg, valor que servirá para

sincronizar la PC con el microcontrolador. Por ende, cargaremos la tabla con 200 muestras de datos

por segundo. Este valor supera ampliamente las respuestas del proceso, asegurándonos que no

tendremos perdida de información.

La tabla generada cada vez que se inicia el programa (actualizando los datos dentro del

archivo "BRAZO.xls"), es de la siguiente forma:

FECHA HORA Error PRESENCIA

LATERAL

PRESENCIA

INGRESO

DISPARO POR

DETECCION GRADOS

7/14/2013 1:13:27 PM 0 0 0 0 225.68

7/14/2013 1:13:27 PM 0 1 0 1 225.96

7/14/2013 1:13:28 PM 0 1 0 1 225.96

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

59

Finalmente, en la sexta captura de pantalla del programa Labview, podemos apreciar los

comandos de los indicadores luminosos que nos darán aviso de la presencia de objetos en los

laterales y en el ingreso de camiones, correspondientes a la zona de despacho. Además, podemos

observar las condiciones que generaran el disparo de todos los movimientos de la maquina

paletizadora, producto de la invasión de la zona de despacho al momento de paletizar una caja en

esta área. Esta condición, pondrá en estado alto al bits B1 del paquete de comunicación que se envía

desde la PC al uC (ver "COMUNICACION DEL SISTEMA") para dar aviso al PIC y frenar los movimientos

que se estén comandando en ese instante.

Por otra parte, tendremos un aviso: "ALARMA ZONA INVADIDA DURANTE EL MOVIMIENTO", que nos

dejara un registro si se invadió momentáneamente la zona de despacho, mientras se estaban

paletizando cajas, fuera de esta área (condiciones que no dispararan el sistema).

Finalmente, se puede observar el manejo de variables locales y globales, las cuales nos

brindan la información necesaria para realizar el control de la zona de despacho, durante la

operación de la maquina paletizadora; como por ejemplo, la cantidad de cajas, o el display de la

cámara web, datos provenientes del programa VISION BUILDER AI (aplicación de Labview, la

cual desarrollaremos a continuación).

PROGRAMA CAMARA WEB - VISION BUILDER AI

La aplicación Vision Builder AI de National Instruments, está orientada a la inspección,

tratamiento de imagen y automatización correspondiente. Consiste en una programación similar a la

de bloques, salvo que se respeta una serie seguida de instrucciones y comandos, y un solo canal de

comunicación de la información, o sea, la captura continua de imagen. No obstante, podemos

obtener bifurcaciones, armando un árbol del proyecto, lo cual no fue necesario en nuestro caso. A

continuación, el "árbol" de nuestro programa:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

60

Como verán, solo tiene un comienzo y un final, y entre ambos, un solo bloque que contendrá

los comandos programados (ninguna bifurcación). En el inicio del programa, debemos configurar el

dispositivo a utilizar y la función que deseamos realizar. En nuestro caso, se implementara una

cámara web marca FULLTECNO con conexión USB, y configurada para adquisición continua de

imagen de video. Una vez que se agregue el dispositivo y sea detectado por la aplicación,

comenzamos armar nuestro programa. A continuación, una imagen de la programación en bloque

realizada para este proyecto:

Primer bloque "Acquire Image": dentro de este bloque definimos el dispositivo a utilizar, el

modo de adquisición y las calibraciones correspondientes (foco, brillo, etc.). El bloque de color

verde y texto "PASS", nos indica el correcto funcionamiento de la función; en caso de perder

conexión con cámara web, o presentarse algún otro problema, este indicador pasa a color rojo con

un texto que dice "FAIL".

Segundo y tercer bloque "Find Edges": estos bloque se utilizan para detectar objetos a través

de una línea predefinida por varios puntos interpolados entre sí, que formaran una línea continua

denominada contorno. Dicho contorno debe ser definido por el programador, teniendo en cuenta

varios aspectos que afectaran directamente a la detección. Alguno de estos parámetros a configurar

son: distancia máxima y mínima entre puntos detectados sobre la línea de contorno, diferencia en el

nivel de brillo y color que confirmara detección de objeto sobre contorno, etc.

El primero se utiliza para detectar objetos que ingresen por los laterales, mientras que el

bloque siguiente es el encargado de indicarnos si se invade la zona por el ingreso de camiones. Cabe

aclarar que, una vez definidos los parámetros de dichos bloques, fue necesario realizar una

configuración fina, para poder obtener un rendimiento acorde a lo requerido en este proyecto. A

continuación una definición visual de la zona de trabajo y los limites mencionados:

De esta manera, si nos encontramos paletizando una caja hacia la zona de despacho, y se

detectara el ingreso de un cuerpo a dicha área controlada (ya sea por alguno de los laterales o por el

ingreso de camiones), el control programado en la PC de la maquina paletizadora, lo detectara y

procederá a detener todos los movimientos que se estén ejecutando; ya que lo identificara como una

invasión peligrosa de un cuerpo extraño.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

61

Cuarto bloque "Vision Assistant 1": Este bloque es complejo, ya que posee un editor amplio,

lo cual nos brinda gran flexibilidad en la configuración de su funcionamiento. Dentro del mismo,

encontraremos herramientas de edición, las cuales también se deben programar en bloque; y con la

cuales se obtiene la edición y tratamiento fino de la imagen capturada por la cámara web. A

continuación veremos el desglose de este bloque:

El primer bloque captura la imagen que está siendo tratada en el programa principal, la

encuadra y la prepara para la edición. En el segundo bloque, le aplicamos un filtro de colores, donde

se le extrae un tono color verde, de la gama RGB (definido como "Green Plane"); buscando

eliminar los tonos diferentes producidos por las luces y sombras. El tercer bloque nos sirve para

ajustar contraste, y unificar un objeto de varios tonos, relieve y demás características, en una sola

imagen. Con esta función obtendremos un solo objeto uniforme, de color negro y fondo rojo, donde

no distinguiremos las diferencias de textura (algo que no nos interesa). De esta manera, estaremos

preparando la imagen, para el conteo posterior de las cajas ubicadas en la zona de despacho.

Finalmente el cuarto bloque "Lookup Table" conmutara el fondo de color rojo (resultante del

bloque anterior) por el color blanco; de esta manera, obtendremos objetos uniformes color negro

(sin tonalidades de grises) y en fondo blanco.

Quinto bloque "Match Pattern 1": Basicamente, con este bloque funcional, definiremos la

región a controlar; para luego generar una variable global con formato de imagen, y utilizarla como

entrada de imagen para la pantalla de operaciones, programada en Labview.

Sexto bloque "Detect Objects 1": En este paso, con el tratamiento de imagen ya finalizado,

podemos aplicar la detección de las cajas de madera que estamos paletizando. Su funcionamiento

consiste en definir ciertos parámetros, para filtrar los objetos a detectar, de los que no nos interesan.

Conociendo lo que queremos contar, este filtro consistirá en el tono oscuro de los objetos, su

homogeneidad y las dimensiones de los mismos. Al configurar estos parámetros, el bloque

funcional modificara un registro interno, dependiendo de la cantidad de seteos acertados; referencia

que trasmitiremos por medio de una variable global, al programa principal de Labview.

Séptimo objeto "Calculator 1": Esta función tiene varias etapas de configuración, pero todas

corresponden a definir y preparar las variables globales (que nos permitirán levantar información

desde el programa principal de Labview) y sus parámetros correspondientes a esta aplicación. A

continuación, veremos un simple esquemático que nos mostrara la relación de estas variables:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

62

En la primer línea, generamos la relación entre el conteo de los objetos en el bloque

funcional de detección de objetos. En la línea siguiente, con una relación lógica simple,

generaremos un booleano que nos informara de la invasión en el ingreso de camines, de la zona de

despacho. Finalmente, con la misma lógica que la línea anterior, obtendremos la invasión de la zona

de despacho, pero por los laterales. De esta manera, tenemos preparadas las variables para ser

transmitidas por un bloque posterior especifico.

Octavo bloque "Set Variable 1": Finalmente el último bloque, encargado de levantar las

variables configuradas anteriormente, para mostrarlas en el árbol global del proyecto. El panel de

configuración, es el siguiente:

Como podemos observar, tenemos la variable de la imagen de la cámara, la de cantidad de

objetos del tipo caja paletizada, y los indicadores de invasión de zona de despacho; cada una con su

configuración y tipo de formato correspondiente.

De esta manera, llegamos al "End" del programa configurado, retornando automáticamente

al inicio del "For" infinito. Por ende, esta secuencia se repetirá cíclicamente de manera continua e

ininterrumpida.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

63

PRUEBAS REALIAZADAS

PRUEBAS CON CAMARA WEB

Una vez configurado el drive de la cámara web, se procedió a realizar distintas pruebas para

identificar la posición optima de la imagen que requeríamos tratar, para poder obtener la mejor

visualización del área a controla. Se realizo el ajuste del foco y zoom, mediante la lente de la

misma, posterior al montaje y fijación correspondiente, sobre la soportaría montada en la zona de

despacho de la maquina paletizadora.

FIJACION CAMARA WEB

Cabe aclarar que el fondo blanco con el remarco rayado (que se observaran en las siguientes

imágenes de la zona de despacho), y el color oscuro de las cajas a paletizar, facilitan la detección y

conteo de las mismas. Se determino estandarizar dicha tonalidad en los envases, junto con las

medidas ya definidas, como condición del proceso. Estas mejoras no se encontraban presente al

momento en el cual se realizaron las primeras pruebas, punto que no imposibilito el tratamiento de

imagen (ya que los resultados se obtuvieron de igual forma) pero si ayudo con respecto al encuadro

de las cajas; además, se busco mejorar la presentación de la maquina paletizadora. A continuación

se podrá observar el montaje finalizado de la cámara web, y la zona de despacho la cual está

delimitada por un recuadro y resaltada con líneas transversales azules (donde se pretenden ubicar

las cajas paletizadas, listas para despachar):

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

64

MONTAJE CAMARA WEB SOBRE SOPORTE SUPERIOR ZONA DE DESPACHO

VISTA SUPERIOR DE ZONA DE DESPACHO

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

65

Una vez instalada la cámara, realizamos distintas pruebas con el software VISION

BUILDER AI, a fin de detectar las cajas que debimos paletizar y contabilizar. Nos topamos con el

inconveniente en las sombras que aparecían en la captura de imágenes, y las diferencias en la

superficie del área de despacho, lo cual imposibilitaba diferenciar de manera correcta a dichos

cuerpos. Esto generaba un mal conteo, además de la falsa detección, ya que cualquier sombra que se

metiera en la zona de vigilancia, era tomado por la cámara e informado al programa principal:

Como podrán observar en la segunda imagen, se remarco la sombra que generaba la

distorsión de la imagen, y la detección errónea del objeto. Para solucionar este inconveniente

surgido en las primeras pruebas, se realizo es un tratamiento de la imagen, de manera tal de que se

diferencie notablemente el área de despacho de cajas con las mismas; es decir, que se contraste bien

la caja con la superficie de apoyo. Se utilizo el bloque funcional "Vision Assistant", de la aplicación

VISION BUILDER AI, con la cual se programo toda la captura y tratamiento de la imagen de la

cámara web.

Como ya se explico en el punto anterior "PROGRAMA CAMARA WEB - VISION BUILDER AI", se

programo la siguiente secuencia de bloques, efectuando varios ensayos durante todo su desarrollo;

obteniendo los resultados demostrados en las posteriores imágenes:

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

66

A continuación veremos las secuencias de las capturas de pantallas, donde podremos

apreciar cómo se transforman las imágenes tomadas por la cámara web:

IMAGEN 1

IMAGEN 2

IMAGEN 3 IMAGEN 4

Como se puede apreciar en la secuencia de las imágenes, al realizar el tratamiento

correspondiente, se logro obtener una detección optima de las cajas paletizadas. Al poder

diferenciar las sombras de los cuerpos ubicados en la zona de despacho (sean o no cajas paletizadas

u otro objeto extraño), procedimos a efectuar las pruebas para contar las cajas y diferenciarlas de

cualquier otro objeto interviniente en esta área. Todo estos avances, requirieron varios ensayos,

ajustes y puestas a punto, para llegar a obtener el resultado que el proyecto de la maquina

paletizadora vigilada por cámara web requería.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

67

PRUEBAS EN LA COMUNICACION RS-232

El problema surgido en la comunicación entre la PC y el microcontrolador, que demandaron

gran cantidad de ajustes y ensayos, se debió a la diferencia entre los dos software de programación

(PC en Labview y la del uC en PCW) que se debían comunicar entre sí mediante RS-232. Como ya

se explayo en un punto anterior "DIGITALIZACION DEL SISTEMA" del presente informe, fue necesario el

ajuste de varios parámetros. A continuación enumeraremos los inconvenientes y soluciones que

fuimos experimentando durante el desarrollo de la comunicación entre estos dispositivos; punto

que, como ya mencionamos, demando gran cantidad de pruebas.

1. El primer problema que tuvimos, fue el de comunicar el uC con la PC. Esto se debía

a que la PC transmitía a través del Labview más rápido que el uC. Entonces el uC se tildaba,

produciendo que la PC largue el error de comunicación por no recibir datos. Para solucionar esto, se

ensayaron los tiempos de TX-RX de la PC y del uC hasta lograr la correcta sincronización, la cual

iniciaba con el comando de escritura de la computadora al PIC.

2. Con las variaciones debidas a los cambios de los potenciómetros, comenzaron a

aparecer pequeños saltos en la medición de posición del brazo. Luego de varias pruebas y análisis

de los registros generados, detectamos que se trataba de ruido introducido en la tapa de conversión,

propio de las perturbaciones presentes en el ambiente. Para poder eliminar dicho ruido, se realizaron

linealizaciones de lecturas en ambos programas. Esto consistió en implementar una pequeña rutina

donde grabo el valor actual del ADC, y lo comparo con una nueva lectura, según:

Void main

{

A=read(adc);

For(;;)

{B=(adc);

If(A<B) {A=A+1; PRINTF(“Lu”,A); }

If(B<A) {A=A-1; PRINTF(“Lu”,A); }

If(B=A) {A=A; PRINTF(“Lu”,A); } } }

Al implementar la rutina de arriba, logramos la linealidad, con una muy buena respuesta en

el tiempo. Pero al querer variar de a 1 grado el movimiento, notamos que no funcionaba, y el

sistema comenzaba a oscilar, surgiendo otro problema de software que se describe continuación.

3. Al notar que el ADC del uC era de 0-255 (8bits), se efectúa el siguiente calculo: si en

270º tengo el valor 255 en el ADC, entonces tengo por cada lectura del ADC una variación de

1.058º(270º/255=1.058º). Esto nos trae aparejado el problema que se nombraba anteriormente,

debido a que, si queremos hacer un movimiento cuya variación del valor actual con el set-point es

de 1º, el sistema de control no lo detecta, y el brazo comenzaba a oscilar. Debido a esto, se decide

pasar el conversor ADC del uC de 8 a 10 bits, cambiando de una lectura de 0 a 255, por una de 0 a

1023. Rehaciendo las cuentas, obtenemos que 270º/1023=0.264º; lo que implica que para cada

lectura del ADC, la posición varió 0.264º. De esta manera logramos obtener que la diferencia entre

valor actual con el set-point sea de 1º y el sistema no oscile. Al emplearlo y efectuar posteriores

pruebas de la modificación efectuada detectamos que el sistema frente a variaciones chicas del set-

point con respecto al valor actual, se comportaba perfectamente; pero para variaciones grandes

comenzaba a oscilar de manera importante. Esto nos trajo aparejado otro error, el cual se describe a

continuación, en el punto 4.

4. Al pasar el ADC del uC de 8 a 10 bits, notamos que para pequeñas variaciones del

set-point con el valor actual el sistema se comportaba correctamente; pero a medida que la

diferencia aumentaba, las oscilaciones comenzaban a ser criticas. Esto se debía a la modificación

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

68

realizada sobre el ADC, ya que la cantidad de cuentas realizadas por el mismo era mayor. Entonces,

el brazo se movía más rápido que la indicación en la PC, la cual variaba de forma más lenta, a lo

que venía haciendo antes de la modificación. Esto producía una mala lectura de la posición del

brazo, el cual pasaba por la ubicación seteada por el operador, pero era informada con lentitud, lo

que se traducía en una inestabilidad en el control. En primera instancia, se pensó que la velocidad

de transmisión era lenta; donde se probó aumentar de 9600bps a 19200bps sin obtener resultados.

Luego de este ensayo, se probó con transmitir un paquete de 5bits a 9600bps, sin obtener una

mejora en la respuesta del sistema. Debido a esto se empieza a analizar la rutina de transmisión de

datos desde el uC a la PC, y se halla que el código empleado en el punto 2 era el problema; para

refrescar la memoria, el mismo es:

Void main

{

A=read(adc);

For(;;)

{ B=(adc);

If(A<B) {A=A+1; PRINTF(“Lu”,A); }

If(B<A) {A=A-1; PRINTF(“Lu”,A); }

If(B=A) {A=A; PRINTF(“Lu”,A); }

}

}

Donde para cuentas de 0 a 255 (ADC de 8bits), las cuentas las hace casi instantáneas; y la

variación de la PC va de la mano con el giro del brazo. Pero la cosa cambio al hacer cuentas de 0 a

1023 (ADC de 10bits), donde tarda mucho más tiempo en hacer las cuentas, y por ende desfasa la

transmisión de la posición con el giro del brazo; es decir, indica una posición que no se

correspondía a la actual del brazo. Al detectar que la falla anterior era provocada por ese código, se

procedió a eliminarlo del programa de uC. Pero esto, nuevamente nos trajo aparejado el problema

de los saltos de los valores de lectura del ADC; que se estudiaran en el punto siguiente, luego de

realizar más pruebas en la comunicación entre la PC y el PIC.

5. Debido a que se tuvo que eliminar la falla del retraso de transmisión de datos desde

el uC, eliminando el código de arriba; se produjo nuevamente la falla de saltos en valores de

posición. Es decir, había momentos donde el ADC leía siempre el mismo valor para una variación

de 10 grados aproximadamente; donde esto se evidenciaba mas entre los 180 y 200 grados. Se

procedió a resolver el problema, empezando por analizar alguna posible falla del ADC del uC.

Estudiando el tiempo de conversión, se encuentra que este estaba seteado en 4uS usando el clock.

Entonces, investigando en el manual del uC, encontramos que aun se podía hacer más rápido

usando el clock interno del ADC; el cual varía entre 2 y 6uS dependiendo el cristal. Debido a que el

cristal empleado es el de mayor frecuencia que soporta el uC (20 MHz) el clock interno del ADC

sería el de 2uS, disminuyendo el tiempo de conversión. Al realizar las pruebas, el sistema de control

dio el resultado esperado, leyendo todos los valores en el rango de 0 a 270º; pudiéndose así, setear

un error de 1º en 270º de operación; es decir, aceptando un error en todo el rango del 0,37%.

6. Finalmente, como ultima mejora aplicada a la medición de posición del brazo

robótico, empleado para la paletización de las cajas, se busco linealizar dicha variable. Como

resultado de los análisis sobre los registros generado en las últimas pruebas, se observo la no

linealidad de la medición. Para solucionar este inconveniente, como ya se detallo en el desarrollo

del programa Labview, se genero una subrutina que cumpla la función de importar una tabla Excel,

la cual contiene la correspondencia entre la variable de comunicación serie que recibe labview

(valor entre 0 y 1023), y la posición real del brazo. Básicamente, para realizar un lineamiento "fino"

de la lectura del movimiento del brazo robótico; se recurrió a efectuar varias pruebas, adquirir datos

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

69

e interpolar esta relación, con una tabla. A continuación mostramos parte de la tabla (la cual vimos

anteriormente), para comprender mejor el "arreglo" del que estamos hablando:

Como vemos en la tabla, el bloque colocara en su salida, el valor apuntado por la entrada, la

cual tendrá una variación entre 0 y 1023, obteniendo la lectura de la posición exacta en donde se

encuentra el brazo que debe paletizar la caja. Finalizada esta modificación, se procedió a las

pruebas de todos el sistema terminado, obteniendo resultados aceptables.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

70

CONCLUSIONES

CONCLUSION DEL PROYECTO DE INGENIERIA

A través de la realización del presente proyecto de ingeniería, hemos podido comprender la

importancia de plantearse objetivos concisos, aplicables y concretables; para así poder solucionar

un inconveniente real y existente; o realizar la mejora de un proceso específico. Durante el

desarrollo del proyecto, logramos implementar gran parte de los conceptos estudiados en la materia

Técnicas Digitales III, encontrando en determinados temas, diferencias entre la teoría o cálculos; y

los resultados prácticos. Estas cuestiones que se fueron presentando, generaron dudas y

problemáticas, las cuales pudimos solucionar con ayuda de la teoría y practica de la materia, la

investigación y consultas adecuadas con profesores. Aprendimos a realizar tratamiento de

imágenes, lo cual resulta ser una herramienta más que interesante. El haber volcado esta tecnología

al ámbito de seguridad y control, para detectar y minimizar posibles accidentes, hace del presente,

un proyecto interesante y atractivo.

CONCLUSION PERSONAL DEL GRUPO DE TRABAJO

Creemos haber aprendido a resolver conflictos reales, generando una mejora viable sobre un

proceso existente. Esto nos aporta cierta experiencia que nos será de gran utilidad, en futuros retos

laborales. De esta manera logramos enlazar la teoría con la práctica para poder obtener los

resultados esperados, y así concluir el proyecto; aprendiendo a cooperar entre nosotros, y organizar

los avances que dieron resultado a lo demostrado durante el desarrollo del informe.

Somos consientes del tiempo dedicado a este proyecto de ingeniería; pero sabemos del aporte

y enseñanza que nos deja todo este trabajo; lo cual hubiese sido imposible de conseguir, sin pasar

por una experiencia similar.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

71

ANEXOS

LISTADO DE PROGRAMAS

Los softwares empleados para realizar el proyecto, se dividen en dos partes, según sean

empleados para la PC o para la placa de comando del bazo. A continuación enunciaremos las

aplicaciones utilizadas, con sus respectivas características.

Programas para realizar el software de comando de la PC:

Labview 2011 de National Instruments

o Labview 2011 Professional development system v11.0 – Empleado para el

programa principal de control y pantalla del sistema.

o Vision builder AI – Aplicación extra para Labview 2011 - Empleado para el

tratamiento de imágenes obtenidas por la cámara web.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

72

Programa empleados para la placa de comando:

PCWHD Compiler v4.104 – Empleado para realizar el software del uC PIC 16f877a

por medio del lenguaje C++. El mismo posee un compilador que genera el archivo

*.hex que contiene el código traducido al lenguaje assembler del PIC.

PICkit 2 v2.61.00 – Aplicado para tomar el archivo *.hex que contiene el código

traducido en assembler, cargarlo en el uC PIC.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

73

Pololu Maestro Control Center v1.4.0 – Empleado para la programación calibración

de los servomotores que conforman el brazo robótico; por medio de una placa de

conexión Micro Maestro 6:

PLACA UTILIZADA PARA LA CALIBRACION DE LOS SERVOMOTORES

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

74

FOTOS DEL PROYECTO

FOTOS DEL PROTOTIPO

Prototipo inicial del proyecto.

Brazo robótico construido en acrílico 3mm.

FOTOS MAQUINA PALETIZADORA

Vista general de la maquina paletizadora.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

75

Vista superior de la zona donde se paletizan las cajas, incluyendo zona de despacho.

Vista maquina paletizando a 90 grados.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

76

Maquina paletizando en zona de despacho, vigilada por cámara web.

Vista superior de maquina paletizando caja en zona de despacho.

TÉCNICAS DIGITALES III MAQUINA PALETIZADORA VIGILADA POR CAMARA WEB

77

Vista superior de caja paletizada en zona de despacho, lista para ser expedida del proceso.

FOTOS PANTALLA OPERATIVA

Vista de la pantalla utilizada para operar toda la maquina paletizadora de cajas vigilada por

cámara web.