Suponha que eu tenha um par de ADCs de 12 bits, posso imaginar que eles possam ser colocados em cascata para obter uma saída <= 24 bits.
Eu posso pensar em simplesmente usar um para a faixa positiva e outro para a faixa negativa, embora provavelmente haja alguma distorção na região de transição. (suponha que possamos ignorar alguns bits de erro ou, talvez, colocar um terceiro ADC para medir o valor em torno de 0 volts).
Outra opção em que eu estava pensando é usar um único ADC de alta velocidade e alternar as tensões de referência para obter uma resolução mais alta em velocidade mais baixa. Também deve haver uma maneira de obter um resultado real com o uso de um ADC de referência fixa e, em seguida, alternar os arefs do conversor secundário para obter um valor mais preciso no meio.
Quaisquer comentários e sugestões são bem-vindos.
Presumo que um chip quad de 8 bits (ou dois de 12 bits) seja mais barato que um único chip de 24 bits.
fonte
Respostas:
Muitas coisas na sua pergunta. Então, vamos levá-los um por um.
Na verdade não - você obteria uma resolução de 13 bits. Pode-se descrever a operação do conversor de 12 bits como decidir em qual das 4096 posições (2 ^ 12) a tensão de entrada é. Dois ADCs de 12 bits forneceriam 8192 compartimentos ou resolução de 13 bits.
Na verdade, é assim que o conversor sucessivo de aproximação funciona. Basicamente, o conversor de um bit (também conhecido como comparador) é usado com o conversor digital para analógico que produz tensão de referência variável de acordo com o algoritmo de aproximação sucessivo para obter amostra digitalizada da tensão. Observe que os conversores SAR são muito populares e a maioria dos ADCs no uC é do tipo SAR.
Na verdade, é muito parecido com o funcionamento dos ADCs de pipeline . No entanto, em vez de alterar a referência do ADC secundário, o erro residual após o primeiro estágio é amplificado e processado pelo ADC do próximo estágio.
Na verdade, há uma razão para isso, pois ter um conversor de 24 bits não é tão simples quanto organizar em alguma configuração quatro conversores de 8 bits. Há muito mais nisso. Eu acho que o principal mal-entendido aqui é pensar que é possível "adicionar" um número de bits. Para ver por que isso está errado, é melhor pensar no ADC como um circuito que está decidindo a qual tensão de entrada "bin" pertence. O número de posições é igual a 2 ^ (número de bits). Portanto, o conversor de 8 bits terá 256 posições (2 ^ 8). O conversor de 24 bits terá mais de 16 milhões de compartimentos (2 ^ 24). Portanto, para ter o mesmo número de posições que no conversor de 24 bits, seria necessário mais de 65 mil conversores de 8 bits (na verdade 2 ^ 16).
Para continuar com a analogia do compartimento - suponha que o seu ADC tenha uma escala completa de 1V. Em seguida, o "bin" do conversor de 8 bits é de 1V / 256 = ~ 3.9mV. No caso do conversor de 24 bits, seria 1V / (2 ^ 24) = ~ 59,6nV. Intuitivamente, fica claro que "decidir" se a tensão pertence a uma caixa menor é mais difícil. De fato, esse é o caso devido ao ruído e a várias não-idealidades do circuito. Portanto, não apenas um precisaria de mais de 65 milhares de conversores de 8 bits para obter uma resolução de 24 bits, mas também esses conversores de 8 bits teriam que ser capazes de resolver em uma lixeira de 24 bits (o seu conversor de 8 bits normal não seria bom o suficiente, pois é capaz de resolver para ~ 3.9mV bin não 59.6nV bin)
fonte
Não existe almoço grátis.
editar
Parece haver um mal-entendido sobre oversampling, eo fato de que não são ADCs de áudio 1-bit que pode lhe dar resolução de 16 bits.
Se sua entrada for um nível DC fixo, digamos 0,2V em uma faixa de entrada de 1V, sua saída será sempre a mesma. Com um ADC de 1 bit, este valor será zero para o nosso exemplo (o nível é menos da metade da referência). Agora será assim, se você amostrar 1 amostra por segundo ou 1000. Portanto, a média não muda isso. Por que ele funciona com o ADC de áudio ?, porque a tensão varia o tempo todo (ruído), que, segundo Einstein (relatividade, você sabe ;-)) é o mesmo que manter a tensão constante e variar a referência. E entãovocê obtém várias leituras diferentes durante a amostragem excessiva, que você pode calcular para obter uma boa aproximação do seu nível real.
O ruído deve ser forte o suficiente para ultrapassar o (s) limiar (es) do ADC e deve atender a certas restrições, como a distribuição gaussiana (ruído branco). No exemplo de 1 bit, não funcionou porque o nível de ruído é muito baixo.
Leitura adicional:
nota de aplicação Atmel AVR121: Aprimorando a resolução ADC por superamostragem
fonte
Sim, em teoria, você pode fazer o que quiser, mas apenas se tiver algum equipamento totalmente irrealista disponível.
Os vários outros comentários feitos até agora sobre precisão extra limitada estão corretos, infelizmente.
Considerar. Meça uma tensão com um ADC de 12 bits e diga 111111000010 Você sabe que o valor real está em algum lugar na faixa de 1 bit +/- 0,5 bits em ambos os lados desse valor.
Se o seu ADC tinha precisão de 24 bits, mas fornecia apenas 12 bits, está relatando que o vaklue está dentro de +/- meio bit de 111111000010 000000000000. Se esse fosse o caso, você poderia usar um ADC de 12 bits com um +/- Intervalo de 1/2 bit, centralize-o em 111111000010000000000000000 e leia o resultado. Isso daria a diferença entre o sinal real e o valor aDC, conforme desejado. QED.
No entanto, o ADC de 12 bits é, por si só, preciso com cerca de meio bit. A soma total de seus vários erros faz com que ele declare um determinado resultado quando o resultado real é de cerca de metade, mas é mais ou menos diferente.
Enquanto você gostaria
111111000010 significa 111111000010 000000000000
na verdade, pode significar 111111000010 000101101010 ou qualquer outra coisa.
Portanto, se você pegar um segundo ADC e medir os 12 bits inferiores e ASSUMIR que eles são relativos a um limite exato de 12 bits, na verdade eles são relativos ao valor incorreto acima. Como esse valor é essencialmente um erro aleatório, você adicionaria uma nova figura de 12 bits inferiores a 12 bits de ruído essencialmente aleatório. Preciso + aleatório = novo aleatório.
EXEMPLO
Use dois convetores que podem medir um intervalo e dar um resultado em 1 de 10 etapas. Se escalados para 100 volt FS, eles fornecem ge 0 10 20 30 40 50 60 70 80 90
Se escalados para 10 volts de escala completa, eles fornecem 1 2 3 4 5 6 7 8 9
Você decide usar esses dois conversores para medir uma faixa de 100 volts com precisão de 1 volt.
O conversor 1 retorna 70V. Você mede a tensão em relação a 70V e obtém -3V. Então, você conclui que o valor real, ou seja, + 70V - 3V = 67V.
No entanto, o resultado de 70V poderia, de fato, ser um dos 65 66 67 68 69 70 71 72 73 74
Somente se o 1º conversor for PRECISO para 1V em 100, mesmo que mostre etapas de 10V em 100V, você poderá obter o que deseja.
Então, o resultado real é 67V +/- 5 volts = algo entre 62V e 72V. Então você não está melhor do que antes. Seu centro mudou, mas pode ser localizado aleatoriamente.
Você poderá obter melhorias modestas dessa maneira, pois um conversor geralmente é provavelmente um pouco mais preciso do que os bits que ele retorna (você espera); portanto, seu segundo conversor faz algum uso disso.
Um sistema que de fato funciona foi mencionado com uma omissão importante. Se você amostrar um sinal N vezes e adicionar + / _ meio ruído gaussiano, espalhará o sinal "por todo o intervalo possível" e o valor médio será agora log (N) mais preciso do que antes. Esse esquema possui anzóis e qualificações e você não pode obter apenas um número extra arbitrário de bits, mas oferece algumas melhorias.
No primeiro caso acima, mencionei o ADC de 12 bits com precisão de 24 bits. Você pode obter algo desse tipo usando um ADC de 12 bits e lendo seu valor assumido com um conversor de 24 bits, por exemplo, delta sigma. Se o sinal era estável o suficiente para permanecer no mesmo intervalo de bits, você pode usar um segundo ADC para ler os segundos 12 bits no sinal estável.
Alternativa - basta ler o sinal de 24 bits inicialmente com o sigma delta, travar nesse ponto e depois medir sucessivamente em relação a ele com o 2º ADC. Enquanto o sinal permanecer dentro do alcance do 2º ADC, você obterá um resultado muito mais rápido.
fonte
Existe algo chamado supersampling que pode ser usado para aumentar a resolução de muitos tipos de ADC.
Funciona adicionando ruído ao sinal. Embora o ruído reduza a resolução, é necessário fazer com que os dados se dividam em vários bits. (Eu não sou do ramo de processamento de sinais - é assim que eu entendo.) Seu ruído pode ser de apenas 1 ou 2 bits, mas precisa estar lá. Se você coletar uma amostra de 12 bits, possui 12 bits. Se você coletar 4 amostras, juntá-las e dividir por duas, obterá uma amostra de 13 bits. (Cada bit adicional requer 4 amostras, devido ao Nyquist.)
Uma maneira simples de fazer isso é adicionar ruído à tensão de referência. Eu uso isso para aumentar um ADC de 12 bits em um dsPIC33F para 16 bits para obter uma resolução mais alta. Antes, configurei um timer assíncrono em alta frequência e uso o DMA para enfileirar uma sequência de números PRNG na captura de saída, o que fornece uma fonte de ruído relativamente limpa. A saída de ruído influencia a tensão de referência em cerca de 0,1% (divisor de 1k-1Meg). O ruído é bidirecional, afundando e alimentando. Eu uso o DMA do dsPIC33F para enfileirar amostras, para que isso possa ser feito com pouca intervenção da CPU. Obviamente, a taxa máxima de amostragem cai para cerca de 1/32 da taxa normal, mas isso não é um problema para o meu aplicativo.
Como o ruído nem sempre é distribuído uniformemente, calibro as entradas em todas as unidades enviadas, embora a diferença provavelmente seja de apenas 1 ou 2 LSB.
fonte
Usando o amplificador de soma, você pode somar as duas saídas DAC. Você pode usar R1 = 100k, R2 = R3 = 100 Ohm. Desta forma, a saída será Vout = - (V1 + V2 / 1000). Você precisará de alimentação dupla e, se quiser, não invertido, precisará colocar outro amplificador inversor com ganho = 1. Então, digamos que você tenha DAC de 12 bits com 2 saídas e referência 4.096V. Então (se você tiver o segundo amplificador inversor), um incremento do DAC 1 aumentará a saída em 1uV e um incremento do DAC 2 aumentará a saída em 1mV. Isso não é de 24 bits no total. São cerca de 22 bits. Em teoria, você pode escolher R1 como 4096 vezes maior que R2 e R3 e obter 24 bits, mas você não obterá melhores resultados. Você terá muitos problemas de ruído na faixa de microvolts, mesmo se escolher um bom opamp de baixo ruído.Atualização Eu acho que é uma pergunta sobre o DAC porque eu estava procurando por DACs. Aqui está como você aplica princípios semelhantes aos ADCs. Em vez de somar, você deve subtrair o resultado do ADC1 e multiplicar por 1000 antes da medida com o ADC2.
Correção - ADC3 deve estar no VGnd (Vref / 2), não no Vref para corresponder à fórmula do resultado
Em vez do AZ431, você pode usar qualquer outra referência de 2,5V ou outra referência ajustável com passivos adequados para obter exatamente 4,096V. Quanto menor o desvio de temperatura da referência, melhores os resultados. Também tem que ser baixo ruído. Observe que, como está, provavelmente não é preciso o suficiente. Vai ser bom colocar trimpot de múltiplas voltas de 500 ohm entre R7 e R8 com limpador na entrada de referência e ajustá-lo para Vref = 4.096V exatamente. Também será necessário um trimpot (2) entre R1 e R2 com limpador para entrada positiva U1. Ajustá-lo para 2.048V em VGnd. U1 é qualquer opamp de baixo ruído. (O BT4 AZ431 é péssimo para o trabalho. Coloquei porque tinha o símbolo).
É muito crítico que U2, U3 e U4 sejam amplificadores de chopper com deslocamento zero. O U2 é mais importante porque se multiplica por 100. a cada 1 microvolt chega a 100 microvolts. Se você usar o OP07 e zerá-lo corretamente e a temperatura mudar em 10 graus, você obtém um deslocamento de 13 uV, que se traduz em 1,3 mV na saída do U4. São 13 mV na saída ADC, o que torna o ADC2 quase inútil.
Também o U3 deve ser capaz de atingir 6.048V - isso é VGnd (2.048V) + 2xVinmax (2x2V = 4V). Essa é a idéia de ter uma fonte de alimentação Vcc = + 12V. Vcc pode ser tão baixo quanto 6,5V quando MAX44252 é usado. Como o MAX44252 é um trilho para trilho, o fornecimento negativo pode ser pulado e Vss do opamp pode ser conectado ao terra. Isso é verdade para qualquer opamp que pode chegar a 48mV em sua saída.
O MAX44252 possui tensão de deslocamento de 2-4uV (típica) e desvio de temperatura de 1 a 5 nV. É US $ 2,64 em digikey em quantidades de 1 e é quadopamp, então apenas um chip fará o trabalho.
Como funciona? Vamos ter um DAC de 10 bits, por exemplo. A resolução é 4.096 / 1024 = 4mV. O sinal de entrada deve ser relativo ao VGnd, que é metade do Vref. O ADC1 mede a tensão de entrada normalmente. Em seguida, gera o valor via DAC1. A diferença entre Vin e DAC1 é o erro que você precisa para amplificar, medir e adicionar ao resultado ADC1. U2 amplifica a diferença Vin - DAC1, em relação a DAC1, com ganho de 100. U4 amplifica essa diferença em 10 e também subtrai DAC1, em relação a VGnd. Isso torna ADC2 = (Vin - DAC1) * 1000, em relação ao VGnd. Em outras palavras, se você tiver 1,234567V no Vin, em relação ao VGnd. ADC1 medirá o valor de 821porque a resolução é 4mV e (2.048 + 1.234567) /0.004 = 820.64175. Portanto, o valor DAC será definido como 309, que é 309 * 0,004V = 1,236V. Agora o ADC2 receberá 1,234567-1,236 = -0,001433 * 1000 = -1,433V em relação ao VGnd (idealmente). Esse é o modo comum 2.048-1.433 = 0.615V. 0,615V / 0,004 = 153,75. Assim valor ADC2 = 154. É mais fácil calcular o valor em microvolts para evitar o uso de flutuação. para converter ADC2 em mV, precisamos multipy o valor por 4: VADC1 = 821 * 4 = 3284mV. Para converter para uV, precisamos multiplicar por 1000. Ou esse é o valor ADC1 multiplicado por 4000. 821 * 4000 = 3284000. Portanto, a tensão ADC1 em relação a VGnd é 3284000-2048000 = 1236000uV. O ADC2 já está multiplicado por 1000, portanto, precisamos multiplicar apenas por 4: VADC2 = 154 * 4 = 616. Para obter a tensão relativa ao VGnd, precisamos subtrair o VGnd: 616-2048 = -1432uV. Agora, o VADC1 e o VADC2: 1236000 + (-1432) = 1234568uV ou 1.234568V
Claro que isso é apenas sonhos, porque quando você lida com microvolts, haverá todos os tipos de problemas horríveis - ruído opamp, ruído de resistores, deslocamento de tensão, variação de temperatura, erro de ganho ... Mas se você usar peças decentes, pelo menos 1% de resistores e você anula programaticamente o deslocamento e corrige o ganho para obter um resultado razoavelmente bom. Claro que você não pode esperar ver uma entrada estável para o último dígito. talvez você possa limitar a resolução a 10uV (divida o resultado por 10). Também a multiplicação por 4 pode ser feita somando 4 resultados sequenciais para obter alguma média.
Lembre-se de que nada disso é testado. Simulei apenas o estágio do amplificador sem levar em consideração o ruído e o deslocamento do opamp. Se alguém decidir construí-lo, escreva os resultados nos comentários.
fonte
editar: veja os comentários para correções na minha matemática.
fonte