UNIVERSIDAD DE MAGALLANES FACULTAD DE INGENIERÍA...

155
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-

Transcript of UNIVERSIDAD DE MAGALLANES FACULTAD DE INGENIERÍA...

  • 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 2

    1.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 17

    Icono Herramienta Función

    Operación

    Asigna valores a los controles del panel frontal, se

    encuentra disponible cuando se corre y edita la

    aplicación.

    Desplazamiento

    Mueve todos los objetos dentro de la ventana activa.

    Posición

    Selecciona, mueve y redimensiona objetos. La herramienta

    cambia el icono del puntero cuando pasa por encima de

    objetos que pueden modificar su tamaño.

    Etiquetado

    Se utiliza para generar la estructura lógica de eventos

    mediante la conexión de los terminales de cada objeto. Los

    cables determinan el flujo de los datos.

    Menú

    desplegable

    Permite obtener el menú de opciones de un objeto. Esta

    misma función se puede realizar haciendo un clic derecho

    del ratón sobre el objeto.

    Punto de

    quiebre

    Detiene la ejecución del programa en el punto del diagrama

    donde se ponga. Se utiliza con fines de depuración.

    Punto de prueba

    Se pone sobre algún cable de conexión para verificar de

    forma temporal el valor que fluye a través de éste.

    Capturar color Obtiene el color del objeto que se señale.

    Colorear 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(In-

    Circuit 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 36

    Figura 4.8 Diagrama flujo Programa dsPIC

  • 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 39

    Figura 4.10 Diagrama flujo programa implementado en Labview.

  • 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 14745600 // 16MIPS (nseg) #define BaudRated 57600 // Velocidad de transferencia #define EEPROM_0 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 64

    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";

  • Anexos Parte 1 65

    //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;

  • Anexos Parte 1 66

    void __attribute__((__interrupt__,no_auto_psv)) _T1Interrupt(void) { IFS0bits.T1IF=0; // borra la bandera de interrupcion por Timer2 if(cont_valve == 1){ //rutina de tiempo de demora de la valvula espera_valvula+=1; } rtc_lcd_update = 1; cont++; return; } void __attribute__((__interrupt__,no_auto_psv)) _T2Interrupt(void) { PORTGbits.RG13=1; IFS0bits.T2IF=0; // borra la bandera de interrupcion por Timer2 ClrWdt();

  • Anexos Parte 1 67

    //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);

  • Anexos Parte 1 68

    //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //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

  • Anexos Parte 1 69

    // Rutina interrupcion por recepcion de caracteres desde labview void __attribute__((__interrupt__,no_auto_psv)) _U1RXInterrupt(void) { PORTGbits.RG12=1; IFS0bits.U1RXIF = 0; //borramos flag de interrupcion if (DataRdyUART1()) // Verifica si hay datos para leer { buffer_uart[buf_ptr] = ReadUART1(); // Guarda en buffer if (buffer_uart[buf_ptr]== 'p') // Caracter 'p' es recibido?? { buffer_uart[buf_ptr] = '\0'; // Reemplaza por caracter nulo got_char=1; } if (buffer_uart[buf_ptr]== '\r') // Retorno de carro es recibido?? { buffer_uart[buf_ptr] = '\0'; // Reemplaza por caracter nulo got_char=1; } // Verifica si es desbordado el buffer de recepcion if (buf_ptr==31) { buffer_uart[31] = '\0'; got_char=1; } buf_ptr++; } if(got_char) // Si el buffer esta listo ingresa a la rutina { buf_ptr=0; got_char=0; capture_uart[0]='\0'; // Limpia buffer prueba=buffer_uart+3; strcpy (prueba2,prueba); strncpy (capture_uart,buffer_uart,3); strcpy (identificador,capture_uart); // Dependiendo de la trama de caracteres recibidas por labview son almacenadas en diferentes variables if(strcmp(identificador,"a1=")==0){var1=atof(prueba2);m0=var1;guardar_m0();} if(strcmp(identificador,"b1=")==0){var1=atof(prueba2);b0=var1;guardar_b0();} if(strcmp(identificador,"a2=")==0){var1=atof(prueba2);m1=var1;guardar_m1();} if(strcmp(identificador,"b2=")==0){var1=atof(prueba2);b1=var1;guardar_b1();} if(strcmp(identificador,"a3=")==0){var1=atof(prueba2);m2=var1;guardar_m2();} if(strcmp(identificador,"b3=")==0){var1=atof(prueba2);b2=var1;guardar_b2();} if(strcmp(identificador,"a4=")==0){var1=atof(prueba2);m3=var1;guardar_m3();} if(strcmp(identificador,"b4=")==0){var1=atof(prueba2);b3=var1;guardar_b3();} if(strcmp(identificador,"a5=")==0){var1=atof(prueba2);m4=var1;guardar_m4();} if(strcmp(identificador,"b5=")==0){var1=atof(prueba2);b4=var1;guardar_b4();} if(strcmp(identificador,"a6=")==0){var1=atof(prueba2);m5=var1;guardar_m5();} if(strcmp(identificador,"b6=")==0){var1=atof(prueba2);b5=var1;guardar_b5();} buffer_uart[0]='\0'; // Limpia buffer de recepcion para estar listo para la proxima recepcion } PORTGbits.RG12=0; return; }

  • Anexos Parte 1 70

    int main (void) { cargar_parametros(); lcd_init(); init_ports(); init_adc(); init_timer1(); init_timer2(); init_timer3(); init_uart1(); lcd_putc("\f"); while(1){ if(DISPLAY==0){ if(limpia_display==1){lcd_putc("\f");limpia_display=0;} lcd_gotoxy(1,1); lcd_putc("Canales"); lcd_gotoxy(15,1); lcd_putc("Estado"); lcd_gotoxy(1,2); lcd_putc("Canal1="); sprintf(ADC_1,"%1.2f",enviar1_lcd); //Convierte flotante en string lcd_gotoxy(8,2); lcd_putc(ADC_1); //envia valor del canal al LCD lcd_gotoxy(15,2); lcd_putc(alarma_enviar1); lcd_gotoxy(1,3); lcd_putc("Canal2="); sprintf(ADC_2,"%1.2f",enviar2_lcd); //Convierte flotante en string lcd_gotoxy(8,3); lcd_putc(ADC_2); //envia valor del canal al LCD lcd_gotoxy(15,3); lcd_putc(alarma_enviar2); lcd_gotoxy(1,4); lcd_putc("Canal3="); sprintf(ADC_3,"%1.2f",enviar3_lcd); //Convierte flotante en string lcd_gotoxy(8,4); lcd_putc(ADC_3); //envia valor del canal al LCD lcd_gotoxy(15,4); lc