Códigos atascados en muestras de ADC

4

Actualmente estoy probando un DAC de 16 bits y un ADC de 18 bits. En muchas pruebas he encontrado que el ADC se "atasca" en los códigos, especialmente en los extremos del rango de entrada.

Tanto el DAC como el ADC operan en modo bipolar y están interconectados con circuitos analógicos que amplifican / atenúan y también proporcionan compensación y saturación en modo común para garantizar que la señal se ajuste a las entradas diferenciales en el ADC. Los convertidores de datos están conectados a un microcontrolador con SPI. Los datos se transfieren desde el microcontrolador a una PC con un puerto serie.

Estoy utilizando el ADC para muestrear la salida del DAC con el fin de probar la precisión y el ruido, etc. Los datos resultantes deben ser de línea recta cuando el DAC se utiliza como valores de x y las correspondientes muestras de ADC representadas en la y eje.

Tenga en cuenta que el rango de escala completo es diferente: el DAC produce voltajes entre -20.48 y 20.4794. El ADC lee voltajes entre -16.384 y 16.3839.

El gráfico a continuación muestra las muestras del ADC cuando el DAC se configura de 0 a 65535 en pasos de 1 LSB. El número total de muestras es 65536.

Acercándoseenelcentrodelrangodelaescalacompleta(x-span:1000,y-span:5000),elgráficoseveasí(unpocoruidoso,peroporlodemásbien):

Sin embargo, al hacer zoom en la parte inferior del rango de escala completa, los códigos bloqueados son claramente visibles:

Lomismopuededecirsesobrelasmuestrassuperiores:

Tenga en cuenta que los tres gráficos están en la misma escala pero en áreas diferentes.

Es interesante observar un segmento de los datos (tenga en cuenta que las interfaces analógicas introducen algunos errores de ganancia y compensación):

UnopuedeverclaramentequeelADCestábloqueadoaunquelaresolucióndelADCde18bitsseamejorqueladelDACde16bits.

Aúnmásinteresanteesqueladiferenciaentredoscódigosatascados,como255648-255712=-64y255712-255808=-96,pareceestarenmúltiplosde32.Esodescartacualquierproblemaconlainterfazanalógica,creo.

Paramostrarmejorelproblema,hiceungráficodeladiferenciaentreunamuestraylasiguienteentodoelrangodeescalacompleta:

El gráfico muestra claramente que los códigos atascados no se producen en el centro del rango de escala completa. Avanzando hacia los extremos del rango, las muestras atascadas se vuelven cada vez más obvias.

Para resolver el problema, intenté retardar la comunicación SPI y también muestrear a velocidades más bajas. Esto no hizo ninguna diferencia. También me pregunto si el problema podría ser la conversión de la salida de ADC de 18 bits del Complemento de Dos a Binario de Desplazamiento. Utilizo este código para hacer la conversión, lo que creo que es correcto:

uint32_t y = (131072 ^ Y >> 6) & 0x3FFFF; // Y is 18-bit Two's Complement

Entonces, ¿qué podría causar este problema? También he comprobado la referencia de voltaje, el desacoplamiento y otros problemas analógicos que pueden causar el problema. Aún así, los códigos atascados son múltiplos de 32, me parece que el problema es digital en lugar de analógico.

Cualquier ayuda o ideas son apreciadas! Gracias de antemano :-)

    
pregunta pvh1987

2 respuestas

1

Interesante. No creo que haya visto esta anomalía antes.

A menudo es conveniente pensar en un ADC SAR como si muestreara el voltaje analógico de entrada en algún momento en el tiempo. En la práctica, hay una ventana de tiempo estrecha donde los cambios en el voltaje analógico de entrada - o ruido en la referencia de voltaje analógico, o ruido en la GND u otros pines de alimentación del ADC - Puede afectar el valor digital de salida.

Si el voltaje de entrada aumenta lentamente durante esa ventana, los bits menos significativos de la salida del SAR serán todos uno.

Si el voltaje de entrada disminuye lentamente durante esa ventana, entonces los bits menos significativos de la salida del SAR serán todos ceros.

Un pulso de ruido muy estrecho en el tiempo "incorrecto" durante la conversión puede tener un efecto similar.

Ahora mismo, mi mejor conjetura es que estás usando algún tipo de interruptores analógicos o amplificadores operacionales que no funcionan tan bien (mayor resistencia o algo así) cerca de los rieles de alta y baja potencia como lo hacen cerca de la escala media De alguna manera, dejar entrar uno de los tipos de ruido anteriores, lo que hace que los bits menos significativos sean todos unos o todos ceros.

He visto algunos ADC sigma-delta y DAC sigma-delta que tienen una buena resolución a media escala, pero una peor resolución cerca de los rieles, pero el efecto es diferente al que se muestra.

La "gráfica de la diferencia entre una muestra y la siguiente muestra en todo el rango de escala completa" es fascinante.

Si fuera usted, haría un gráfico similar que, en lugar de hacer que el valor de X sea la diferencia entre una muestra y la siguiente, haga que el valor de X sea los 6 bits menos significativos de la muestra de salida de ADC sin procesar. Eso mostraría rápidamente si los valores "atascados" son en su mayoría lotes de 1s en los bits menos significativos (¿quizás la entrada está aumentando lentamente?) O lotes de 0s en los bits menos significativos (¿tal vez la entrada está disminuyendo lentamente?). p>

  

Estoy muestreando tensiones de CC "pulsadas". Eso significa que para cada   Medición Puse una tensión en el DAC, dejé que se asentara por al menos 100   veces es hora de liquidar, luego dile al ADC que convierta y cuando   la conversión ha finalizado, devolví el DAC a 0 V.

Entiendo que cuando los fabricantes de ADC dicen "sin códigos faltantes", la prueba que utilizan involucra varios capacitores que se suman a una gran capacitancia conectada directamente a la entrada ADC, y algunos sistemas activan una resistencia grande conectada a esa capacitancia que carga o descarga muy lentamente ese capacitor, lo suficientemente lento como para que se espere que el ADC vea exactamente "el mismo" voltaje (dentro de 1/2 LSB) durante varios ciclos de conversión antes de que vea el "siguiente" voltaje (incrementado en 1 subiendo, disminuyendo en 1 bajando). p>

Si yo fuera usted, vería si una prueba de "pendiente continua" de ese tipo da los mismos síntomas extraños de "código atascado" que la "prueba de pulso". Tal vez eso daría más pistas sobre qué componentes exactamente están causando este problema.

Por favor, díganos si alguna vez averiguó qué causó estos síntomas.

    
respondido por el davidcary
0

¿Cuál es la tecnología utilizada en estos convertidores (tipo)? ¿Cuál es la tasa de muestreo? Intente reducir la frecuencia utilizada para eliminar problemas con el acoplamiento de impedancia de entrada ADC. La vinculación de un DAC a un ADC tiene una relevancia limitada cuando se evalúa el rendimiento, debido al aumento de los problemas relacionados con los errores de cuantificación (también diferentes). Intente crear un gráfico como el de arriba, pero incremente la entrada utilizando un voltaje lineal, en lugar de una salida DAC, para comparar. Recuerde que el ruido de los amplificadores operacionales también interfiere (ya que está usando alta resolución). Además, ADC exhibe " códigos faltantes ". La hoja de datos indica algo así como "... no faltan códigos a n bits ..." (donde n < resolución ADC en bits).

    
respondido por el Dirceu Rodrigues Jr

Lea otras preguntas en las etiquetas