Conceitos básicos de design ao trabalhar com ADCs de 12 bits


11

Atualmente, estou projetando uma placa que está conectando um ADC de 12 bits (MCP3208) a um Raspberry Pi (além de algumas outras coisas relacionadas a E / S de baixa velocidade). Ele será principalmente conectado a sensores analógicos (sensores de temperatura, sensores de distância IR e similares, embora nem sempre precise de resolução de 12 bits, há casos em que seria realmente bom ter esse pedaço extra de informações).

Não tenho muita experiência com circuitos analógicos e não tenho uma boa compreensão da matemática e da física subjacentes envolvidas.

Estou lendo vários guias de design sobre ADCs e frequentemente leio sobre coisas como filtros anti-aliasing, drivers ADC para sinais de alta impedância, planos de aterramento analógicos, traçando traços em certos padrões para reduzir o ruído, mantendo os eletrônicos digitais de alta velocidade separados tanto quanto É possível do ADC reduzir o ruído de comutação, as referências de precisão da tensão e muito mais coisas que ainda não entendi completamente.

Então, o que eu comecei a pensar era se ainda faria sentido usar um ADC de 12 bits, se eu não tiver o conhecimento necessário para implementá-lo corretamente, pois posso perder 2 LSBs de qualquer maneira por causa do design de circuito sub-ideal e deveria vá com um ADC de 10 bits. Ou o projeto de circuito ideal não é tão crucial no domínio de 12 bits como acredito que seja.

Quais são as coisas que sempre devem ser implementadas para reduzir o ruído (por exemplo, o óbvio limite de desvio)? Quais são as maiores causas de ruído em um aplicativo de sinal misto como o meu (com um processador de GHz conversando com o ADC)? Quais são as coisas realmente necessárias apenas em aplicativos de maior precisão (14-16 bits +)?

Eu realmente gostaria de saber o que são coisas sensíveis e essenciais que eu deveria procurar.


2
Comece com o que você está tentando medir e que tipo de resolução precisa e depois decida que tipo de processamento analógico e ADC você precisa. Como um aparte, leia sua folha de dados ADC. Você perde bits, mesmo se usá-lo perfeitamente. Pesquise por "ENOB"
Scott Seidman

O problema é que as coisas que precisarei medir mudam constantemente. Às vezes eu preciso ver todos os blips de tensão possíveis, às vezes até 8 bits seriam suficientes. Gostaria de ter uma solução que atenda ao maior número de aplicativos possível.
PTS

