Termostato

Solo disponible en BuenasTareas
  • Páginas : 10 (2329 palabras )
  • Descarga(s) : 12
  • Publicado : 20 de agosto de 2010
Leer documento completo
Vista previa del texto
Termostato electrónico con PIC y LCD
[pic]
Gracias a la sonda de temperatura LM35 hemos podido realizar este pequeño pero muy versátil termostato que sirve tanto para calentar como para enfriar.
[pic]
El circuito centra su funcionamiento en el micro controlador PIC16F870 el cual dispone en su interior de convertidor AD de 10 bits de resolución. Cuatro pulsadores permiten establecer el puntode activación y desactivación del relé. Estos parámetros se almacenan automáticamente en la EEPROM interna del PIC por lo que no deben ser recargados al quitar la corriente. El LCD, una pantalla de 2 líneas x 16 caracteres indica en su parte superior la temperatura actual medida y en su parte inferior los parámetros inferior y superior. Un buzzer (del tipo con oscilador) pita por 100ms cada vez quese presiona un pulsador.
El principio de funcionamiento es muy simple. Si la temperatura cae por debajo del límite inferior se activa el relé. Si la temperatura sobrepasa el límite superior se desactiva el relé. Dado que ambos puntos son seteables podemos lograr el punto de histéresis (estado intermedio) que queramos. 
Si vamos a emplear este equipo para controlar, por ejemplo, una heladeradeberemos conectar el compresor entre los contactos Común y Normal cerrado del relé. De esta forma cuando la temperatura alcance el tope superior del seteo se encenderá el compresor y, cuando de tanto enfriar, alcance el tope inferior lo apagará.
Si, en cambio, vamos a usar esto para calefaccionar, deberemos conectar el elemento calefactor entre los contactos Común y Normal Abierto del relé. De estaforma, cuando la temperatura caiga bajo el seteo inferior el calefactor arrancará y, cuando de tanto calentar, supere el tope el calefactor será desconectado.
A primera vista el código fuente parece algo complicado por lo extenso, pero es muy simple de entender. Primeramente se definen las posiciones de memoria a utilizar y los bits a emplear. Luego se inicializan las posiciones que así lorequieran y se lee de la EEPROM interna los seteos. Seguidamente se inicializa el LCD y se completan los caracteres fijos. Tras la primera conversión se coloca la temperatura en pantalla así como los seteos. Estos tres parámetros (Temp. actual, seteo inferior y seteo superior) son los únicos datos que se modifican en el LCD. Se compara si la temperatura esta por debajo de la mínima para conectar elrelé o por sobre la máxima para desconectarlos. Luego se controlan las teclas de mando, si alguna es accionada se actúa en consecuencia y por último cicla al principio donde se toma una nueva muestra de la temperatura.

; Control de temperatura con LM35 y pantalla de LCD
; Una salida se activa ante una temp. baja y se desactiva ante una alta ambas seteables
; Guarda los parámetros en la EEPROM
;Micro: PIC16F870 a 4MHz XT

pcl equ 0x02 ;Contador de programa (Parte baja)
estado equ 0x03 ;Registro de estados
ptoa equ 0x05 ;Puertos de E/S
ptob equ 0x06
ptoc equ 0x07
intcon equ 0x0B ;Controlador de interrupciones
eedata equ 0x0C ;Registro de datos de la EEPROM
eeaddr equ 0x0D ;Registro de direccion de la EEPROM
adres equ 0x1E ;Resultado de la conversión A/D (HIGH / LOW)adcon equ 0x1F ;Configuración del conversor A/D
uni equ 0x20 ;Usados para manejar los datos a mostrar en display
dec equ 0x21
cen equ 0x22
tiempo1 equ 0x23 ;Usados para temporizar
tiempo2 equ 0x24
letra equ 0x25 ;Usado para apuntar la letra a colocar en el LCD
menor equ 0x26 ;Temperatura de activación
mayor equ 0x27 ;Temperatura de desactivación
buffer equ 0x28 ;Usado como registrotemporal

#define CARRY estado, 0 ;Bit de acarreo
#define CERO estado, 2 ;Flag indicador de resultado cero
#define RP0 estado, 5 ;Bit 0 selector de página de memoria
#define RP1 estado, 6 ;Bit 1 selector de página de memoria
#define ADGO adcon, 2 ;Bit que inicia la conversión (1) / Indica finalización (0)
#define EEREAD eedata, 0 ;Bit que inicia la lectura de la EEPROM
#define EEWRITE...
tracking img