Autor Tema: Conversor A/D  (Leído 6772 veces)

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

Desconectado ErnestAl

  • PIC10
  • *
  • Mensajes: 37
Conversor A/D
« en: 17 de Mayo de 2007, 10:29:22 »
Buenas!!!! estoy empezando a aumentar la dificultad de mis programas, ahora estoy con el C/AD y tengo una duda.
 Simulando en proteus para un voltaje de 2.5V el resultado de la conversion es '01111111' en cambio si calculo el valor de 2.5V apartir de la resolucion si trabajo con 8bits tengo un valor de '10000000'
 ¿donde esta el fallo?,aqui teneis mi ASM
            list p=16F877
            radix   hex
            #include <p16f877.inc>  ;incluimos la libreria del PIC 16F877
;**************ZONA DE ETIQUETAS*****************
            temp   equ      0x20
            depo   equ      0x21
            aux      equ      0x23

;************************************************
            org      0x00
            goto   inicio
            org      0x05
;*************************************************
;*****************CONFIGURACION DEL CONTROLADOR

inicio         
;*******************definicion variables***************************
            movlw   b'10000000'
            movwf   depo
;*********************************************************
            bsf      STATUS,RP0;Acceso al banco 1
            bcf      STATUS,RP1
   ;************PUERTOS****************
            movlw      0xFF
            movwf      TRISA ;El puerto A entradas   
            bsf         TRISC,5; START
            CLRF      TRISB
         ;   bcf         TRISB,0 ;Bomba de llenado
         ;   bcf         TRISB,1 ;STOP BOMBA Extractora
         ;   bcf         TRISB,2 ;POZO BAJO MINIMOS
         ;   bcf         TRISB,3 ;POZO SOBREPASA LIMITES
;*******************CONFIGURACION DEL TIMER0****************
            movlw      b'00000111';configuramos el TMRo con preescalod de 256
              movwf      OPTION_REG
;***********************************************************
;*************CONFIGURACION DEL C/AD************************
            movlw      b'00000010';justificamos a la Izquierda
            movwf      ADCON1;y todos los pines del PORTA como Analogicos
;************************************************************
            bcf         STATUS,RP0
            bcf         STATUS,RP1 ;vuelvo al banco0
;************************************************************
      ;****CARACTERISTICAS DEL C/AD****************
            movlw      b'01000001';selecciono un Tad de 8*Tosc
            movwf      ADCON0   ;y a la espera de empezar conversion
;*^**********************PROGRAMA***************************
main         clrf      PORTA
            clrf      PORTB   
            call      muestra
            call      retardo
            goto      main
muestra         btfsc      PORTC,5
            goto      muestra
 bucle         btfss       INTCON,T0IF
              goto       bucle ;Esperar que el timer0 desborde
            bcf       INTCON,T0IF ;Limpiar el indicador de desborde
            bsf       ADCON0,GO ;Empezar la conversion A/D
espera         btfsc       ADCON0,GO ;ADCON0 es 0? (la conversion esta completa?)
            goto      espera       ;No, ir _espera
            movf       ADRESH,W ;Si, W=ADRESH
            ;movwf      depo
            subwf      depo,w
            btfss      STATUS,C
            goto      menor
            btfss      STATUS,Z
            goto      mayor
            goto      igual   
         
            return

igual         bsf      PORTB,1
            return
mayor         bsf      PORTB,2
            return
menor         bsf      PORTB,0
            return

;**************RETARDO PARA MOSTRAR EL VALOR
retardo      
            movlw      D'15'   
             movwf      temp
            clrf      TMR0
            bcf         INTCON,T0IF
   retardo_2   btfss      INTCON,T0IF
            goto      retardo_2
             decfsz      temp,f
            goto      retardo_3
            return
   retardo_3   bcf         INTCON,T0IF
            goto      retardo_2



end

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Conversor A/D
« Respuesta #1 en: 17 de Mayo de 2007, 10:59:20 »
haber apliquemos la formula para los siguientes datos:
Vref+ = 5V
Vref - = 0V
(Vref+) - (Vref-) = 5V

      (Vref+) - (Vref-)             =    5     = 0.004887.... = k
