El siguiente programa esta diseñado para controlar la temperatura de un panel a travez de 2 ventiladores y un sensor de temperatura el IC LM35.
El funcionamiento del circuito es el siguiente:
El corazon del circuito es el microcontroladro PIC16F819, decidi usar este porque tiene conversores
analogicos - digital, y el sensor de temperarura LM35 porque ya lo tenia a la mano, la idea es que cuando la temperatura aumenta se encienda un ventilador que ayude a bajar la temperatura y cuando la temperatura es baja este se apague. Adicionalmente a esto me pregunte y que pasa si el ventilador se averia y la temperatura sigue aumentando podria dañar los equipo por eso decidi agregar otro ventilador mas, seteado a una temperatura mayor que el primer ventilador, cuando la temperatura es muy alta activa un segundo ventilador de respaldo, una alarma sonora y un aviso en el lcd.
En el video se aprecia el funcionamiento eld circuito.
CONTROL DE TEMPERATURA.ZIP El programa esta en pbp y la simulacion en Proteus7.8
Data Sheet LM35
Data Sheet PIC16f819 descargado de datasheetcatalog.com
MANUAL PICBASIC EN ESPAÑOL manual descargado de frino.com.ar
.
Es mi primera publicacion si algun lector tiene una mejora comentela y la posteare.
'****************************************************************
'* Name : Control de Temperatura *
'* Author : Leonardo Saldaña * *
'* Date : 16/07/2012 *
'* Version :
1.0
*
'* Notes :
*
'*
: *
'***************************************************************
osccon=%1100100 ;DEFINE EL OSCILADOR INTERNO A 4MHZ;
DEFINE LCD_DREG
PORTB ;DEFINE EL PUERTO B PARA CONTROL DE LCD;
DEFINE LCD_DBIT
0 ;SE USAN LOS PINES MENOS SIGNIFICATIVOS DEL PUERTOB
DEFINE LCD_RSREG
PORTB ;REGISTRO LCD
DEFINE LCD_RSBIT
5 ;REGISTRO DE LCD EN PORTB.5 (PIN RS )
DEFINE LCD_EREG
PORTB ;BIT HABILITAR LCD
DEFINE LCD_EBIT
4 ;PUERTOB.4 HABILITAR LCD
DEFINE ADC_BITS 10 ;FIJA NUMEROS DE BITS DEL RESULTADO(5,8,10)
DEFINE ADC_CLOCK3 ;FIJA EL RELOJ
DEFINE ADC_SAMPLEUS50 ;VELOCIDAD DE MUESTREO;
G CON 223 ;CONSTANTE G
;223 EN ASCII ES EL SIMBOLO DE GRADOS
TEMP VAR WORD
TRISA = 001 ;PUERTO A.0 COMO ENTRADA, EL RESTO COMO SALIDA;TEMP VAR WORD
TRISB=000000 ;PUERTO B COMO SALIDAS;
ADCON1=001110 ;PUERTO A.0 ES CONVERSOR, EL RESTO DIGITALES;
X VAR BYTE ;VARIABLE PARA LA INSTRUCCION FOR NEXT;
Y VAR BYTE ;VARIABLE PARA LA INSTRUCCION FOR NEXT
Z VAR BYTE ;VARIABLE PARA LA INSTRUCCION FOR NEXT
ABC VAR BYTE ;VARIABLE PARA LA INSTRUCCION LOOKUP
DATOS VAR BYTE ;VARIABLE PARA ALMACENAR LOS DATOS LEIDOS
VENTILADOR1 VAR PORTA.1 ;VARIABLE USADA COMO SALIDA VENTILADOR1
VENTILADOR2 VAR PORTB.6 ;VARIABLE USADA COMO SALIDA VENTILADOR1
LED VAR PORTA.2 ;VARIABLE USADA COMO SALIDA VENTILADOR2
PORTB.7=0 ;LIMPIAR PORTB.7 (ENVIAR UN "0" LOGICO)
LED=0 ;LIMPIAR LED (ENVIAR UN "0" LOGICO)
VENTILADOR1=0 ;LIMPIAR VENTILADOR1 (ENVIAR UN "0" LOGICO)
VENTILADOR2=0 ;LIMPIAR VENTILADOR2 (ENVIAR UN "0" LOGICO)
PAUSE 200
ARRANQUE: ;ETIQUETA PREVIA A INICIO DE PROGRAMA
FOR Z=0 TO 2 ;REPETIR 2 VECES
LCDOUT $FE,1 ;LIMPIAR LCD
FOR Y=0 TO 9 ;REPETIR 9 VECES
LOOKUP Y,[" INICIANDO"],ABC ;TOMAR LETRA POR LETRA Y GUARDAR EN
"ABC";LCDOUT,ABC
PAUSE 50 ;ESPERAR 50 ms
NEXT ;SIGUIENTE REPETICION
NEXT ;SIGUIENTE REPETICION
GOTO INICIO ;IR A INICIO
INICIO: ;ETIQUETA INICIO
ADCIN 0,DATOS ;LEER CANAL "0" Y GUARDAR EN "DATOS"
DATOS = DATOS/ 128 ;MULTIPLICAR POR 2 EL VALOR "DATOS"
TEMP = DATOS - 1
IF DATOS > 40 THEN PELIGRO ;SI DATOS >"40" IR A "PELIGRO"
IF DATOS >= 15 THEN
ENFRIANDO ;SI DATOS >"15" IR A
"ENFRIANDO
LOW VENTILADOR1 : LOW
VENTILADOR2 ;"0" LOGICO LOS VENTILADORES 1Y2
LCDOUT $FE,1," TEMPERATURA:" ;PALABRA "TEMPERATURA" EN EL LCD
LCDOUT $FE,1," TEMPERATURA:" ;PALABRA "TEMPERATURA" EN EL LCD
LCDOUT $FE,$C6, DEC
TEMP,G,"C" ; VALOR DECIMAL DE DATOS Y GRADOS
PAUSE 200 ;ESPERAR 200 ms
GOTO INICIO ;IR A "INICIO"
ENFRIANDO: ;ETIQUETA ENFRIANDO;
HIGH VENTILADOR1 ;ENCENDER VENTILADOR1 (PONER "1" LOGICO);
LOW VENTILADOR2 ;ENCENDER VENTILADOR1 (PONER "1" LOGICO)
HIGH LED ;ENCENDER LED(PONER "1" LOGICO)
PAUSE 200
LOW LED
PAUSE 200
ADCIN 0,DATOS
DATOS = DATOS /128
TEMP = DATOS - 1
DATOS = DATOS /128
TEMP = DATOS - 1
LCDOUT $FE,1," ENFRIANDO" ;SACAR LA PALABRA "ENFRIANDO" EN EL LCD
LCDOUT $FE,$C6, DEC
TEMP,G,"C" ;SACAR EL VALOR DECIMAL DE "DATOS" Y
;EL SIMBOLO GRADOS
GOTO INICIO ;IR A INICIO;EL SIMBOLO GRADOS
PELIGRO:
ADCIN 0,DATOS
DATOS = DATOS /128
TEMP = DATOS - 1
TEMP = DATOS - 1
LCDOUT $FE,1," PELIGRO "
LCDOUT $FE,$C6, DEC
TEMP,G,"C"
LOW VENTILADOR1
HIGH VENTILADOR2
SOUND PORTB.7,[10000,200] ;INSTRUCCION PARA ENVIAR PITIDO
;POR EL PUERTO B.7
LOW PORTB.7
GOTO INICIO
LOW PORTB.7
GOTO INICIO
END
exelente programa , tengo una pregunta para ti si este programa es para un control on -off , en dque parte se podria modificar para poder controlar la velocidad del motor en pocas palabras cumplir con esto tempertatura = velocidad a > temperatura > velocidad
ResponderEliminar¡¡¡¡¡¡¡ ENOOOORME!!!!! gracias por el dato me ayudo de puta madre y en asesorias antes reprobar 10000000000000% gracias
ResponderEliminar