Autor Tema: Sensor de temperatura  (Leído 4932 veces)

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

Desconectado Phako_mx

  • PIC10
  • *
  • Mensajes: 11
Sensor de temperatura
« en: 16 de Marzo de 2004, 12:59:00 »

Holas espero q me puedan ayudar.El problema es el siguiente, estoy aprendiento todo esto de los pics y en realidad es que por ahora no tengo mucho tiempo para para aprenderlo.Tengo un sensor de temperatura que realize para mi materia de didgitales II, pero esta diseñado para para un Mic8031 y quisiera sabser si alguien me podria ayudar para pasar el mismo programa a un pic16f8777, que por lo q he leido creo q internamente tiene un ADC, bueno espero q halguien pueda ayudarme.

aqui esta el ASM de mi programa con el 8031.
este programa utiliza el P0 y P2 para controlar la memoria y el lach y en el P0 manejo multiplexadamente la parte baja de la memoria y un LCD, en el P1 tengo conectado el ADC0804, en el P3.6 y P2.6 controlo el enable y el control para enviar datos o instrucciones al LCD.

Utilizo un LM35para el sensado de la tem, un ADC0804 para convertir la tem a binario,el MC8031, y un LCD para visualizar la temperatura.


$MOD51
$TITLE(sensor de temperatura)


ORG 0000H
MOV P1,#00H
MOV R0,#10
CALL TIMER
CALL CONFIGLCD
UNO: NOP
MOV A,P1
NOP
MOV P1,#00H
CALL COMPARAR
CALL MENS
CALL SEGUNDO
CALL BORRAR
JMP UNO
SEGUNDO: MOV R2,#255
MOV R3,#255
MOV R4,#16
DECRE: DJNZ R2,DECRE
DJNZ R3,DECRE
DJNZ R4,DECRE
RET
TIMER: MOV R1,#249
TIMER1: DJNZ R1,TIMER1
DJNZ R0,TIMER
RET
CONFIGLCD: MOV A,#34H ;aqui empieso a configurar el LCD
CALL SEND_CMD
MOV A,#0CH
CALL SEND_CMD
MOV A,#06H
CALL SEND_CMD
MOV A,#01H ; CLEAR DISPLAY
CALL SEND_CMD
RET
BORRAR: MOV A,#01H ; CLEAR DISPLAY
CALL SEND_CMD
RET
SEND_CMD: MOV DPTR,#08FFFH ;rutina para enviar una instruccion al lcd
MOVX @DPTR,A
MOV R0,#05H
CALL TIMER
RET
SEND_CHAR: MOVX @DPTR,A ;para enviar datos al LCD
MOV R0,#1
CALL TIMER
RET
MENS: MOV A,#00H
CALL SEND_CMD
MOV A,R7
ADD A,#30H
MOV DPTR,#0C001H
CALL SEND_CHAR
MOV A,R6
ADD A,#30H
MOV DPTR,#0C002H
CALL SEND_CHAR
MOV A,R5
ADD A,#30H
MOV DPTR,#0C003H
CALL SEND_CHAR
MOV A,#223
MOV DPTR,#0C004H
CALL SEND_CHAR
MOV A,#43H
MOV DPTR,#0C005H
CALL SEND_CHAR
RET

COMPARAR: CJNE A,#00H,SALTO ;R5PARA 128 R6PARA67 Y R7PARA1°C
MOV R7,#00H
MOV R6,#00H
MOV R5,#00H
RET ;
SALTO: CJNE A,#02H,SALTO1
MOV R7,#00H
MOV R6,#00H
MOV R5,#01H
RET
SALTO1: CJNE A,#04H,SALTO2
MOV R7,#00H
MOV R6,#00H
MOV R5,#02H
RET ; 2°C

SALTO2: CJNE A,#06H,SALTO3
MOV R7,#00H
MOV R6,#00H
MOV R5,#03H
RET ; 3°C

SALTO3: CJNE A,#08H,SALTO4
MOV R7,#00H
MOV R6,#00H
MOV R5,#04H
RET ; 4°C

SALTO4: CJNE A,#10,SALTO5
MOV R7,#00H
MOV R6,#00H
MOV R5,#05H
RET ; 5°C

SALTO5: CJNE A,#12,SALTO6
MOV R7,#00H
MOV R6,#00H
MOV R5,#06H
RET ; 6°C

SALTO6: CJNE A,#14,SALTO7
MOV R7,#00H
MOV R6,#00H
MOV R5,#07H
RET ; 7°C

SALTO7: CJNE A,#16,SALTO8
MOV R7,#00H
MOV R6,#00H
MOV R5,#08H
RET ; 8°C

SALTO8: CJNE A,#18,SALTO9
MOV R7,#00H
MOV R6,#00H
MOV R5,#09H
RET 9°C