maxima resolución de 10bits      1023 

listo, ahora para 2.5V que valor arrojara el conversor?
hacemos: 2.5/k = d' 511.5 ' = 0X1FF
ordenando datos para una justificación a la izquierda:
01 1111  1111

ADRESH = 0111 1111 = 0X7F
ADRESL = 11

como has calculado amigo ernestal? porq no veo algu ndetalle erroneo en tu codigo y ademas el resultado te sale como en el ejemplo.  :-/ esperamos tu respuesta  :-)
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado ErnestAl

  • PIC10
  • *
  • Mensajes: 37
Re: Conversor A/D
« Respuesta #2 en: 17 de Mayo de 2007, 16:04:20 »
yo lo he calculado para una maxima resolucion de 8bits!!!!!!!!!!!acabo de repasar mis calculos, si lo pongo tal y como tu dices sale clavado!!!!!!


Muchisimas gracias!!!!
 
 Pd: En cuanto funcione pasare a usart la USART para almacenar los valores en la eeprom, espero llegar algun dia a ser como ustedes!!!!!!!!!!

 GRACIAS

Desconectado ErnestAl

  • PIC10
  • *
  • Mensajes: 37
Re: Conversor A/D
« Respuesta #3 en: 17 de Mayo de 2007, 20:08:59 »
la precipitacion es el principal causante del error.....me acabo de dar cuenta que colocar un '0' a la izquierda o a la derecha en ensamblador te puedo dar mas de un dolor de cabeza!! :) :) :)

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Conversor A/D
« Respuesta #4 en: 18 de Mayo de 2007, 01:24:23 »
seeeeeeeeeee animo amigo veo que tienes la materia prima para esta profesion!!!!  :-/ :-/
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado Enigma

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
    • www.toroscoleados.com
Re: Conversor A/D
« Respuesta #5 en: 26 de Julio de 2007, 12:49:23 »
Hola!!!!! aprovechandome de este mensaje..... también ando en las mismas, configurando e CAD del PIC 16F877A, pero es que tengo una serie de dudas ya que no manejo muy bien el funcionamiento del mismo... Haber si entendi, el valor analogico que entra por el pic, se multiplica siempre por esa constante K, que describio micro_cadaver...? siempre se va a hacer esa división dentro del pic...????.... Aja, y que pasa si justifico a la derecha????..... Estoy haciendo un medidor de nivel de un tanque, pero berro!!! :? se me hace dificil, porque de pana que no entiendo lo de la resolución esa de 8 bits.... Por fa, si me explican un poquito creo que lo entenderé.... jejejeje Gracias!!!!!


otra cosita!!!

haber apliquemos la formula para los siguientes datos:
Vref+ = 5V
Vref - = 0V
(Vref+) - (Vref-) = 5V

      (Vref+) - (Vref-)             =    5     = 0.004887.... = k
maxima resolución de 10bits      1023 

listo, ahora para 2.5V que valor arrojara el conversor?
hacemos: 2.5/k = d' 511.5 ' = 0X1FF
ordenando datos para una justificación a la izquierda:
01 1111  1111

ADRESH = 0111 1111 = 0X7F
ADRESL = 11

como has calculado amigo ernestal? porq no veo algu ndetalle erroneo en tu codigo y ademas el resultado te sale como en el ejemplo.   esperamos tu respuesta 


Chamos me llamaran tarada, o no se pero de pana, este temita del conversor se me ha hecho peluo!!!, Porque d'511.5' = 0X1FF, como sacaste eso???? lo he sacado y no me da....??? que has hecho......?????
Atte: Enigma... La llanerita de Guayana :P
« Última modificación: 26 de Julio de 2007, 14:09:17 por Enigma »
No hay nada como cabalgar en la sabana y sentir la brisa con olor a mastranto, bosta y ganado. ¡¡O Fortuna, velut luna, status variabilis, semper crescis, aut decrescis, vita detestabili!! Que viva el coleo, la musica LLanera y la gótica!

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Conversor A/D
« Respuesta #6 en: 26 de Julio de 2007, 15:47:51 »
Enigma, para el 16F877A siempre habrá resolución de 10 bits, lo que sucede es que con la justificación, que no es mas que hacer LSB o MSB los 10 bits del resultado del cad, puedes aproximar dicho resultado a 8 bits obviando un par de bits lsb, que sucede cuando justificas a la izquierda.


