Autor Tema: Duda con ADC 24 Bits  (Leído 140 veces)

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

Desconectado Pinolillo16

  • PIC16
  • ***
  • Mensajes: 249
Duda con ADC 24 Bits
« en: 13 de Julio de 2018, 18:15:28 »
Que tal colegas. Estoy haciendo un medidor de corriente de precisión. Y para lograrlo quiero usar un ADC de 24 Bits. Como no tenia herramientas a la mano simule, usando una R Shunt de 0.02 Ohms seguido de un amplificador ina138, dicha señal la coloco a la entrada del ADC LTC2440. Todos estos elementos los manejo en proteus, el diagrama es el siguiente:

adc24b.PNG
*adc24b.PNG
(91.98 kB . 1159x743 - visto 51 veces)


En primera instancia, tenia un LTC2400 que funciona de manera similar. Pero una vez que lo monte en protoboard solo me regresaba ceros. Pensando en que era quizas el elemento compre el mismo de proteus pero en simulacion me esta dando datos y en fisico no me das mas que ceros?

El codigo es:

Código: ASM
  1.         LIST p=18F46k22
  2.         #INCLUDE <p18f46k22.inc>
  3.        
  4.         CONFIG  IESO        = OFF
  5.         CONFIG  FCMEN       = OFF
  6.         CONFIG  PRICLKEN    = OFF
  7.         CONFIG  PLLCFG      = ON
  8.         CONFIG  FOSC        = INTIO67
  9.         CONFIG  PWRTEN      = OFF
  10.         CONFIG  BOREN       = OFF
  11.         CONFIG  BORV        = 285
  12.         CONFIG  WDTEN       = OFF
  13.         CONFIG  WDTPS       = 1
  14.         CONFIG  CCP2MX      = PORTC1            ;B3
  15.         CONFIG  PBADEN      = OFF
  16.         CONFIG  CCP3MX      = PORTB5            ;C6
  17.         CONFIG  HFOFST      = OFF
  18.         CONFIG  T3CMX       = PORTC0            ;B5
  19.         CONFIG  P2BMX       = PORTC0            ;B5
  20.         CONFIG  MCLRE       = INTMCLR
  21.         CONFIG  STVREN      = OFF
  22.         CONFIG  LVP         = OFF
  23. ;       CONFIG  XINST       = OFF               ;DUDA
  24.         CONFIG  DEBUG       = OFF
  25.         CONFIG  CP0         = OFF
  26.         CONFIG  CP1         = OFF
  27.         CONFIG  CP2         = OFF
  28.         CONFIG  CP3         = OFF
  29.         CONFIG  CPB         = OFF
  30.         CONFIG  CPD         = OFF
  31.         CONFIG  WRT0        = OFF
  32.         CONFIG  WRT1        = OFF
  33.         CONFIG  WRT2        = OFF
  34.         CONFIG  WRT3        = OFF
  35.         CONFIG  WRTC        = OFF
  36.         CONFIG  WRTB        = OFF
  37.         CONFIG  WRTD        = OFF
  38.         CONFIG  EBTR0       = OFF
  39.         CONFIG  EBTR1       = OFF
  40.         CONFIG  EBTR2       = OFF
  41.         CONFIG  EBTR3       = OFF
  42.         CONFIG  EBTRB       = OFF
  43.  
  44.         CBLOCK  0x000
  45.         BSR_TEMP
  46.         W_TEMP
  47.         STATUS_TEMP
  48.         W_TEMP_2
  49.  
  50.         AUX_SPI
  51.         LTC_B4
  52.         LTC_B3
  53.         LTC_B2
  54.         LTC_B1
  55.         VH
  56.         VL
  57.        
  58.         ENDC
  59.  
  60.  
  61.         ORG     0x000
  62.         GOTO    INICIO
  63.         ORG     0x008
  64.         GOTO    ALTA_PRIORIDAD
  65.         ORG     0x018
  66. BAJA_PRIORIDAD
  67.  
  68. FIN_INTER
  69.         RETFIE  ;FAST                   ; REGRESO DE INTERRUPCIÓN
  70. ALTA_PRIORIDAD                          ; ALTA PRIORIDAD INTER
  71.         MOVWF   W_TEMP_2                ; AL ENTRAR GUARDO DATOS EN W
  72. FIN_INTER_ALTA                          ; RUTINA DE INTERRUPCIÓN ALTA PRIORIDAD
  73.         MOVF    W_TEMP_2,W              ; RESTAURO VALOR DE W2 A W
  74.         RETFIE                          ; REGRESO DE INTERRUPCIÓN
  75.  
  76. INICIO
  77. ;*********************************************************************************
  78. ;**************************CONFIGURACIÓN DEL OSCILADOR ***************************
  79. ;*********************************************************************************
  80.         BSF     OSCCON,IRCF2            ; CONFIGURO EL OSCILADOR INTERNO
  81.         BSF     OSCCON,IRCF1            ; A 16MHZ
  82.         BSF     OSCCON,IRCF0            ; CON LOS BITS IRCF
  83.         BSF     OSCTUNE,PLLEN           ; PRENDO EL PLL X4 PARA ALCANZAR 64MHZ
  84. ;*********************************************************************************
  85. ;**************************CONFIGURACIÓN DE LOS PUERTOS***************************
  86. ;*********************************************************************************
  87.         CLRF    ANSELA                  ; LIMPIO ANSELA ADCs EN EL PUERTO A
  88.         CLRF    ANSELB                  ; LIMPIO ANSELA ADCs EN EL PUERTO B
  89.         CLRF    ANSELC                  ; LIMPIO ANSELA ADCs EN EL PUERTO C
  90.         CLRF    ANSELD                  ; LIMPIO ANSELA ADCs EN EL PUERTO D
  91.         CLRF    ANSELE                  ; LIMPIO ANSELA ADCs EN EL PUERTO E
  92.         CLRF    LATA                    ; LIMPIO LATCH CORRESPONDENTE AL PUERTO A
  93.         CLRF    LATB                    ; LIMPIO LATCH CORRESPONDENTE AL PUERTO B
  94.         CLRF    LATC                    ; LIMPIO LATCH CORRESPONDENTE AL PUERTO C
  95.         CLRF    LATD                    ; LIMPIO LATCH CORRESPONDENTE AL PUERTO D
  96.         CLRF    LATE                    ; LIMPIO LATCH CORRESPONDENTE AL PUERTO E
  97.         MOVLW   B'00000000'             ; ASIGNO ENTRADAS/SALIDAS
  98.         MOVWF   TRISA                   ; CONFIGURACIÓN I/O PUERTO A
  99.         MOVLW   B'00000000'             ; ASIGNO ENTRADAS/SALIDAS
  100.         MOVWF   TRISB                   ; CONFIGURACIÓN I/O PUERTO B
  101.         MOVLW   B'00000000'
  102.         MOVWF   TRISC                   ; CONFIGURACIÓN I/O PUERTO C
  103.         MOVLW   B'00000000'
  104.         MOVWF   TRISD                   ; CONFIGURACIÓN I/O PUERTO D
  105.         CLRF    TRISE                   ; CONFIGURACIÓN I/O PUERTO E
  106.  
  107.  
  108.        
  109. ;*********************************************************************************
  110. ;**************************CONFIGURACIÓN DE RETARDOS *****************************
  111. ;*********************************************************************************
  112.         CALL    CONFIG_RETARDO          ; INICIO EL TIMER ASOCIADO A LOS RETARDOS
  113.         CALL    INI_LCD                 ; INICIALIZO LCD
  114. ;*********************************************************************************
  115. ;***********************CONFIGURACIÓN DEL MODULO MSSP*****************************
  116. ;*********************************************************************************
  117.         CLRF    SSP1STAT
  118.         MOVLW   B'00110010'
  119.         MOVWF   SSP1CON1
  120.         BSF     TRISC,4
  121.        
  122.         BSF     TRISC,6
  123. ;**********************************************************************************
  124. ;************************ MENSAJES DE BIENVENIDA **********************************
  125. ;**********************************************************************************
  126.         CALL CONF_ADC
  127.         CALL    M1_LTC
  128. ;       CALL    INI_LTC
  129.        
  130.         #DEFINE BUSYP PORTC,6
  131. PRINCIPAL
  132.         BSF     LATB,6
  133.  
  134.        
  135.         BTFSC   BUSYP
  136.         GOTO    PRINCIPAL
  137.         BCF     LATD,2
  138.         CALL    SPI_READ
  139.         MOVWF   LTC_B4
  140.         CALL    SPI_READ
  141.         MOVWF   LTC_B3
  142.         CALL    SPI_READ
  143.         MOVWF   LTC_B2
  144.         CALL    SPI_READ
  145.         MOVWF   LTC_B1
  146.         BSF     LATD,2
  147.        
  148.         CALL    LCD_L3
  149.         MOVLW   ' '
  150.         CALL    ENVIAR_DATO
  151.         MOVF    LTC_B4,W
  152.         CALL    ENVIA_BYTE
  153.         MOVLW   ' '
  154.         CALL    ENVIAR_DATO
  155.         MOVF    LTC_B3,W
  156.         CALL    ENVIA_BYTE
  157.         MOVLW   ' '
  158.         CALL    ENVIAR_DATO
  159.  
  160.         CALL    LCD_L4
  161.         MOVLW   ' '
  162.         CALL    ENVIAR_DATO
  163.         MOVF    LTC_B2,W
  164.         CALL    ENVIA_BYTE
  165.         MOVLW   ' '
  166.         CALL    ENVIAR_DATO
  167.         MOVF    LTC_B1,W
  168.         CALL    ENVIA_BYTE
  169.         MOVLW   ' '
  170.         CALL    ENVIAR_DATO
  171.        
  172.  
  173.         CALL    LCD_L2
  174.         MOVLW   'A'
  175.         CALL    ENVIAR_DATO
  176.         MOVLW   'D'
  177.         CALL    ENVIAR_DATO
  178.         MOVLW   'C'
  179.         CALL    ENVIAR_DATO
  180.         MOVLW   '='
  181.         CALL    ENVIAR_DATO
  182.         CALL    CON_CH0
  183.         ;MOVF   VH,W
  184.         ;CALL   ENVIA_BYTE
  185.        
  186.         MOVLW   '0'
  187.         BTFSC   VH,1
  188.         MOVLW   '1'
  189.         CALL    ENVIAR_DATO
  190.        
  191.         MOVLW   '0'
  192.         BTFSC   VH,0
  193.         MOVLW   '1'
  194.         CALL    ENVIAR_DATO
  195.        
  196.        
  197.         MOVF    VL,W   
  198.         CALL    ENVIA_BYTE
  199.        
  200.        
  201.         CALL    RET_100ms
  202.         BCF     LATB,6
  203.         CALL    RET_100ms
  204.         GOTO    PRINCIPAL               ; LOOP PRINCIPAL
  205.  
  206.  
  207. SPI_READ
  208.         BCF     PIR1,SSP1IF
  209.         CLRF    SSP1BUF
  210. SPSW
  211.         BTFSS   PIR1,SSP1IF
  212.         GOTO    SPSW
  213.         MOVF    SSP1BUF,W
  214.         RETURN
  215. CON_CH0
  216.         BSF     ADCON0,ADON
  217.         BSF     ADCON0,GO
  218. PROCESO
  219.         BTFSC   ADCON0,GO
  220.         GOTO    PROCESO
  221.         MOVFF   ADRESH,VH
  222.         MOVFF   ADRESL,VL
  223.         RETURN   
  224. CONF_ADC
  225.         MOVLW   B'10001110'             ; JUSTIFICADO A LA IZQUIERDA
  226.         MOVWF   ADCON2
  227.         MOVLW   B'00000100'
  228.         MOVWF   ADCON1
  229.         MOVLW   B'00000000'             ; VAMOS A SELECCIONAR EL ADC 0 Y HABILITAR EL PUERTO DE CONVERSIÓN
  230.         MOVWF   ADCON0
  231.         BSF     TRISA,0
  232.         BSF     ANSELA,ANSA0            ;CONFIGURAMOS LA ENTRADA A0 PARA LEERLA
  233.         RETURN
  234.        
  235. M1_LTC
  236.         CALL    LCD_L1
  237.         CALL    MENSAJE_LTC
  238.         RETURN
  239. ;**********************************************************************************
  240. ;************************ RUTINAS DE ENVIO DE MENSAJES ****************************
  241. ;**********************************************************************************
  242. MENSAJE_LTC
  243.         MOVLW   UPPER(LTC)              ; DIRECCIÓN UPPER MENSAJE
  244.         MOVWF   TBLPTRU                 ; LO MUEVO A LA DIRECCIÓN UPPER DE LA TABLA
  245.         MOVLW   HIGH(LTC)               ; DIRECCION H DEL MENSAJE
  246.         MOVWF   TBLPTRH                 ; LO MUEVO A DIRECCIÓN H DE LA TABLA
  247.         MOVLW   LOW(LTC)                ; DIRECCION L DEL MENSAJE
  248.         MOVWF   TBLPTRL                 ; LO MUEVO A DIRECCION L DE LA TABLA
  249.         GOTO    SENDING_TEXT            ; ME DIRIJO A MANDAR LOS CARACTERES    
  250. MENSAJE_AE3
  251.         MOVLW   UPPER(AE3)              ; DIRECCIÓN UPPER MENSAJE
  252.         MOVWF   TBLPTRU                 ; LO MUEVO A LA DIRECCIÓN UPPER DE LA TABLA
  253.         MOVLW   HIGH(AE3)               ; DIRECCION H DEL MENSAJE
  254.         MOVWF   TBLPTRH                 ; LO MUEVO A DIRECCIÓN H DE LA TABLA
  255.         MOVLW   LOW(AE3)                ; DIRECCION L DEL MENSAJE
  256.         MOVWF   TBLPTRL                 ; LO MUEVO A DIRECCION L DE LA TABLA
  257.         GOTO    SENDING_TEXT            ; ME DIRIJO A MANDAR LOS CARACTERES
  258. MENSAJE_AE2
  259.         MOVLW   UPPER(AE2)              ; DIRECCIÓN UPPER MENSAJE
  260.         MOVWF   TBLPTRU                 ; LO MUEVO A LA DIRECCIÓN UPPER DE LA TABLA
  261.         MOVLW   HIGH(AE2)               ; DIRECCION H DEL MENSAJE
  262.         MOVWF   TBLPTRH                 ; LO MUEVO A DIRECCIÓN H DE LA TABLA
  263.         MOVLW   LOW(AE2)                ; DIRECCION L DEL MENSAJE
  264.         MOVWF   TBLPTRL                 ; LO MUEVO A DIRECCION L DE LA TABLA
  265.         GOTO    SENDING_TEXT            ; ME DIRIJO A MANDAR LOS CARACTERES
  266. MENSAJE_AE1
  267.         MOVLW   UPPER(AE1)              ; DIRECCIÓN UPPER MENSAJE
  268.         MOVWF   TBLPTRU                 ; LO MUEVO A LA DIRECCIÓN UPPER DE LA TABLA
  269.         MOVLW   HIGH(AE1)               ; DIRECCION H DEL MENSAJE
  270.         MOVWF   TBLPTRH                 ; LO MUEVO A DIRECCIÓN H DE LA TABLA
  271.         MOVLW   LOW(AE1)                ; DIRECCION L DEL MENSAJE
  272.         MOVWF   TBLPTRL                 ; LO MUEVO A DIRECCION L DE LA TABLA
  273.         GOTO    SENDING_TEXT            ; ME DIRIJO A MANDAR LOS CARACTERES    
  274.  
  275. SENDING_TEXT
  276.         TBLRD*+                         ; LEO TABLA E INCREMENTO EN UNO LA DIRECCION DESPES DE LEER    
  277.         MOVF    TABLAT,W                ; MOVEMOS EL REGISTRO TBLAT A W PARA LEER EL DATO
  278.         BTFSS   STATUS,Z                ; PREGUNTO SI YA FUE CERO AL VALOR PARA SALIR
  279.         BRA             TEXTO           ; SI NO FUE ASI NOS DIRIGIMOS A ENVIAR A LA LCD EL DATO OBTENIDO
  280.         RETURN                          ; LLEGAMOS A ESTE PUNTO CUANDO YA ENCONTRAMOS EL 0X00 DE LA TABLA
  281. TEXTO  
  282.         MOVF    TABLAT,W                ; MOVEMOS EL REGISTRO TABLAT A W
  283.         CALL    ENVIAR_DATO             ; LO ENVIAMOS A LA LCD
  284.         BRA     SENDING_TEXT            ; SEGUIMOS LEYENDO EL SIGUIENTE DATO DE LA TABLA
  285. SENDING_BAR
  286.         TBLRD*+                         ; LEO TABLA E INCREMENTO EN UNO LA DIRECCION DESPES DE LEER    
  287.         MOVF    TABLAT,W                ; MOVEMOS EL REGISTRO TBLAT A W PARA LEER EL DATO
  288.         BTFSS   STATUS,Z                ; PREGUNTO SI YA FUE CERO AL VALOR PARA SALIR
  289.         BRA     TEXTOB                  ; SI NO FUE ASI NOS DIRIGIMOS A ENVIAR A LA LCD EL DATO OBTENIDO
  290.         RETURN                          ; LLEGAMOS A ESTE PUNTO CUANDO YA ENCONTRAMOS EL 0X00 DE LA TABLA
  291. TEXTOB 
  292.         MOVF    TABLAT,W                ; MOVEMOS EL REGISTRO TABLAT A W
  293.         CALL    ENVIAR_DATO             ; LO ENVIAMOS A LA LCD
  294.         CALL    RET_100ms               ; RETARDO 100ms
  295.         CALL    RET_100ms               ; RETARDO 100ms
  296.         BRA     SENDING_BAR             ; SEGUIMOS LEYENDO EL SIGUIENTE DATO DE LA TABLA
  297. ;**********************************************************************************
  298. ;************************ MENSAJES PARA LCD EN TABLAS *****************************
  299. ;**********************************************************************************
  300.  
  301.         LTC:        DATA "  MONITOR CORRIENTE ",0X00
  302.  
  303.              
  304.  
  305.        
  306.         #INCLUDE<RETARDOS.INC>
  307.         #INCLUDE<LCD_4BIT.INC>
  308.         ;#INCLUDE<LTC2400.INC> 
  309.        
  310.         END    

