16f627 comparadores analogicos

tengo que hacer una caja termica que mantenga la temperatura entre 30 y 40 grados que cuando supere los 40 se encienda un cooler y cuando baje de 30 se prenda una lampara. la para ello uso el pic 16f627 que tiene comparadores analogicos. la señal a comparar la obtengo de un lm35 que entrega 10mv por grado centigrado. el problema a solucionar es que no se como configurar los registros para usar dos comparadores de esta forma. y no encontre mucha información sobre este pic que se esta empezando a usar ahora.
como se usan estos comparadores analogicos y como se pone las temperaturas de referencia.?
seria bueno tambien si me ayudan con el asembler referido a los comparadore. gracias
 
Acho melhor voce usar dois comparadores de tensao como 741, e reles. Sai mais menos dispendioso. Com o lm35, voce devera usar fonte simetrica nos operacionais, porque a tensao e' muito baixa.
 
quiero agradecer a toda la comunidad del foro por la poca ayuda recibida, lo que me permitio sentir la frustracion de que las cosas no anden y el increible aire de victoria de que funcione. Al parecer no se sabe mucho del tema de los comparadores analógicos sobre todo de este pic 16f627, o quizas no di demasiado tiempo a respuestas o quizas se soluciona este problema generalmente con otro pìc y un conversor analogico digital. Mas alla de las ironias aca dejo el programa (ya probado que funciono) para que otros infelices como yo sepan mas o menos como se hace. quiero destacar que segun mi opinion microchip deberia poner en sus hojas de datos especificaciones basicas de como se conectan los pic a algunos dispositivos. por dar un ejemplo al principio que use una configuracion de los comparadores que tenia las salidas directamente conectadas al exterior del pic, en la hoja de datos decia que una de las salidas era open drain , es decir colector abierto,, eso que significa, solo dios lo sabe,,,,,,,,sale un uno ? sale un cero ?,,,,,, hay que conectar una resistencia a tension y medir de alli ?...... una de las salidas andaba bien pero la otra no sabia como conectarla por ejemplo a un buffer para desp activar un rele. En fin despues termine usando interrupciones ( en microchip ponen un solo ejemplo,,,,,,,,,,,,,,,,, uno........................con interrupciones).


aca esta el programa que anda con la explicacion:

Para configurar dos comparadores independientes cargamos en el CMCON con 0x04, es decir 1 0 0 en CM2 CM1 CM0 respectivamente. Conectamos la salida del LM35 a RA0 y RA1. En RA3 colocamos con los potenciómetros la mínima tensión de referencia y en RA2 la máxima. Leemos de C1OUT para comandar la lámpara y de C2OUT para el ventilador. Cuando se baja de la temperatura mínima de referencia se enciende la lámpara por RB0 y cuando se supera la maxima se apaga la lámpara y se enciende el ventilador por RB1 continuando con este ciclo indefinidamente. Para ello coloca tambien en el CMCON un cero en C1INV y un 1 en C2INV.
El programa en assembler utilizando interrupciones es el siguiente:


list p=16f627
include p16f627.inc

aux0 equ 0x30; auxiliares para producir el retardo
aux1 equ 0x31;
aux2 equ 0x32;


org 00
goto start

retardo movlw .26, retardo
movwf aux2
retar movlw .249
movwf aux1
reta movlw .255
movwf aux0
ret decfsz aux0,1
goto ret
decfsz aux1,1
goto reta
decfsz aux2,1
goto retar
RETURN


lampara bsf PORTB,0; subrutina enciende lámpara
call retardo
btfss CMCON,7; se fija si hay un uno en el comparador que
;se encarga del ventilador


goto lampara
bcf PORTB,0 ; si es asi apaga lampara
goto vent ; va a ventilador
bcf PIR1,CMIF; limpia bandera de interrupcion

retfie; restaura GIE (interrupciones)

vent bsf PORTB,1; subrutina enciende ventilador
call retardo
btfss CMCON,6; se fija si hay un uno en el comparador que
se encarga de lámpara

goto vent; si no hay uno en lámpara sigue en vent
bcf PORTB,1; si hay un uno apaga ventilador
goto lampara; y va a lámpara
bcf PIR1,CMIF; limpia bandera de interrupcion

