TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: daniel_908 en 18 de Noviembre de 2015, 23:34:12
-
Buenas estimados
ultimamente me he estado cabeceando para que no muestre el 0.30(como se ve en la foto), mi objetivo es que muestre los 30 con sus respectivos decimales cuando lo conecte en la vida real y en la simulación en proteus via LCD.
estoy usando un lm35 y un pic 16f877a.
aquí va el código:
#include <16F877a.h>
#device adc=10 //Ponemos que se usen 10 bits para A/D
#use delay(clock=4000000) //Frecuencia de reloj de 4MHz
#include <LCD420.c>
void main()
{
int16 lectura;
float voltios;
/************************Configuración delPIC*****************************/
setup_adc_ports(ALL_ANALOG); //Todos los puertos A como analogicos
setup_adc(ADC_CLOCK_INTERNAL); //Reloj interno para laconversion ADC
setup_comparator(NC_NC_NC_NC);
set_tris_a (0b11111111); //Configuramos todo el puerto A como entrada
/************************************************************************/
lcd_init(); //Inicializamos el display LCD
while(true)
{
set_adc_channel(0); //PIN_A0 como canal analogico
delay_us(20);
lectura=read_adc(); //Leemos el nivel del PIN
voltios=5.0*lectura/1024.0; //
//10mV/1K -273= ºC
printf(lcd_putc,"\f"); //Limpiamos la LCD
delay_ms(1);
printf(lcd_putc,"Temperatura ");
printf(lcd_putc,"\n %1.2f C", voltios);
delay_ms(500);
}
}
espero su ayuda, por favor.
- Tienes que ingresar para ver archivos adjuntos -
saludos cordiales
Daniel Villavicencio
-
Salida del LM: 0 mV + 10.0 mV/°C
Es decir 30ºC son 300mV o 0.3V
Tu formula:
voltios=5.0*lectura/1024.0;
Solo calcula la tension en el pin de entrada analogica, es decir te calcula que hay 0.3V y eso es lo que ves. Multiplicalo por 100 y vas a tener tu temperatura
voltios=500.0*lectura/1024.0;
o
voltios=125.0*lectura/256.0;
-
Muchas Gracias!, te pasaste! :o