Autor Tema: Me podrías ayudar con un medidor de temperatura con LM35 Y pic16F877A  (Leído 16157 veces)

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

Desconectado microcom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 568
Re: Me podrías ayudar con un medidor de temperatura con LM35 Y pic16F877A
« Respuesta #15 en: 04 de Julio de 2007, 18:57:22 »
fello por que no tomas adresl que te sale mas facil y ademas la temperatura sensada maxima seria de 125ªc

que es un temperatura buena a no se que pases de temperatura.

amigo aqui tienes un archivo que tal ves te sirva

el led puede ser el motor

saludos

Desconectado microcom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 568
Re: Me podrías ayudar con un medidor de temperatura con LM35 Y pic16F877A
« Respuesta #16 en: 04 de Julio de 2007, 19:02:53 »
ademas tienes que anadirle la otra rutina para el ra1 para el potenciiometro y restar.
vamos a ver si sigo añadiendo esta otra rutina para ver

al parecer vamos a ver.

hasta..................

saludos.

Desconectado Fello

  • PIC10
  • *
  • Mensajes: 4
Re: Me podrías ayudar con un medidor de temperatura con LM35 Y pic16F877A
« Respuesta #17 en: 05 de Julio de 2007, 10:46:40 »
microcom

Excelente ayuda.

La idea es que cuando exceda de cierta temperatura arranque el ventilador para que enfrie y cuando llegue a la temperatura baja se apague el motor que mueve el ventilador.

Estoy intentando llevar el archivo que me has enviado para que corra en un PIC16f877A pero me envía el siguiente error:

LES   RRF      CONVERSION,1

Este error, parece ser un comando irreconocible, ¿sabes que tengo que cambiar para que lo corra desde un 16F877A?

¿Es posible grabarlo directamente en el pic colocando todos los componentes en los pines correctos?

Gracias de antemano por tu ayuda.

Desconectado microcom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 568
Re: Me podrías ayudar con un medidor de temperatura con LM35 Y pic16F877A
« Respuesta #18 en: 05 de Julio de 2007, 17:06:38 »
claro amigo , lo que tienes que hacer combiar el encabazado y mirar que correspondan los registros en cada banco creo que no tendras problemas con solo cambiar el nombre del pic puesto que los bancos y registros del pic 16f877 son similares al pic 16f873.


aqui tienes el programa de los rao lm35 ; ra1 potenciometro ambos se simulan con potenciometro.........

al sobrepasar la temperatura al valor del potenciometro se activa el leds/(motor).

aunque veo en tu pprograma buenos aportes...solo que me qued´´o tiempo revisarlo.

se vissualiza la temperatura pera al hacerce ésta mayor que el potencimetro solo se activa el leds.


BTFSS  BEN,0  ;esta instruccion es para extablecer los valores de temp; poten en cada canal
rao :temp
ra1: poten

primero se accede al canal0
despues al canal1


al  ahver 850mv en rao es por que hay 85 grados C  pero en la salida del adresl = aprox 170valor binario bcd.

por lo tanto al rotar este valor quedaria la 85 que es lo que se va a visualizar

lo mismo secede en ra1:

salida = 850/4.88= 174  al rotar ala izquierda: 86 aprox

MOVWF   POTENCIOMETRO                     ;aqui se restan los valores de los respectivos canales
   RRF   POTENCIOMETRO,0
   SUBWF   CONVERSION2,1
   BTFSC   STATUS,0
   GOTO   PRENDA


saludos



saludos

Desconectado microcom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 568
Re: Me podrías ayudar con un medidor de temperatura con LM35 Y pic16F877A
« Respuesta #19 en: 05 de Julio de 2007, 17:14:20 »
fello

si miras los multimetros en el ejemplo veras algo parecido..

si alguno tiene una ayuda por favor acepto las opiniones y sugerencias.ç


al pasar el codigo al mplab los errores son ortograficos o sea los comentarioss deben ir con ;


mira el data del pic 16f877 y veras que debes  hacer pocos o nulos cambios  al programas

LIST    P=16F877A
   #INCLUDE<P16F877A.INC>
saludos

Desconectado Trev_11

  • PIC10
  • *
  • Mensajes: 44
