Incubadora Temperatura pic18f4550.pdf

CONTROL DE TEMPERATURA ON – OFF CON HISTÉRESIS PARA UNA INCUBADORA HACIENDO USO DEL PIC18F4550 Presentado por: BAUTISTA

Views 186 Downloads 36 File size 878KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

CONTROL DE TEMPERATURA ON – OFF CON HISTÉRESIS PARA UNA INCUBADORA HACIENDO USO DEL PIC18F4550

Presentado por: BAUTISTA ALMANZA ANDRÉS FELIPE Código. 1070610122 BLANCO CAICEDO EDISON DAVID Código. 96022312925 VELANDIA GÓMEZ PAULA ANDREA Código. 95052704210 GRUPO A1B

Docente a cargo: PULIDO CASALLAS OSCAR ANDRÉS Ingeniero Electrónico

UNIVERSIDAD MANUELA BELTRAN PROGRAMA DE INGENIERÍA BIOMÉDICA SISTEMAS DIGITALES APLICADOS BOGOTÁ D.C. 2016

CONTENIDO RESUMEN ....................................................................................................................... 1 ABSTRACT ..................................................................................................................... 1 INTRODUCCIÓN .......................................................................................................... 1 OBJETIVOS .................................................................................................................... 1 JUSTIFICACIÓN ........................................................................................................... 2 1. MARCO TEÓRICO .............................................................................................. 2 1.1 TEORÍAS GENÉRICAS EXPLICATIVAS ........................................................ 2 1.2 TEORÍAS GENÉRICAS DEL PROYECTO ...………………………………...4 2. INGENIERIA Y PUESTA EN MARCHA DEL PROYECTO............................... 8 2.1 ANÁLISIS .................................................................................................................. 8 2.2 DISEÑO .................................................................................................................. 10 2.3 RESULTADOS……………………………………………………………..…….11 3. CONCLUSIONES .................................................................................................... .11 4. SUGERENCIAS Y RECOMENDACIONES ......................................................... 11 BIBLIOGRAFIA ........................................................................................................... 11 Anexos ............................................................................................................................ 12

LISTA DE FIGURAS Figura 1. Display de Cristal Líquido de 2*16. .................................................................. 3 Figura 2. Sensor LM35.. ..................................................................................................... 3 Figura 3. Descripción de los pines de conexión de una LCD. ................................................. 4 Figura 4. Ubicación de los pines de conexión de una LCD. ................................................... 5 Figura 5. Condiciones de la alimentación para producir un reset interno. .............................. 6 Figura 6. Procedimiento a seguir para inicializar la LCD mediante instrucciones. .................. 7 Figura 7. Conexiones del sensor LM35. ............................................................................... 7 Figura 8. Diseño de caja incubadora….………………………………………………….9 Figura 9. Diseño del montaje para la implementación del sistema de control de temperatura...…………………………………………………………………………...10 Figura 10. Diagrama de flujo para el sistema de control de temperatura on - off ......... 12

LISTA DE TABLAS Tabla 1. Distribución de niveles y voltajes……………………………………………….8 Tabla 2. Configuración de puertos e identificación de entradas y salidas……………….10

LISTA DE ANEXOS Anexo A. Diagrama de flujo ........................................................................................... 12 Anexo B. Código Fuente con comentarios ..................................................................... 12

RESUMEN El presente informe corresponde a la implementación de un sistema para control de temperatura con tres rutinas diferentes de comparación de temperatura; como instrumento de impresión de datos se utilizó una pantalla LCD, pulsadores para la selección de rutina y sensor de temperatura referencia LM35 para el muestreo de la temperatura. Para agilizar el proceso de calentamiento, se agregó una bombilla de 110VAC con roseta la cual reacciona en relación al umbral de temperatura deseado que a su vez es controlado por un potenciómetro. Como microcontrolador se utilizó un PIC18F4550 programado en lenguaje XC8 mediante el entorno MPLAB X de Microchip.

ABSTRACT This report corresponds to the implementation of a system for temperature control with three different temperature comparison routines; as an information printing instrument a LCD was used, selection buttons for routine and a LM35 sensor device for sampling temperature. To speed up the heating process, an 110VAC light bulb which reacts in relation to the desired temperature threshold which in turn is controlled by a potentiometer was added. As microcontroller a PIC18F4550 was used programmed into XC8 language by MPLAB X environment. INTRODUCCIÓN Para profundizar más en el uso de microcontroladores, en este caso PIC18F4550 se implementó un circuito para que recree el funcionamiento de una incubadora básica. Dicho PIC se programó con un código que muestree correctamente la temperatura y el umbral de la misma; se adiciono una librería para el control del display LCD mediante instrucciones genéricas; esta librería es la personalización de una perteneciente a la lista de periféricos. En el programa principal se incluyeron las lecturas continuas del sensor de temperatura y el potenciómetro además de la rutina número 1. Para realizar la comparación con las rutinas 2 y 3 se implementaron pulsadores. Por lo tanto es de vital importancia conocer sobre configuración de entradas y salidas tanto en la programación como en la realización electrónica.

