Autor Tema: Problemas con circuito de acople al modulo ADC.  (Leído 19462 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: Problemas con circuito de acople al modulo ADC.
« Respuesta #15 en: 21 de Mayo de 2010, 13:11:29 »
Yo he usado el LMC6484 y anda muy bien, aunque cuesta alrededor de USD3. Y no se si se consigue fácilmente.

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Problemas con circuito de acople al modulo ADC.
« Respuesta #16 en: 21 de Mayo de 2010, 13:16:00 »
http://www.national.com/cat/index.cgi?i=i//11

Aqui esta la lista :P surtance XD

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Problemas con circuito de acople al modulo ADC.
« Respuesta #17 en: 21 de Mayo de 2010, 13:38:33 »
Yo he usado el LMC6484 y anda muy bien, aunque cuesta alrededor de USD3. Y no se si se consigue fácilmente.


Hola Pablo, ¿ese ampop opera con fuente unipolar?

Akena... te haría la misma pregunta pero son muchos los que pones  :D

Desconectado pablomanieri

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 639
Re: Problemas con circuito de acople al modulo ADC.
« Respuesta #18 en: 21 de Mayo de 2010, 15:22:15 »
El lmc6484 es cuadruple, efectivamente opera con fuente unipolar y es rail-to-rail. Se puede alimenta con 3V hasta 15.5V
El lmc6482, tiene las mismas características pero es de 2 opamps por encapsulado

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Problemas con circuito de acople al modulo ADC.
« Respuesta #19 en: 21 de Mayo de 2010, 17:22:51 »
No recuerdo cual use.
XD
Pero lo escogi de esa lista , unos los puedes trabajas de las 2 formas , con funete simple o simetrica.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Problemas con circuito de acople al modulo ADC.
« Respuesta #20 en: 21 de Mayo de 2010, 18:04:18 »
Suena excelente Pablo. Me gusta el ancho de banda de 1.5MHz y slew rate de 1.3V/us.

Akena, para la próxima compra Newarkense te encargaré uno de estos bichos  :-/

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Problemas con circuito de acople al modulo ADC.
« Respuesta #21 en: 21 de Mayo de 2010, 18:49:02 »
Sale
Anotado xD

Desconectado STAI

  • PIC12
  • **
  • Mensajes: 81
Re: Problemas con circuito de acople al modulo ADC.
« Respuesta #22 en: 21 de Mayo de 2010, 20:00:19 »
El lmc6484 es cuadruple, efectivamente opera con fuente unipolar y es rail-to-rail. Se puede alimenta con 3V hasta 15.5V
El lmc6482, tiene las mismas características pero es de 2 opamps por encapsulado

Hola amigo Pablo, quisiera preguntarle si usted ha probado esos OAMP con señales de audio y alimentados con una sola fuente?  Pregunto porque aveces hay propuestas (muy sanas claro) pero no probadas que cuando uno las monta (luego de haber comprado los elementos en muchos casos) no funcionan, como le fue al compañero alexiel.
Álvaro I. Sandoval T.
Ing. en Control Electrónico e Instrumentación

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: Problemas con circuito de acople al modulo ADC.
« Respuesta #23 en: 21 de Mayo de 2010, 20:39:29 »

Para audio uso el tl071 y tl072


Desconectado blackcat

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 600
Re: Problemas con circuito de acople al modulo ADC.
« Respuesta #24 en: 21 de Mayo de 2010, 23:01:22 »
Hola!

No entiendo bien que tipo de datos estás perdiendo ... como configuraste el ADC y como haces para tener muestras a una frecuencia de 29kHz.

Saludos!
« Última modificación: 21 de Mayo de 2010, 23:04:36 por blackcat »
Control Automático, DSP & Microcontroladores

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Problemas con circuito de acople al modulo ADC.
« Respuesta #25 en: 22 de Mayo de 2010, 13:30:20 »
Hola, ya armé de nuevo el circuito de audio...

http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=30727.0;attach=12090


Y funciona bien con un sólo cambio, hay que modificar la resistencia de 10k inferior por un potenciómetro de 10k. Ese par de resistencias de 10k son las que suman los 1.65V (3.33V/2) a la señal de salida.

Considerando que el LM324 tiene una saturación en 2V, lo ideal es que la componente DC de la señal sea de 1V. Ese 1V se logra ajustando el potenciómetro que menciono.

Aquí un par de fotos.

http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=30727.0;attach=12114


Es una señal de 300Hz montada sobre una componente DC de 1V. La señal no sufre saturación ya que está dentro de la ventana de 2V. La línea punteada blanca indica 2.22V que es donde se satura mi LM324.

http://www.todopic.com.ar/foros/index.php?action=dlattach;topic=30727.0;attach=12116


Esta foto es un ejemplo de saturación. Lo que graba es un aplauso a 10cm del micrófono electret.

El circuito es capaz de grabar voz sin saturación (20Hz a 4kHz), hice unas pruebas y no hubo problemas. Voy a hacer un nuevo circuito con el cambio del potenciómetro de 10k y agregaré un filtro pasa bajas de 4kHz. En cuanto termine se los paso.

Alexiel, mencionas que cambiaste la R de 470k por una de 1K. Si la señal se satura entonces debes atenuar todavía más la señal porque este circuito es para amplificar. Cuéntanos tus avances.

EDITO: Ya está el diagrama corregido en el otro tema, no lo pongo aquí porque está un poco off-topic.
http://www.todopic.com.ar/foros/index.php?topic=19699.msg256657#msg256657
« Última modificación: 22 de Mayo de 2010, 15:11:46 por migsantiago »

Desconectado STAI

  • PIC12
  • **
  • Mensajes: 81
Re: Problemas con circuito de acople al modulo ADC.
« Respuesta #26 en: 22 de Mayo de 2010, 15:38:29 »
Hola compañeros de la noble causa, vamos a salir de dudas con respecto a los OAMP rail-to-rail que algunos compañeros han propuesto, tengo en mis manos unos de Analog Devices AD8665, AD8054 y AD8027 que dicen serlo, ya hice el diseño de los PCBs para hacer el montaje, voy a pasarle ese material al compañero alexiel para que haga las pruebas y nos comente qué resultados obtuvo.  Considero que el tema de la entrada de señales de audio a los ADC de los micros y dsPIC debe quedar más claro.



« Última modificación: 22 de Mayo de 2010, 15:44:55 por STAI »
Álvaro I. Sandoval T.
Ing. en Control Electrónico e Instrumentación

Desconectado alexiel

  • PIC10
  • *
  • Mensajes: 31
Re: Problemas con circuito de acople al modulo ADC.
« Respuesta #27 en: 24 de Mayo de 2010, 19:40:52 »
Hola a todos:
Gracias por el seguimiento que se le ha hecho a este tema.
Blackcat: Esta es la función que utilizo para configurar el módulo ADC, en modo automático tanto de sampleo como de conversión, hay pongo las formulas con la que me guío para sacar el muestreo a 29100Hz. Este muestreo específico es porque la señal que sale filtrada debe ser de 4850Hz. Entonces para reconstruir la señal, serian 6 puntos que tomo del muestreo, (29100/4850 = 6).
Código: C
  1. // Funcion para tomar datos con el ADC en modo automatico con Frecuencia de muestreo de 29100, utilizo solo un canal.
  2. // Para el calculo de la frecuencia de Muestreo con un a FCY de 40Mhz, se basó en la siguiente formula:
  3. //     |<-               Tiempo total de ADC              ->|
  4. //     |<-      TtADC = Sample Time + Conversion time     ->|
  5. //     |<-  Sample Time     ->|<-    Conversion time      ->|
  6. //             N*TAD          +            12*TAD                      12*TAD es el tiempo de conversion para ADC a 10 bits y para 12 bits 14*TAD
  7. //      N=SAMC[1:31]                   TAD = (ADCS + 1)*FCY
  8. //                      N((ADCS + 1)*FCY) +             12*((ADCS + 1)*FCY)
  9. //Donde la formula resultante es:         FCY/FS = (ADCS + 1)(SAMC + 12)
  10. //Utilizo esta formula para calcular el valor de ADCS y SAMC en Matlab, para cualquier muestreo y FCY que en este caso son constante
  11. // Y el resultado es ADCS 54 y SAMC 13.
  12. void ADC_FS_29k_inicA(void)
  13. {
  14. //-----------------------ADC Register---------------------------------------------
  15.  
  16.         AD1CON1bits.ADON = 0;                           //ADC operation
  17.         //AD1CON1bits.DONE = 0;                         // ADC Conversion Status bit
  18.         AD1CON1bits.SAMP = 0;                           // ADC Sample Enable bit
  19.         AD1CON1bits.ASAM = 1;                           // ADC Sample Auto-Start bit
  20.         //AD1CON1bits.SIMSAM = 0;                       // Simultaneous Sample Select bit (only applicable when CHPS<1:0> = 01 or 1x)
  21.         AD1CON1bits.SSRC = 7;                           // Sample Clock Source Select bits Auto
  22.         AD1CON1bits.FORM = 0;                           // Data Output Format bits
  23.         AD1CON1bits.AD12B = 0;                          // 10-Bit or 12-Bit Operation Mode bit
  24.         //AD1CON1bits.ADDMABM = 0;                      // DMA Buffer Build Mode bit
  25.         AD1CON1bits.ADSIDL = 0;                         // Stop in Idle Mode bit
  26.        
  27.         AD1CON2bits.VCFG = 0;                           // Converter Voltage Reference Configuration bits
  28.         AD1CON2bits.CSCNA = 0;                          // Scan Input Selections for CH0+ during Sample A bit
  29.         AD1CON2bits.CHPS = 0;                           // Selects Channels Utilized bits
  30.         //AD1CON2bits.BUFS = 0;                         // Buffer Fill Status bit (only valid when BUFM = 1)
  31.         AD1CON2bits.SMPI = 0;                           // Selects Increment Rate for DMA Addresses bits or number of sample/conversion operations per interrupt
  32.         AD1CON2bits.BUFM = 0;                           // Buffer Fill Mode Select bit
  33.         AD1CON2bits.ALTS = 0;                           // Alternate Input Sample Mode Select bit
  34.        
  35.         AD1CON3bits.ADRC = 0;                           // ADC Conversion Clock Source bit
  36.         AD1CON3bits.SAMC = 13;                          // Auto Sample Time bits Sample TIME = 13*TAD
  37.         AD1CON3bits.ADCS = 54;                          // ADC Conversion Clock Select bits: 54 = 55·TCY = TAD
  38.        
  39.         //AD1CHS123bits.CH123NB = 0;                    // Channel 1, 2, 3 Negative Input Select for Sample B bits
  40.         //AD1CHS123bits.CH123SB = 0;                    // Channel 1, 2, 3 Positive Input Select for Sample B bit
  41.         //AD1CHS123bits.CH123NA = 0;                    // Channel 1, 2, 3 Negative Input Select for Sample A bits
  42.         //AD1CHS123bits.CH123SA = 0;                    // Channel 1, 2, 3 Positive Input Select for Sample A bit
  43.        
  44.         //AD1CHS0bits.CH0NB = 0;                                // Channel 0 Negative Input Select for Sample B bit
  45.         //AD1CHS0bits.CH0SB = 0;                                // Channel 0 Positive Input Select for Sample B bits
  46.         AD1CHS0bits.CH0NA = 0;                          // Channel 0 Negative Input Select for Sample A bit
  47.         AD1CHS0bits.CH0SA = 0;                          // Channel 0 Positive Input Select for Sample A bits
  48.        
  49.         AD1PCFGL = 0b1111111111111110;          // ADC1 PORT CONFIGURATION REGISTER LOW; all PORTB = Digital; RA1 = analog
  50.         TRISAbits.TRISA0 = 1;                           //Configuracion del Tris A para indicar que es de entrada.
  51.         AD1CSSL = 0;                                            // ADC1 INPUT SCAN SELECT REGISTER LOW
  52.        
  53.         //AD1CON4 = 0;                                          // ADC1 CONTROL REGISTER 4
  54. //Habilitación de la interrupción del ADC
  55.         IFS0bits.AD1IF =0;
  56.         IEC0bits.AD1IE = 1;                                     //Habilita la interrupción del ADC cuando haya una captura de dato.
  57.         IPC3bits.AD1IP = 7;                                     //Prioridad de interrupcion del ADC 7 max
  58. }
Como las muestras se recogen de forma automática cuando habilito el ADC (AD1CON1bits.ADON = 1), la función de interrupción del ADC es:

Código: C
  1. void __attribute__((interrupt, no_auto_psv)) _ADC1Interrupt(void)
  2. {
  3.         *ptrADC = ADC1BUF0;
  4.         ptrADC++;
  5.         incADC++;
  6.         IFS0bits.AD1IF =0;
  7. }

y la parte de codigo que utilizo para probar el ADC es:
Código: C
  1. AD1CON1bits.ADON = 1;                                                                   //Habilitamos el ADC
  2. while( incADC < MUESTRAS )
  3. {}
  4. AD1CON1bits.ADON = 0;                                                                   //Deshabilitamos el ADC
Citar
No entiendo bien que tipo de datos estás perdiendo
Blackcat, cuando los datos han sido recolectados, los envío en forma serial por el módulo UART hacia el PC y allí los grafico en MATLAB. Cuando conecto un potenciómetro y hago la prueba de recoger 1000 datos con el ADC y enviarlos al PC, funciona correctamente los datos los recibo todos. Este es el gráfico (adjuntado con nombre figure1)hecho desde Matlab de los datos que recibo por el ADC, cuando con el potenciómetro cuadro a la entrada del ADC 2V, con alimentación 3.095V. El promedio de los datos es 669 * (3.095/1024) = 2.022V. Pero cuando pongo los dos circuitos que mencioné al inicio de este tema y voy a recoger 1000 datos, solo se reciben 980 o 995 0 990. Algo pasa que hace que el ADC de alguna forma no tome datos o se desconfigura (Eso es lo que trato de averiguar). A eso me refiero con pérdida de datos.

Desconectado blackcat

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 600
Re: Problemas con circuito de acople al modulo ADC.
« Respuesta #28 en: 25 de Mayo de 2010, 00:24:30 »
Me resulta interesante tu forma de hacer el muestreo pues no usas un timer o alguna temporizacion, si bien entiendo estás jugando con los tiempo de sampleo + conversion del ADC para generar una frecuencia fija de muestreo.

Porque no intentas de la siguiente manera, siempre me ha resultado bien:

- Configuras el ADC para que tome solamente una muestra cada vez que le das ON y devuelva el valor a un registro temporal.

- Pones el ADC a maxima velocidad, es decir, si el ADC es de 1MSPS lo pones a 1MSPS, o un valor que consideres en donde se toman muestras correctas. Pero lo mas rápido posible.

- Verificas que el ADC tome muestras correctamente utilizando el potenciometro.

- Despues configuras cualquier TIMER para que genere una interrupcion con frecuencia de 29kHz.

- Dentro de la interrupcion del TIMER colocas el codigo de toma de un dato con ADC. Tambien, podes poner un bit de un puerto de salida y que invierta cada vez que entre a la interrupcion, una vez funcionando se mide la frecuencia de salida. De esta manera nos aseguramos que exista una frecuencia fija de 29kHz (mas bien la mitad 14.5kHz) constante en todo instante.
Control Automático, DSP & Microcontroladores

Desconectado alexiel

  • PIC10
  • *
  • Mensajes: 31
Re: Problemas con circuito de acople al modulo ADC.
« Respuesta #29 en: 25 de Mayo de 2010, 00:58:49 »
Gracias Blackcat, por las sugerencias voy probar el ADC de la forma que tu dices.... Comentaré mas adelante las conclusiones de todas estas pruebas.