Re: Me podrías ayudar con un medidor de temperatura con LM35 Y pic16F877A
« Respuesta #20 en: 06 de Julio de 2007, 18:51:12 »
Hola..aca dejo mi programa terminado con el cual puedo medir la Tº entre los 0 y 100ºC,por si a alguno le interesa,
si es asi y me ayudan a mejorarlo juntos mejor.Chau :-)
;*****************************************************************************************************************
;Descripción                                                                                                     *
;*****************************************************************************************************************
;Este programa visualiza en 3 display de 7 segmentos el valor de Tº en ºC entregado por el sensor LM335.
;Rango de operacion:(2,442V-5V),(0-100ºC),sensibilidad:1/4º

;*****************************************************************************************************************
;Definiciones,vectores,blokes,configuración de puertos y macros                                                  *
;*****************************************************************************************************************
                   
                  list           p=16f877
                  #include       <p16f877.inc>                     
                  RADIX          HEX
                  GO_DONE        EQU        2               ;Indica si termino la conversión(0).
                  ADON           EQU        0               ;Pone en marcha el modulo(1).
                 

           
unidad            EQU    20
decena            EQU    21
centena           EQU    22
DATO              EQU    23
TIMER1            EQU    24
TEMPERATURA       EQU    25


                 
                  org            0
                  goto           INICIO
                                   
BANCO0            macro                 
                  bcf            STATUS,RP0
                  bcf            STATUS,RP1
                  endm

BANCO1            macro
                  bsf            STATUS,RP0
                  bcf            STATUS,RP1
                  endm

BANCO2            macro
                  bcf            STATUS,RP0
                  bsf            STATUS,RP1
                  endm

BANCO3            macro
                  bsf            STATUS,RP0
                  bsf            STATUS,RP1
                  endm

                  #include       <lcdiyda.lib>              ;Rutina con los comandos de manejo del LCD.

;*****************************************************************************************************************
;Progama principal.                                                                                              *
;*****************************************************************************************************************
                 
INICIO            BANCO1
                  clrf           TRISC
                  clrf           TRISD
                  BANCO0
                  call           TEMPO2                     ;Espero hasta ke se estabilicen los voltajes.
                  movlw          b'00000001'
                  call           LCDI                       ;Rutina ke indica modo comando.
                  movlw          b'00110000'
                  call           LCDI
                  movlw          b'00111000'
                  call           LCDI
                  movlw          b'00111100'
                  call           LCDI
                  movlw          b'00001100'
                  call           LCDI
                  movlw          b'00000110'
                  call           LCDI
                  call           TEMPO1                     ;Fin de la inicialización del LCD.
                  clrf           TEMPERATURA
STAR              BANCO1
                  movlw          b'00001101'                ;RA0 es una entrada funcionará como AN0.
                  movwf          TRISA                      ;RA1-5 funcionaran como entradas para las ref.
                  call           T_ADQUISICIÓN
                  movlw          b'10001111'                ;Justificación a la derecha.
                  movwf          ADCON1                     ;RA0/AN0 y todo lo demás es I/O Digital.
                  BANCO0
                  movlw          b'00000001'                ;Pongo en marcha el modulo A/D y
                  movwf          ADCON0                     ;el canal analogo a emplear será AN0.
                  call           T_ADQUISICIÓN             
                  bsf            ADCON0,GO_DONE             ;El módulo A/D esta operativo
                  btfsc          ADCON0,GO_DONE             ;Ha finalizado la conversión?
                  goto           $-1                        ;No,espera.
                  movlw          .0                         ;Si.
                  subwf          ADRESH,W
                  btfsc          STATUS,Z
                  goto           CUENTA_1                   ;ADRESH=.0,o sea,Tº=(1/4.ADRESL)-29
                  movlw          .1
                  subwf          ADRESH,W
                  btfss          STATUS,Z
                  goto           Fuera_escala   
CUENTA_2          bcf            STATUS,C                   ;El carry siempre arranca en 1,lo borro pa' ke no joda.
                  BANCO1                                    ;ADRESH=.1,o sea,Tº=(1/4.ADRESL)+35
                  rrf            ADRESL,W
                  bcf            STATUS,C
                  BANCO0
                  movwf          TEMPERATURA
                  rrf            TEMPERATURA,W
                  bcf            STATUS,C
                  addlw          .35
                  movwf          TEMPERATURA                                   
                  call           CONVERSION_II              ;Descompone este registro en unidad,decena y centena 
                  goto           STAR                       ;y almacena estos datos en los registros del mismo nombre.
