Autor Tema: termometro con lm35 y 16f877  (Leído 10390 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado josegranada

  • PIC10
  • *
  • Mensajes: 16
termometro con lm35 y 16f877
« en: 05 de Octubre de 2009, 11:15:55 »
quiero hacer un proyecto que tiene un termometro con un lm35 y una lcd, asi como un pic 16f877, me podrian decir que tengo que tensiones de referencia son las que tengo que poner para que me de la temperatura que tiene realmente el termometro.

gracias

y otra pregunta:
tengo este codigo:

#include "16f877.h"
#byte pb=6
#byte pa=5
#byte pc=7
#byte pd=8
#use delay(clock=4m)  //OJOOOOO PONER ANTES ESTE COMANDO PARA EL LCD
#include "pantallaend.c"
void main () 
{
 float cifra;
 int16 lectura;
  set_tris_d(0x00);
  set_tris_a(0xFF);
                                  ///RECOJE EL VALOR LEDIO DEL ADC


 ///CODIGO PARA LEER LM35 USANDO VOLTAJE DE REFERENCIA DE 2.5 VOLT
setup_adc(  ADC_CLOCK_INTERNAL  );


 setup_adc_ports( RA0_ANALOG);


  delay_us(10);
while(1)
{
  lectura = read_adc();

  delay_us(10);

  cifra = (float)lectura;     

  cifra *= 0.244;        ////por que Vref / 1024 = 0.00244 luego x 100
  lcd_init();
  printf(lcd_putc,"Termometro = %3.1f%cC  ",cifra,233);///223 = signo de grados
  delay_us(20);
}
 

  }

me gustaria saber porque no me sale bien la temperatura, porque me sale en la lcd ermometro=3.4 y no si varia la temperatura en el termometro no me sale la nueva temperatura en la lcd, como puedo hacer para que se modifique esa temperatura y tambien para que salga bien lo de la lcd.


gracias a todos.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: termometro con lm35 y 16f877
« Respuesta #1 en: 05 de Octubre de 2009, 11:41:51 »
La escala que aplicas depende del circuito externo que hayas armado para el LM35. Porque para 150ºC cuanto tensión entregará el LM35 al PIC? Y para 0ºC?

Después en el código falta setear que entrada analógica medir (set_adc_channel(0)), lcd_init() va al inicio y no dentro del while y para mostrar el carácter de grados centígrados podes usar ß (Alt+225).

También junto con la configuración de fuses debes indicarle al compilador que utilizarás conversor AD del pic a 10 bits (#device adc=10)


Saludos!
« Última modificación: 05 de Octubre de 2009, 11:44:22 por Suky »
No contesto mensajes privados, las consultas en el foro

Desconectado josegranada

  • PIC10
  • *
  • Mensajes: 16
Re: termometro con lm35 y 16f877
« Respuesta #2 en: 05 de Octubre de 2009, 14:02:24 »
gracias por la pronta respuesta, no se como medir para hacer la escala de la tension de referencia, asi como tampoco se para lo que sirve #device adc=10, y eso me da  error.

sigue sin mostrarme el dato en la pantalla

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: termometro con lm35 y 16f877
« Respuesta #3 en: 05 de Octubre de 2009, 14:05:24 »
este hilo te puede ayudar un poco el #device adc=10 quiere decir que la conversion A/D será de 10bits

edit: qué es este include #include "pantallaend.c"
« Última modificación: 05 de Octubre de 2009, 14:07:52 por jhozate »
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado josegranada

  • PIC10
  • *
  • Mensajes: 16
Re: termometro con lm35 y 16f877
« Respuesta #4 en: 05 de Octubre de 2009, 15:25:50 »
pues lo de "pantallaend.c" es que tengo situada la lcd en el puerto d y ese es el driver modificado.

me pueden explicar la funcion printf

alguien tiene el manual de ccs en español

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: termometro con lm35 y 16f877
« Respuesta #5 en: 05 de Octubre de 2009, 21:00:05 »
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado josegranada

  • PIC10
  • *
  • Mensajes: 16
Re: termometro con lm35 y 16f877
« Respuesta #6 en: 06 de Octubre de 2009, 13:11:42 »
hola de nuevo, me gustaria saber si alguien me puede ayudar a hallar las tensiones de referencia que tengo que poner para mi circuito que adjunto a continuacion,
tambien les dejo el codigo para que me ayuden a resolver el porque no me salen las temperaturas que marca realmente el termometro, y si vario el termometro que se varie tambien en la lcd.

#include "16f877.h"
#device ADC=10
#byte pb=6
#byte pa=5
#byte pc=7
#byte pd=8
#use delay(clock=4m)
#include "pantallaend.c"
int16 lectura=0x00;
int   grados_term1=0;
int16 lectura2=0x00;
int grados_term2=0;
void termometro1(void)  // lectura del canal del primer termometro (interior)
{
//while(1)
//{
set_adc_channel(0);
delay_ms(1);
lectura=read_adc();
delay_ms(1);
grados_term1 = (int) ((lectura*391)/1000);
//}
lcd_putc( " T1= termometro1()");
}

void termometro2(void)// lectura del canal del segundo termometro termometro(exterior)
{

set_adc_channel(1);
delay_ms(1);
lectura2=read_adc();
delay_ms(1);
grados_term2 = (int) ((lectura2*391)/1000);
lcd_putc ("T");
}

void main ()
{
set_tris_d(0x00);
set_tris_a(0xFF);
lcd_init();
setup_adc(  ADC_CLOCK_INTERNAL  );
setup_adc_ports( RA0_ANALOG);
termometro1();
termometro2();
}


gracias a todos por su ayuda

Desconectado fisielectronics

  • PIC10
  • *
  • Mensajes: 1
Re: termometro con lm35 y 16f877
« Respuesta #7 en: 20 de Octubre de 2009, 15:05:05 »
yo tambien estoy trabajando un termometro pero con una pt100 y me tiene barado la rutina de conversion de binario a bcd con 10 bits si me pueden ayudar les agradesco

Desconectado soymoe

  • PIC18
  • ****
  • Mensajes: 456
    • El blog de Moe
Re: termometro con lm35 y 16f877
« Respuesta #8 en: 31 de Diciembre de 2010, 18:12:46 »
yo tambien estoy trabajando un termometro pero con una pt100 y me tiene barado la rutina de conversion de binario a bcd con 10 bits si me pueden ayudar les agradesco
Yo estoy  tratando de hacer un termometro con pic 16f88 y tengo hecha la rutina de bin a bcd. Es esta:
Código: [Seleccionar]
; 16-bit binary to BCD conversion
; pete griffiths 2007
; http://picprojects.org.uk/projects/pictips.htm
;
; These file register variables will
; need to be defined elsewhere.
; binH
; binL
; bcdH
; bcdM
; bcdL
; counter
; temp
;
; binH, binL contain the binary value to
; convert. Conversion process destroys contents.
; Result is in bcdH, bcdM, bcdL on return.
; Call _bin2bcd to perform conversion.
;
; Executes in 454 instructions


_bin2bcd 
movf   binL,W
movwf   binL_TEMP;guardo el valor que convierto
            movf   binH,W
movwf     binH_TEMP;guardo el valor que convierto
    movlw     d'16'
            movwf     counter
            clrf      bcdL
            clrf      bcdM
            clrf      bcdH

_repeat     rlf       binL,F
            rlf       binH,F
            rlf       bcdL,F
            rlf       bcdM,F
            rlf       bcdH,F

            decfsz    counter,F
            goto      _adjust
movf      binL_TEMP,W;restauro lo que converti
movwf     binL
movf      binH_TEMP,W
movwf     binH
            return

_adjust     movlw     d'14'
            subwf     counter,W
            skpnc
            goto      _repeat
            movfw     bcdL
            addlw     0x33
            movwf     temp
            movfw     bcdL
            btfsc     temp,3
            addlw     0x03
            btfsc     temp,7
            addlw     0x30
            movwf     bcdL
            movfw     bcdM
            addlw     0x33
            movwf     temp
            movfw     bcdM
            btfsc     temp,3
            addlw     0x03
            btfsc     temp,7
            addlw     0x30
            movwf     bcdM
            goto      _repeat
; we only need to do the test and add +3 for
; the low and middle bcd variables since the
; largest binary value is 0xFFFF which is
; 65535 decimal so the high bcd byte variable
; will never be greater than 6.
; We also skip the tests for the first two
; shifts.
 

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: termometro con lm35 y 16f877
« Respuesta #9 en: 31 de Diciembre de 2010, 18:33:51 »
Hola.

Aquí hay una rutina para el manejo de display de 7 segmentos y pasar a bcd.
Aquí esta el hard para conectar una termocupla y/o un LM35.

Saludos



El papel lo aguanta todo