OBJETIVOS OBJETIVO GENERAL Implementar un sistema basado en el PIC18F4550, en el cual se haga un control de temperatura on – off con histéresis para una incubadora, haciendo uso del módulo ADC del microcontrolador con un sensor de temperatura LM35 y visualizador LCD.

OBJETIVOS ESPECÍFICOS 

Realizar un diagrama de flujo en donde se organice el proceso de implementación y código para el sistema de control a realizar.

   

Identificar el módulo ADC a usar en el microcontrolador y características necesarias de uso además de los demás recursos necesarios a ser usados. Diseñar el circuito electrónico en proteus para su posterior simulación. Plantear el código correspondiente en MPLAB X realizando su correcta compilación para simular en el circuito diseñado. Montar el circuito diseñado en físico, en baquela independiente junto con el microcontrolador ya programado para realizar pruebas y sustentación. JUSTIFICACIÓN

Las incubadoras son equipos vitales para el tratamiento de neonatos, estas máquinas consisten en una cámara cerrada de material transparente que evita la exposición a gérmenes, esta incluye un revestimiento esterilizado donde se puede acomodar al recién nacido, calefacción, filtro de aire, ventanas para manipular al paciente, y sofisticados sistemas de monitoreo que incluyen control de peso, respiración, ritmo cardiaco y actividad cerebral. Este mecanismo es posible por un sistema de automatización y control de la información adquirida que permita reducir las posibles fallas operacionales y se tenga un mayor control y rendimiento en el funcionamiento de estos equipos. Es aquí donde los sistemas digitales proveen una solución de complejidad moderada, que suple las necesidades en el mecanismo de funcionamiento de calefacción de una incubadora a partir de la programación de un PIC en lenguaje C, permitiendo la regulación de la temperatura de un prototipo, donde el usuario puede manipularla a partir de un potenciómetro, dependiendo del pulsador que se presione, se puede seleccionar el promedio o la mediana de los datos y estos pueden ser visualizados por el usuario a través de una LCD que va directamente controlada al microcontrolador con un margen de error pequeño, además de contribuir en la precisión y un grado de exactitud mayor en el control y manejo de la temperatura que realiza el usuario.

1. MARCO TEÓRICO 1.1.TEORÍAS GENÉRICAS EXPLICATIVAS (Marco Conceptual) LCD (Liquid Cristal Display) Es un display alfanumérico formado por matrices de puntos que sirve como interface entre la máquina y el ser humano, en estas se puede mostrar caracteres de cualquier tipo para formar mensajes y se encuentran en distintos formatos (2*8, 2*16, 4*20), donde el primer digito indica el número de filas y el segundo el número de columnas o máximo de caracteres por fila. Estos dispositivos son controlados por un microcontrolador el cual se encarga de polarizar los puntos de la pantalla, generar los caracteres, desplazar la pantalla y otras funciones donde el usuario solo necesita saber los comandos de configuración o instrucciones de alto nivel que le permitirán mostrar mensajes o animaciones sobre la pantalla. La LCD dispone de un puerto paralelo al exterior de fácil conexión a otros microcontroladores o microprocesadores.

Los caracteres que se pueden mostrar están almacenados en la memoria ROM del microcontrolador, donde el fabricante destina una parte de la memoria RAM para los caracteres diseñados por el usuario como por ejemplo la letra Ñ.

Figura 1. Display de Cristal Líquido de 2*16. Tomada de (Suárez Marcelo, 2015)

Sensor LM35 Es un sensor de temperatura tiene una tensión de salida proporcional a los grados Celsius (°C), el cual, consta de tres pines y cuya precisión es de ±1/4 °C a temperatura ambiente y ±3/4 °C a lo largo de su temperatura la cual es de -55 a 150 °C. Sus características más importantes son su calibrado directamente en grados Celsius, su precisión, su baja corriente de alimentación y su bajo costo.

Figura 2. Sensor LM35. Tomada de (ELECTRONILAB, s.f.)

Conversor ADC

Es un dispositivo electrónico capaz de convertir una señal analógica, ya sea de tensión o corriente, en una señal digital mediante un cuantificador y codificándose en muchos casos en un código binario en particular. Donde un código es la representación unívoca de los elementos, en este caso, cada valor numérico binario hace corresponder a un solo valor de tensión o corriente. En la cuantificación de la señal se produce pérdida de la información que no puede ser recuperada en el proceso inverso, es decir, en la conversión de señal digital a analógica y esto