CUENTA_1          BANCO1
                  movlw          .144
                  addwf          ADRESL,W
                  btfss          STATUS,C
                  goto           Fuera_escala
                  movlw          .0
                  subwf          ADRESL,W
                  btfsc          STATUS,Z
                  goto           Fuera_escala               ;La tensión medida es inferior a 2,73V.
                  bcf            STATUS,C                   ;El carry siempre arranca en 1,lo borro pa' ke no joda.                 
                  rrf            ADRESL,W
                  bcf            STATUS,C
                  BANCO0
                  movwf          TEMPERATURA
                  rrf            TEMPERATURA,F
                  bcf            STATUS,C
                  movlw          .28                        ;En realidad la ordenada=28,75
                  subwf          TEMPERATURA,F
                  call           CONVERSION_II
                  goto           STAR

;*****************************************************************************************************************                 
;Subrutinas                                                                                                      *
;*****************************************************************************************************************
                   
CONVERSION_II     BANCO0
                  clrf           unidad
                  clrf           decena
                  clrf           centena                 
CENTENAS          movlw          .100
                  subwf          TEMPERATURA,W              ;TEMPERATURA-100=W.
                  btfss          STATUS,C                   ;¿TEMPERATURA es menor ke .100?
                  goto           DECENAS                    ;Si.
                  movwf          TEMPERATURA                ;No,salva el resto.
                  incf           centena,F
                  goto           CENTENAS
DECENAS           movlw          .10
                  subwf          TEMPERATURA,W
                  btfss          STATUS,C                   ;¿TEMPERATURA es menor ke .10?
                  goto           UNIDADES                   ;Si.
                  movwf          TEMPERATURA                ;No,Salva el resto.
                  incf           decena,F
                  goto           DECENAS
UNIDADES          movf           TEMPERATURA,W
                  movwf          unidad
                  clrf           TEMPERATURA

MUESTRA           movlw          .128
                  call           LCDI
                  movlw          "T"
                  call           LCDC                       ;Rutina ke indica modo dato y saca el caracter.
                  movlw          "e"
                  call           LCDC
                  movlw          "m"
                  call           LCDC
                  movlw          "p"
                  call           LCDC
                  movlw          "e"
                  call           LCDC
                  movlw          "r"
                  call           LCDC
                  movlw          "a"
                  call           LCDC
                  movlw          "t"
                  call           LCDC
                  movlw          "u"
                  call           LCDC
                  movlw          "r"
                  call           LCDC
                  movlw          "a"
                  call           LCDC
                  movlw          "="
                  call           LCDC
                  movf           centena,W
                  sublw          .0
                  btfsc          STATUS,Z
                  goto           $+3
                  addlw          .48
                  call           LCDC
                  movf           decena,W
                  addlw          .48
                  call           LCDC
                  movf           unidad,W
                  addlw          .48
                  call           LCDC
                  movlw          b'01101111'
                  call           LCDC
                  movlw          "C"
                  call           LCDC
                  goto           STAR
Fuera_escala      movlw          .128
                  call           LCDI
                  movlw          "F"
                  call           LCDC
                  movlw          "u"
                  call           LCDC
                  movlw          "e"
                  call           LCDC
                  movlw          "r"
                  call           LCDC
                  movlw          "a"
                  call           LCDC
                  movlw          " "
                  call           LCDC
                  movlw          "d"
                  call           LCDC
                  movlw          "e"
                  call           LCDC
                  movlw          " "
                  call           LCDC
                  movlw          "e"
                  call           LCDC
                  movlw          "s"
                  call           LCDC
                  movlw          "c"
                  call           LCDC
                  movlw          "a"
                  call           LCDC
                  movlw          "l"
                  call           LCDC
                  movlw          "a"
                  call           LCDC
                  goto           STAR
                                                 
T_ADQUISICIÓN     movlw          .15                        ;Le sobredimensiono y listo.
                  movwf          TIMER1
                  decfsz         TIMER1,F
                  goto           $-1
                  return                                    ;Pasaron algunas decenas de µseg.,retorna.

                 

                  END
                                                                                                                                           

Desconectado Trev_11

  • PIC10
  • *
  • Mensajes: 44
