Autor Tema: Codificar valor LM35  (Leído 8371 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado fenix_jn

  • PIC18
  • ****
  • Mensajes: 418
RE: Codificar valor LM35
« Respuesta #15 en: 19 de Enero de 2005, 22:37:00 »
Escrito originalmente por Kcesreb
Hola a los que están.

Bueno, por lo visto no hay ideas nuevas, aparte de Ejmc, retomando la info que presente anteriormente de la resolución de 4.88mV, descubrí la manera de presentar la temperatura real del LM35 sin Operacionales ni Vref externos, todo interno y sencillo.  Lo que se debe hacer es lo siguiente: Se almacena el valor del ADRESL a un registro X, por ejemplo para un voltaje de entrada de 200mV (20°C) este valor equivale a 40 digitalmente, OK, ahora teniendo este valor almacenado en el registro X lo divido en 2 que en assembler se rota a la derecha una vez, y listo el valor real del LM35, en este caso 20, matemáticamente:

Temp. = # Digital / 2

Pruébenlo y me comentan como les pareció la idea.

No es más, espero su participación.



Solo tiene un problema, si lees un valor impar vas a tener una salida incorrecta al dividir / 2 o en el peor caso, solo podras leer de 2 en 2 grados.

Desconectado Kcesreb

  • PIC10
  • *
  • Mensajes: 7
RE: Codificar valor LM35
« Respuesta #16 en: 21 de Enero de 2005, 18:41:00 »
Hola a todos.

Ya termine mi termómetro Digital, el hardware lo comprende:

PIC16F818
LM35
Display Doble Ánodo Común
Semiconductores complementarios.

El software funciona bien, el problema que me comentas te la respondo con la siguiente tabla, el cual tiene valores de temperatura, voltaje y salida digital:

Temp.          LM35 Vout          #Digital          #Digital / 2

30°C             300mV                     61                 30.5
31°C             310mV        63          31.5
32°C        320mV        65          32.5
33°C        330mV        67          33.5
34°C        340mV        69          34.5
35°C        350mV        71          35.5
36°C        360mV        73          36.5
37°C        370mV        75          37.5
38°C        380mV        77          38.5
39°C        390mV        79          39.5
40°C        400mV        81          40.5

Como puedes ver no hay problema con los valores impares, además el .5 se elimina puesto que el micro no maneja fracciones, si lo quieres ver mas practico haz esta tabla con valores binarios.

Queda decir que el valor máximo del LM35,  150°C-->1,5V, queda de un valor de 153 Digital, ya dividido, esto quiere decir que este proceso trabaja con 8 Bits lo necesario para la aplicación.

Agradezco a todos por sus sugerencias, participación y tiempo.

Este tema termina aquí, solucionado el problema.

PD. Dejo el pedazo de código del LM35 para los que quieren trabajarlo y modificarlo y si se puede mejorarlo.

   CLRF      VALOR
   CLRF      MSB
   CLRF      LSB
AD   BSF      ADCON0,GO
   BTFSC      ADCON0,GO
   GOTO      $-1
   BANKSEL      ADRESL
   MOVF      ADRESL,W
   BANKSEL      ADRESH
   MOVWF      VALOR         
   BCF      STATUS,C
   RRF      VALOR,F
   MOVF      VALOR,W
   CALL      BINBCD
   CALL      VISUAL   
   GOTO      AD

TABLA      ADDWF      PCL,F         
   RETLW      40   ;0
   RETLW      79   ;1
   RETLW      24   ;2
   RETLW      30   ;3
   RETLW      19   ;4
   RETLW      12   ;5
   RETLW      02   ;6
   RETLW      58   ;7
   RETLW      00   ;8
   RETLW      10   ;9
BINBCD
   CLRF      MSB
   MOVWF      LSB
L1   MOVLW      0A
   SUBWF      LSB,W
   BTFSS      STATUS,C
   GOTO      FIN   
   MOVWF      LSB
   INCF      MSB,F
   GOTO      L1
FIN   RETLW      00    

VISUAL   
   MOVLW      .255
   MOVWF      COUNT2
VS   MOVF      MSB,W
   CALL      TABLA
   MOVWF      PORTB
   BCF      PORTA,1
   CALL      TIME
   BSF      PORTA,1
   MOVF      LSB,W         
   CALL      TABLA
   MOVWF      PORTB
   BCF      PORTA,2
   CALL      TIME
   BSF      PORTA,2
   DECFSZ      COUNT2,F
   GOTO      VS
   RETURN
TIME
   MOVLW      .100
   MOVWF      COUNT1
   DECFSZ      COUNT1,F
   GOTO      $-1
   RETURN



 

anything