Supongamos que tengo un par de ADC de 12 bits, me imagino que se pueden conectar en cascada para obtener <= 24 bits de salida.
Puedo pensar simplemente en usar uno para el rango positivo y el otro para el rango negativo, aunque probablemente habrá alguna distorsión en la región cruzada. (supongamos que podemos ignorar algunos bits de error o, quizás, colocar un tercer ADC para medir el valor alrededor de 0 voltios).
Otra opción en la que había estado pensando es usar un solo ADC de alta velocidad y cambiar los voltajes de referencia para obtener una mayor resolución a menor velocidad. También debería haber una forma de obtener un resultado de valor real con el uso de un ADC de referencia fija y luego cambiar las aref del convertidor secundario para obtener un valor más preciso en el medio.
Cualquier comentario y sugerencia son bienvenidos.
Supongo que un chip quad de 8 bits (o dual de 12 bits) es menos costoso que un solo chip de 24 bits.
fuente
Respuestas:
Muchas cosas en tu pregunta. Así que tomemos uno por uno.
En realidad no, obtendrías una resolución de 13 bits. Uno puede describir la operación del convertidor de 12 bits como decidir en cuál de los 4096 bins (2 ^ 12) está el voltaje de entrada. Dos ADC de 12 bits le darían 8192 bins o una resolución de 13 bits.
En realidad, así es como funciona el convertidor de aproximación sucesiva . Básicamente, el convertidor de un bit (también conocido como comparador) se utiliza con un convertidor digital a analógico que produce un voltaje de referencia variable de acuerdo con el algoritmo de aproximación sucesivo para obtener una muestra digitalizada del voltaje. Tenga en cuenta que los convertidores SAR son muy populares y la mayoría de los ADC en uC son de tipo SAR.
En realidad, es muy similar a cómo funcionan los ADC de canalización . Sin embargo, en lugar de cambiar la referencia del ADC secundario, el error de residuo que queda después de la primera etapa es amplificado y procesado por la siguiente etapa ADC.
En realidad, hay una razón para eso, ya que tener un convertidor de 24 bits no es tan simple como organizar en alguna configuración cuatro convertidores de 8 bits. Hay mucho más que eso. Creo que el malentendido clave aquí es pensar que uno puede simplemente "agregar" el número de bits. Para ver por qué esto está mal, es mejor pensar en ADC como un circuito que decide a qué voltaje de entrada "bin" pertenecen. El número de contenedores es igual a 2 ^ (número de bits). Por lo tanto, el convertidor de 8 bits tendrá 256 bins (2 ^ 8). El convertidor de 24 bits tendrá más de 16 millones de contenedores (2 ^ 24). Entonces, para tener el mismo número de bins que en el convertidor de 24 bits, se necesitarían más de 65 mil convertidores de 8 bits (en realidad 2 ^ 16).
Para continuar con la analogía del contenedor, suponga que su ADC tiene una escala completa de 1V. Entonces el convertidor de 8 bits "bin" es 1V / 256 = ~ 3.9mV. En el caso del convertidor de 24 bits, sería 1V / (2 ^ 24) = ~ 59.6nV. Intuitivamente está claro que "decidir" si el voltaje pertenece a un recipiente más pequeño es más difícil. De hecho, este es el caso debido al ruido y a las diversas no ideales del circuito. Por lo tanto, no solo uno necesitaría más de 65 miles de convertidores de 8 bits para obtener una resolución de 24 bits, sino que también esos convertidores de 8 bits tendrían que poder resolver en un contenedor de 24 bits (su convertidor normal de 8 bits no sería lo suficientemente bueno ya que es capaz de resolver a ~ 3.9mV bin no 59.6nV bin)
fuente
Al dividir su rango de entrada obtendrá 13 bits, no 24. Suponga que tiene un rango de entrada de -4.096V a + 4.096V. Entonces, un ADC de 12 bits tendrá una resolución de 2mV: 2 x 2mV = 8.192V (el rango de -4.096V a + 4.096V). Si toma la mitad positiva, obtendrá una resolución de 1 mV porque su rango se reduce a la mitad: 2 x 1 mV = 4.096V. Eso es 2 niveles por encima de 0V, y otros 2 por debajo. Juntos 2 + 2 = 2 , de modo que 1 bit extra, no 12.12 12 12 12 12 1312 12 12 12 12 12 13
Sobre cambiar el voltaje de referencia. Daré un ejemplo diferente. Suponga que tiene un ADC de 1 bit y desea obtener 12 bits cambiando la referencia. Un bit le dará un 1 si la entrada es mayor que , y un cero en caso contrario. Supongamos que su referencia es 1V, entonces el umbral es 0.5V. Si cambia su referencia a 0.9V, tendrá un nuevo umbral a 0.45V, por lo que ya puede discernir 3 niveles diferentes. Oye, esto puede funcionar, ¡puedo hacer 12 bits con un ADC de 1 bit, y luego probablemente también 24 bits con un ADC de 12 bits!VREF2
¡Aguanta! ¡No tan rapido! Puede hacer esto, pero los componentes de su ADC de 1 bit deben ser de 12 bits. Eso es para la precisión de la referencia y el comparador. Del mismo modo, un ADC de 12 bits podría hacer 24 bits si la precisión del ADC es lo suficientemente precisa, y que la precisión del voltaje de referencia variable es de grado de 24 bits. Entonces en la práctica no ganas mucho.
No hay tal cosa como un almuerzo gratis.
editar
Parece que hay un malentendido acerca de sobremuestreo, y el hecho de que no son ADCs de audio de 1 bit que pueden darle una resolución de 16 bits.
Si su entrada es un nivel de CC fijo, digamos 0.2V en un rango de entrada de 1V, su salida siempre será la misma. Con un ADC de 1 bit, este será cero para nuestro ejemplo (el nivel es inferior a la mitad de la referencia). Ahora será así, ya sea que muestree a 1 muestra por segundo, o 1000. Entonces, el promedio no cambia esto. ¿Por qué funciona con el ADC de audio ?, porque el voltaje varía todo el tiempo (ruido), lo que, según Einstein (relatividad, ya sabes ;-)) es lo mismo que mantener el voltaje constante y variar la referencia. Y luegoobtienes varias lecturas diferentes durante el sobremuestreo, que puedes promediar para obtener una aproximación bastante buena de tu nivel real.
El ruido tiene que ser lo suficientemente fuerte como para pasar los umbrales del ADC y debe ajustarse a ciertas restricciones, como la distribución gaussiana (ruido blanco). En el ejemplo de 1 bit no funcionó porque el nivel de ruido es demasiado bajo.
Lectura adicional:
Nota de aplicación de Atmel AVR121: Mejora de la resolución ADC mediante sobremuestreo
fuente
Sí, en teoría puedes hacer lo que quieras, pero solo si tienes disponible un equipo totalmente poco realista.
Los otros comentarios realizados hasta ahora sobre la precisión adicional limitada son correctos, por desgracia.
Considerar. Mida un voltaje con un ADC de 12 bits y obtenga digamos 111111000010 Usted sabe que el valor real se encuentra en algún lugar en un rango de 1 bit +/- 0.5 bits a cada lado de este valor.
SI su ADC tenía una precisión de 24 bits pero solo proporcionaba 12 bits, informa que el valor de vaklue se encuentra dentro de +/- medio bit de 111111000010 000000000000. Si este fuera el caso, podría tomar un ADC de 12 bits con un +/- Rango de 1/2 bit, céntrelo en 111111000010000000000000 y lea el resultado. Esto le daría la diferencia entre la señal real y el valor de CC, según lo deseado. QED
Sin embargo, el ADC de 12 bits solo tiene una precisión de aproximadamente medio bit. La suma total de sus diversos errores hace que declare un cierto resultado cuando el resultado real es de aproximadamente la mitad pero diferente más o menos.
Mientras te gustaría
111111000010 significa 111111000010 000000000000
en realidad puede significar 111111000010 000101101010 o lo que sea.
Entonces, si luego toma un segundo ADC y mide los 12 bits inferiores y ASUME que son relativos a un límite exacto de 12 bits, en realidad son relativos al valor erróneo anterior. Como este valor es esencialmente un error aleatorio, estaría agregando una nueva cifra de 12 bits más bajos a 12 bits de ruido esencialmente aleatorio. Preciso + aleatorio = nuevo aleatorio.
EJEMPLO
Use dos convectores que puedan medir un rango y dar un resultado en 1 de 10 pasos. Si se escala a 100 voltios FS, dan 0 10 20 30 40 50 60 70 80 90
Si se escala a 10 voltios de escala total, dan 1 2 3 4 5 6 7 8 9
Decide utilizar estos dos convertidores para medir un rango de 100 voltios con una precisión de 1 voltio.
El convertidor 1 devuelve 70V. Luego mides el voltaje relativo a 70V y obtienes -3V. Por lo tanto, considera que el valor real es + 70V - 3V = 67V.
SIN EMBARGO, el resultado de 70V podría ser cualquiera de 65 66 67 68 69 70 71 72 73 74
Solo si el primer convertidor es EXACTO a 1 V en 100, aunque muestre pasos de 10 V en 100 V, puede lograr lo que desea.
Entonces, su resultado real es 67V +/- 5 voltios = cualquier cosa desde 62V a 72V. Entonces no estás mejor que antes. Su centro se ha movido pero puede estar ubicado al azar.
De esta forma, podrá obtener una modesta mejora, ya que un convertidor suele ser un poco más preciso que los bits que devuelve (es de esperar), por lo que su segundo convertidor lo utiliza.
Un sistema que de hecho funciona ha sido mencionado con una omisión importante. Si muestrea una señal N veces y agrega + / _ medio bit de ruido gaussiano, extenderá la señal "por todo el rango posible" y el valor promedio ahora será log (N) más preciso que antes. Este esquema tiene anzuelos y calificaciones y no solo puede obtener un número arbitrario de bits adicionales, sino que ofrece algunas mejoras.
En el primer caso anterior, mencioné un ADC de 12 bits con una precisión de 24 bits. Puede lograr algo de este tipo utilizando un ADC de 12 bits y leyendo su valor supuesto con un convertidor de 24 bits, por ejemplo delta sigma. SI la señal era lo suficientemente estable como para permanecer en el mismo rango de un bit, puede usar un segundo ADC para leer los 2dos 12 bits de esta señal estable.
Alternativa: solo lea la señal de 24 bits inicialmente con sigma delta, bloquee ese punto y luego mida sucesivamente con respecto al segundo ADC. Siempre que la señal permanezca dentro del rango del segundo ADC, obtendrá un resultado mucho más rápido.
fuente
Hay algo llamado supermuestreo que se puede usar para aumentar la resolución de muchos tipos de ADC.
Funciona agregando ruido a la señal. Aunque el ruido reduce la resolución, es necesario hacer que los datos se dividan en varios bits. (No soy un tipo de procesamiento de señales, así es como lo entiendo). Su ruido puede ser solo de 1 o 2 bits, pero debe estar allí. Si toma una muestra de 12 bits, tiene 12 bits. Si luego toma 4 muestras, las suma y divide entre dos, obtendrá una muestra de 13 bits. (Cada bit adicional requiere 4 muestras, debido a Nyquist).
Una manera simple de hacer esto es agregar ruido al voltaje de referencia. Lo uso para aumentar un ADC de 12 bits en un dsPIC33F a 16 bits para una resolución más alta. De antemano, configuré un temporizador asíncrono a una frecuencia alta y uso DMA para poner en cola una secuencia de números PRNG en la captura de salida que proporciona una fuente de ruido relativamente limpia. La salida de ruido sesga el voltaje de referencia en aproximadamente 0.1% (divisor de 1k-1Meg.) El ruido es bidireccional, se hunde y se origina. Utilizo el DMA de dsPIC33F para poner en cola las muestras para que esto se pueda hacer con poca intervención de la CPU. Por supuesto, la frecuencia de muestreo máxima cae a aproximadamente 1/32 de la frecuencia normal, pero esto no es un problema para mi aplicación.
Como el ruido no siempre se distribuye uniformemente, calibraré las entradas en cada unidad que se envía, aunque es probable que la diferencia sea solo 1 o 2 LSB.
fuente
Usando el amplificador sumador puede sumar las dos salidas DAC. Puede usar R1 = 100k, R2 = R3 = 100 Ohm. De esta manera, la salida será Vout = - (V1 + V2 / 1000). Necesitará un suministro doble y, si lo desea sin invertir, debe colocar otro amplificador inversor con ganancia = 1. Entonces, supongamos que tiene DAC de 12 bits con 2 salidas y referencia 4.096V. Luego (si tiene un segundo amplificador inversor) un incremento de DAC 1 aumentará la salida con 1uV, y un incremento de DAC 2 aumentará la salida con 1mV. Eso no es de 24 bits en total. Son unos 22 bits. En teoría, puede elegir que R1 sea 4096 veces más grande que R2 y R3 y obtener 24 bits, pero no obtendrá mejores resultados. Tendrá muchos problemas de ruido en el rango de microvoltios, incluso si elige un buen opamp de bajo ruido.Actualización Pensé que era una pregunta sobre DAC porque estaba buscando DAC. Así es como aplica un principio similar con los ADC. En lugar de sumar, debe restar el resultado de ADC1 y luego multiplicar por 1000 antes de medir con ADC2.
Corrección: ADC3 debe estar en VGnd (Vref / 2), no en Vref para que coincida con la fórmula del resultado
En lugar de AZ431, puede usar cualquier otra referencia de 2.5V u otra referencia ajustable con pasivos adecuados para obtener exactamente 4.096V. Mientras menos deriva de temperatura tenga la referencia, mejores serán los resultados. También tiene que ser de poco ruido. Tenga en cuenta que, tal como está, probablemente no sea lo suficientemente preciso. Será bueno colocar un potenciómetro de giro múltiple de 500 ohmios entre R7 y R8 con un limpiador en la entrada de referencia y ajustarlo exactamente para Vref = 4.096V. También se necesitará un trimpot (2) entre R1 y R2 con limpiaparabrisas a entrada positiva U1. Ajústelo para 2.048V en VGnd. U1 es cualquier opamp de bajo ruido. (BTW AZ431 es horrible para el trabajo. Lo puse porque tenía el símbolo).
Es muy crítico que U2, U3 y U4 sean amplificadores chopper de compensación cero. U2 es más importante porque se multiplica por 100. cada 1 microvoltio llega a 100 microvoltios. Si usa OP07 y lo pone a cero correctamente y la temperatura cambia con 10 grados, entonces obtiene un desplazamiento de 13 uV que se traduce en 1.3 mV en la salida de U4. Eso es 13 mV en la salida ADC que hace que ADC2 sea casi inútil.
Además, U3 debe poder alcanzar 6.048V, eso es VGnd (2.048V) + 2xVinmax (2x2V = 4V). Esa es la idea de tener una fuente de alimentación Vcc = + 12V. Vcc puede ser tan bajo como 6.5V cuando se usa MAX44252. Como MAX44252 es un suministro negativo de riel a riel, se puede omitir el suministro negativo y Vss del opamp se puede conectar a tierra. Eso es cierto para cualquier opamp que puede llegar hasta 48mV en su salida.
MAX44252 tiene un voltaje de compensación de 2-4uV (típico) y una deriva de temperatura de 1 a 5 nV. Es $ 2.64 por Digikey en cantidades de 1 y es quadopamp por lo que sólo un chip hará el trabajo.
¿Cómo funciona? Tengamos un DAC de 10 bits, por ejemplo. La resolución es 4.096 / 1024 = 4mV. La señal de entrada debe ser relativa a VGnd, que es la mitad de Vref. ADC1 mide el voltaje de entrada como normal. Luego emite el valor a través de DAC1. La diferencia entre Vin y DAC1 es el error que necesita para amplificar, medir y agregar al resultado ADC1. U2 amplifica la diferencia Vin - DAC1, en relación con DAC1, con una ganancia de 100. U4 amplifica esa diferencia en 10 y también resta DAC1, en relación con VGnd. Eso hace que ADC2 = (Vin - DAC1) * 1000, en relación con VGnd. En otras palabras, si tiene 1.234567V en Vin, en relación con VGnd. ADC1 medirá el valor de 821porque la resolución es de 4 mV y (2.048 + 1.234567) /0.004 = 820.64175. Por lo tanto, el valor DAC se establecerá en 309, que es 309 * 0.004V = 1.236V. Ahora ADC2 obtendrá 1.234567-1.236 = -0.001433 * 1000 = -1.433V en relación con VGnd (idealmente). Eso es 2.048-1.433 = 0.615V modo común. 0.615V / 0.004 = 153.75. Entonces el valor ADC2 = 154. Es más fácil calcular el valor en microvoltios para evitar el uso de flotación. Para convertir ADC2 en mV tenemos que multiplicar el valor por 4: VADC1 = 821 * 4 = 3284mV. Para convertir a uV necesitamos multiplicar por 1000. O ese es el valor ADC1 multiplicado por 4000. 821 * 4000 = 3284000. Entonces el voltaje ADC1 con respecto a VGnd es 3284000-2048000 = 1236000uV. El ADC2 ya está multiplicado por 1000, por lo que debemos multiplicar solo por 4: VADC2 = 154 * 4 = 616. Para obtener el voltaje relativo a VGnd, debemos restar VGnd: 616-2048 = -1432uV. Aquí tomamos VGnd = 2048uV porque tenemos amplificación x1000. Ahora agregamos VADC1 y VADC2: 1236000 + (-1432) = 1234568uV o 1.234568V
Por supuesto, eso es solo un sueño, porque cuando se trata de microvoltios habrá todo tipo de problemas horribles: ruido opamp, ruido de resistencias, compensación de voltaje, deriva de temperatura, error de ganancia ... Pero si usa partes decentes, al menos 1% de resistencias y programáticamente anula el desplazamiento y corrige la ganancia que podría obtener un resultado razonablemente bueno. Por supuesto, no puede esperar ver una entrada estable en el último dígito. tal vez pueda limitar la resolución a 10uV (divida el resultado por 10). También se puede multiplicar por 4 sumando 4 resultados secuenciales para tener un promedio.
Tenga en cuenta que nada de esto se prueba. Simulé solo la etapa del amplificador sin tener en cuenta el ruido y el desplazamiento del opamp. Si alguien decide construirlo, escriba los resultados en los comentarios.
fuente
editar: ver los comentarios para las correcciones a mis matemáticas.
fuente