Re: Me podrías ayudar con un medidor de temperatura con LM35 Y pic16F877A
« Respuesta #21 en: 11 de Julio de 2007, 13:04:35 »
Aca posteo mi programa acabado para los que les interese y los que tienen alguna sugerencia para mejorarlo se agradece.Saludos a toos  :)

;*****************************************************************************************************************
;Descripción                                                                                                     *
;*****************************************************************************************************************
;Este programa visualiza en 3 display de 7 segmentos el valor de Tº en ºC entregado por el sensor LM335.
;Rango de operacion:(2,442V-5V),(0-100ºC),sensibilidad:1/4º

;*****************************************************************************************************************
;Definiciones,vectores,blokes,configuración de puertos y macros                                                  *
;*****************************************************************************************************************
                   
                  list           p=16f877
                  #include       <p16f877.inc>                     
                  RADIX          HEX
                  GO_DONE        EQU        2               ;Indica si termino la conversión(0).
                  ADON           EQU        0               ;Pone en marcha el modulo(1).
                 

           
unidad            EQU    20
decena            EQU    21
centena           EQU    22
DATO              EQU    23
TIMER1            EQU    24
TEMPERATURA       EQU    25


                 
                  org            0
                  goto           INICIO
                                   
BANCO0            macro                 
                  bcf            STATUS,RP0
                  bcf            STATUS,RP1
                  endm

BANCO1            macro
                  bsf            STATUS,RP0
                  bcf            STATUS,RP1
                  endm

BANCO2            macro
                  bcf            STATUS,RP0
                  bsf            STATUS,RP1
                  endm

BANCO3            macro
                  bsf            STATUS,RP0
                  bsf            STATUS,RP1
                  endm

                  #include       <lcdiyda.lib>              ;Rutina con los comandos de manejo del LCD.

;*****************************************************************************************************************
;Progama principal.                                                                                              *
;*****************************************************************************************************************
                 
INICIO            BANCO1
                  clrf           TRISC
                  clrf           TRISD
                  BANCO0
                  call           TEMPO2                     ;Espero hasta ke se estabilicen los voltajes.
                  movlw          b'00000001'
                  call           LCDI                       ;Rutina ke indica modo comando.
                  movlw          b'00110000'
                  call           LCDI
                  movlw          b'00111000'
                  call           LCDI
                  movlw          b'00111100'
                  call           LCDI
                  movlw          b'00001100'
                  call           LCDI
                  movlw          b'00000110'
                  call           LCDI
                  call           TEMPO1                     ;Fin de la inicialización del LCD.
                  clrf           TEMPERATURA
STAR              BANCO1
                  movlw          b'00001101'                ;RA0 es una entrada funcionará como AN0.
                  movwf          TRISA                      ;RA1-5 funcionaran como entradas para las ref.
                  call           T_ADQUISICIÓN
                  movlw          b'10001111'                ;Justificación a la derecha.
                  movwf          ADCON1                     ;RA0/AN0 y todo lo demás es I/O Digital.
                  BANCO0
                  movlw          b'00000001'                ;Pongo en marcha el modulo A/D y
                  movwf          ADCON0                     ;el canal analogo a emplear será AN0.
                  call           T_ADQUISICIÓN             
                  bsf            ADCON0,GO_DONE             ;El módulo A/D esta operativo
                  btfsc          ADCON0,GO_DONE             ;Ha finalizado la conversión?
                  goto           $-1                        ;No,espera.
                  movlw          .0                         ;Si.
                  subwf          ADRESH,W
                  btfsc          STATUS,Z
                  goto           CUENTA_1                   ;ADRESH=.0,o sea,Tº=(1/4.ADRESL)-29
                  movlw          .1
                  subwf          ADRESH,W
                  btfss          STATUS,Z
                  goto           Fuera_escala   
CUENTA_2          bcf            STATUS,C                   ;El carry siempre arranca en 1,lo borro pa' ke no joda.
                  BANCO1                                    ;ADRESH=.1,o sea,Tº=(1/4.ADRESL)+35
                  rrf            ADRESL,W
                  bcf            STATUS,C
                  BANCO0
                  movwf          TEMPERATURA
                  rrf            TEMPERATURA,W
                  bcf            STATUS,C
                  addlw          .35
                  movwf          TEMPERATURA                                   
                  call           CONVERSION_II              ;Descompone este registro en unidad,decena y centena 
                  goto           STAR                       ;y almacena estos datos en los registros del mismo nombre.
