Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

01/06/2010 #21
Moderador general

Avatar de Fogonazo

Respuesta: Escalar un lm35 temperatura con un microcontrolador
Meliklos dijo: Ver Mensaje
veo que los que postean estan al tanto del funcionamiento del LM35, pero por favor aclarenme una duda, que no encontre en la hoja de datos........
Mira el datasheet del LM135 que es muy similar, pero aparece el esquema interno.
01/06/2010 #22

Avatar de Meliklos

Respuesta: Escalar un lm35 temperatura con un microcontrolador
sinceramente no aclaro mucho mi duda...

es muy basica mi pregunta: el lm35 capta por aproximacion verdad?
01/06/2010 #23
Moderador general

Avatar de Fogonazo

Respuesta: Escalar un lm35 temperatura con un microcontrolador
Meliklos dijo: Ver Mensaje
.....es muy basica mi pregunta: el lm35 capta por aproximacion verdad?


Yo entendí que querías conocer de que manera censa la temperatura internamente.

Puede captar por proximidad, pero deberás lograr que no halla pérdidas de calor (Gradiente térmico) entre el elemento calefactor y el sensor, si no es así la temperatura detectada será irreal
Es mejor si esta inmerso en el elemento caliente o acoplado mecánica/térmicamente al elemento caliente.
02/06/2010 #24

Avatar de Meliklos

Respuesta: Escalar un lm35 temperatura con un microcontrolador
Ahora si! Gracias fogonazo siempre aclarando dudas!
26/06/2010 #25


Respuesta: Escalar un lm35 temperatura con un microcontrolador
Hola gente del foro. Como andan? bueno les cuento que yo recien pude terminar de hacer mi termometro digital de 10 bit de resolucion, pero tengo un pequeno error, que no se si es por culpa mia, o es error que introduce el ADC. (Los errores los veo en simulador Proteus, no en vida real)

Pensando que el lm35 mide hasta 150 C, entregando 1500mv decidi poner en el ADC la tension Vref+ a 1,5V, pensando que de esta forma iva a mejorar la precicion, agraeceria que me confirmara si esto es correcto.

Luego para hacer el calculo lo que hice: ValorADC=ValorADC/((0.01*1024)/1.5)
Es esto correcto?

El problema surge que cuando pongo por ejemplo en el simulador, 56 C el display me muestra 56.2.

Bueno espero haber aportado suficiente informacion como para que les sea facil ayudarme. Muchas gracias a todos
Saludos
Gonzalo
26/06/2010 #26
Moderador

Avatar de Chico3001

Respuesta: Escalar un lm35 temperatura con un microcontrolador
Gonzalonal dijo: Ver Mensaje

Pensando que el lm35 mide hasta 150 C, entregando 1500mv decidi poner en el ADC la tension Vref+ a 1,5V, pensando que de esta forma iva a mejorar la precicion, agraeceria que me confirmara si esto es correcto.
Es correcto, solo asegurate de que no vaya a entrar un voltaje mayor a 1.5V en el Convertidor o existe riezgo de quemarlo

Gonzalonal dijo: Ver Mensaje
Luego para hacer el calculo lo que hice: ValorADC=ValorADC/((0.01*1024)/1.5)
Es esto correcto?

El problema surge que cuando pongo por ejemplo en el simulador, 56 C el display me muestra 56.2.
Vpaso=1.5/1024=1.46484mV
560/1.46484mV=322.2941..... pasos del convertidor

Si no usas todas las decimales en tu programa entonces tendras errores de redondeo, lo recomendable es usar voltajes de referencia que sean mutiplos de las potencias de 2 para que los calculos sean mas simples, por ejemplo si usas 2048 tendras:

Vpaso 2.048/1024= 2mV
560/2mV=280 pasos del convertidor
27/06/2010 #27


Respuesta: Escalar un lm35 temperatura con un microcontrolador
Chico3001 muchas gracias por tu ayuda y por responder.
Hice las modificaciones que me sugeriste, pero aun asi el error del digito decimal persiste. Te muestro el codigo que estoy usando, a ver si me podes ayudar a descubrir donde esta el error. Yo hice algunas pruebas y me parece que el error esta en el resultado que entrega el ADC mas que en el calculo. Lo que hice fue sacar por el lcd directamente la varriable ValueADC, sin hacerle ninguna modificacion, ni primedio, ni nada. La mande al lcd tal cual me la entrega el ADC, y en proteus puse en el lm35 100 C y el lcd mostraba 500.1 (Vref=2.048V)

Bueno espero que me puedan dar una mano en esta. Igual ya estoy muy agradecido
Saludos
Gonzalo

Código PHP:
void temperatura(void)

    
float ValueADC;
    
float temp[5];
    
float temprom;
    
char tempres[10];
    
    
adc_init(); //Inicializacion de ADC

    
lcd_puts("Temperatura:");
    