SALTO9: CJNE A,#20,SALTO10
MOV R7,#00H
MOV R6,#01H
MOV R5,#00H
RET 10°C

SALTO10: CJNE A,#22,SALTO11
MOV R7,#00H
MOV R6,#01H
MOV R5,#01H
RET ; 11°C

SALTO11: CJNE A,#24,SALTO12
MOV R7,#00H
MOV R6,#01H
MOV R5,#02H
RET ; 12°C

SALTO12: CJNE A,#26,SALTO13
MOV R7,#00H
MOV R6,#01H
MOV R5,#03H
RET ; 13°C

SALTO13: CJNE A,#28,SALTO14
MOV R7,#00H
MOV R6,#01H
MOV R5,#04H
RET ; 14°C

SALTO14: CJNE A,#30,SALTO15
MOV R7,#00H
MOV R6,#01H
MOV R5,#05H
RET ; 15°C

SALTO15: CJNE A,#32,SALTO16
MOV R7,#00H
MOV R6,#01H
MOV R5,#06H
RET ; 16°C

SALTO16: CJNE A,#34,SALTO17
MOV R7,#00H
MOV R6,#01H
MOV R5,#07H
RET ; 17°C

SALTO17: CJNE A,#36,SALTO18
MOV R7,#00H
MOV R6,#01H
MOV R5,#08H
RET ; 18°C
.
.
.
.
.
.
.
asi hasta 128
SALTO172: CJNE A,#252,SALTO173
MOV R7,#01H
MOV R6,#02H
MOV R5,#05H
RET ; 126°C

SALTO173: CJNE A,#254,SALTO174
MOV R7,#01H
MOV R6,#02H
MOV R5,#06H
RET ; 127°C

SALTO174: CJNE A,#255,SALTO175
MOV R7,#01H
MOV R6,#02H
MOV R5,#07H
RET
SALTO175: RET ; 128°C


END

NOTA:para cualquira q este interesado en este proyecto con gusto le puedo dar toda la informacion para su implementacion.

Desconectado andresbalaguera

  • PIC10
  • *
  • Mensajes: 20
RE: Sensor de temperatura
« Respuesta #1 en: 25 de Abril de 2004, 11:47:00 »
Yo no le recomiendo que busque como pasar un programa para otro. Con el PIC 16f877 puede hacerlo utilizando mucho menos código con el conversor análogo - digital que viene incorporado. Primero tiene que acondicionar la señal de 0 a 5V y luego este se convierte y envía a la LCD. cualquier ayuda digame.

Desconectado khasistos

  • PIC18
  • ****
  • Mensajes: 493
RE: Sensor de temperatura
« Respuesta #2 en: 28 de Abril de 2004, 19:10:00 »
Hola
mira que facil aqui te mando un programa en picbasicplus que te entrega por el lcd los valores de tension de ingreso al ad si le conectas una tension variable de 0 a 5 te mostrara de 0 a 1023 en el display con solo agregarle cualquier sensor de temp que sea lineal su tension de salida le efectuas la correcion matematica en lo que muestra el display y listo te mando tambien el .hex es para un 16F877
cualquier informacion suplementaria mandame un privado asi me avivo pues no siempre me acuerdo lo que conteste
Suerte
khasistos
lo siento te lo mando al correo pues no se pueden linkear archivos aqui

Desconectado marmatar

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1220
    • MSTools
RE: Sensor de temperatura
« Respuesta #3 en: 29 de Abril de 2004, 08:50:00 »
kasistos... puedes subirlo aquí...

http://miarroba.com/foros/ver.php?id=256746

Un abrazo...
marmatar
Lo posible ya está hecho, entonces hagamos lo imposible - Platón

Desconectado Renato_

  • PIC10
  • *
  • Mensajes: 25
RE: Sensor de temperatura
« Respuesta #4 en: 19 de Julio de 2004, 18:49:00 »
  Pienso que lo más sencillo es utilizar el conversor ADC del PIC, es de 10 bits y su visualización por el LCD es sencilla, hay que seguir la secuencia de pasos para la configuración de ADC; por ejm Tadmín=1.6us (tiempo de conversión por bit) y T=2Tadmín ( tiempo de espera después de la conversión)

 Para estar seguros lo pueden probar primero con un potenciómetro y solo estará la rutina de ADC así hice yo y me salió.

 Para verlo en el LCD pienso hacer 3 tablas una para las decenas, otra para las unidades y otra para los decimales.
 
 Si quieren utilizar todo el rango del LM35 y con una resolución de 0.1°C se podria hacer esto. Por ejm 30.1 a 30.4 le corresponde la conversión 624, es decir cada valor de conversión del ADC representa varias temperaturas.

 Me pueden pedir los archivos si desean, saludos