Com que rapidez você precisa para ver as alterações? (ou seja, qual a taxa de amostragem que você
procura

2
"Às vezes eu preciso ver todos os blips de tensão possíveis, às vezes até 8 bits seriam suficientes." Então, seus requisitos devem ser capazes de "ver todos os blips de tensão possíveis". Se você precisar de resolução de 12 bits, mesmo que ocasionalmente, precisará projetar com 12 bits. Se você for para 10 bits, não terá 12 quando precisar deles.
WhatRoughBeast

Uma taxa de amostragem de 1Khz + seria preferível. Embora eu ache que na maioria das aplicações, 120hz seria bom o suficiente. Embora essa taxa de amostragem deva ser possível para 8 canais por vez (não no mesmo relógio, mas todos precisam ser amostrados consecutivamente). @WhatRoughBeast Sim, esse foi o meu motivo para decidir ir com 12bits. Embora eu precise de conselhos com a implementação aqui.
PTS

Respostas:


19

Para um aplicativo de sinal misto de precisão média e baixa taxa de amostragem como a sua, os principais problemas que você enfrenta são ter uma referência suficientemente precisa e manter o ruído de comutação digital fora do seu ADC. Existem várias etapas para isso, começando na fase de design e continuando no layout da placa.

Durante o projeto do circuito

Primeiro, na fase de projeto, uma referência adequada, desacoplamento correto e um inversor de sinal de baixa impedância devem ser fornecidos ao ADC para que ocorram conversões corretas. Além disso, o sinal deve ser filtrado (filtro passa-baixo em um aplicativo de instrumentação como o seu) para impedir que o ADC efetivamente faça downconversões efetivas de frequências mais altas em banda base (os aplicativos de RF podem usar um filtro de front-end de passagem de banda ADC + lento para Nyquist-downverter um sinal, salvando em um mixer dedicado e LO).

Estabilizando sua referência

As referências variam do trivial e patético (um Zener discreto de geleia, bom a oh, 4 bits) até o insano (Zeners enterrados por IC fornalhados, usados ​​em aplicações de instrumentação de alto desempenho) - e as especificações geralmente não são claras, unidades de mistura em maneiras que confundem os novatos. O gráfico no LTC AN82 é um antídoto útil para isso - dada a sua aplicação, em que o seu ADC é uma unidade de 12 bits capaz de 11+ ENOB, com uma referência estável e uma fonte de 5V, eu especificaria que a referência seja precisa para 0,02% ou melhor em toda a faixa de temperatura de interesse e o ruído RMS não é uma preocupação, pois trata-se de uma ordem de magnitude menor que a especificação de precisão.

Infelizmente, a precisão inicial de 0,02% sem um corte é sobre onde as coisas começam a ficar um pouco ... difíceis. Usando uma referência 4.096V, uma vez que o desempenho da ENOB desejado significa que eu quero executar o ADC em uma fonte silenciosa de 5V com um conversor de nível lógico para o 3.3VI / O do Pi, e que o 4.096V fornece uma solução agradável e prática Relação de 1mV / contagem, estamos limitados ao ADR4540 , ao X60003 , ao MAX6126AASA ou talvez ao LTC6655Bembora a última peça a feche, pois possui uma precisão inicial de 0,025%. Embora tempco e histerese não sejam preocupações, já que essa é uma aplicação de bancada, presumo, e a regulação de linha e carga não é um problema grave, pois é alimentada pela mesma fonte de 5V regulamentada do ADC e apenas aciona o pino Vref do ADC, desvio a longo prazo. também é uma preocupação aqui devido à falta de ajuste - para isso, o ADR4540 e o MAX6126AASA são os vencedores claros de 25ppm / root-khr e 20ppm / root-khr, respectivamente - aproximadamente na proporção de 10-1 necessária considerar insignificante a deriva a longo prazo. (As outras duas partes têm desvios de longo prazo em torno de 50-60ppm / root-khr típico.)

Desacoplar tudo

A folha de dados do MCP3208 recomenda um capacitor mínimo de 1 µF para desacoplamento, conectado de Vdd ao sistema de aterramento - AGND e DGND também devem ser ligados ao mesmo sistema de aterramento. Um desacoplador a granel mínimo de 10µF / 10V de tântalo de cerâmica ou polímero também deve ser usado no trilho de 5V da placa.

Além disso, a referência deve ser dissociada conforme a folha de dados - geralmente é de 100nF na saída com 100nF na entrada, além de qualquer capacitância de desacoplamento em massa presente, mas o LTC6655 requer um capacitor de saída muito maior (usando o mesmo P / N como o desacoplador a granel funciona) e o X60003 é exigente na direção oposta devido ao seu design de baixa potência.

Unidade de entrada / buffer / filtragem

Felizmente, isso não é difícil - a precisão de 0,02% se traduz em 800 µV de deslocamento máximo de entrada, e posso obter algumas ordens de magnitude melhores do que as GBWs na faixa de MHz enquanto funcionava na única fonte de 5V disponível com o zero atual. de tração e aparados internamente. O AD8630 fornece uma opção de zero automático de baixo ruído, enquanto os amplificadores de baixo deslocamento e corte rápido internos incluem o OPA4350 e o OPA4192 . De qualquer maneira, o filtro anti-aliasing de passagem baixa Sallen e Key de dois pólos da folha de dados do MCP3208 pode ser usado, com a frequência de canto definida em cerca de 5kHz - outros projetos de filtro também podem funcionar.

Fonte de alimentação e interface digital

A especificação ENOB (número efetivo de bits) do MCP3208 depende da fonte - ela funciona melhor com uma fonte de 5V do que com uma fonte de 2,7-3,3V; também deve estar ficando sem 5V para usar uma referência 4.096V. Isso levanta o problema de o Pi usar lógica de 3.3V e não ser tolerante a 5V, exigindo um IC de conversão de nível lógico como o TXB0104 - o lado A vai para o Pi enquanto o lado B vai para o ADC.

Além disso, a fonte de 5V deve estar razoavelmente limpa - um regulador linear deve ser usado para gerá-la a bordo a partir de uma tensão de alimentação mais alta. Se não houver tensão de alimentação mais alta disponível no aplicativo, um trilho de 5V existente pode ser usado, desde que uma rede de desacoplamento LC seja usada para manter grandes quantidades de ruído digital fora do trilho de alimentação do ADC e do amplificador operacional.

Tempo de layout

Existem duas chaves para um layout de sinal misto eficaz: particionamento e layout de fornecimento / retorno . Vou tocar aqueles por sua vez.

Primeiro, eu dividiria o layout da placa em dois lados - um lado digital e um analógico. Todos os rastreamentos digitais (a interface SPI, no caso do MCP3208 que você está usando) ficam no lado digital da placa - esse lado da placa também contém o chip tradutor de nível lógico e o conector de E / S ao Pi. O lado analógico da placa contém todos os traços e circuitos analógicos - a referência de tensão é usada aqui, assim como os filtros de entrada, a proteção de entrada e os conectores de entrada analógica. O ADC (e o indutor de filtro, se você estiver usando 5V do Pi) é o único componente que preenche essa lacuna - na verdade,

Observe também que todas as partes que eu vinculei estão disponíveis em pacotes SMT de passo aproximado - um layout de um lado com a parte traseira como um plano GND contínuo é altamente recomendado se uma placa de dois lados for usada aqui. Se o custo não for uma objeção, uma placa de quatro camadas fornecerá um plano Vdd analógico contínuo, além do plano de terra, além de espaço para uma "poça de energia" para o lado lógico de 3,3V do IC do tradutor de nível lógico. No entanto, não há necessidade de um plano de terra dividido nesta aplicação - o roteamento adequado dos traços de sinal manterá as correntes de retorno onde elas pertencem .

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.