LSB= bit menos significativo
MSB= bit mas significativo
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Conversor A/D
« Respuesta #7 en: 26 de Julio de 2007, 19:17:53 »
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado microcom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 568

Desconectado Enigma

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
    • www.toroscoleados.com
Re: Conversor A/D
« Respuesta #9 en: 27 de Julio de 2007, 10:49:49 »
Gracias mis amiguitos del foro por los links, por lo menos estoy más orientada que antes.... Pero mi duda, inquietud, preocupación sigue carcomiendo mi cerebro!!!! :(..... Como hago con los benditos decimales de la lectura analogica....??? es decir, como en el ejemplo que está haya abajo... entran 2.5 V.... y sale el 511,5 decimal y el 0x1ff hexa.... donde queda el bendito .5????? como hago para representar ese bendito decimal en BCD..??? es decir, se hace por punto flotante o algo así?????

Y otra cosita y por fa corrijanme si estoy mal.... el CAD del pic hace esto...?
1) Entra la señal analogica
2) La toma y la covierte a digital...
3) luego esa digital la lleva a binario
4) y por ultimo la bota por el pin de salida....???
No hay nada como cabalgar en la sabana y sentir la brisa con olor a mastranto, bosta y ganado. ¡¡O Fortuna, velut luna, status variabilis, semper crescis, aut decrescis, vita detestabili!! Que viva el coleo, la musica LLanera y la gótica!

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Conversor A/D
« Respuesta #10 en: 27 de Julio de 2007, 12:00:52 »
cual pin de salida?

el A/D luego de tomar las muestras del valor analogo que esta en el respectivo canal (por ejemplo RA0) lo carga en los registros de captura de su módulo , ADRESL y ADRESH , y una vez ahi ya están en binario o digital o hezadecimal o decimal. Pero si lo quieres pasar a un LCD tiene que convertir ese valor de los registros a caracteres ASCII.
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Conversor A/D
« Respuesta #11 en: 27 de Julio de 2007, 12:14:03 »
enigma, ya creo entender tu duda. el resultado del CAD no es un flotante, es el número de pasos al cuál ha deducido la conversión en representación digital de una señal de naturaleza analógica. Por eso es que ves que usan ecuaciones, porque con esa ecuación es que tu deduces cuál es su valor correspondiente.

si quieres por ejemplo mostrarle al mundo (fuera del pic) una tensión de entrada ANx entonces debes usar esos calculos para  llevar esos pasos al sistema que nosotros entendemos mejor: el decimal

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado Enigma

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 609
    • www.toroscoleados.com
Re: Conversor A/D
« Respuesta #12 en: 27 de Julio de 2007, 13:15:12 »
 :8}  :8}.... Dios que pesado es este conversor... no me cae para nada....Dios mio como jo... que strees, hice un tremendo ascensor que hasta hablaba y no puedo hacer la conversión de un miserable voltaje analogico a su nivel de altura correspondiente!!! o peor todavia ni siquiera de análogico lo se pasar a bcd.... que suerte tan triste la mia...  :8}  :8}

Gracias por su valioso esfuerzo muchacho.... son los mejores!!!!!! :mrgreen:

Atte: Enigma... La llanerita de Guayana  :P  :8}
No hay nada como cabalgar en la sabana y sentir la brisa con olor a mastranto, bosta y ganado. ¡¡O Fortuna, velut luna, status variabilis, semper crescis, aut decrescis, vita detestabili!! Que viva el coleo, la musica LLanera y la gótica!

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Conversor A/D
« Respuesta #13 en: 27 de Julio de 2007, 13:21:40 »
no te rindas llanerita!!!!!!!!!!!!!!
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado microcom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 568
Re: Conversor A/D
« Respuesta #14 en: 27 de Julio de 2007, 15:51:12 »
Enigma todo bien.
que mas inquitudes tienes?

por que no utilizas la herramienta proteus para  que simules tu programa  te sirvira para analizar los cambios en tu programa.
saludos


 

anything