Termometro digital en C

Probé con termómetro normal y me daba una temperatura de 40ºC,
mientras el que hice me daba una temperatura de 17ºC.
Compilé tu programa, monté el circuito en un protoboard y funciona bien.
Aquí una foto de la visualización en pantalla sobre la temperatura actual: IMG_20150623_191626.jpg
Los cambios se realizan normalmente al acercar fuentes de calor.

Posiblemente tengas mal conectado el sensor o puede estar dañado.
Mira las conexiones: LM35 Pins.jpg

Yo realicé la prueba con un LM35 de encapsulado TO-92, el que se encuentra hasta abajo de la imagen.
 
Prueba con este, yo lo hice con un PIC16F819, pero tu lo puedes adaptar al PIC16F877, y como son con registros, así como esta lo pones (ojo solo cambia los valores del ADCON0 y ADCON1 para el PIC16F877).

Código:
unsigned int valor_adc;
unsigned short unidad, decena;
float temperatura;

const unsigned short digito[] = {
0x3F,
0x06,
0x5B,
0x4F,
0x66,
0x6D,
0x7D,
0x07,
0x7F,
0x6F,
};


void main(void) {

ADCON0 = 0b11000000;
ADCON1 = 0b10000101;

TRISA.f0 = 1;
TRISA.f3 = 1;
TRISA.f1 = 0;
TRISA.f2 = 0;

TRISB = 0;
PORTB = 0;


while(1) {
ADCON0.ADON = 1;
Delay_us(40);
ADCON0.GO = 1;
while(ADCON0.GO == 1);
valor_adc = (ADRESH << 8) + ADRESL;

temperatura = 0.125 * valor_adc;

decena = temperatura / 10;
unidad = temperatura - (decena * 10);

PORTB = digito[unidad];
PORTA.f1 = 1;
Delay_ms(100);
PORTA = 0;

PORTB = digito[decena];
PORTA.f2 = 1;
Delay_ms(100);
PORTA = 0;

Delay_us(12);

}
}

Los inversores solo son 2 transistores configurados como interruptores.
 

Adjuntos

  • temperatura.jpg
    temperatura.jpg
    47.8 KB · Visitas: 27
Última edición:
Compilé tu programa, monté el circuito en un protoboard y funciona bien.
Aquí una foto de la visualización en pantalla sobre la temperatura actual: Ver el archivo adjunto 131194
Los cambios se realizan normalmente al acercar fuentes de calor.

Posiblemente tengas mal conectado el sensor o puede estar dañado.
Mira las conexiones: Ver el archivo adjunto 131195

Yo realicé la prueba con un LM35 de encapsulado TO-92, el que se encuentra hasta abajo de la imagen.

entiendo...
puede que esté fallando el sensor...
y vos lo hiciste funcionar con oscilador interno o externo?...
 
¿Y vos lo hiciste funcionar con oscilador interno o externo?
Con el interno a 4 MHz. Tal cual y como está tu programa.
No realicé ninguna modificación. Puedes ver que la pantalla sigue mostrando "atual" en vez de "actual"

Y aún lo tengo conectado y funcionando. DSC00101.JPG

Esta es la otra parte del protoboard. DSC00102.JPG
 
Última edición:
Buenas tardes mis estimados amigos

el proyecto consta con los siguientes características:
termistor NTC de 50 k ,
ventilador de 12 v
pic 16f877a .
lcd 4x16

adjunto la simulación y programación en ccs


1. quiero que la temperatura me muestre en un lcd 4x16
2. cuando la temperatura aumente los leds se encenderán descendente mente,y cuando la temperatura baje se apagara los leds acendentemente.
3. de la misma manera la ventiladora que esta en el puerto C , aumentara su velocidad conforme la temperatura y disminuirá su velocidad conforme este bajando la temperatura


1. la temperatura me muestra en el lcd
2. los leds se prenden secuencialmente cuando la temperatura sube y se apagan cuando la temperatura baja


* lo que tengo problemas es con el ventilador de 12v o motor?
he estado utilizando PWM.pero no he podido que gire motor o ventiladora
 

Adjuntos

  • termistor ntc.rar
    209.9 KB · Visitas: 14
Ché Antaresis, para que lo tengas en cuenta, resulta ser que el LM35 es bastante malo....
cuando le pones cables largos, de más de 20cm en mi caso, o sea CUIDADO con la longitud de tus cables.

Seguramente terminás empleando unos de esos IC DS18S20, que son 100% digitales, y el cable puede ser más largo.

Y por si fuera poco siempre podés probar tu circuito ADC del pic conectando un simple potenciometro a ese pin de unos 5kohm , y hará lo mísmo que el LM35 que termina funcionando como una pequeña fuente de tensión.
 
Última edición:
Usá una configuración emisor común, en modo saturado/corte.

en la imagen esta con un potencio metro y me funciona , lo que yo quiero es un termistor ntc
y cuando lo remplazo el potenciometro por un termistor ntc no pasa nada... no me muestra nada



luchonsn dijo:
en la imagen esta con un potencio metro y me funciona , lo que yo quiero es un termistor ntc
y cuando lo remplazo el potenciometro por un termistor ntc no pasa nada... no me muestra nada

solo falta el timer y la interrupcion
donde se genera el pwm


no entiendo muy bien la teoria de pwm
 
Última edición:
Hola luchonsn, he realizado unas pequeñas modificaciones, dime si es eso lo que buscas.

lo que quiero es controlar la velocidad de la ventiladora o motor mediante un termistor ntc y que segun aumente la temperatura me muetre en el lcd y prendan los leds desendentemente cuando aumente la temperatura y cuando disminuye la temperatura se apaguen acendentemente.
 
lo que quiero es controlar la velocidad de la ventiladora o motor mediante un termistor ntc y que segun aumente la temperatura me muetre en el lcd y prendan los leds desendentemente cuando aumente la temperatura y cuando disminuye la temperatura se apaguen acendentemente.

has mirado el archivo, creo que es lo que vuscas
 
El motor debes colocarlo así cuando usas transistores NPN (imagen) y para protección del transistor, colocas un diodo polarizado a la inversa en paralelo del motor.
 

Adjuntos

  • arduino-motor.jpg
    arduino-motor.jpg
    17.9 KB · Visitas: 14
y el termistor ntc de cuanto es? 1k, 10k, 100k? porque para conectarlo al pic pues se utiliza un divisor de tensión y la salida de este a un seguidor de tensión (si te preocupa el pin del pic) y ya...
 
Atrás
Arriba