CONTROL DE TEMPERATURA ON – OFF OFF CON HISTÉRESIS PARA UNA INCUBADORA HACIENDO USO DEL PIC18F4550 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
Voltaje
…
…
1023
>1023r
2. INGENIERIA Y PUESTA EN MARCHA DEL PROYECTO. 2.1 Análisis En la implementación del sistema de control de temperatura on – off con histéresis para una incubadora, se hace uso de una pantalla de cristal líquido LCD, un sensor de temperatura LM35,
sistema calefactor y un potenciómetro para el ajuste de temperatura, de tal manera que cada uno cumple una función distinta, de tal manera que:
Pantalla LCD. Se muestra continuamente el valor de temperatura del sistema, de referencia, máxima y mínima, las cuales, se actualizan con una frecuencia de 1 Hz. Sensor LM35. Medirá la temperatura del sistema, definiendo una etapa de linealización, ya que el rango de valores que toma el módulo ADC en la lectura del potenciómetro se debe adecuar al rango de temperatura establecido pues el rango de valores en el ADC es de aproximadamente 0 a 500 y el de la temperatura oscila en 20 °C. Sistema calefactor. Estará diseñado mediante una caja de cartón de 15x15 cm cuyo interior tendrá instalado un bombillo AC conectado a la tomacorriente para calentar el sistema. Figura 8. Potenciómetro. Con este dispositivo, se pueden ajustar los valores máximos y mínimos de la temperatura en la incubadora con una variación de ±20 °C.
Figura 8. Diseño caja incubadora Además de esto, el sistema tiene tres rutinas adicionales que definirán la mediciónd e temperatura, es decir:
Rutina 1. Rutina de comparación, en donde se define si se enciende o no el sistema calefactor (Bombillo). Ésta será la principal, y se mantendrá a menos que se seleccione cualquiera de las otras dos rutinas Rutina 2. Mostrará en la LCD el promedio de 5 muestras de temperatura tomadas previamente por el sensor, luego se pasa a la rutina 1 teniendo en cuenta dichos valores. Rutina 3. Mostrará en la LCD la mediana de 5 muestras de temperatura tomadas previamente por el sensor, luego se pasa a la rutina 1 teniendo en cuenta dichos valores.
Para la implementación de éstos, como se mencionó en apartados anteriores, de acuerdo a su funcionamiento, se realiza una asignación de pines adecuada para su aplicación y además, una optimización de espacio de montaje.
De acuerdo a esto, se hace uso de la librería “adc.h” para hacer uso del canal ADC establecido y la librería “lcd.h” para visualización en la LCD. De esta manera, se designan los siguientes puertos del PIC18F4550 para la implementación del sistema: PUERTO FUNCI N Salida. RS de la LCD RD2 Salida. EN de la LCD RD3 Salida. Pines de funcionamiento de la LCD RD4-RD7 Salida. Sistema calefactor. Bombillo RC6 Entrada. Canal ADC para sensor de temperatura LM35 RA0 Entrada. Potenciómetro RA1 Entrada. Pulsador para rutina 2 RC1 Entrada. Pulsador para rutina 3 RC2
Tabla 2. Configuración de puertos e identificación de entradas y salidas Finalmente, se realiza la compilación del código (Anexo B) de acuerdo a lo establecido anteriormente y según el diagrama de flujo definido (Anexo A).
2.2 Diseño El diseño del montaje, simulado con la ayuda de proteus es el siguiente, en cual se tienen en cuenta la definición de pines anteriormente realizadas, además del sistema de conexión del bombillo a fuente AC por medio de relé: RL1 V1
D1
VSINE
1N4004
LCD1
Q1
LM016L
OMIH-SH-124D
R2 4.7k
U2
1
2N2222 S D E S D E V V V
42.0
U1 2
VOUT
3
2 3 4 5 6 7 14 13
LM35
RV2
RV2(3)
33 34 35 36 37 38 39 40
% 0 7
10k
18
RA0/AN0 RC0/T1OSO/T1CKI RA1/AN1 RC1/T1OSI/CCP2/UOE RA2/AN2/VREF-/CVREF RC2/CCP1/P1A RA3/AN3/VREF+ RC4/D-/VM RA4/T0CKI/C1OUT/RCV RC5/D+/VP RA5/AN4/SS/LVDIN/C2OUT RC6/TX/CK RA6/OSC2/CLKO RC7/RX/DT/SDO OSC1/CLKI RB0/AN12/INT0/FLT0/SDI/SDA RB1/AN10/INT1/SCK/SCL RB2/AN8/INT2/VMO RB3/AN9/CCP2/VPO RB4/AN11/KBI0/CSSPP RB5/KBI1/PGM RB6/KBI2/PGC RB7/KBI3/PGD
RD0/SPP0 RD1/SPP1 RD2/SPP2 RD3/SPP3 RD4/SPP4 RD5/SPP5/P1B RD6/SPP6/P1C RD7/SPP7/P1D RE0/AN5/CK1SPP RE1/AN6/CK2SPP RE2/AN7/OESPP RE3/MCLR/VPP
VUSB
1 2 3
15 16 17 23 24 25 26
S W R R E 4 5 6
0 1 2 3 4 5 6 7 D D D D D D D D 7 8 9 0 1 2 3 4 1 1 1 1 1
19 20 21 22 27 28 29 30 8 9 10 1
R1 10k
PIC18F4550
R3 1k
R4 1k
Figura 9. Diseño del montaje para la implementación del sistema de control de temperatura
2.3 Resultados Al implementar el diseño realizado, se obtiene efectivamente el sistema de control de temperatura, con sus secuencias y rutinas correspondientes. No se evidencian fallas durante las pruebas y la sustentación realizada.
3. CONCLUSIONES
Es muy importante tener en cuenta cuales son los procesos a llevar a cabo en la implementación del sistema de control de temperatura, ya que de esa forma se puede realizar un diagrama de flujo ordenado y fácil de entender, donde se pueden identificar las condiciones descritas. El uso del módulo ADC, fue efectivo para la conversión de los valores obtenidos mediante el sensor de temperatura, que posteriormente eran mostrados en la LCD. La simulación realizada, permite identificar errores para ser corregidos antes de implementar el sistema, ya que si se llegan a presentar errores puede ser peligroso para las personas alrededor, además de que el uso de voltaje AC se debe realizar con cuidado pues se pueden realizar cortos en las instalaciones eléctricas de la universidad.
4. SUGERENCIAS Y RECOMENDACIONES Es necesario evaluar el valor resultante de la conversión ADC pues en este caso fue necesario realizarle un posterior tratamiento antes de su impresión y/o comparación. Así como en pasadas prácticas de laboratorio, la bombilla de 110VAC debe ser acoplada con un relé que sirva de puente entre la misma y el microcontrolador, lo anterior como medida de precaución para no poseer corrientes encontradas. Si la frecuencia de impresión en la LCD hace difícil la lectura del usuario es necesario agregar un retardo de aproximadamente 1 segundo antes de reemplazar los datos mostrados en pantalla con otros nuevos. Para la correcta variación del umbral de temperatura con potenciómetro es necesario realizar un proceso de linealización teniendo en cuenta el rango de voltaje saliente del potenciómetro, el rango leído por el ADC y la temperatura esperada del mismo. .
BIBLIOGRAFÍA. ELECTRONILAB. (s.f.). Sensor de Temperatura LM35. Obtenido de http://electronilab.co/tienda/sensor-de-temperatura-lm35/ Suárez Marcelo, J. I. (06 de 10 de 2015). Cómo gobernar un display LCD alfanumérico basado en el controlador HD44780. Obtenido de http://eii.unex.es/profesores/jisuarez/descargas/ip/lcd_alfa.pdf
ANEXO A. DIAGRAMA DE FLUJO PARA EL SISTEMA DE CONTROL DE MOTOR PASO A PASO
Figura 10. Diagrama de flujo del sistema de control de temperatura on – off
ANEXO B. CÓDIGO FUENTE PARA CONTROL DE TEMPERATURA ON – OFF CON HISTÉRESIS PARA UNA INCUBADORA // PIC18F4550 Configuration Bit Settings
__delay_ms(150); __delay_ms(100);
// 'C' source line config statements
}
#include
#include "lcd.h"; #include #include
void main(){
#define _XTAL_FREQ 4000000 #define RS PORTDbits.RD2 #define EN PORTDbits.RD3 #define D4 PORTDbits.RD4 #define D5 PORTDbits.RD5 #define D6 PORTDbits.RD6 #define D7 PORTDbits.RD7 #define pr2 PORTCbits.RC1 //pulsador de rutina 2 #define pr3 PORTCbits.RC2 //pulsador de rutina 3 #define luz LATCbits.LATC6 int tap=0,ta=0,tpmax=0,tpmin=0,u,d,tpot,tpotp,ts,tsp,tl,th,tr,c1,c2, p,m; int tmp[5];int tm[5]; void r1s(){
TRISD=0;TRISAbits.RA0=1;TRISCbits.RC0=1;TRISCbits.R C1=1;TRISCbits.RC2=1;TRISCbits.RC6=0; luz=0;pr2=0;pr3=0; Lcd_Init(); Lcd_Clear(); Lcd_Set_Cursor(1,1); Lcd_Write_String("Bienvenido"); r1s(); 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()); tap=ReadADC(); //toma de temperatura del ambiente CloseADC(); ta=tap>>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<5;i++){ 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()); tmp[i]=ReadADC(); //se toman 5 muestras CloseADC(); tm[i]=tmp[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<5;i++){ 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()); tmp[i]=ReadADC(); CloseADC(); tm[i]=tmp[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){} } } }