es debido a que se truncan los valores entre 2 niveles de cuantificación, mientras mayor cantidad de bits mayor resolución y por lo tanto menor información pérdida. Aunque un PIC puede tener del orden de 8-12 posibles canales (pines) de entrada analógica, solo tiene normalmente un único módulo ADC, lo que significa que no podemos tomar medidas simultáneas de varios canales. Si es necesario, lo que podemos hacer es ir conectando (seleccionando) los sucesivos canales al ADC para ir midiendo sus voltajes. El proceso de una conversión ADC se divide en un tiempo de adquisición Ta (durante el cual un condensador interno se carga al voltaje exterior) y un tiempo de conversión Tc (durante el cual se desconecta el pin exterior y se cuantifica el voltaje del condensador). El tiempo de adquisición Ta depende de las características eléctricas del PIC (en particular de la capacidad del condensador). Si no se respeta este tiempo, el condensador no habrá alcanzado el nivel del voltaje exterior y la medida será incorrecta. Los datasheet de los PIC indican los Ta recomendados para diversas familias.

1.2. TEORÍAS GENÉRICAS DEL PROYECTO (Marco referencial) Conexión de una LCD

Figura 3. Descripción de los pines de conexión de una LCD. Tomada de (Suárez Marcelo, 2015)

1. Señales de alimentación Son tres señales correspondientes a los pines 1, 2 y 3.

  

El pin 1 corresponde a tierra (Gnd). El pin 2 corresponde a la alimentación positiva (normalmente +5Vdc). El pin 3 corresponde al ajuste de contraste.

Si se alimenta la LCD si haber dado instrucciones de configuración, el display muestra todos sus caracteres en negro, si no es así se debe ajustar el contraste. Para el ajuste de contraste se debe colocar un potenciómetro de aproximadamente 10 KΩ, entre más baja la tensión en este pin mayor será el contraste. 2. Señales de control Estas señales están en los pines 4, 5 y 6. El pin 4 (RS) sirve para seleccionar el registro de datos (DR) cuando este tiene un valor lógico de 1, o de instrucciones (IR) cuando asume un valor de 0. El pin 5 (R/W) permite seleccionar la lectura o escritura en la LCD, tanto datos como instrucciones. Cuando esta salida posee un valor lógico de 1 se selecciona lectura, o si tiene un valor de 0 se selecciona escritura. El pin 6 (E) permite habilitar o deshabilitar la LCD. Cuando este toma un valor lógico de 1 el enable está habilitado, o por el contrario si toma un valor de cero el enable estará deshabilitado. 3. Señales de datos Los pines del 7 al 14 forman un bus de datos bidireccional de 8 bits, (D7 a D0). Por medio de estos pines se envía y se recibe información (si la LCD no está ocupada se puede leer la información del estado del cursor). La LCD también puede ser gobernada por un bus de datos de 4 hilos que se conectan a los 4 bits más significativos (D7, D6, D5 y D4).

Figura 4. Ubicación de los pines de conexión de una LCD. Tomada de (Suárez Marcelo, 2015)

Como mostrar un carácter en una LCD Para escribir un carácter en una posición determinada, es necesario mandar al registro de instrucciones la dirección de la celda (instrucción “set DDRAM address”) y posteriormente enviar el carácter al registro de datos (write data to CG or DDRAM).

Iniciación de la LCD Las LCDs necesitan ser inicializarlas tras ser alimentadas. El proceso de inicialización es necesario, si no se respetan los pasos y los tiempos que indica el fabricante, esta no puede ser puesta en marcha. 1. Inicialización mediante el Reset interno El microcontrolador lleva incorporado un circuito para reset automático tras la alimentación del módulo, si no se cumplen los requisitos de tiempos especificados el modulo no se resetea y se deberá hacer mediante instrucciones.

Figura 5. Condiciones de la alimentación para producir un reset interno. Tomada de (Suárez Marcelo, 2015) 2. Inicialización mediante instrucciones Es la forma más confiable de inicializar el modulo, ya que los requerimientos de alimentación difícilmente se cumplen alguna vez. En la figura 6 se muestra la manera de inicializar teniendo un bus de datos de 8 bits.

Figura 6. Procedimiento a seguir para inicializar la LCD mediante instrucciones. Tomada de (Suárez Marcelo, 2015) Conexiones del sensor LM35

Figura 7. Conexiones del sensor LM35. Tomada de (ELECTRONILAB, s.f.)

El primer pin del sensor va conectado directamente al voltaje de alimentación, el segundo pin se conecta a la salida de datos del microcontrolador y es donde se puede registrar en tiempo real la temperatura, y el tercer pin va conectado a tierra.

