Buenas amigos, disculpen que mi primer post acá en el foro sea para preguntar algo que supongo que esta mas que rayado pero la verdad no logro entender! Bueno este semestre en la universidad acaban de cambiar el pensum y en la materia que veo ahora estan dando PIC's. Estoy trabajando con el 887 como indico en el titulo. Sin embargo la teoría va desfasada con la practica, es decir, teoricamente no hemos visto nada usando el conversor A/D pero ya en el laboratorio tenemos un diseño propuesto que abarca esta area.
El proyecto es un sensro de temperatura usando LM35 para controlar unos motores DC.
Por ahora lo que he estado haciendo es leer, leer y leer sobre el conversor y siempre leo lo mismo en todos lado... He revisado de este foro varios temas que tratan sobre el PIC, conversor y lm35 sin embargo no logro conseguir una conversion T-T.
El ejercicio que estoy haciendo en estos instantes es configurar la pata RA0 como entrada analogica, aca conecto el LM35 y vario la temperatura. En el codigo, configuro el conversor y lo que hago es guadar lo que esta en ADRESL y ADRESH a unas variables que cree para tal fin, bueno eso es lo que me dice la logica de todo lo que he leido jaja. sin embargo en el proteus corro la simiulacion pero mis variables nunca llegan a obtener un valor =( siempre estan en 0 a pesar de que varie "la temperatura"
Ese es el codigo que estoy trabajando en el assembler y aca el circuito en proteus.
alli en la imagen se aprecia el valor que tiene mi direccion 20h y 21h que son lase, como les comente, variables que estoy usando para guardar el valor de adresl y adresh (ese 1e salio cuando conecte una fuente variable a esa entrada, como no borro el puerto quedo alli permanente, supongo jaja)
Bueno el lm35 bota una relacion de 10m/grados asi que el voltaje maximo que obtengo es de 1.5 v
En fin por ahora lo que quiero es aprender a usar este conversor, una vez que lo domine ya todo me sera mas facil pues tengo ya una idea de lo que hacer.
Me gustaria me dijeran si estoy enfocando mal el conversor y bueno si es posible me den algunas ideas de como poder configurar un conversor a/d satisfactoriamente, si es posible! Muchas gracias
El proyecto es un sensro de temperatura usando LM35 para controlar unos motores DC.
Por ahora lo que he estado haciendo es leer, leer y leer sobre el conversor y siempre leo lo mismo en todos lado... He revisado de este foro varios temas que tratan sobre el PIC, conversor y lm35 sin embargo no logro conseguir una conversion T-T.
El ejercicio que estoy haciendo en estos instantes es configurar la pata RA0 como entrada analogica, aca conecto el LM35 y vario la temperatura. En el codigo, configuro el conversor y lo que hago es guadar lo que esta en ADRESL y ADRESH a unas variables que cree para tal fin, bueno eso es lo que me dice la logica de todo lo que he leido jaja. sin embargo en el proteus corro la simiulacion pero mis variables nunca llegan a obtener un valor =( siempre estan en 0 a pesar de que varie "la temperatura"
Código:
LIST p=16F887
INCLUDE <P16F887.inc>
CBLOCK 20H
RESULTHI
RESULTLO
adc_cont
ENDC
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
INICIO
banco0
movlw b'01000001'
movwf ADCON0
banco1
movlw b'10000000'
movwf ADCON1
movlw b'11111111'
movwf TRISA
banco3
movlw b'00000001'
movwf ANSEL
banco0
movlw .35 ; Espera de aprox. 20uSeg
movwf adc_cont
decfsz adc_cont,1
goto $-1
bsf ADCON0,GO ;Comienza la conversion
btfsc ADCON0,GO ;pregunta si la conversion esta hecha
GOTO $-1 ;No, pregunta de nuevo
banco0
movlw ADRESH ;Lee los 2 bits superiores
movwf RESULTHI ;guarda en la variable
banco1
movlw ADRESL ;lee los 8 bits mas altos
movwf RESULTLO ;guarda en variables
goto INICIO
end
Ese es el codigo que estoy trabajando en el assembler y aca el circuito en proteus.
alli en la imagen se aprecia el valor que tiene mi direccion 20h y 21h que son lase, como les comente, variables que estoy usando para guardar el valor de adresl y adresh (ese 1e salio cuando conecte una fuente variable a esa entrada, como no borro el puerto quedo alli permanente, supongo jaja)
Bueno el lm35 bota una relacion de 10m/grados asi que el voltaje maximo que obtengo es de 1.5 v
En fin por ahora lo que quiero es aprender a usar este conversor, una vez que lo domine ya todo me sera mas facil pues tengo ya una idea de lo que hacer.
Me gustaria me dijeran si estoy enfocando mal el conversor y bueno si es posible me den algunas ideas de como poder configurar un conversor a/d satisfactoriamente, si es posible! Muchas gracias