Desconectado dojuca

  • PIC10
  • *
  • Mensajes: 17
RE: Sensor de temperatura
« Respuesta #5 en: 22 de Julio de 2004, 02:23:00 »
hola que tal!
estoy interesado en realizar un termometro digital con pic pero hasta el moemnto tengo muy poca informacion, quisiera que me pudieras colaborar lo mas que pse pueda sobre este tema:
dojuca@colombia.com
gracias
saludos
medellin-colombia
Escrito originalmente por Renato_
 Pienso que lo más sencillo es utilizar el conversor ADC del PIC, es de 10 bits y su visualización por el LCD es sencilla, hay que seguir la secuencia de pasos para la configuración de ADC; por ejm Tadmín=1.6us (tiempo de conversión por bit) y T=2Tadmín ( tiempo de espera después de la conversión)

 Para estar seguros lo pueden probar primero con un potenciómetro y solo estará la rutina de ADC así hice yo y me salió.

 Para verlo en el LCD pienso hacer 3 tablas una para las decenas, otra para las unidades y otra para los decimales.
 
 Si quieren utilizar todo el rango del LM35 y con una resolución de 0.1°C se podria hacer esto. Por ejm 30.1 a 30.4 le corresponde la conversión 624, es decir cada valor de conversión del ADC representa varias temperaturas.

 Me pueden pedir los archivos si desean, saludos

Desconectado JOSEFER1976

  • PIC10
  • *
  • Mensajes: 1
RE: Sensor de temperatura
« Respuesta #6 en: 03 de Diciembre de 2004, 16:26:00 »
COMO ESTA PAKO,

MI PROBLEMA RADICA EN QUE TENGO QUE ENTREGAR UN PROYECTO DE UN CIRCUITO QUE TOME  LA TEMPERTURA AMBIENTE Y  LA MUESTRE , SI PUEDE AYUDARME SE LO AGRADEZCO MUCHO.

JOSE FERNANDO OPEZ

CUCUTA, COLOMBIA

Desconectado odukec

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 174
RE: Sensor de temperatura
« Respuesta #7 en: 04 de Diciembre de 2004, 12:42:00 »
Hola..

yo realice uno.. en lenguaje c, y tiene para cambiar las escalas de centigrados a farenheit, tiene un pequeño menu para poner un rango de temperaturas y asi que el pic active algun dispositivo para calentar o enfriar (resistencia/ventilador), en el lcd se visualizan dos temperaturas ya que cuenta con dos sensores (mi proyecto asi lo requeria) pero si no colocas solo mostrara la temperatura del que este conectado (igual quitar este del programa no es dificil), lo que pasa es que no lo puedo subir y para postearlo el programa es un poquito largo, denme un medio para subirlo.. !

Chao

Desconectado gfp

  • PIC18
  • ****
  • Mensajes: 274
RE: Sensor de temperatura
« Respuesta #8 en: 04 de Diciembre de 2004, 14:49:00 »
Siempre es bueno ayudar a los compatriotas colombianos no es cierto "ODUKEC"?

Saludos compatriotas picmaniacos: Este es un programa que realizé hace buen tiempo, espero que pueda ayudarles. Me cuentan como les fué.

gfp :-)
 Bogotá, Colombia.

;CONEXIONES LCD DE DOS LINEAS:
;RC0=RS    (LCD)
;RC1=ENABLE (LCD)
;RC2=
;RC3=
;RC4=D4      (LCD)
;RC5=D5      (LCD)
;RC6=D6      (LCD)
;RC7=D7      (LCD)

;EL PIN "RW" DEL LCD SE CONECTA A TIERRA.
;CRISTAL DE 4 Mhz

   LIST P=PIC16F873
   ERRORLEVEL 1 , -301
#INCLUDE <P16F873.INC>
CUENTA   EQU   0X20
REG1   EQU   0X21
REG2   EQU   0X22
CBYTE   EQU   0X23
DT1      EQU   0x24
DT2      EQU   0x25
DT3      EQU   0X26
TACT   EQU   0X27
#DEFINE   RS      PORTC,0
#DEFINE   ENABLE   PORTC,1

   ORG   00
   GOTO   INICIO
TABLA   ADDWF   PCL,1
      RETLW   "T"
      RETLW   "E"
      RETLW   "M"
      RETLW   "P"
      RETLW   "."
      RETLW   " "
      RETLW   "A"
      RETLW   "C"
      RETLW   "T"
      RETLW   "U"
      RETLW   "A"
      RETLW   "L"
      RETLW   " "      ;12
      RETLW   0