Módulo ADC Un ADC convierte mide el voltaje V en un pin (que tendrá que estar declarado como entrada con el correspondiente registro TRISA) y lo convierte en un número. El voltaje se mide en referencia a un voltaje mínimo, Vref (-), y a un voltaje máximo, Vref (+): V_norm = (V – Vref(-)) / (Vref(+) –Vref(-))

La fórmula anterior corresponde a un voltaje normalizado. Si el voltaje V alcanza el máximo (Vref+) tendremos una salida de 1 y si se queda en el mínimo (Vref-) una salida de 0. Normalmente Vref- suele ser Vss=GND=0V y Vref+ = Vcc = 5V, pero pueden usarse otros voltajes de referencia. Si por ejemplo queremos medir una señal que sabemos que oscila entre 2 y 3 voltios usaríamos Vref-=2 y Vref+=3. Así aprovecharíamos mejor el rango dinámico del conversor. Como el microcontrolador no va a manejar números en coma flotante, el voltaje normalizado se expresa con un entero, convirtiendo el intervalo real [0,1] en el intervalo de niveles enteros entre [0 y Nmax-1]. La resolución del ADC es una característica fundamental y nos dice el número de niveles con los que cubrimos el intervalo [0,1]. Por ejemplo, en los PIC solemos tener una resolución de 10 bits, que representan 2^10=1024 niveles. El intervalo real [0,1) se aplicaría al intervalo [0,1023]. Si asumimos un rango de 5V, tendremos que la resolución de cada nivel es de r=5/1024 V=4.88 mV. Según la documentación de Microchip (esto puede variar para otros microcontroladores) cualquier voltaje entre [0 y r] (o por debajo de 0, lo que corresponde a V>1; Lcd_Clear(); Lcd_Set_Cursor(1,1); Lcd_Write_String("Ta:");

Lcd_Set_Cursor(1,5); Lcd_Write_Int(ta); r1s(); tpmin=ta+5; //rango de operacion del potenciometro tpmax=ta+25; while(1){ Lcd_Clear(); OpenADC(ADC_FOSC_16 & ADC_RIGHT_JUST & ADC_16_TAD , ADC_CH0 & ADC_INT_OFF & ADC_VREFPLUS_VDD & ADC_VREFMINUS_VSS, ADC_2ANA); ConvertADC(); while (BusyADC()); tsp=ReadADC(); //toma de temperatura del sistema CloseADC(); ts=tsp>>1; Lcd_Set_Cursor(1,1); Lcd_Write_String("Ts:"); Lcd_Set_Cursor(1,4); Lcd_Write_Int(ts); OpenADC(ADC_FOSC_16 & ADC_RIGHT_JUST & ADC_16_TAD , ADC_CH1 & ADC_INT_OFF & ADC_VREFPLUS_VDD & ADC_VREFMINUS_VSS, ADC_2ANA); ConvertADC(); while (BusyADC()); tpotp=ReadADC(); //lectura de potenciometro CloseADC(); tpot=tpotp>>1; tr=(tpot*0.04)+tpmin; //0.04=20/500 (linealizacion) Lcd_Set_Cursor(1,8); Lcd_Write_String("Tr:"); Lcd_Set_Cursor(1,11); Lcd_Write_Int(tr); tl=tr-1; Lcd_Set_Cursor(2,1); Lcd_Write_String("Tl:"); Lcd_Set_Cursor(2,4); Lcd_Write_Int(tl); th=tr+1; Lcd_Set_Cursor(2,8); Lcd_Write_String("Th:"); Lcd_Set_Cursor(2,11); Lcd_Write_Int(th); if(tsth){ luz=0; } if(pr2==1){ //rutina 2 Lcd_Clear(); for(int i=0;i>1; c1=(3*i)+1; //cursor=3i+1 Lcd_Set_Cursor(1,c1);

Lcd_Write_Int(tm[i]); //se imprimen las muestras sin borrar la anterior __delay_ms(100); } p=(tm[0]+tm[1]+tm[2]+tm[3]+tm[4])*0.2; //promedio Lcd_Set_Cursor(2,1); Lcd_Write_String("P:"); Lcd_Set_Cursor(2,3); Lcd_Write_Int(p); r1s(); if(pth){ luz=0; } __delay_ms(150); while(pr2==1){} } if(pr3==1){ //rutina 3 Lcd_Clear(); for(int i=0;i>1; c1=(3*i)+1; //cursor=3i+1 Lcd_Set_Cursor(1,c1); Lcd_Write_Int(tm[i]); __delay_ms(100); } m=tm[2]; Lcd_Set_Cursor(2,1); Lcd_Write_String("M: "); Lcd_Set_Cursor(2,3); Lcd_Write_Int(m); r1s(); if(mth){ luz=0; } __delay_ms(150); while(pr3==1){} } } }