Está en la página 1de 5

Sensor de temperatura.

Para este proyecto necesitamos el sensor de temperatura LM35, este dispositivo presenta en su pin OUT una variacin de 10 mV por grado centgrado, su alimentacin puede ser de 4 a 30 Voltios, y su rango de temperatura a sensar entre -55C hasta 150 C. Para medir la temperatura se conecta el pin out del LM35 al puerto A.0, el cual est configurado como conversor A/D a 10 bits, este valor se almacena en la variable dato que tiene capacidad de 2 bytes (16 bits), el cual se lo divide para 128, debido a que la variable del conversor A/D de 10 bits lo presenta en 16 bits, de la siguiente manera: 1111111111000000, los 6 bits que contienen ceros se los debe ignorar, ya que slo necesitamos los 8 bits del 1er byte ms 2 bits del segundo byte, si este dato lo dividimos para 64 conseguiremos eliminar los 6 bits que corresponde a los ceros, de esta manera tendremos el dato a 10 bits, es decir el C A/D mostrara como valor mximo 1024, esto es una resolucin de 5 mV, pero como el LM35 tiene incrementos de 10 mV, debemos bajar la resolucin a 9 bits y eso se consigue dividiendo para 128, lo cual elimina 7 bits del 2do byte, de esta manera el valor ms alto sera 512, esto es lo ms cercano a la escala del LM35. El proyecto funciona de la siguiente manera: si la temperatura permanece entre 20C y 24C ninguno de los rels se activa, pero si la temperatura no se encuentra entre estos 2 rangos, se activa el rel que le corresponde, sea para calentar o enfriar el ambiente, si deseamos modificar los rangos de temperatura, presionamos el pulsador E, con los otros 2 botones aumentamos o disminuimos la temperatura mnima a comparar, y una vez que estemos de acuerdo presionamos la tecla E nuevamente, luego nos pide programar la temperatura mxima, procedemos igual que el caso anterior y cuando presionemos la tecla E, parpadear tres veces el led, indicando que los nuevos valores ya fueron guardados en la memoria no voltil.

Lista de materiales. 6 Resistencias de 4.7k 1 Resistencias de 10 4 Resistencias de 330 2 Capacitores de 22pF 1 Capacitores de 1000uF

1 Capacitores de 1uF 1 PIC 16F877A 1 Sensor LM35 1 Regulador de voltaje 7805 1 Regulador de voltaje 7812 2 Transistores 2N3904 4 Diodos led (azul, amarillo, verde, rojo) 2 Diodos rectificadores 1N4007 1 Adaptador de 120v a 12v 1 Cristal oscilador de 4MHz 3 Pulsadores 1 Swicht 2 Ventiladores 2 Rels

Programacin.DEFINE osc 4 DEFINE LCD_DREG PORTB DEFINE LCD_DBIT 0 DEFINE LCD_RSREG PORTB DEFINE LCD_RSBIT 5 DEFINE LCD_EREG PORTB DEFINE LCD_EBIT 4 puerto B.4 DEFINE ADC_BITS 10 DEFINE ADC_CLOCK 3 DEFINE ADC_SAMPLEUS 50 TRISA =%1 ; TRISC =%0 ; ADCON1 = %00001110 dato VAR WORD tempbaj VAR BYTE tempalt VAR BYTE x VAR BYTE g CON 223 releF VAR portD.2 releC VAR portD.1 led VAR portD.4 enter VAR portD.5 bsubir VAR portD.6 bbajar VAR portD.7

EEPROM 0,[20,25] inicio: FOR x =1 TO 3 HIGH led PAUSE 200 LOW led PAUSE 200 NEXT READ 0,tempbaj READ 1,tempalt sensar: ADCIN 0, dato LCDOUT $fe, 1 lcdout $fe,2,"Tmin Tactua Tmax" dato = dato /128 LCDOUT $fe,$c6,DEC dato,g,"C" LCDOUT $fe,$c0,DEC tempbaj,g,"C" LCDOUT $fe,$cc,DEC tempalt,g,"C" FOR x = 1 TO 50 IF enter =0 THEN grabar1a PAUSE 10 NEXT IF dato < tempbaj THEN calentar IF dato > tempalt THEN enfriar LOW releC : LOW releF PORTC=%0000001 GOTO sensar calentar: HIGH releC : LOW releF PORTC=%0000010 GOTO sensar enfriar: HIGH releF : LOW releC PORTC=%0000100 GOTO sensar grabar1a: GOSUB soltar

grabar1: LCDOUT $fe, 1, "Programar temp." LCDOUT $fe,$c0,"baja= ",DEC tempbaj ,g,"C" PAUSE 100 IF bbajar=0 THEN restar1 IF bsubir=0 THEN sumar1 IF enter=0 THEN grabarA GOTO grabar1 restar1: GOSUB soltar IF tempbaj < 1 THEN grabar1 tempbaj= tempbaj -1 GOTO grabar1 sumar1: GOSUB soltar IF tempbaj > 40 THEN grabar1 tempbaj= tempbaj + 1 GOTO grabar1 grabarA: GOSUB soltar WRITE 0,tempbaj grabar2: LCDOUT $fe, 1, "Programar temp." LCDOUT $fe,$c0,"alta= ",dec tempalt ,g,"C" PAUSE 100 IF bbajar=0 THEN restar2 IF bsubir=0 THEN sumar2 IF enter=0 THEN grabarB GOTO grabar2 restar2: GOSUB soltar IF tempalt < 5 THEN grabar2 tempalt= tempalt -1 GOTO grabar2 sumar2: GOSUB soltar

IF tempalt > 50 THEN grabar2 tempalt= tempalt + 1 GOTO grabar2 grabarB: GOSUB soltar WRITE 1,tempalt GOTO inicio soltar: HIGH led PAUSE 150 LOW led soltar2: IF bbajar=0 THEN soltar2 IF bsubir=0 THEN soltar2 IF enter=0 THEN soltar2 PAUSE 100 RETURN END

También podría gustarte