Para dos DAC, uno se envía D0-D7 y el otro se envía D8-D15, con una fuente de alimentación de 5 V, si se agregan 5 V a la salida del segundo DAC y luego se suman las dos salidas DAC, debería resultar en un DAC de 16 bits compuesto por dos DAC de 8 bits.
El único problema es que si el segundo DAC tiene una entrada de 0x00, entonces la adición de 5V debe cancelarse, lo cual no estoy seguro de cómo hacerlo. La suma se puede hacer mediante un amplificador sumador. El circuito solo necesita funcionar hasta unas pocas decenas de kHz.
¿Hay algo fundamentalmente erróneo en esta idea?
Es posible, pero no funcionará bien.
En primer lugar, está el problema de combinar las dos salidas, con una escala exactamente 1/256 de la otra. (Ya sea que atenúe uno en 1/256, amplifique el otro en 256, o algún otro arreglo, *16 y /16 por ejemplo, no importa).
Sin embargo, el gran problema es que es probable que un DAC de 8 bits tenga una precisión superior a 8 bits: puede tener una especificación "DNL" de 1/4 LSB y una especificación "INL" de 1/2 LSB. Estas son las especificaciones de no linealidad "Diferencial" e "Integral", y son una medida de cuán grande es realmente cada paso entre códigos adyacentes. (DNL proporciona una garantía entre dos códigos adyacentes, INL entre dos códigos en todo el rango del DAC).
Idealmente, cada paso sería precisamente 1/256 del valor de escala completa; pero una especificación DNL de 1/4 LSB indica que los pasos adyacentes pueden diferir de ese ideal en un 25 %; este es un comportamiento normalmente aceptable en un DAC.
¡El problema es que un error de 0.25 LSB en su MSB DAC contribuye a un error de 64 LSB (1/4 del rango completo) en su LSB DAC!
En otras palabras, su DAC de 16 bits tiene la linealidad y distorsión de un DAC de 10 bits, lo cual es inaceptable para la mayoría de las aplicaciones de un DAC de 16 bits.
Ahora, si puede encontrar un DAC de 8 bits que garantice una precisión de 16 bits (INL y DNL mejor que 1/256 LSB), adelante: sin embargo, no son económicos de fabricar, por lo que la única forma de obtener uno es comenzar con un DAC de 16 bits!
Otra respuesta sugiere "compensación de software"... mapear los errores exactos en su MSB DAC y compensarlos agregando el error inverso al LSB DAC: algo que los ingenieros de audio consideraron durante mucho tiempo en los días en que los DAC de 16 bits eran caros. ..
En resumen, se puede hacer que funcione hasta cierto punto, pero si el DAC de 8 bits varía con la temperatura o el tiempo (probablemente no fue diseñado para ser ultraestable), la compensación ya no es lo suficientemente precisa como para valer la pena. complejidad y gasto.
Un DAC de 8 bits puede generar valores diferentes.
Un DAC de 16 bits puede generar valores diferentes.
Tenga en cuenta cómo eso se multiplica, no es una suma (como sucedería cuando suma las salidas de dos DAC de 8 bits).
Si tomaría dos DAC de 8 bits y sumaría sus salidas, ¿cuáles son los valores posibles?
Respuesta: 0, 1, 2, ..., 256, 257, 258, ....511, 512 y listo!
Un DAC de 16 bits puede hacer 0,1,2 ..., 65535, 65536 ¡eso es mucho más!
Teóricamente es posible, pero luego deberá multiplicar la salida de uno de los DAC de 8 bits por exactamente 256 y conectar los bits LSB al DAC 1x y los bits MSB al DAC 256x. ¡Pero no se sorprenda si la precisión y la linealidad sufren!
La técnica es factible si el voltaje de escala completa del DAC "interno" es mayor que el tamaño de paso del DAC externo, y uno tiene un medio para medir con precisión (aunque no necesariamente rápido) los voltajes de salida generados por diferentes códigos de salida y aplicar Ajustes de linealidad adecuados en el software. Si el voltaje de escala completa del DAC interno puede ser menor que el tamaño de paso en el peor de los casos entre dos voltajes en el DAC externo (teniendo en cuenta que los pasos rara vez son absolutamente uniformes), puede haber voltajes que no se pueden obtener con cualquier combinación de valores DAC internos y externos. Sin embargo, si uno se asegura de que haya una superposición en los rangos, el uso de la corrección de linealidad del software puede permitir buenos resultados.
Por cierto, el antiguo diseño de chip Cypress PSOC (no conozco los más nuevos) emula un DAC de nueve bits usando dos DAC de seis bits que se escalan entre sí. No utiliza la corrección de linealidad del software, pero solo intenta agregar tres bits de precisión a un DAC de seis bits. Intentar agregar más de 3-4 bits de precisión a cualquier tipo de DAC sin usar compensación de software probablemente no funcione muy bien.
Hace 21 años, cuando era un estudiante universitario pobre (y solo podía pagar DAC de 8 bits), usé esta técnica para combinar dos DAC de 8 bits en un DAC de bits más alto, sabiendo que no obtendría una precisión de 16 bits, porque de no linealidad integral (INL) y no linealidad diferencial (DNL). DNL en el DAC de byte más significativo es el asesino en este caso; si tiene INL, la salida está distorsionada pero sigue siendo suave. DNL dicta el tamaño de un paso DAC al siguiente, y si varía lo suficiente, verá discontinuidades o reversiones al cruzar los límites de 8 bits: 0x07ff <-> 0x0800, por ejemplo, cuando el MSB DAC cambia de 0x07 <-> 0x08, podría cambiar no por los 256 conteos ideales del LSB DAC, sino por 384 conteos o 128 conteos (±1/2 de su propio bit menos significativo). Un buen DAC tendrá solo 1/2 LSB DNL, un DAC mediocre tendrá peor DNL, aunque se vuelve más difícil cuanto mayor sea la resolución, por lo que debería ser bastante fácil encontrar 1/2 LSB DNL en un DAC de 8 bits, pero no en un DAC de 16 bits.
No recuerdo cuál era la resolución efectiva en mi caso, tal vez 12 o 13 bits, y tuve que ajustar la ganancia de la 2da etapa manualmente con un potenciómetro.
He visto esto en la práctica en un detector UV HPLC para aumentar el rango dinámico. Uno de los DAC se compensa con la cantidad necesaria. Digamos que el primer DAC maneja de 0 a 10 V y el segundo maneja de 10 a 20 voltios.
Tengo una opinión diferente... Solo usa un DAC de 8 bits. Usted mencionó que solo necesita funcionar hasta unos pocos 10s de Hz, por lo que podría usar solo un DAC (que probablemente pueda funcionar hasta 100kHz) y usarlo como modulador. La idea básica es generar 256 ciclos del valor MSB más el indicador de acarreo/desbordamiento de un bit desde un acumulador de 8 bits al que se agrega el LSB en cada ciclo. Obtiene solo 254 como MSB máximo debido al 'bit de modulación' adicional del LSB, pero esto no reduce mucho el rango.
Ejemplo: si ejecuta el ciclo a 30 kHz, los 256 ciclos se repiten a 117 Hz, por lo que puede colocar un filtro de paso bajo de 50 Hz en la salida para obtener una señal bastante suave y precisa que puede funcionar a la velocidad que necesita.
La precisión de este método depende bastante del tamaño de los pasos de bits, pero no más que cualquier otro método. Lo he usado para la generación de voltaje de referencia en el pasado y funciona sorprendentemente bien.
Es posible y se ha hecho antes. Vea esta excelente implementación en EDN.com http://www.edn.com/design/analog/4329365/Combine-two-8-bit-outputs-to-make-one-16-bit-DAC
Intenté usar el ESP32 para usar un DAC para la mitad positiva de un solo 0 a +3V y pasé el segundo DAC a través del opamp para dar la mitad negativa inferior del solo 0 a -3V. Esto funcionó, pero la sincronización fue muy difícil y también estaba usando DMA.
P Duarte
P Duarte
uint128_t
Vicente Cunha
bimpelrekkie
Foo bar
sara g
ricardo smith
sara g