Quiero saber si alguien podria orientarme, sobre lo que esta pasando.

He montado el circuito al menos unas 5 veces y me sigue dando la misma respuesta.

Saludos


Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 6850
Re:Duda con ADC 24 Bits
« Respuesta #1 en: 13 de Julio de 2018, 23:52:19 »
Por ahora lo que veo es que el EXT deberia estar en 0.. y f0 a VCC o GND para que use el oscilador interno.

EDIT: Tampoco veo verificar el pin de BUSY entre leidas.
« Última modificación: 14 de Julio de 2018, 08:44:50 por KILLERJC »

Desconectado juaperser1

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 2514
Re:Duda con ADC 24 Bits
« Respuesta #2 en: 14 de Julio de 2018, 06:37:58 »
Una cosa, si es para un medidor de corriente, si utilizas el INA138 solo vas a poder medir la corriente en un sentido, si lo que quieres es hacer una especie de multímetro es mejor utilices otro sistema.

un saludo
Visita mi canal para aprender sobre electrónica y programación:

https://www.youtube.com/channel/UCxOYHcAMLCVEtZEvGgPQ6Vw

Desconectado Pinolillo16

  • PIC16
  • ***
  • Mensajes: 249
Re:Duda con ADC 24 Bits
« Respuesta #3 en: 14 de Julio de 2018, 16:30:57 »
KillerJC si los tengo a GND el F0. Pero sigue sin poder funcionar. En proteus jala bien pero ya en fisico he cableado muchas veces sin poder leer nada.

Juaperser1, lo ocupo para medir solo en un sentido por ahora. Lei el data del ina138 y me indica que solo es para HIGH SIDE me imagino que es a lo que vos refereis. Si fuese a medir como multimetro que opcion me recomiendas? Requiero medir microamperes con una shunt de 0.02 Ohms.

Saludos

Desconectado Pinolillo16

  • PIC16
  • ***
  • Mensajes: 249
Re:Duda con ADC 24 Bits
« Respuesta #4 en: 14 de Julio de 2018, 18:20:48 »
Resulta, que lo meti al osciloscopio. En amarillo la señal de reloj el azul la entrada de datos, de acuerdo a la imagen si tengo respuesta pero el micro sigue recibiendo ceros. Que sera?
IMG_20180714_161345.jpg
*IMG_20180714_161345.jpg
(127.56 kB . 699x525 - visto 27 veces)