DECO   ADDWF   PCL,1
      RETLW   "0"      
      RETLW   "1"
      RETLW   "2"
      RETLW   "3"
      RETLW   "4"
      RETLW   "5"
      RETLW   "6"
      RETLW   "7"
      RETLW   "8"
      RETLW   "9"
      RETLW   0
INICIO
      BCF      STATUS,6
      BSF      STATUS,5
      MOVLW   0X8E
      MOVWF   ADCON1
      MOVLW   0XFF
      MOVWF   TRISA
      MOVLW   0X01
      MOVWF   TRISB
      CLRF   TRISC
      MOVLW   0XC7
      MOVWF   OPTION_REG
      BCF      STATUS,5
      CLRF   PORTC
LCD_INI
      MOVLW   0X02
      CALL   CONTROL
      MOVLW   0X28
      CALL   CONTROL
      MOVLW   0X0C
      CALL   CONTROL
      MOVLW   0X06
      CALL   CONTROL
      MOVLW   0X01
      CALL   CONTROL
      CLRF   CBYTE
PUB1   MOVF   CBYTE,0
      CALL   TABLA
      CALL   DATO
      INCF   CBYTE,1
      MOVLW   .12
      XORWF   CBYTE,0
      BTFSS   STATUS,2
      GOTO   PUB1
TEMPERATURA
      MOVLW   0XC0
      CALL   CONTROL
      CALL   ADC
      MOVF   TACT,0
      CALL   DIV
      MOVLW   0X10
      CALL   CONTROL
      MOVLW   0X10
      CALL   CONTROL
      MOVLW   0X10
      CALL   CONTROL
      MOVLW   0X10
      CALL   CONTROL
      MOVLW   0X10
      CALL   CONTROL
      GOTO   TEMPERATURA

DIV      MOVWF   DT1      ;DATO A SEPARAR
      CLRF   DT2
      CLRF   DT3
OPERA1   MOVLW   .100
RESTAR1   SUBWF   DT1,1
      BTFSS   STATUS,0   ;DESBORDÓ?
      GOTO   SUMAR1      ;SI
      INCF   DT3,1
      GOTO   RESTAR1
SUMAR1   MOVLW   .100
      ADDWF   DT1,1
OPERA   MOVLW   .10
RESTAR   SUBWF   DT1,1
      BTFSS   STATUS,0   ;DESBORDÓ?
      GOTO   SUMAR      ;SI
      INCF   DT2,1      ;NO
      GOTO   RESTAR
SUMAR   MOVLW   .10
      ADDWF   DT1,1
      MOVF   DT3,0
      CLRF   PCLATH
      CALL   DECO
      CALL   DATO
      MOVF   DT2,0
      CLRF   PCLATH
      CALL   DECO
      CALL   DATO
      MOVF   DT1,0
      CLRF   PCLATH
      CALL   DECO
      CALL   DATO
      MOVLW   .223
      CALL   DATO
      MOVLW   "C"
      CALL   DATO
      RETURN
;************************
ADC      MOVLW   0X81
      MOVWF   ADCON0
      CALL   RETLCD
      CALL   RETLCD
      CALL   RETLCD
      BSF      ADCON0,2
CONV   BTFSC   ADCON0,2
      GOTO   CONV
      BCF      PIR1,6
      BCF      STATUS,6
      BSF      STATUS,5
      MOVF   ADRESL,0
      BCF      STATUS,6
      BCF      STATUS,5
      MOVWF   TACT
      BCF      STATUS,0
      RRF      TACT,1
      MOVLW   .2
      ADDWF   TACT,1
      RETURN
RETLCD
      MOVLW   .3
      MOVWF   CUENTA
SETUP   MOVLW   0xFF
      MOVWF   REG2
DECRE   DECFSZ   REG2,1
      GOTO   DECRE
      DECFSZ   CUENTA,1
      GOTO   SETUP
      RETURN
RETARDO   MOVLW   .240
      MOVWF   CUENTA
LIMPIA   CLRF   TMR0
      BCF      INTCON,2
RET      BTFSS   INTCON,2
      GOTO   RET
      INCFSZ   CUENTA,1
      GOTO   LIMPIA
      RETURN
CONTROL   BCF     RS
      GOTO    DATO2
DATO   BSF     RS
DATO2   BSF     ENABLE
      MOVWF   REG1
      MOVLW   0x0F
      ANDWF   PORTC,1
      MOVF   REG1,0
      ANDLW   0XF0
      IORWF   PORTC,1
      CALL   RETLCD
      BCF      PORTC,1
      CALL   RETLCD
      BSF      PORTC,1
      MOVLW   0x0F
      ANDWF   PORTC,1
      SWAPF   REG1,0
      ANDLW   0xF0
      IORWF   PORTC,1
      CALL   RETLCD
      BCF      PORTC,1
      CALL   RETLCD
      RETURN
   END