Story Transcript
UNIVERSIDAD DE MAGALLANES FACULTAD DE INGENIERÍA DEPARTAMENTO DE ELECTRICIDAD
SISTEMA DE MONITOREO Y GESTIÓN DE VARIABLES INDUSTRIALES UTILIZANDO dsPIC y LABVIEW
HEBERT CRISTOBAL RUIZ SALDIVIA
-2011-
UNIVERSIDAD DE MAGALLANES FACULTAD DE INGENIERÍA DEPARTAMENTO DE ELECTRICIDAD
SISTEMA DE MONITOREO Y GESTIÓN DE VARIABLES INDUSTRIALES UTILIZANDO dsPIC y LABVIEW
“Trabajo de titulación presentado en conformidad a los requisitos para obtener el título de Ingeniero en Electricidad mención Electrónica Industrial”
PROFESOR GUIA: IVAN ANDRADE AGUERO
HEBERT CRISTOBAL RUIZ SALDIVIA -2011-
AGRADECIMIENTOS
i
AGRADECIMIENTOS
Me gustaría primero que nada agradecer a mi familia, mis padres y mi hermana por su incondicional apoyo en todo momento.
Al personal del Departamento de Electricidad, administrativos, encargados de laboratorio y profesores por todas sus enseñanzas brindadas en estos años de estudio y al profesor Iván Andrade Agüero por toda su paciencia y disposición a lo largo de este trabajo de título.
A mis amigos y compañeros de la carrera Murdo Águila, Juan Pablo Cuitiño, Ramón Pérez, Carlos Lecaros, Rodrigo Henriquez y Jorge Barra, porque todos de alguna forma ayudaron en la conclusión de esta etapa de mi vida.
A mis amigos Sebastián Toledo, Felipe Castillo, Sergio Roa, Jose Gallardo, Andrés Gallardo y Claudio Paradis por los grandes momentos vividos en esta etapa universitaria y por estar conmigo en todo momento.
ii
RESUMEN
El objetivo de este trabajo de título es crear un sistema de monitoreo gestión y almacenamiento de datos obtenidos por sensores (4-20mA). Para esto se utilizará un microcontrolador diseñado por la empresa MICROCHIP (dsPIC 30F6013A), además del software LABVIEW de la empresa National Instruments El propósito del dsPIC es realizar el tratamiento y procesamiento de la señal enviada por los sensores. Además el dsPIC será el encargado de transmitir los datos adquiridos a través del puerto serial hacia un computador. En este último el programa LABVIEW será el encargado de procesar los datos obtenidos y además traducirlos a valores requeridos por el usuario, almacenándolos también para su posterior análisis. A grandes rasgos este trabajo se divide
en dos partes. En la primera se
aborda el diseño del programa necesario para capturar los datos de los sensores (todo esto dentro del dsPIC) y su posterior transmisión al puerto serial hacia un computador. En la tercera etapa se aborda el diseño del programa necesario para la captura procesamiento y almacenamiento de los datos enviados por el dsPIC mediante el uso del software LABVIEW. Con ésto una interfaz gráfica sencilla con la que el usuario u operador puede interactuar de manera visual e instintiva con los datos obtenidos.
ÍNDICE
iii
ÍNDICE
Capítulo I Introducción
1
1.1 Introducción General
1
1.2 Objetivo del trabajo de título
2
1.3 Estructuración del trabajo de título
2
Capítulo II Controlador Digital de Señales
4
2.1 Introducción
4
2.2 Microcontroladores
5
2.3 Microcontroladores y DSP
6
2.4 DSP y DSC
8
Capítulo III Entorno Labview
13
3.1 Introducción
13
3.2 Descripción Software Labview
14
3.3 Labview en Sistema Modelado
20
Capítulo IV Sistema Experimental
28
4.1 Introducción
28
4.2 Hardware Implementado
29
4.3 Modelación de Programa Implementado en dsPIC30F6013A
33
4.4 Modelación de Programa Implementado en Labview
37
ÍNDICE
iv
Capítulo V Pruebas y Aplicación Práctica
40
5.1 Introducción
40
5.2 Aplicación Gráfica para Propósitos Generales
41
5.3 Descripción General Sistema de Bombeo
47
5.4 Panel Frontal Específico Sistema de Bombeo
50
Capítulo VI Conclusiones
59
6.1 Conclusión General
59
Referencias Bibliográficas
61
Anexos Parte 1 CÓDIGOS DE PROGRAMAS
62
Anexos Parte 2 HARDWARE IMPLEMENTADO
90
CAPÍTULO I INTRODUCCIÓN
Capítulo Primero Introducción
1
1. INTRODUCCIÓN
1.1
Introducción general.
Los sistemas de adquisición de datos se utilizan cada vez más en laboratorios, industria y educación para la visualización de las variables físicas (presión, nivel, temperatura y flujo por ejemplo). Muchos procesos industriales se monitorean con tarjetas de adquisición de datos y una computadora, además de graficadores y registradores.
Se denomina sistema de adquisición de datos al conjunto de elementos empleados para medir y procesar una o varias señales análogas y/o digitales.
Las etapas de un sistema de adquisición y procesamiento de datos son:
Transductores y sensores.
Acondicionamiento de señal.
Módulo de adquisición de datos.
Acción a realizar con los datos obtenidos (gráficos, almacenado, control etc.)
La implementación del trabajo de título se centra en el controlador digital de señales (DSC) dsPIC30F6013A de la empresa MICROCHIP, el que trabajará en conjunto con el software de la empresa National Instruments llamado Labview en su versión Estudiantil.
Capítulo Primero Introducción
1.2
2
Objetivo del trabajo de título.
El objetivo principal de este trabajo de título es construir un sistema compatible con sensores 4-20mA. El sistema deberá estar preparado para poder adecuarse y calibrarse cada vez que un nuevo sensor se acople a la tarjeta, esto para ofrecer una gran versatilidad y por lo mismo una mayor cantidad de aplicaciones posibles.
Además de ello es necesario que el sistema interactúe con el usuario final de manera fácil e intuitiva, por lo que la interfaz gráfica deberá adecuarse a estos requerimientos sin restar rendimiento al sistema.
1.3
Estructuración del trabajo de título.
El presente trabajo de título consta de seis capítulos, los que se describirán brevemente a continuación:
En el capitulo segundo se explicará el funcionamiento del dispositivo físico principal necesario para la implementación del sistema que, en este caso corresponde en el controlador digital de señales (DSC), dsPIC30F6013A. Las propiedades que posee. El capítulo tercero describe el programa utilizado como interfaz gráfica. Se explicarán las ventajas que posee y se mostrarán las funciones que se utilizaron en el desarrollo de la aplicación práctica.
En el cuarto capítulo se hará una descripción del hardware necesario para realizar la tarea requerida, se analizarán los componentes utilizados y se explicaran sus respectivas tareas. Además se explicará la construcción de los programas requeridos para el sistema realizado. Se mostrarán las rutinas más importantes implementadas las cuales son la base para el correcto funcionamiento del sistema realizado.
Capítulo Primero Introducción
3
En el quinto capítulo se podrán ver los resultados experimentales del sistema funcionando en
conjunto. Se mostrarán las opciones disponibles desde el
punto de vista del usuario y además se presentarán los resultados obtenidos en una aplicación práctica real.
En el sexto y último capítulo se presentarán las conclusiones generales de este trabajo de título.
CAPÍTULO II CONTROLADOR DIGITAL DE SEÑALES
Capítulo Segundo Controlador Digital de Señales
4
2. CONTROLADOR DIGITAL DE SEÑALES 2.1 Introducción
Este
capítulo
explicará
la
utilización
de
una
clase
específica
de
microcontrolador y su utilización en el procesamiento de señales análogas. Se hablará del concepto de Controlador Digital de Señales (DSC), sus aplicaciones en el campo del procesamiento digital de señales. Con esto se justificará su utilización en este trabajo de título. Para ello es necesario conocer las principales características de los microcontroladores especializados en el área del procesamiento de señales. El papel que juega el dsPIC en el sistema final implementado es fundamental puesto que es la unidad central del sistema, será la encargada del muestreo de señales análogas y hacer los cálculos requeridos con ellas todo esto en un tiempo muy reducido lo cual permitirá una correcta gestión de las variables industriales medidas.
Capítulo Segundo Controlador Digital de Señales
5
2.2 Microcontroladores Los microcontroladores son computadores digitales integrados en un chip que cuentan con un microprocesador o unidad de procesamiento central (CPU), una memoria para almacenar el programa, una memoria para almacenar datos y puertos de entrada salida.
Un microcontrolador es un solo circuito integrado que contiene todos los elementos electrónicos que se utilizan para hacer funcionar un sistema basado en un microprocesador, es decir contiene en un solo integrado la Unidad de Procesos, la memoria Ram, memoria Rom, puertos de entrada, puertos de salidas y otros periféricos. A diferencia de un microprocesador que necesita de sus periféricos en forma externa para su correcta operación.
El funcionamiento de los microcontroladores está determinado por el programa almacenado en su memoria. Este puede escribirse en distintos lenguajes de programación. Además, la mayoría de los microcontroladores actuales pueden reprogramarse repetidas veces.
Por
las
características
mencionadas
y
su
alta
flexibilidad,
los
microcontroladores son ampliamente utilizados como la unidad central de una gran variedad de sistemas integrados que controlan máquinas, componentes de sistemas complejos, como aplicaciones industriales de automatización y robótica, domótica, equipos médicos, sistemas aeroespaciales, e incluso dispositivos de la vida diaria como automóviles, hornos de microondas, teléfonos y televisores.
Los microcontroladores son conocidos generalmente con el nombre de MCU (Microcontroller Unit) y sus principales características se presentan a continuación:
-Unidad de Procesamiento Central (CPU): Típicamente de 16 bits, pero también las hay de 32 y hasta 64 bits con arquitectura Harvard, con memoria/bus de datos separada de la memoria/bus de instrucciones de programa.
Capítulo Segundo Controlador Digital de Señales
6
-Memoria de Programa: Es una memoria ROM (Read-Only Memory), EPROM (Electrically Programable ROM), EEPROM (Electrically Erasable/Programable ROM) o Flash que almacena el código del programa que típicamente puede ser desde 1 KB a varios MB.
-Memoria de Datos: Es una memoria RAM (Random Access Memory) que puede ser de 1, 2 4, 8, 16, 32 kilobytes.
-Generador del Reloj: Un cristal de cuarzo de frecuencias que genera una señal oscilatoria de entre 1 a 40 MHz.
-Interfaz de Entrada/Salida: Puertos paralelos, seriales (UARTs, Universal Asynchronous Receiver/Transmitter), I2C (Inter-Integrated Circuit), interfases de periféricos Seriales (SPI), Red de Área de Controladores (CAN), USB (Universal Serial Bus).
-Otras opciones: Conversores A/D (ADC), Moduladores por ancho de pulso (PWM).
2.3 Microcontroladores y DSP. Se denomina DSP (procesador digital de señales) a un circuito integrado que contiene un procesador digital y un conjunto de recursos complementarios con los cuales es capaz de manejar digitalmente las señales análogas que nos rodean.
Los DSP pueden asemejarse a los microcontroladores tradicionales, pero utilizando arquitecturas y recursos que optimizan los y algoritmos manejados en el procesamiento digital de señales. Algunas de las características principales de los DSP se presentan a continuación.
-Los DSP son generalmente RISC, esto quiere decir que poseen un reducido juego de instrucciones que se ejecutan en un sólo ciclo.
Capítulo Segundo Controlador Digital de Señales
7
-Utilizan arquitectura Harvard, esto quiere decir que poseen dos memorias independientes. Una para los datos y la otra dedicada a contener las instrucciones. Esto posibilita un acceso simultaneo a ambas, también cabe destacar que la memoria de datos se divide en dos espacios independientes que aportan el acceso paralelo (Figura 2.1). -El repertorio de instrucciones contienen algunas específicas para resolver los algoritmos habituales en el procesamiento de señales. -Disponen de un conjunto muy amplio y veloz de interrupciones con niveles de prioridad. -El DSP integra numerosos recursos y periféricos que minimizan el tamaño y simplifican el diseño del sistema. -Poseen módulos para la optimización y control de la energía.
Figura 2.1 Arquitectura Harvard.
Los DSP son básicamente microcontroladores dotados de los recursos físicos y
lógicos
necesarios
para
soportar
las
aplicaciones
específicas
del
procesamiento digital de señales. Las instrucciones aritméticas complejas se ejecutan en varios ciclos en los MCU, mientras que en los DSP solo precisan de uno. En los DSP siempre se dispone
de
conversores
A/D
rápidos
y
precisos.
Dado
el
carácter
marcadamente matemático de los DSP, estos están preparados para ser programados por lenguajes de alto nivel como el C. Las velocidades y rendimientos de los DSP son generalmente muy superiores a la gran mayoría
Capítulo Segundo Controlador Digital de Señales
8
de los MCU. Otra de las diferencias claves entre los MCU y los DSP es que el comportamiento del programa en un MCU (MICROCHIP) es claramente secuencial y se espera que funcione tal y como uno lo especifique en el programa. En los DSP en gran parte de sus aplicaciones su comportamiento será directa consecuencia inmediata del flujo de datos que suministra la señal muestreada y la ejecución es dependiente de los datos obtenidos en tiempo real.
2.4 DSP Y DSC. La empresa MICROCHIP se ha desempeñado principalmente en el campo de los microcontroladores de 16bit. Estos modelos son conocidos popularmente con el nombre de PIC. Debido al aumento de aplicaciones en las cuales es necesario el procesamiento digital de señales Microchip ha decidido lanzarse al mercado de los DSP con un modelo hibrido MCU/DSP, cuyo manejo es similar al de los MCU pero que incluye las principales prestaciones de los DSP. Así nace el controlador digital de señales (DSC), el cual reúne las características de los microcontroladores de 16 bits junto con las de los DSP de gama baja. Dada la similitud del DSC con los MCU en cuanto arquitectura y repertorio de instrucciones, los usuarios de las familias de microcontroladores PIC no encuentran dificultades para introducirse en el campo del procesamiento digital de señales utilizando dsPIC.
Capítulo Segundo Controlador Digital de Señales
9
Los dsPIC se pueden agrupar en dos grandes familias: -dsPIC30F -dsPIC33F
En este trabajo de título se utilizó un dsPIC de la primera familia, por lo que a continuación se presentan las principales características de los dsPIC30F: Recurso
Rango de valores.
Memoria de programa FLASH
12Kb-144Kb
Memoria de datos RAM
512bytes-8Kb
Memoria de datos EEPROM
1Kb-4Kb
Pastillaje encapsulado
18-80 pines
Temporizador de 16 bit
Hasta 5
Modulo de captura
Hasta 8 entradas
Módulo comparador/PWM
Hasta 8 salidas
Modulo PWM de control de motores
De 6 a 8
Conversor A/D de 10 bits
500kbps, hasta 16 canales
Conversor A/D de 12 bits
100kps, hasta 16 canales
UART
1-2
(8-16 bits)
1-2 1 Módulo
QEI
1
Interfaz CODEC
1
CAN
1-2
Tabla 1 Características de dsPIC familia de los 30F
La tensión de alimentación admite un rango comprendido entre 2,5 y 5,5 VDC. Se tolera una temperatura interna entre -40° y 85° C y una externa entre -40° y 125° C. El rendimiento alcanza los 30 MIPS cuando la tensión de alimentación tiene un valor entre 4,5 y 5,5 VDC. En cuanto a la arquitectura de la CPU los dsPIC30F se sustentan en un núcleo RISC con arquitectura Harvard mejorada. Actuando como soporte central de información existe un banco de 16 registros de 16 bits cada uno; se dispone de un bus de datos de 16 líneas y otro de
Capítulo Segundo Controlador Digital de Señales
10
instrucciones de 24. Para potenciar la velocidad de las operaciones aritméticas complejas existe un “Motor DSP” que contiene un multiplicador hardware rápido de 17 X 17 bits, dos acumuladores de 40 bits y un robusto registro de desplazamiento. La memoria de programa, tipo FLASH, puede alcanzar un tamaño de 4 MB instrucciones de 24 bits cada una, aunque actualmente sólo hay modelos con una capacidad máxima de 256 KB. La memoria de datos SRAM puede alcanzar 32K posiciones de 16 bits, aunque en los modelos actuales sólo se llega a la mitad. Toda esta estructura admite operaciones MCU y operaciones DSP con un repertorio de 84 instrucciones. Las secciones MCU y DSP cooperan en el funcionamiento general y comparten el flujo de instrucciones de los DSC. Para reducir el tiempo de ejecución de algunas instrucciones DSP la memoria de datos SRAM se divide en dos espacios X e Y que pueden ser accedidos a la vez. Otra característica importante en los dsPIC30F es la de admitir hasta 45 fuentes distintas de petición de interrupción con 7 niveles de prioridad, de las cuales 5 son externas. Hay modelos de dsPIC30F que disponen de hasta 54 pines de E/S programables y con otras funciones multiplexadas con un consumo de 25 mA cada una. Los dispositivos dsPIC33F como disponen de más periféricos también admiten más fuentes de interrupción. Se puede encontrar una gran variedad de periféricos en la familia dsPIC30F como temporizadores, conversores AD, módulos de captura y comparación, módulos PWM para el control de motores, módulos de comunicación PC, SPI, CAN, UART, DCI, etc. Según MICROCHIP
los 19 modelos que contiene la familia dsPIC30F se
pueden separar en tres grupos dependiendo de su aplicación: -dsPIC30F de propósito general. -dsPIC30F para control de sensores. -dsPIC30F para control de motores y sistemas de alimentación. El modelo utilizado en este trabajo de título (dsPIC30F6013A) cabe en la categoría de propósito general, en la aplicación específica de este trabajo de título destaca la utilización de tres periféricos. A continuación se dará una breve explicación de ellos (la configuración individual de éstos se detallaran en los anexos parte 1).
Capítulo Segundo Controlador Digital de Señales
11
Conversor Análogo Digital (ADC): El dsPIC permite hacer una rápida y fiable conversión análoga/digital, para ello cuenta con un ADC de 12 bits de precisión. La conversión se realiza en tres etapas: muestreo de la señal, cuantificación de la señal que consiste en llevar el valor análogo a un valor de combinaciones y la cuantificación de la señal que consiste en agregarle los ceros y unos a la señal convertida. El módulo ADC del dsPIC posee las siguientes características. -Tiempo de muestreo de 154ns. -Conversión de aproximaciones sucesivas. -Velocidad de conversión de hasta 500Ksps. -Modo automático de exploración de canal. -La tensión analógica de referencia puede ser seleccionada por software.
Módulo UART: Este módulo permite la comunicación Universal Serial Asíncrona full dúplex o serial asíncrono con computadores, con interfases RS 232 y RS 485, entre sus principales características destacan:
-La transmisión de datos es de 8 o de 9 bits. - Paridad impar, par o sin paridad. - Uno o dos bits de parada. -Tiene un generador de baudios con preescalador de 16 bits que se encarga de dar la frecuencia de trabajo al modulo.
Módulo Temporizador: El dsPIC30F6013A cuenta con 5 temporizadores, cada uno de 16 bits. Este módulo es utilizado para dar una base de tiempo con la se generarán interrupciones asociadas. En este trabajo de titulo el dsPIC se utiliza para el muestreo de señales, su conversión análoga digital, cálculo de las variables medidas por los sensores y por último en la comunicación con el software Labview.
Capítulo Segundo Controlador Digital de Señales
12
Figura 2.2 Procesamiento realizado en dsPIC.
La comunicación con el software Labview se hace mediante envío
y
recepción de datos utilizando el módulo UART disponible en el dsPIC. El rol que cumple Labview en el sistema final implementado se explicará en el tercer capítulo de este trabajo de título.
CAPÍTULO III ENTORNO LABVIEW
Capítulo Tercero Entorno Labview
13
3. Entorno Labview
3.1 Introducción Para la interfaz gráfica se utilizó el software Labview en su versión estudiantil. Esto pues permitirá una fácil interacción con el sistema desarrollado, un eficaz tratamiento de datos enviados a través del dsPIC, además de brindar estabilidad al sistema.
Labview es un entorno de programación destinado al desarrollo de aplicaciones similar a los sistemas de desarrollo comerciales que utilizan el lenguaje C o BASIC. Sin embargo se diferencia de dichos programas en un importante aspecto: los citados lenguajes de programación se basan en líneas de texto para crear el código fuente del programa, mientras que Labview emplea programación gráfica o lenguaje G para crear programas basados en diagramas de bloques, lo que facilita tanto su aprendizaje como la creación de rutinas propias.
Capítulo Tercero Entorno Labview
14
3.2 Descripción Software Labview.
Labview es una herramienta de programación gráfica para aplicaciones que involucren adquisición, control, análisis y presentación de datos. Las ventajas que proporciona el empleo de Labview se resumen en las siguientes:
-Se reduce el tiempo de desarrollo de las aplicaciones al menos de 4 a 10 veces, ya que es muy intuitivo y fácil de aprender.
-Dota de gran flexibilidad al sistema, permitiendo cambios y actualizaciones tanto del hardware como del software
-Da la posibilidad a los usuarios de crear soluciones completas y complejas.
- Con un único sistema de desarrollo se integran las funciones de adquisición, análisis y presentación de datos.
-El sistema está dotado de un compilador gráfico para lograr la máxima velocidad de ejecución posible.
-Tiene la posibilidad de incorporar aplicaciones escritas en otros lenguajes.
Labview posee extensas librerías de funciones y subrutinas. Además de las funciones básicas de todo lenguaje de programación, incluye librerías específicas para la adquisición de datos, control de instrumentación VXI, GPIB y comunicación serie, análisis, presentación y almacenamiento de datos.
Labview también proporciona potentes herramientas que facilitan la depuración de los programas.
Los programas desarrollados mediante Labview se denominan Instrumentos Virtuales (VIs), porque su apariencia y funcionamiento imitan los de un instrumento real. Sin embargo son análogos a las funciones creadas con los lenguajes de programación convencionales. Los VIs tienen una parte interactiva con el usuario y otra parte de código fuente, y aceptan parámetros procedentes
Capítulo Tercero Entorno Labview
15
de otros VIs. Todos los VIs tienen un panel frontal y un diagrama de bloques. Las paletas contienen las opciones que se emplean para crear y modificar los VIs. A continuación se procederá a realizar una breve descripción de estos conceptos.
Panel Frontal: Es la interfaz gráfica que simula el panel de un instrumento real. Permite la entrada y salida de datos, puede contener pulsadores, perillas, botones, gráficos y en general controles e indicadores.
Los controles son objetos que sirven para ingresar datos al programa y pueden ser manipulados por el usuario. Los controles son variables de entradas.
Los indicadores sirven para presentar los resultados entregados por el programa y no pueden ser manipulados por el usuario. Los indicadores son variables de salida.
Figura 3.1 Panel frontal Labview operando en cierta aplicación.
Capítulo Tercero Entorno Labview
16
Diagrama de Bloques: El diagrama de bloques contiene el código fuente gráfico del VI, posee funciones y estructuras que relacionan las entradas con las salidas creadas en el panel frontal. En un diagrama se distinguen: Terminales, que representan los controles e indicadores del panel. Funciones y SubVIs, que realizan tareas específicas. Estructuras y Cables que determinan el flujo de los datos en el programa. En general, cualquiera de estas partes del diagrama de un VI se denomina NOD.
El diagrama de bloques de la figura 3.2
muestra el código fuente
correspondiente al panel de la figura 3.1
Figura 3.2 Diagrama de bloques de aplicación.
Paleta de herramientas: Contiene las herramientas necesarias para editar y depurar los objetos tanto del panel frontal como del diagrama de bloques.
Figura 3.3 Paleta herramientas.
Capítulo Tercero Entorno Labview
Icono
17
Herramienta
Función Asigna valores a los controles del panel frontal, se
Operación
encuentra
disponible cuando se corre y edita la
aplicación.
Mueve todos los objetos dentro de la ventana activa. Desplazamiento
Selecciona, mueve y redimensiona objetos. La herramienta Posición
cambia el icono del puntero cuando pasa por encima de objetos que pueden modificar su tamaño.
Se utiliza para generar la estructura lógica de eventos Etiquetado
mediante la conexión de los terminales de cada objeto. Los cables determinan el flujo de los datos.
Permite obtener el menú de opciones de un objeto. Esta Menú desplegable
misma función se puede realizar haciendo un clic derecho del ratón sobre el objeto.
Detiene la ejecución del programa en el punto del diagrama Punto de
donde se ponga. Se utiliza con fines de depuración.
quiebre Se pone sobre algún cable de conexión para verificar de Punto de prueba
Capturar color
Colorear
forma temporal el valor que fluye a través de éste.
Obtiene el color del objeto que se señale.
Cambia los colores de objetos y fondos.
Tabla 2 Íconos y sus Funciones en paleta de Herramientas
Capítulo Tercero Entorno Labview
18
Paleta de controles: Se utiliza únicamente en el panel frontal y contiene los objetos necesarios para crear una interfase de entrada y salida de datos (controles e indicadores).
Figura 3.4 Paleta de controles
Existen submenús correspondientes a toolkits que sólo aparecen cuando se han instalado. Los toolkits son herramientas adicionales de software con fines específicos y especializados que se suministran como productos por separado.
Cada submenú de la paleta contiene controles e indicadores respectivos de una clase de objetos. En las siguientes figuras se ven algunos de los submenús más importantes.
Capítulo Tercero Entorno Labview
19
Figura 3.5 Controles e indicadores numéricos y booleanos.
Paleta de funciones: Se usa únicamente en el diagrama de bloques y contiene todos los objetos para crear y editar el código fuente .En la siguiente figura se ven algunas de las funciones más utilizadas.
Figura 3.6 Paletas de funciones de cadenas, arreglos y numéricas
Capítulo Tercero Entorno Labview
20
3.3 Labview en Sistema Modelado
El software Labview en el sistema implementado estará encargado de establecer comunicación con el dsPIC tanto para envío como para recepción de datos. Una vez recibido la cadena de caracteres correspondiente Labview las separará
para
su
tratamiento
individual ya
sea
de
almacenamiento,
visualización e interacción con el usuario.
Figura 3.7 Papel que juega Labview en sistema implementado
Para establecer la comunicación con el dsPIC Labview nos brinda el driver NI VISA, con el cual se podrá establecer comunicación serial con el dsPIC tanto de recepción como de envío de datos. Las funciones utilizadas para este fin son las siguientes:
Capítulo Tercero Entorno Labview
21
1. VISA Configurate Serial Port: Sirve para configurar el puerto serie con los siguientes parámetros: velocidad, protocolo, paridad, bits de datos, habilitar carácter de terminación. En VISA Resource Name se indica cuales son los puertos disponibles para la transmisión.
Figura 3.8 Visa Configurate Serial Port
2. Visa Write: Bloque encargado de leer un número especifico de bytes desde el buffer, suele utilizarse a continuación del bloque VISA Configurate Serial Port.
Figura 3.9 Visa Write
3. Visa Read: Cumple la función contraria al bloque anterior indicarle el numero de bytes que debe leer desde el buffer. Para darle un valor a este parámetro suele usarse la salida de la propiedad VISA Bytes at Serial Port.
Figura 3.10 Visa Read
Capítulo Tercero Entorno Labview
22
4. Visa Close: Cierra una sesión VISA. Se puede cerrar automáticamente en el menú Tools.
Figura 3.11 Visa Close.
5. VISA Bytes at Serial Port: Es una propiedad del driver VISA, que dá el número de bytes que están en el buffer esperando para ser leídos. Aparte de esta propiedad hay otras que pueden cambiar la configuración del puerto.
Figura 3.12 Bytes at Serial Port. Una vez establecida la comunicación entre el dsPIC y Labview, es necesario interpretar y separar en datos individuales la cadena recibida para el caso de recepción de datos en Labview se utilizaron las siguientes funciones:
6. Search/Split String Function y Match True/False String Function: Con estas funciones se procede a separar los identificadores de la cadena recibida. Esto para ser tratados en procedimientos posteriores de manera individual.
Figura 3.13 Funciones Search/Split String y Match True/False String.
Capítulo Tercero Entorno Labview
23
7. Fract/Exp String To Number Function: Función encargada de convertir la cadena de caracteres que ha sido separada con la función anterior a un número real. Con esta función se puede definir la cantidad de decimales de precisión que se requieran.
Figura 3.14 Función Fract/Exp String To Number
8. In Range and Coerce Function: Esta función será la encargada de ver si el número convertido anteriormente está en el rango que se desea. Se utilizará para establecer indicadores de alarma cuando el número no se encuentre en el rango adecuado.
Figura 3.15 Función In Range and Coerce
9. Set Dynamic Data Attributes: Este bloque se utiliza para poner nombre a los datos anteriormente separados y analizados. Este nombre se visualizará posteriormente en la planilla Excel donde se almacenen los datos. También se establecerá la hora y fecha en las que fueron tomadas estas mediciones.
Figura 3.16 Bloque Set Dynamic Data Attributes
Capítulo Tercero Entorno Labview
24
10. Merge Signals Function: Una vez recibido los datos y mostrados en pantalla se unen utilizando esta función para ser tratados nuevamente como una cadena y ser almacenados en Excel.
Figura 3.17 Función Merge Signals.
11. Write To Measurement File: Funcion encargada de almacenar los datos enviados por la función anteriormente descrita. Los datos serán almacenados con su respectivo nombre y en columnas diferentes además indicando la fecha y hora en que fueron adquiridos.
Figura 3.18 Write To Measurement File
Para el caso de envío de datos hacia el dsPIC, hay que tener en cuenta que se enviaran doce cadenas diferentes, cada una con su respectivo identificador primario y carácter de finalización que en este caso es igual para todos. Se establecen estos caracteres para una correcta identificación por parte del dsPIC de las variables enviadas desde Labview, para ello se utilizaron las siguientes funciones.
Capítulo Tercero Entorno Labview
25
12. Format Into String Function: Esta función será encargada de concatenar el número que desee enviar el usuario para la calibración del canal con el identificador primario.
Figura 3.19 Función Format Into String
13. Build Array Function: Función encargada de construir un arreglo con las doce cadenas nombradas en la función anterior, se utilizara para que después en el paso posterior a este, el usuario pueda seleccionar la cadena a enviar.
Figura 3.20 Función Build Array
14. Index Array Function: Función en la cual llega el arreglo construido anteriormente. A esta función se le añade un menú tipo ring para seleccionar la cadena desde el panel frontal.
Figura 3.21 Index Array
Capítulo Tercero Entorno Labview
26
15. Ring Menú: Control que se encuentra en el panel frontal, en el que se seleccionará la cadena a enviar.
Figura 3.22 Menú tipo Ring
16. Concatenate Strings: Función encargada de concatenar la cadena seleccionada en el paso anterior con el carácter de terminación. Con la utilización de todas estas funciones se asegurará que la cadena de caracteres enviada por Labview sea válida y por lo tanto utilizable por el dsPIC.
Figura 3.23 Función Concatenate Strings.
Además de las funciones utilizadas en lectura y escritura en el puerto serial se ocuparon otras de propósito general.
17. Feedback Node: Corresponden a los ciclos de iteración del sistema. En este caso se utilizaron los ciclos “While” y “Case”.
Figura 3.24 Ciclos While y Case.
Capítulo Tercero Entorno Labview
27
18. Shift Register: Se utiliza para comparación entre los valores en cada iteración de una variable requerida.
Figura 3.25 Shift Register.
19. Wait (ms) y Elapsed Time: Establecen bases de tiempo con las que se controlan diversas rutinas dentro del programa principal.
Figura 3.26 Funciones Wait (ms) y Elapsed Time
.
CAPÍTULO IV SISTEMA EXPERIMENTAL
Capítulo Cuarto Sistema Experimental
28
4. Sistema Experimental.
4.1 Introducción En el presente capítulo se explicará la implementación del hardware necesario para
realizar
el
sistema
requerido
basándose
especialmente
en
el
procesamiento de la señal de entrada en la tarjeta dsPIC.
Los datasheet correspondientes junto con el modelo esquemático de la tarjeta dsPIC se mostrarán en los anexos parte 2.
Además se explicará la implementación del software necesario para realizar la aplicación. Para ello se utilizará el método de diagrama de flujo, esto porque permite una visualización gráfica de las rutinas más importantes que luego fueron traspasadas tanto a lenguaje C (para programar el dsPIC) como a lenguaje G (utilizado en Labview).
Se mostrarán dos diagramas de flujo: uno para la programación del dsPIC y el otro para la programación gráfica mediante Labview. Esto para que no haya confusión en las variables a utilizar, pero no hay que olvidar que estos programas funcionan conjuntamente.
Los diagramas de flujo mostrados a continuación son meramente a modo de explicación de las rutinas necesarias para desarrollar la aplicación, además se explicarán solamente los procesos más importantes de ambos programas. Esto para hacer más comprensible los respectivos diagramas.
Los códigos reales de ambos programas podrán ser vistos en los Anexos Parte 1.
Capítulo Cuarto Sistema Experimental
29
4.2 Hardware implementado La unidad física principal del sistema corresponde a la tarjeta dsPIC, en ella se alojarán los conectores necesarios para interactuar tanto con los sensores como con el computador, además será donde se encuentre físicamente la unidad central del sistema dsPIC30F6013A. La tarjeta dsPIC fue diseñada y montada por el profesor guía de este trabajo de título Don Iván Andrade Agüero.
Figura 4.1 Tarjeta dsPIC
Principales características: -Seis entradas 4-20mA, para lo cual es necesario el integrado RCV420(Anexos parte 2). -Cuatro salidas 4-20mA, para lo cual es necesario el integrado AD694 (Anexos parte 2). -Diez entradas 0-10V. -Cuatro salidas 0-5V. -Dos puertos RS-232, utilizados para comunicación serial, para lo que es necesario un MAX232 (Anexos parte 2).
Capítulo Cuarto Sistema Experimental
30
-Dos puertos RS-485, para comunicación serial y otros, para lo que es necesario el integrado SN75176BD (Anexos parte 2). -Pines habilitados para conexión directa con LCD Lumex S02004 (Anexos parte 2). -Banco de memorias externas 24LC512 (Anexos parte 2). En este trabajo de título se utilizaron las entradas 4-20mA, en la cuales se ingresarán corrientes que serán enviadas por los sensores, cada una por su respectivo canal. Para una correcta recepción por parte del dsPIC la señal debe seguir los siguientes pasos.
Figura 4.2 Tratamiento de señal de instrumentación.
Capítulo Cuarto Sistema Experimental
31
Conversión a tensión legible por ADC: Se utiliza el integrado RCV420 para hacer la conversión corriente-tensión necesaria. En su configuración básica el RCV420 hace la conversión 4-20mA a 0-5V. Se cambió esta configuración para aumentar el rango de entrada a 0-20mA, esto para hacer posible la detección del cero real (circuito abierto) e implementar rutinas para este caso.
Figura 4.3 Configuración 0-20mA de entrada para integrado RCV420
Filtrado de señal: Para ello se utilizó el integrado MCP6231 (anexos parte 2), debido a su baja tensión de alimentación. Corresponde a un amplificador operacional, se empleó como filtro
de segundo orden de Butterworth con
frecuencia de corte de 100 Hz y ganancia unitaria.
Figura 4.4 Filtro Pasa Bajos Implementado
Capítulo Cuarto Sistema Experimental
32
Conversión A/D: Luego del filtrado de la señal, ésta llegara en forma de tensión al conversor análogo digital encargado de digitalizarla. Para ello realiza muestras utilizando el sistema de captura y mantenimiento (Sample and Hold). Cada cierto tiempo toma una muestra de la señal ingresada y mantiene este valor en un condensador (circuito interno del dsPIC). Este proceso convierte la señal ingresada en un número que en este caso variará de 0 a 4096 (ya que el conversor
análogo
digital
es
de
12
bits)
número
que
corresponde
proporcionalmente a la tensión ingresada al ADC.
Comunicación Serial: Para intercambio de datos entre el computador y el dsPIC se estableció comunicación serial entre ambos. Para esto es necesario utilizar el integrado MAX232 .
Figura 4.5 Comunicación serial dsPIC-PC
El dsPIC posee dos módulos UART disponibles, los que permiten dos comunicaciones simultáneas e independientes full-duplex. En este trabajo de título se utilizó solamente la UART1 tal y como se ve en la figura 4.5, la UART2 quedará disponible para comunicaciones futuras.
Capítulo Cuarto Sistema Experimental
33
4.3 Modelación de programa implementado en dsPIC30F6013A
Para la elaboración del programa implementado el en dsPIC se utilizó el compilador proporcionado por la empresa MICROCHIP para estos fines.
El programa se realizó en torno al programa MPLAB, que en conjunto con el compilador C30 permite realizar el programa en un leguaje de alto nivel como el “C”. Para cargar el programa diseñado se utiliza el programador ICD 2(InCircuit Debugger), el cual es un dispositivo que permite programar y depurar una gran cantidad de dispositivos fabricados por MICROCHIP. Su función principal utilizándolo como programador es tomar el código ensamblado y cargarlo en el dispositivo que se desee programar.
Figura 4.6 Programador ICD 2
Capítulo Cuarto Sistema Experimental
34
A continuación se explicara de forma general la modelación del programa en el dsPIC, utilizando para ello el diagrama de flujo.
A grandes rasgos el programa se dividirá en cuatro partes fundamentales como se ve en la siguiente figura.
Figura 4.7 Diagrama general Programa dsPIC
Capítulo Cuarto Sistema Experimental
35
Adquisición de datos: Este proceso será el encargado de recibir los datos necesarios para hacer los cálculos de los parámetros leídos. Estos datos serán adquiridos por el puerto ADC del dsPIC, y mediante Labview. Los datos adquiridos por el puerto ADC corresponden a las corrientes ingresadas a la tarjeta dsPIC. Los datos adquiridos a través de Labview corresponden a los parámetros de calibración de los sensores y serán ingresados a través del computador.
Almacenamiento en memoria: Proceso encargado de almacenar los datos obtenidos a través de Labview. Para que la calibración quede almacenada y no sea necesario cada vez que se inicia el sistema volver a enviar los datos de los sensores.
Cálculo de los parámetros: Proceso que realizará todos los cálculos necesarios para obtener valores reales de los parámetros leídos. Será el encargado de traducir los valores obtenidos mediante el ADC a corrientes y en conjunto con los datos obtenidos a través de Labview obtener el valor real de la medición.
Envío de datos: Una vez calculados los parámetros serán enviados mediante puerto serial, de una forma que posibilite la correcta comunicación entre Labview y el dsPIC.
Con lo antes señalado el diagrama de flujo se puede visualizar en la figura 4.3.
Capítulo Cuarto Sistema Experimental
Figura 4.8 Diagrama flujo Programa dsPIC
36
Capítulo Cuarto Sistema Experimental
37
4.3 Modelación de programa implementado en Labview. Para la modelación del programa en Labview es necesario conocer las tareas que dicho programa debe realizar, estas tareas se pueden visualizar en la siguiente figura.
Figura 4.9 Diagrama general programa en Labview
Capítulo Cuarto Sistema Experimental
38
Envío de datos al dsPIC: Proceso encargado de enviar los valores con los que serán calibrados los sensores. Estos valores los elegirá el usuario y con ellos el dsPIC hará el cálculo para obtener los valores reales de los parámetros medidos por los sensores.
Recepción de datos del dsPIC: Una vez el dsPIC haya recibido los datos enviados por Labview junto con los valores obtenidos por los respectivos puertos ADC, hará el cálculo de los valores medidos por los sensores y los enviará al Labview nuevamente. Luego esta trama de caracteres será interpretada y separada por Labview para su tratamiento posterior.
Visualización de los valores reales en pantalla: Luego de la interpretación y separación de los caracteres obtenidos mediante puerto serial, el programa Labview mostrará y/o graficará los valores reales que están midiendo los sensores.
Almacenado de datos: Este proceso le permite elegir al usuario el tiempo de exportación a Excel, con esto se ofrece la capacidad de almacenamiento de datos incluyendo fecha y hora de cuando se obtuvieron para un posterior análisis.
Con esto el diagrama de flujo del programa realizado en Labview se puede ver en la figura 4.10.
Capítulo Cuarto Sistema Experimental
Figura 4.10 Diagrama flujo programa implementado en Labview.
39
CAPÍTULO V PRUEBAS Y APLICACIÓN PRÁCTICA
Capítulo Quinto Pruebas y Aplicación Práctica
40
5. Pruebas y Aplicación Práctica.
5.1 Introducción En este capítulo se detallará el funcionamiento de la aplicación gráfica realizada. Se explicarán las posibilidades que permite el programa realizado en Labview,
y
se
mostrarán
los
resultados
obtenidos
en
aplicaciones
experimentales y prácticas
La aplicación gráfica realizada tiene la capacidad de poder adaptar su funcionamiento a las necesidades que el usuario presente. Esto porque permite la interacción con el dsPIC para ajustes según el sensor que se acople a la tarjeta dsPIC. Además de ello los indicadores se pueden cambiar para una mejor para que su aspecto sea el acorde a la variable medida.
Junto con poder visualizar el estado y valor medido por los sensores en el software Labview, se ofrece la alternativa de ver esto mismo en una pantalla LCD la cual mostrará los mismos valores que en Labview, además de los respectivos indicadores de estado.
Para la implementación práctica del sistema se diseñó un panel frontal específico para la aplicación. A modo de prueba se eligió el sistema de bombeo que se encuentra en el Laboratorio de Electricidad “Juan Friedli Thomi”. Este sistema de bombeo cuenta con tres sensores 4-20mA, encargados de hacer mediciones de presión, nivel y temperatura. Estos sensores fueron conectados a la tarjeta junto con su respectiva alimentación para así completar el lazo de corriente y realizar la medición correspondiente.
Capítulo Quinto Pruebas y Aplicación Práctica
41
5.2 Aplicación gráfica para propósitos generales El software desarrollado en Labview permite al usuario la interacción en tiempo real con el sistema realizado para ello a continuación se describirán las posibilidades existentes en la aplicación grafica implementada.
Figura 5.1 Aspecto general aplicación grafica.
En la figura anterior se ve una captura que muestra el funcionamiento en una aplicación experimental. Como se puede ver se tiene un canal con ingreso de corriente. Este canal fue configurado para que su indicador fuera una gráfica en tiempo real del valor ingresado pero, como se ve en la figura 5.1, el sistema permite que los indicadores sean cambiados por el usuario a voluntad.
Capítulo Quinto Pruebas y Aplicación Práctica
42
Figura 5.2 Captura Canal 1 funcionando.
En la figura 5.2 se muestra una aproximación al modo de funcionamiento del Canal 1. La explicación de éste se extrapolará al resto de los canales puesto que funcionan de similar manera. En la figura anterior se pueden visualizar una serie de indicadores y controles que se explicarán a continuación.
Canal 1: Corresponde a un indicador numérico en el cual se visualizará el valor del parámetro leído. Es importante señalar que solamente cambiará cuando haya valores correctamente ingresados, en caso contrario indicará cero. Status: Indicador de caracteres. Podrá tener dos estados”Ok” y “Falla”. Éstos estados cambiaran dependiendo si se están ingresando valores válidos al canal uno del sistema. Por ejemplo si no hay sensor conectado en este canal este indicador cambiara a “Falla”, y como se puede ver en la figura para valores validos muestra el mensaje “Ok”.
Capítulo Quinto Pruebas y Aplicación Práctica
43
Menú tipo “Ring”: En la figura 5.3 se visualiza con el nombre “Gráfica” y con ello el indicador seleccionado será una gráfica, pero puede ser cambiado por cinco valores diferentes con ello el usuario podrá elegir el indicador que le parezca más adecuado para sus necesidades.
Figura 5.3 Menú Ring desplegado
Figura 5.4 Variedad de indicadores desplegables
Es importante decir que las escalas de los indicadores de Temperatura, Presión. Nivel y Flujo son ajustables por el usuario al momento que corre el programa situándose con el cursor sobre el valor que desea editar. La escala del gráfico se ajustará automáticamente.
Máximo Canal 1 y Mínimo Canal 1: Controles numéricos en los que el usuario deberá indicar los valores máximo y mínimo del sensor conectado en el canal 1 de la tarjeta. Por ejemplo, tiene un sensor conectado de rango 0ºC a 50ºC entonces deberá cambiar el control numérico (Máximo Canal 1) a 50, tras ello deberá seleccionar este mismo parámetro para enviar este valor al dsPIC y tras ello hacer click en el botón “Calibrar”. Estos indicadores están configurados para tener los valores 100 y 0 respectivamente por defecto, el usuario los podrá cambiar a voluntad posteriormente.
Capítulo Quinto Pruebas y Aplicación Práctica
44
Figura 5.5 Menú desplegable para seleccionar parámetro a calibrar
El sistema implementado posee además la capacidad de exportar los datos obtenidos a una planilla Excel separados por columnas cada canal correspondiente. Para ello se establece el control mediante las opciones que muestra la siguiente figura.
Figura 5.6 Configuración para Exportación a Excel
Seg Exportación: Control numérico en el que el usuario establecerá cada cuanto tiempo (en segundos) desea que se realice la exportación.
Seg Transcurridos: Indicador numérico en el que se muestran los segundos que han pasado desde la ultima exportación. Este indicador se reiniciará cada vez que se realice una nueva exportación. El dibujo inferior de la figura parpadeará cada vez que haya una exportación. Los datos se exportarán en la dirección mostrada en la figura 5.6.
Capítulo Quinto Pruebas y Aplicación Práctica
45
Además el sistema cuenta con un botón para detener el sistema y un menú tipo Ring en el cual el usuario seleccionará la puerta serial disponible en su computador para establecer la comunicación con el dsPIC.
Figura 5.7 Menú puerta serial y botón de detención.
En la aplicación realizada una vez detenido el programa se pueden visualizar los datos exportados en la dirección antes descrita. Para la interacción entre Labview
y Excel
se
utilizó
el
complemento
“tdm_excel_add-in_2010”,
proporcionado por National Instrument y es necesario para realizar esta tarea. Además posee la facultad de exportar a archivos “.txt” (block de notas), pero se eligió Excel por la facilidad de manipulación de columnas y filas que este último ofrece. En la siguiente figura se puede ver una captura de la tabla obtenida al hacer la exportación.
Figura 5.8 Captura tabla Excel obtenida tras exportación.
Capítulo Quinto Pruebas y Aplicación Práctica
46
La figura 5.8 muestra un ejemplo de las tablas obtenidas en Excel tras la exportación hecha por Labview. Hay que señalar que para este caso los datos fueron enviados cada cinco segundos y solo en el canal 1 de la tarjeta dsPIC había ingreso de corriente, por lo que es el único que ofrece valores validos para exportar, los canales dos y tres estaban sin conexión pero calibrados y los canales cuatro cinco y seis estaban sin calibración y sin conexión por ello se visualizan valores nulos.
Además de la posibilidad de ver los datos obtenidos a través del software Labview, el sistema implementado posee un LCD marca LUMEX S02004 D en el que también se podrán ir visualizando en tiempo real los valores de las variables medidas. La pantalla se irá actualizando cada segundo, y cada vez que se actualice se podrán mensajes como el de la figura 5.9.
Figura 5.9 Captura mensaje LCD.
Tal y como se ve en la figura anterior el LCD ofrece una alternativa de visualización de los parámetros. Para el caso de la figura 5.9 sólo se tuvo el canal 1 de la tarjeta dsPIC con ingreso de corriente, es por ello que se visualiza el estado “Ok”. En los canales restantes no hubo corriente ingresada y por lo tanto se visualiza el estado “Falla”.
Capítulo Quinto Pruebas y Aplicación Práctica
47
5.3 Descripción general sistema de bombeo El sistema de bombeo consta de dos estanques por donde circulará el agua. Ésta es transportada por una bomba hacia el tanque superior, además consta de una válvula para vaciar el contenido del tanque superior hacia el inferior mediante gravedad.
Al encender la bomba el agua del tanque inferior es transportada hacia el superior, con ello cambiará la lectura del sensor de nivel instalado en el tanque inferior, además aumentará la presión del sensor instalado. El cambio del valor de temperatura se registra con un sensor tipo PT-100 y su respectivo transmisor.
Figura 5.10 Sistema de bombeo
En la Figura 5.11 se puede ver una imagen del transmisor de temperatura utilizado en la medición de este parámetro. Corresponde al modelo 3144 de la marca Rosemount. Está calibrado para registrar valores comprendidos entre 10ºC y 150ºC, con una corriente de salida entre 4 y 20mA para el mínimo y
Capítulo Quinto Pruebas y Aplicación Práctica
48
máximo respectivamente. Su alimentación está en el rango de 12 y 42.4 VDC. Se utilizó 24VDC.
Figura 5.11 Transmisor de temperatura.
Para la medición de nivel se utilizó un transductor de nivel de la empresa Rosemount modelo 3051 de
60 (
), de 4-20mA. Para convertir la
medición presión en nivel se utiliza la siguiente relación.
Donde P es la presión,
es la densidad del liquido a medir y h corresponde a
la altura, como “ρ” y “g” corresponden a variables conocidas y “P” es la variable medida se despeja “h” que corresponderá a la altura del liquido medido. El sensor y transmisor están calibrados para medir alturas que están en el rango de 0 a 40 cm para 4 y 20mA respectivamente.
Figura 5.12 Transmisor Rosemount modelo 3051
Capítulo Quinto Pruebas y Aplicación Práctica
49
Para la medición de presión se utilizó un transductor marca Industrie Messtechnik modelo 3249. Para mediciones de presión en el rango de 0 a 4 bares, con salida 4-20mA respectivamente, además el sistema de bombeo cuenta con un manómetro con fondo de escala de 25
que se utilizará
para la verificación de resultados.
Figura 5.13 Transductor de presión.
Utilizando los tres transmisores descritos el circuito quedaría como se ve en la Figura 5.14, donde se utilizan tres de los seis canales disponibles en la tarjeta dsPIC.
Figura 5.14 Conexión sistema de Bombeo tarjeta dsPIC.
Capítulo Quinto Pruebas y Aplicación Práctica
50
5.4 Panel frontal especifico para sistema de bombeo. Los tres sensores disponibles en el sistema de bombeo fueron conectados a las entradas de corriente disponibles en la tarjeta dsPIC, junto con los valores entregados por los transmisores y la calibración necesaria hecha a través del software Labview obtendremos mediciones precisas de las variables reales medidas por los sensores
Figura 5.15 Sistema de Bombeo, en sistema implementado
Capítulo Quinto Pruebas y Aplicación Práctica
51
Para la aplicación en el sistema de bombeo se diseñó un panel frontal que se adapte a esta necesidad. Para las pruebas realizadas en el sistema de bombeo se utilizaron los canales uno, dos y tres para mediciones temperatura, nivel y presión respectivamente, además se añadieron una serie de indicadores y controles que se pueden ver en la Figura 5.16.
Figura 5.16 Panel frontal para sistema de bombeo
El funcionamiento de este nuevo panel frontal es similar al mostrado anteriormente, además se incluyeron una serie de indicadores de estado para los sensores utilizados en esta aplicación. También se añadieron opciones para controles auxiliares con lo que se ofrece la posibilidad de utilizar o no los tres canales restantes disponibles en la tarjeta. Para utilizar estos tres canales restantes se implementó un control del tipo booleano con el que el usuario puede seleccionar o no el despliegue de indicadores para los canales restantes
Capítulo Quinto Pruebas y Aplicación Práctica
52
En la Figura 5.17 se puede ver el nuevo panel frontal totalmente desplegado. Cabe destacar que en las pruebas realizadas estos canales no fueron conectados ni calibrados ya que no se disponían de más sensores 4-20mA.
Figura 5.17 Panel frontal sistema de bombeo totalmente desplegado
Los tres canales adicionales desplegados ofrecen la posibilidad de cambiar los indicadores dependiendo de la necesidad tal y como sucede en el panel frontal de propósitos generales.
Capítulo Quinto Pruebas y Aplicación Práctica
53
En la figura 5.18 se muestra la exportación obtenida en una prueba realizada con el sistema de bombeo conectado a la tarjeta dsPIC.
Figura 5.18 Captura obtenida tras prueba en sistema de bombeo.
Los canales cuatro cinco y seis no fueron utilizados en esta prueba por lo que se visualizan nulos en esta captura. La prueba consistió en vaciar el contenido del tanque superior de agua hacia el inferior. Una vez vacío el tanque superior se procedió a encender la bomba para llevar el agua de regreso al tanque superior
y como se ve, produce un aumento en la presión medida por el
transductor. La temperatura es prácticamente inherente a estos cambios y se mantiene en un valor relativamente constante. Los valores obtenidos fueron verificados con el indicador que posee el transmisor de temperatura, la escala al costado del tanque inferior y el manómetro de presión instalado y con ello se pudo comprobar que la obtención de los parámetros medidos fue realizada satisfactoriamente.
Capítulo Quinto Pruebas y Aplicación Práctica
54
En la figura 5.19 se muestra una grafica de los datos de la captura vista en la figura 5.18, en la gráfica se visualiza el aumento de presión al encender la bomba. Se multiplicaron los valores de presión por diez para así facilitar la visualización de sus valores.
Figura 5.19 Gráfica valores obtenidos por sistema implementado
CAPÍTULO VI CONCLUSIONES
Capitulo Sexto Conclusiones
55
6. Conclusión General
La correcta obtención de las variables físicas sensadas en un proceso es de vital importancia para el ambiente industrial, puesto que permite una correcta manipulación de dichos procesos, establecer parámetros de seguridad y la posibilidad de almacenamiento en el tiempo para su posterior análisis
En general las posibilidades de aplicaciones utilizando un microcontrolador como unidad central del sistema están dadas por las necesidades del usuario. Para el caso presentado en este trabajo de título la utilización de un dsPIC como unidad central de un sistema de monitoreo y gestión de variables industriales es muy satisfactoria y brinda una gran cantidad de opciones en aplicaciones futuras.
Durante el tiempo invertido en el desarrollo de este trabajo de título se logró adquirir valiosos conocimientos en el ámbito de controladores digitales de señales y sus numerosos campos de aplicación no sólo en la industria sino que en la vida diaria.
La interfaz gráfica realizada en el software Labview se hizo con el fin de establecer una comunicación amigable entre un hipotético operador del sistema con el proceso sensado. Esto conllevó a conocer una de las múltiples aplicaciones del software Labview en el ámbito de la ingeniería eléctrica.
La comunicación establecida entre el dsPIC y Labview mediante puerto serie fue realizada con éxito y estabilidad en el tiempo, lo que hace que el sistema implementado sea confiable y de rápida actualización.
Las características de la tesis realizada tanto en la utilización del dsPIC como Labview permiten que en el futuro sean utilizados más de los recursos disponibles en ambos casos para necesidades más diversas y complejas.
Capitulo Sexto Conclusiones
56
El principal aprendizaje que se obtuvo realizando este trabajo de título fue el conocimiento adquirido de programación en dos lenguajes de alto nivel como lo son, lenguaje G (Labview) y lenguaje C (dsPIC), a pesar de la gran dificultad que se presentó al principio del desarrollo de este trabajo de título se logró adquirir invaluable conocimiento en ambos casos que a su vez se pretende ir mejorando en el futuro.
A pesar de que los códigos implementados en ambos casos son bastante largos y de mediana complejidad se hicieron con el fin de poder ser modificados y optimizados para así añadir múltiples aplicaciones futuras. Esto porque los recursos disponibles tanto en la tarjeta dsPIC, la comunicación con el software Labview y la aplicación gráfica realizada en este último permite que este sistema utilizado en conjunto ofrezca un control además del monitoreo en una gran variedad de procesos industriales.
Referencias Bibliográficas
57
[1]
dsPIC Family Reference Manual. Documento MICROCHIP.
[2]
dsPIC30F6011A/6012A/6013A/6014A .Datasheet MICROCHIP.
[3]
dsPIC Language Tools Libraries. Documento MICROCHIP.
[4]
Historia, Manejo y Aplicaciones de los Controladores Digitales de
Señales dsPIC, Cintya Carolina Pavón, Oscar Alejandro Cruz.
[5]
dsPIC Diseño Práctico de Aplicaciones, José María Angulo, Aritza
Etxebarria Ruiz, Ignacio Angulo Martínez, Ivan Trueda Parra. [6]
Introducción a Labview Curso de Seis-Horas. Documento NATIONAL
INSTRUMENTS. [7]
Labview, Entorno Gráfico de Programación, José Rafael Lajara Vizcaíno,
José Pelegrí Sebastiá,
[8]
Control y Supervisión de Motores Comandados desde un MCC. Tesis
Cristian Monroy Arteaga
ANEXOS PARTE 1: CÓDIGOS DE PROGRAMAS
Anexos Parte 1
57
Anexos Parte 1 Descripción de periféricos y registros asociados utilizados Para un correcto funcionamiento del dsPIC se deben configurar mediante software tanto los periféricos y sus registros asociados como la asignación de pines con la que contaremos en nuestro sistema. En nuestro caso utilizaremos una serie de módulos disponibles en el dsPIC, los cuales explicaremos a continuación. Todos los puertos del dsPIC tienen asociados directamente tres registros de control: TRIS, PORT y LAT. Registros TRIS: Con este registro de control configuramos los pines de los puertos si son entradas o salidas. Por defecto cada vez que hay un reset en el DSPIC este configura al puerto como entrada. Registros PORT: En este registro se encuentra el valor actual de entrada o salida del DSPIC. Registro LAT: Con los registros LAT escribimos o leemos desde el registro cerrojo del DSPIC y no desde los pines físicos del mismo. Conversor Análogo Digital (ADC): El dsPIC nos permite hacer una rápida y fiable conversión análoga/digital, para ello cuenta con un ADC de 12 bits de precisión. La conversión se realiza en tres etapas: muestreo de la señal, cuantificación de la señal que consiste en llevar el valor análogo a un valor de combinaciones y la cuantificación de la señal que consiste en agregarle los ceros y unos a la señal convertida, el modulo ADC del dsPIC posee las siguientes características. -Tiempo de muestreo de 154ns. -Conversión de aproximaciones sucesivas. -Velocidad de conversión de hasta 500Ksps. -Modo automático de exploración de canal. -La tensión analógica de referencia puede ser seleccionada por software.
Anexos Parte 1
58
Para la configuración del módulo ADC debemos configurar a seis registros de control y de estado: ADCON1, ADCON2, ADCON3, ADCHS, ADPCFG, ADCSSL. ADCON1:
Sirve
para
controlar el funcionamiento
del
conversor,
el
funcionamiento en modo IDLE (desocupado), formato de salida del conversor, para indicar el inicio y secuencia de la conversión. En la siguiente figura veremos los bits encargados para realizar lo antes señalado.
Configuración registro ADCON1.
ADCON2: Sirve para seleccionar la tensión de referencia positiva o negativa del ADC, además nos indica que canales están siendo seleccionados en la conversión, para configurar el buffer de salida de conversión.
Configuración registro ADCON2.
Anexos Parte 1
59
ADCON3: Para seleccionar el tiempo de conversión TAD, el tiempo de muestreo, para seleccionar la fuente del reloj de conversión y las treinta dos posibilidades del tiempo del reloj de conversión.
Configuración registro ADCON3.
ADCHS: Es el encargado de seleccionar las entradas que van ha ser conectados a los amplificadores de muestreo y retención, además sirve para seleccionar a que entrada positiva o negativa de los amplificadores conectamos las entradas y esto lo hacemos gracias a un MUX A y MUX B y los bits 15,..,8 configuran al MUXB y los bits 7,…,0 configuran al MUX A.
Configuración registro ADCHS.
ADPCFG: Este registro me indica cuales son los pines del dsPIC que trabajaran como I/O digital, si colocamos un `1´ será para que sean entradas digitales, si las queremos análogas debemos colocar un `0´ en este registro.
Anexos Parte 1
60
Configuración registro ADPCFG.
ADCSSL: Con este registro podemos seleccionar el orden en que estas entradas serán seleccionadas, al igual que el registro anterior utiliza todos sus bits para realizar esta función.
Configuración registro ADCSSL.
Modulo UART: Este módulo permite la comunicación Universal Serial Asíncrona full dúplex o serial asíncrono con ordenadores, con interfaces RS 232 y RS 485, entre las principales características son:
-La transmisión de datos es de 8 o de 9 bits. - Trabajar con paridad impar, par o sin paridad. -Uno o dos bits de parada. -Tiene un generador de baudios con preescalador de 16 bits que se encarga de dar la frecuencia de trabajo al modulo. -Los buffers de transmisión y recepción son de máximo cuatro caracteres.
Anexos Parte 1
61
Para el correcto funcionamiento del modulo UART debemos configurar algunos registros para el bloque generador, transmisor y receptor.
UxSTA: Este registro produce una interrupción cuando enviamos un bit para el registro de desplazamiento TSR, podemos habilitar o deshabilitar la trasmisión, bits de error para saber si hay error en la transmisión o recepción.
Configuración registro UxSTA
UxBRG: Registro encargado de dar el valor del Baudrate a utilizar.
Configuración registro UxBRG
UxMODE: Registro encargado de dar modo a la UART.
Configuración registro UxMODE.
Anexos Parte 1
62
UxSTA: Registro de estado de la UART, encargado de configurar transmisión y recepción.
Configuración registro UxSTA.
Modulo Temporizador: El dsPIC30F6013A cuenta con 5 temporizadores, cada uno de 16 bits, para controlar el comportamiento de los temporizadores cada uno cuenta con tres registros asociados de 16 bits cada uno, los que señalare a continuación.
TMRx: Registro encargado de guardar el valor que establece el tiempo a controlar. PRx: Registro de periodo asociado al temporizador. TxCON: Registro de control.
Configuración registros temporizador Los
temporizadores
pueden
solicitar
interrupción
al
producirse
su
desbordamiento, que se regulan con los siguientes registros.
TxIE: Registro que contiene los bits de permiso para las diversas interrupciones de los temporizadores. TxIF: Sus bits actúan como señalizadores del desbordamiento de los temporizadores. TxIP: Son tres bits dedicados a cada temporizador que establecen el nivel de prioridad de la interrupción correspondiente.
Anexos Parte 1
63
Código de programa dsPIC30f6013A //Programa realizado para funcionamiento dsPIC proyecto de titulo //Realizado por Hebert Ruiz e Ivan Andrade //Apadtado para trabajar con Labview v2009 //Utiliza entradas de corriente disponibles en tarjeta dsPIC //Comunicacion serial utilizando UART1 para transmision y recepcion
#include #include #include #include #include #include #include #include "eeprom.h" #include "reset.h" #include "lcd.h" //declaracion de fusibles _FOSC(CSW_FSCM_OFF & XT_PLL8); //con XTAL de 7.3728Mhz PLLx8 se tienen Fclock=58.9824MHz ==> 14.7456MIPS _FWDT(WDT_OFF); _FBORPOR(PBOR_OFF & BORV_20 & PWRT_16 & MCLR_EN); _FGS(CODE_PROT_OFF); #define FCY #define BaudRated #define EEPROM_0
14745600 // 16MIPS (nseg) 57600 // Velocidad de transferencia 0xF800 // 2k de la 7FF800 a la 7FFFFE
//DECLARACION DE VARIABLES GLOBALES DEL PROGRAMA float ADCvalue2=0; float ADCvalue3=0; float ADCvalue4=0; float ADCvalue5=0; float ADCvalue0=0; float ADCvalue1=0; unsigned int valor0[5]; unsigned int valor1[5]; unsigned int valor2[5]; unsigned int valor3[5]; unsigned int valor4[5]; unsigned int valor5[5]; int i=1; int cont=0; int cont2=0; int cont_valve=0; int espera_valvula=0; volatile unsigned char rtc_lcd_update; unsigned char DISPLAY=0; unsigned char contador_display=0; unsigned char limpia_display=1; char ADC_1[5]; char ADC_2[5]; char ADC_3[5]; char ADC_4[5]; char ADC_5[5]; char ADC_6[5]; float adc_volt0; float adc_volt1; float adc_volt2; float adc_volt3; float adc_volt4; float adc_volt5; unsigned char buffer_uart[32]; unsigned char capture_uart[32]; static int buf_ptr; static char got_char; char *prueba;
Anexos Parte 1
unsigned char prueba2[32]; unsigned char identificador[32]; float enviar1; float enviar2; float enviar3; float enviar4; float enviar5; float enviar6; float enviar1_lcd; float enviar2_lcd; float enviar3_lcd; float enviar4_lcd; float enviar5_lcd; float enviar6_lcd; //Declaracion funciones void lectura (void); void lcd_putc(const char *s); void lcd_gotoxy(char x, char y); void lcd_send_byte(char address, char n); void init_adc(void); void init_uart1(void); void __attribute__((__interrupt__,no_auto_psv)) _T3Interrupt(void); void __attribute__((__interrupt__,no_auto_psv)) _T2Interrupt(void); void __attribute__((__interrupt__,no_auto_psv)) _T1Interrupt(void); void __attribute__((__interrupt__,no_auto_psv)) _U1RXInterrupt(void); void init_ports(void); void init_timer1(); void init_timer2(void); void init_timer3(void); char alarma_enviar1[10]; char alarma1f[]="Falla"; char alarma1ok[]="Ok"; char alarma_enviar2[10]; char alarma2f[]="Falla"; char alarma2ok[]="Ok"; char alarma_enviar3[10]; char alarma3f[]="Falla"; char alarma3ok[]="Ok"; char alarma_enviar4[10]; char alarma4f[]="Falla"; char alarma4ok[]="Ok"; char alarma_enviar5[10]; char alarma5f[]="Falla"; char alarma5ok[]="Ok"; char alarma_enviar6[10]; char alarma6f[]="Falla"; char alarma6ok[]="Ok";
64
Anexos Parte 1
//Macros para ajuste de sensores: #define Lmbyteptr(var32) ((unsigned char*)(&var32)) #define LMbyteptr(var32) ((unsigned char*)(&var32)+1) #define Hmbyteptr(var32) ((unsigned char*)(&var32)+2) #define HMbyteptr(var32) ((unsigned char*)(&var32)+3) //desarma el float #define getLmbyte(var32) ((unsigned char)(*Lmbyteptr(var32))) // #define getLMbyte(var32) ((unsigned char)(*LMbyteptr(var32))) // #define getHmbyte(var32) ((unsigned char)(*Hmbyteptr(var32))) // #define getHMbyte(var32) ((unsigned char)(*HMbyteptr(var32))) // //arma float #define setLmbyte(var32,var8) {(unsigned char)(*Lmbyteptr(var32)=var8);} // #define setLMbyte(var32,var8) {(unsigned char)(*LMbyteptr(var32)=var8);} // #define setHmbyte(var32,var8) {(unsigned char)(*Hmbyteptr(var32)=var8);} // #define setHMbyte(var32,var8) {(unsigned char)(*HMbyteptr(var32)=var8);} // //Declaracion variables y funciones para ajuste de sensores float labview1,labview2,labview3,labview4,labview5,labview6; float m0=0; float m1=0; float m2=0; float m3=0; float m4=0; float m5=0; float b0=0; float b1=0; float b2=0; float b3=0; float b4=0; float b5=0; float adc_bar; float adc_temp1; float adc_fl; float adc_temp2; float adc_temp3; float adc_temp4; float def; float var1,var2;var3;var4;var5;var6;var7;var8;var9;var10;var11;var12; void cargar_parametros(void); void guardar_m0(void); void guardar_b0(void); void guardar_m1(void); void guardar_b1(void); void guardar_m2(void); void guardar_b2(void); void guardar_m3(void); void guardar_b3(void); void guardar_m4(void); void guardar_b4(void); void guardar_m5(void); void guardar_b5(void); char dummy1, dummy2, dummy3, dummy4;
65
Anexos Parte 1
66
void __attribute__((__interrupt__,no_auto_psv)) _T1Interrupt(void) {
IFS0bits.T1IF=0;
if(cont_valve == 1){ espera_valvula+=1; }
// borra la bandera de interrupcion por Timer2
//rutina de tiempo de demora de la valvula
rtc_lcd_update = 1; cont++;
return; }
void __attribute__((__interrupt__,no_auto_psv)) _T2Interrupt(void) { PORTGbits.RG13=1; IFS0bits.T2IF=0; ClrWdt();
// borra la bandera de interrupcion por Timer2
Anexos Parte 1
//CANALES CON ENTRADA DE CORRIENTE SE HARAN LOS ESCALAMIENTOS Y CALCULOS //PERTINENTES //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ADCHSbits.CH0SA = 0;//selecciona el canal0 ADCON1bits.DONE=0; ADCON1bits.SAMP = 1; // start sampling then after while (!ADCON1bits.DONE); // conversion finalizada? ADCvalue0 = (float)ADCBUF0; // yes then get ADC value valor0[i] = ADCBUF0; // yes then get ADC value adc_volt0=((4.93*ADCvalue0)/4095); adc_temp4=(((adc_volt0*125.14)/4.93)-25.14); labview6=((adc_volt0*0.02)/4.93); //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ADCHSbits.CH0SA = 1; //selecciona el canal1 ADCON1bits.DONE=0; ADCON1bits.SAMP = 1; //start sampling while (!ADCON1bits.DONE); // conversion finalizada? ADCvalue1 = (float)ADCBUF0; // yes then get ADC value valor1[i] = ADCBUF0; // yes then get ADC value adc_volt1=((4.93*ADCvalue1)/4095); adc_temp3=(((adc_volt1*125.14)/4.93)-25.14); labview5=((adc_volt1*0.02)/4.93); //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ADCHSbits.CH0SA = 2; //selecciona el canal 2 ADCON1bits.DONE=0; ADCON1bits.SAMP = 1; // start sampling while (!ADCON1bits.DONE); // conversion finalizada? ADCvalue2 = (float)ADCBUF0; // yes then get ADC value valor2[i] = ADCBUF0; // yes then get ADC value adc_volt2=((4.93*ADCvalue2)/4095); adc_temp2=(((adc_volt2*75.09)/4.93)-25.034); labview4=((adc_volt2*0.02)/4.93); //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ADCHSbits.CH0SA = 3; //selecciona el canal 3 ADCON1bits.DONE=0; ADCON1bits.SAMP = 1; // start sampling while (!ADCON1bits.DONE); // conversion finalizada? ADCvalue3 = (float)ADCBUF0; // yes then get ADC value valor3[i] = ADCBUF0; // yes then get ADC value adc_volt3=((4.93*ADCvalue3)/4095); adc_fl=(((adc_volt3*125.14)/4.93)-25.14); labview3=((adc_volt3*0.02)/4.93); //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ADCHSbits.CH0SA = 4; //selecciona el canal4 ADCON1bits.DONE=0; ADCON1bits.SAMP = 1; // start sampling while (!ADCON1bits.DONE); // conversion finalizada? ADCvalue4 = (float)ADCBUF0; // yes then get ADC value valor4[i] = ADCBUF0; // yes then get ADC value adc_volt4=((4.93*ADCvalue4)/4095); adc_temp1=(((adc_volt4*125.14)/4.93)-25.14); labview2=((adc_volt4*0.02)/4.93); //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ADCHSbits.CH0SA = 5; //selecciona el canal5 ADCON1bits.DONE=0; ADCON1bits.SAMP = 1; // start sampling while (!ADCON1bits.DONE); // conversion finalizada? ADCvalue5 = (float)ADCBUF0; // yes then get ADC value valor5[i] = ADCBUF0; // yes then get ADC value adc_volt5=((4.93*ADCvalue5)/4095); adc_bar=(((adc_volt5*31.28)/4.93)-6.28); labview1=((adc_volt5*0.02)/4.93);
67
Anexos Parte 1
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //Datos Para enviar a labview y lcd // Calculos hechos con datos enviados desde labview y adquiridos por ADC enviar1=(((m0-b0)*1.25*labview1)/0.02)+(((m0-b0)*1.25-m0)*-1); enviar2=(((m1-b1)*1.25*labview2)/0.02)+(((m1-b1)*1.25-m1)*-1); enviar3=(((m2-b2)*1.25*labview3)/0.02)+(((m2-b2)*1.25-m2)*-1); enviar4=(((m3-b3)*1.25*labview4)/0.02)+(((m3-b3)*1.25-m3)*-1); enviar5=(((m4-b4)*1.25*labview5)/0.02)+(((m4-b4)*1.25-m4)*-1); enviar6=(((m5-b5)*1.25*labview6)/0.02)+(((m5-b5)*1.25-m5)*-1); // Rutinas alarmas lcd enviar1_lcd=enviar1;if(enviar1