retfie; habilita interrupciones (GIE)

start movlw 0x04; configura los comparadores (ver explicación)
movwf CMCON
bsf CMCON,5
bcf CMCON,4
bsf STATUS,RP0
movlw 0x0f; RA0,1,2 Y 3 son estradas analógicas
movwf TRISA


movlw 0X00
movwf TRISB; RB0-RB7 salidas digitales
bcf STATUS,RP0

bcf PIR1,CMIF; habilita interrupciones
bsf STATUS,RP0
bcf PIE1,CMIE
bcf STATUS,RP0
bcf INTCON,PEIE
bcf INTCON,GIE

goto lampara; comienza el ciclo en lámpara


end



y aca esta el programa que hice al principio que no sabia como conectar el open drain:


list p=16f627
include p16f627.inc

aux0 equ 0x30
aux1 equ 0x31
aux2 equ 0x32

org 00
goto start

retardo movlw .6
movwf aux2
retar movlw .217
movwf aux1
reta movlw .255
movwf aux0
ret decfsz aux0,1
goto ret
decfsz aux1,1
goto reta
decfsz aux2,1
goto retar
RETURN



start movlw 0x06
movwf CMCON
bsf CMCON,4
bcf CMCON,5
bsf STATUS,RP0
movlw 0x07
movwf TRISA
bcf STATUS,RP0

aca movf CMCON,F
call retardo
goto aca
end

( este es sin interrupciones , el programa se queda haciendo nada en "aca" y se conectan las salidas directamente del pic)


aca hay mas datos del proyecto y de las hojas de datos:

Descripción general:

El presente proyecto consiste en la realización de un sistema para el control de temperatura. Para llevarlo a cabo se hará uso de un microcontrolador 16f627. El sistema consiste básicamente en una pequeña caja que aloja en su interior un sensor de temperatura, un ventilador (cooler) y una lámpara. Además se utiliza un buffer para obtener corriente a la salida del pic. El mismo va acoplado a otro buffer que suministra la potencia para levantar los 5v a 12v y controlar el ventilador y el relé que maneja la lámpara.
El sensor de temperatura es un LM35. Éste se encarga de entregar 10mv / ºC, los cuales son recibidos por el pic. El pic utiliza los comparadores analógicos y de acuerdo a los valores recibidos y los de referencia, manda la señal para encender el ventilador o la lampara. Los valores de referencia son introducidos desde el exterior mediante potenciometros, de esta forma con solo variar las referencias se puede conseguir que la camara se mantenga entre las temperaturas deseadas.








El circuito básicamente es el siguiente:



En lo que respecta a las alimentaciones, se requieren 220v para la lámpara y 12v para alimentar al buffer ULN2308. Gracias al regulador de 5v se consigue la tensión para el PIC.
El ULN2308, además de estar conectado al ventilador, también lo está a un relé de 12v que controla la lámpara de la siguiente forma:
(se usa un solo relé)


Programación del pic 16f627:

Para programar los comparadores analógicos del pic, se debe recurrir a la hoja de datos. dejo adjuntos todos los archivos
 

Adjuntos

  • camara_termica_programa_490.doc
    26.5 KB · Visitas: 179
  • instituto_universitario_aeronautico_645.doc
    161 KB · Visitas: 246
pablomadoery dijo:
quiero agradecer a toda la comunidad del foro por la poca ayuda recibida, lo que me permitio sentir la frustracion de que las cosas no anden y el increible aire de victoria de que funcione. Al parecer no se sabe mucho del tema de los comparadores analógicos sobre todo de este pic 16f627, o quizas no di demasiado tiempo a respuestas o quizas se soluciona este problema generalmente con otro pìc y un conversor analogico digital. Mas alla de las ironias aca dejo el programa (ya probado que funciono) para que otros infelices como yo sepan mas o menos como se hace.

Yo te quiero agradecer a ti el aporte realizado, estaba buscando como utilizar los comparadores y localice su post.

Saludos

P.D. deveriamos de tomar ejemplo de Pablomadoery y postear como resolvimos nuestra duda.
 
Atrás
Arriba