Upload
vokhuong
View
215
Download
0
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
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.