lcd_goto(64);
    
lcd_puts("Obteniendo Datos");
        
        
DelayBigMs(500);
        for(
char i=0i<5i++)
        {
        
//procesando();
        
ADRESH=0b00000000;// no se si sera necesaro hacer esto pero por las dudas
        
ADRESL=0b00000000;
        
GODONE 1;            // Inicia conversión
        
        
while(GODONE);            // Espera a fin de converción
        
ValueADC 0;
        
        
ValueADC = (ADRESH<<8)+ADRESL;    // Reune el valor en una varible
        
        
ValueADC ValueADC/((0.01*1024)/2.048); 
        
temp[i]= ValueADC//se obtienen 5 muestras oara mejor precicion, luego se saca el promedio
        
        
}
        
        
temprom = (temp[0] + temp[1] + temp[2] + temp[3] + temp[4])/5;
        
sprintf(tempres,"%4.1f"ValueADC);
        
lcd_goto(64);
        
lcd_puts("                ");
        
lcd_goto(64);
        
lcd_puts(tempres);lcd_puts(" C");
        
        
DelayBigMs(450);
        
lcd_clear();
        
        
ADON=0;//apago el modulo ADC 
27/06/2010 #28
Moderador

Avatar de Chico3001

Respuesta: Escalar un lm35 temperatura con un microcontrolador
Posiblemente el error esta en esa formula tan rara, intenta probando con esta modificacion:

Código PHP:
void temperatura(void)

    
float ValueADC;
    
float temp[5];
    
float temprom;
    
char tempres[10];
    
    
adc_init(); //Inicializacion de ADC

    
lcd_puts("Temperatura:");
    
lcd_goto(64);
    
lcd_puts("Obteniendo Datos");
        
        
DelayBigMs(500);
        for(
char i=0i<5i++)
        {
        
//procesando();
        
GODONE 1;            // Inicia conversión
        
        
while(GODONE);            // Espera a fin de conversión
        
        
ValueADC = (ADRESH<<8)+ADRESL;    // Reune el valor en una varible        
        
ValueADC ValueADC*2            // solo se multiplica por el Vpaso
        
temp[i]= ValueADC//se obtienen 5 muestras oara mejor precicion, luego se saca el promedio
        
        
}
        
        
temprom = (temp[0] + temp[1] + temp[2] + temp[3] + temp[4])/5;
        
sprintf(tempres,"%4.1f"temprom);
        
lcd_goto(64);
        
lcd_puts("                ");
        
lcd_goto(64);
        
lcd_puts(tempres);lcd_puts(" C");
        
        
DelayBigMs(450);
        
lcd_clear();
        
        
ADON=0;//apago el modulo ADC 
27/06/2010 #29


Respuesta: Escalar un lm35 temperatura con un microcontrolador
Chico3001, hice la modificación que me recomendaste pero los problemas continuan. Multiplicando por 2, el lcd me muestra a 100 C, una temperatura de 1002.0 C, es decir que la escala esta mal. Probe multiplicando por 2mv (0,002V) y ya queda muy chica. Bueno, el error de escala seria lo de menos. El tema es que el error en los decimales, persiste, osea en la precisión. En lugar de 100C obtengo 100.2 C. Como te dije en el mensaje anterior, realice algunas pruebas, enviando solamente el error que entregaba el ADC al lcd y incluso ahí hay error, por eso digo que quizas, el problema este en el ADC. Tenes alguna sugerencia para mi? ya se me están acabando los recursos.
Muchas gracias por responder. Saludos
27/06/2010 #30
Moderador

Avatar de Chico3001

Respuesta: Escalar un lm35 temperatura con un microcontrolador
No veo donde puede estar el error, al menos en la rutina que pusiste... solko se me ocurre que el problema este en alguna otra parte del codigo, o sea por hardware...
27/06/2010 #31


Respuesta: Escalar un lm35 temperatura con un microcontrolador
Gracias Chico de todas formas, ya vere que hago. Si se te ocurre alguna idea, te lo agradeceria. Saludos

Chico, teoricamente, si yo conecto la Vref a la entrada del ADC en lugar del LM35, y mostrando en pantallla solo el valor que entrga el ADC, me deberia mostrar 1024 no? por que a mi me muestra 1023. A que se debera esto?

Creo que ya descubri a que se debia el error. Parece que Proteus anade un error a proposito en sus mediciones como para darle mas veracidad. conecte un voltimetro (virtual) al lm35 en el proteus, y cuando este decia 10C el voltimetro indicaba 111mv en lugar de 110.

Utilizando 10 bits de rsolucion, y con una VREF=2.048, cual es la precicion que puedo lograr que el lcd me muestre?
Como seria el calculo, asi decido que VREF me conviene usar
Gracias
Gonzalo
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.