CUENTA_1          BANCO1
                  movlw          .144
                  addwf          ADRESL,W
                  btfss          STATUS,C
                  goto           Fuera_escala
                  movlw          .0
                  subwf          ADRESL,W
                  btfsc          STATUS,Z
                  goto           Fuera_escala               ;La tensión medida es inferior a 2,73V.
                  bcf            STATUS,C                   ;El carry siempre arranca en 1,lo borro pa' ke no joda.                 
                  rrf            ADRESL,W
                  bcf            STATUS,C
                  BANCO0
                  movwf          TEMPERATURA
                  rrf            TEMPERATURA,F
                  bcf            STATUS,C
                  movlw          .28                        ;En realidad la ordenada=28,75
                  subwf          TEMPERATURA,F
                  call           CONVERSION_II
                  goto           STAR

;*****************************************************************************************************************                 
;Subrutinas                                                                                                      *
;*****************************************************************************************************************
                   
CONVERSION_II     BANCO0
                  clrf           unidad
                  clrf           decena
                  clrf           centena                 
CENTENAS          movlw          .100
                  subwf          TEMPERATURA,W              ;TEMPERATURA-100=W.
                  btfss          STATUS,C                   ;¿TEMPERATURA es menor ke .100?
                  goto           DECENAS                    ;Si.
                  movwf          TEMPERATURA                ;No,salva el resto.
                  incf           centena,F
                  goto           CENTENAS
DECENAS           movlw          .10
                  subwf          TEMPERATURA,W
                  btfss          STATUS,C                   ;¿TEMPERATURA es menor ke .10?
                  goto           UNIDADES                   ;Si.
                  movwf          TEMPERATURA                ;No,Salva el resto.
                  incf           decena,F
                  goto           DECENAS
UNIDADES          movf           TEMPERATURA,W
                  movwf          unidad
                  clrf           TEMPERATURA

MUESTRA           movlw          .128
                  call           LCDI
                  movlw          "T"
                  call           LCDC                       ;Rutina ke indica modo dato y saca el caracter.
                  movlw          "e"
                  call           LCDC
                  movlw          "m"
                  call           LCDC
                  movlw          "p"
                  call           LCDC
                  movlw          "e"
                  call           LCDC
                  movlw          "r"
                  call           LCDC
                  movlw          "a"
                  call           LCDC
                  movlw          "t"
                  call           LCDC
                  movlw          "u"
                  call           LCDC
                  movlw          "r"
                  call           LCDC
                  movlw          "a"
                  call           LCDC
                  movlw          "="
                  call           LCDC
                  movf           centena,W
                  sublw          .0
                  btfsc          STATUS,Z
                  goto           $+3
                  addlw          .48
                  call           LCDC
                  movf           decena,W
                  addlw          .48
                  call           LCDC
                  movf           unidad,W
                  addlw          .48
                  call           LCDC
                  movlw          b'01101111'
                  call           LCDC
                  movlw          "C"
                  call           LCDC
                  goto           STAR
Fuera_escala      movlw          .128
                  call           LCDI
                  movlw          "F"
                  call           LCDC
                  movlw          "u"
                  call           LCDC
                  movlw          "e"
                  call           LCDC
                  movlw          "r"
                  call           LCDC
                  movlw          "a"
                  call           LCDC
                  movlw          " "
                  call           LCDC
                  movlw          "d"
                  call           LCDC
                  movlw          "e"
                  call           LCDC
                  movlw          " "
                  call           LCDC
                  movlw          "e"
                  call           LCDC
                  movlw          "s"
                  call           LCDC
                  movlw          "c"
                  call           LCDC
                  movlw          "a"
                  call           LCDC
                  movlw          "l"
                  call           LCDC
                  movlw          "a"
                  call           LCDC
                  goto           STAR
                                                 
T_ADQUISICIÓN     movlw          .15                        ;Le sobredimensiono y listo.
                  movwf          TIMER1
                  decfsz         TIMER1,F
                  goto           $-1
                  return                                    ;Pasaron algunas decenas de µseg.,retorna.

                 

                  END
                                                                                                                                           



 

anything