Como converter uma grandeza analógica como uma tensão obtida na saída de um sensor numa máquina industrial ou num dispositivo de controle numa informação digital que possa ser processada por um circuito lógico como de um microprocessador ou um computador? A resolução deste tipo de problema é fundamental para o projeto de interfaces para a aquisição de dados e controle por computadores envolvendo um dispositivo de extrema importância para a eletrônica moderna: o conversor analógico/digital, ADC ou conversor A/D. Neste artigo analisamos o princípio de funcionamento deste tipo de circuito e mostramos como usá-lo.
Veja também
Como funcionan os Conversores A/D - Parte 2
Os microcontroladores, controles industriais, computadores e muitos circuitos que processam dados obtidos de sensores operam exclusivamente com sinais digitais. Assim, se na saída de um sensor tivermos um sinal analógico e precisarmos transferir este sinal para um circuito digital, como de um computador será preciso "convertê-lo".
Para converter um sinal da forma analógica para a forma digital, usamos uma configuração denominada conversor analógico/digital, ADC ou simplesmente conversor A/D. Esses conversores são largamente usados em placas de aquisição de dados e controle que interfaceiam computadores com dispositivos de medida. Nos laboratórios, por exemplo, é possível usar um conversor desse tipo num sistema de aquisição de dados para converter as indicações de um sensor de temperatura na forma digital que o computador possa processar, e tomar decisões no sentido de ativar circuitos externos, ou simplesmente armazenar as temperaturas em horários programados na memória, conforme sugere a figura 1.
Para entender como funcionam os conversores analógicos/digitais precisamos, em primeiro lugar, entender as diferenças entre os dois tipos de grandezas.
SINAIS ANALÓGICOS E SINAIS DIGITAIS
Se usarmos um sensor como um NTC (Negative Temperature Coefficient Resistor) para medir temperaturas, temos um sinal analógico em sua saída, ou seja, uma tensão análoga a uma determinada temperatura. Neste sensor, conforme mostra o gráfico da figura 2 temos uma correspondência direta entre a temperatura e a resistência apresentada.
Na faixa de uso do sensor, existe uma correspondência numa faixa contínua de valores entre a resistência e a temperatura. Assim, para cada valor possível da temperatura existe uma correspondência da resistência que o dispositivo apresenta. Não importa quão pequena seja a variação da temperatura que ocorra a partir de um certo valor, teremos sempre uma variação correspondente da resistência.
Isso significa que, entre os dois extremos de temperatura em que este sensor pode ser usado, existem infinitos valores possíveis. Dizemos, nestas condições, que a faixa de cobertura deste tipo de sensor é contínua e que existe uma analogia entre a temperatura e a resistência.
Trata-se, portanto, de um sensor que fornece uma saída analógica.
Podemos converter esta saída de resistência em outras grandezas que também possam variar de maneira contínua, como uma pressão, nível de um reservatório, etc, em outras grandezas elétricas que possam variar também em faixas contínuas como a tensão e a corrente.
Podemos perfeitamente fazer com que a tensão varie de modo contínuo entre dois valores, entre os quais este sensor deve operar, conforme mostra a figura 3.
Evidentemente, nem sempre as coisas são assim simples: vamos supor que em lugar de convertermos a temperatura em resistência, desejemos fazer sua indicação por uma escala de LEDs, conforme mostra a figura 4.
Se cada LED indicar um grau e tivermos 10 LEDs para medir as temperaturas de 20 a 30 graus centígrados, é evidente que não podemos ter uma indicação de valores de temperaturas que não sejam representados por números inteiros. O sistema não consegue indicar 22,4 ou 22,6 graus centígrados. Ou ele indica 22 ou 23.
Se quisermos ter maior precisão na indicação com este tipo de indicador, precisamos de mais LEDs. Com 20 LEDs podemos ter a indicação de meio em meio grau na escala indicada. No entanto, o que fica claro é que, com este sistema, as indicações só podem ocorrer "aos saltos" e que esses saltos tem valores bem definidos.
Dizemos que, neste caso, a indicação ocorre de uma forma discreta e os LEDs acesos podem ser associados quantidades bem definidas ou dígitos. Assim, se vamos usar uma representação digital na forma binária, podemos associar os 10 estados indicativos dos LEDs por uma escala, que é mostrada na figura 5.
Como temos 10 estados possíveis para os LEDs, quatro bits são suficientes para representá-los todos. No entanto, se precisarmos de uma definição maior para as indicações, por exemplo, com 20 LEDs e indicação de meio em meio grau precisaremos de pelo menos 5 bits.
Na prática, as indicações que fazem a cobertura de uma escala com poucos pontos não é interessante, pois não significam uma boa precisão. Quanto mais pontos tiver a "escada" de indicações ,melhor será a precisão na conversão da grandeza, por exemplo a resistência de um sensor.
O circuito que faz este tipo de conversão é um conversor A/D ou um conversor analógico digital. Um bargraph como os usados em aparelhos de som pode ser considerado um conversor A/D simplificado.
Tanto melhor será o conversor A/D quanto mais bits de saída ele tiver.
Um conversor A/D que tenha uma saída de 4 bits tem 16 "degraus" de indicação, ou pode definir uma escala de 16 valores diferentes. Já, um indicador de 8 bits de saída, pode definir uma escala com 256 valores diferentes, um de 12 bits pode definir uma escala de 4096 pontos e um de 16 bits pode definir uma escala de 65 536 pontos, conforme mostra a figura 6.
Veja então que para um conversor A/D que possa definir 256 valores diferentes numa escala de medidas tem uma precisão melhor que 0,4% e com 4096 valores diferentes numa escala de medidas temos uma precisão melhor que 0,024%.
Os conversores A/D existentes no mercado possuem justamente essas características.
OS CONVERSORES NA PRÁTICA
Evidentemente, a escala de LEDs não corresponde ao que desejamos na práatica para um conversor. Para 10 LEDs teremos uma saída para cada LED que farão seu acionamento direto. No entanto, não podemos ter 4096 saídas num conversor que trabalhe com uma escala de 16 bits.
Será melhor termos acesso direto aos bits e com isso dotar o circuito de 16 saídas. Na figura 7 temos um exemplo de como isso pode ser feito.
O circuito conta então com uma entrada em que aplicamos o sinal analógico, sendo especificada normalmente uma faixa de tensões para a conversão. Por exemplo, se o circuito converte sinais na faixa de 0 a 1 Volt, devemos cuidar para que o sensor usado (ou a fonte de informação analógica) trabalhe nesta faixa.
Um amplificador operacional pode ter seu ganho programado para fazer justamente isso. As saídas consistem, então, em 16 pinos nos quais os níveis lógicos 0 ou 1 são obtidos conforme a tensão de entrada.
Para a maioria dos tipos de conversores A/D existentes no mercado, estas saídas são compatíveis com tecnologia TTL (nível alto com 5V e nível baixo com 0V) podendo ser conectadas diretamente na porta I/O de um computador, conforme mostra a figura 8, ou ainda CMOS onde os 5 V de nível alto também pode ser usados sem problemas.
Basta apenas programar o computador para "ler" os valores da porta no instante desejado e fazer a conversão para a escala desejada. Por exemplo, se a faixa de entrada que corresponde à temperaturas de 0 a 30 graus centígrados e, que por sua vez levam à tensões na entrada do conversor de 0 a 1 Volt, o conversor vai gerar na sua saída valores digitais entre 0 e 4096 (se for de 12 bits). O computador deve então ser programado para dividir a escala de 0 a 30 graus centígrados em 4096 valores (cada unidade lida corresponderá a 0,00732 graus).
O valor 010010010010 (binário) lido na entrada I/O ou saída do conversor que corresponde 1070 (decimal) corresponde a uma temperatura de 8,5644 graus centígrados.
Quantização
Os valores instantaneos da tensão do sinal de entrada, que são obtidos na saída do circuito de amostragem e retenção precisam ser convertidos para a forma digital. Este processo recebe o nome de "quantização".
Os DSPs (Processadores Digitais de SInais) processam os sinais analógicos convertidos para a forma digital e fazem uso deste processo.
O que um DSP pode fazer com o sinal vai depender justamente da precisão com que a quantização é feita.
A representação dos valores instantâneos amostrados pelos circuitos anteriores depende do nível de quantização realizado, ou seja, quantos bits são usados para representar cada valor amostrado.
Assim, se usamos 2 bits teremos uma precisão menor do que se usarmos 4 bits para fazer a quantização, conforme mostra a figura A.
Comparando, em cada caso, os níveis quantizados nos dois exemplos, podemos perceber facilmente os erros introduzidos no processo, conforme mostra a figura B.
Nos examplos que demos os níveis de quantização foram muito baixos, aparecenbdo então grandes erros. Na prática, os DSPs usam níveis de quantização de 10 ou 12 bits e até mais, obtendo-se com isso um erro desprezível.
Lembramos que esta é uma das desvantagens de se operar com sinais na forma digital, pois a sua representação só pode ser feita em "degraus" cuja altura vai determinar o grau de precisão. Quanto maior o númro de degraus que pode ser usado, maior é a precisão no valor analógico que é representado na forma digital.
Na prática, quando o DSP trabalha com o processamento de voz, os efeitos dos erros na quantização são mais sensíveis havendo então modos de correção que são adotados para se evitar isso como por exemplo o uso da compressão que compensa os efeitos da largura constante dos passos usados na quantização fazendo com que os sons mais altos de certas vogais e consoantes sejam trabalhados de uma forma mais real.
O CIRCUITO INTERNO DO CONVERSOR A/D
Para fazer uma conversão A/D como na escala de LEDs podemos ter circuitos relativamente simples. Uma simples escala de comparadores que tenham tensões de referência diferentes pode ser usada conforme mostra a figura 9.
Cada vez que a tensão de entrada atinge o nível de disparo de um dos comparadores do conjunto ele comuta passando a acionar o LED correspondente ou mudando o nível lógico de sua saída.
Esse tipo é seqüencial e tem um comportamento que não é muito interessante nas aplicações mais críticas: cada vez que um comparador comuta porque seu nível de acionamento é atingido, o anterior que estava comutado não volta ao estado inicial.
Com um circuito mais sofisticado podemos obter esta comutação e assim passar de um sistema de barra móvel para ponto móvel, conforme mostra a figura 10.
Mas, para as aplicações que envolvem a aquisição de dados, este tipo de conversor não atende às necessidades mais críticas: precisamos converter os níveis em indicações em decimal codificado em binário, binário puro, ou mesmo hexadecimal, para obter maior definição possível e compatibilizar o circuito com a tecnologia digital mais comum. Isso pode ser feito com ajuda de circuitos mais complexos, que além dos comparadores envolvem configurações lógicas e também outros circuitos que facilitem seu uso.
Para entender melhor como funcionam estes circuitos devemos começar como o modo como a amostragem do sinal deve ser feita que é um bloco comum a todos os conversores que é o circuito de amostragem e retenção (sample and hold):
O circuito de captura e retenção ou "sample and hold":
O valor dos sinais analógicos que devem ser convertidos para a forma digital, correspondem a um determinado instante cuja duração, em alguns casos não vai além de alguns milionésimos de segundo.
Assim, um primeiro bloco importante do conversor é um circuito que lê o valor do sinal a ser convertido num determinado instante e o armazena de modo que, mesmo que o sinal varie depois, os circuitos que fazem a conversão têm numa memória seu valor. Esse circuito é mostrado em blocos na figura 11.
O sinal a ser amostrado é amplificado por um buffer de entrada, cuja finalidade é não carregar o circuito externo, e ao mesmo tempo proporcionar isolamento do circuito de conversão.
Na sáida desse circuito temos uma chave eletrônica ou chaveador que determina o instante exato em que a leitura do sinal deve ser feita. A chave fecha por uma fração de segundo (uma frequência que depende da velocidade de amostragem), permitindo que o sinal carregue o capacitor C.
Assim, quando achave abre, esperando a leitura seguinte, o capacitor tem armazenado o valor da grandeza analógica a ser convertida. Esta tensão no capacitor é mantida no circuito conversor através de um buffer de saída, durante o tempo que ele necessita para isso.
Na figura 12 mostramos um gráfico em que representamos o modo como a tensão de entrada varia e o circuito de amostragem e retenção mantém a saída constante durante os intervalos de conversão (que correspondem aos "degraus").
a) Sistema de conversão simultânea
O sistema de conversão simultânea (que é o mais simples) tem a configuração mostrada na figura 13.
Nesse circuito temos uma escala de 8 valores possíveis de saída o que pode ser coberto por um sistema de 3 bits. Trata-se portanto de um conversor A/D de 3 bits. Os comparadores possuem em suas entradas de referência tensões escalonadas, que determinam o instante em que eles devem comutar. Assim, para 8 níveis de acionamento, temos 7 tensões escolanadas de 1/8 a 8/8 de Vcc, que é a máxima tensão que o circuito pode medir em sua entrada.
Evidentemente, esse tipo de circuito está seriamente limitado pela quantidade de comparadores que podemos usar. Para um sistema de 16 bits, por exemplo, seriam necessários 4095 comparadores!
Voltando ao circuito, os níveis lógicos obtidos nas saídas dos comparadores são sequenciais, conforme vimos. Para se obter uma saída codificada em binário, precisamos usar uma matriz codificadora.
Essa matriz pode ser elaborada nesta configuração mais simples a partir de inversores, portas AND e portas OR. Obtemos, com isso, na sua saída sinais que correspondem aos 8 níveis de tensão possíveis, a saber:
000
001
010
011
100
101
110
111
Nesse circuito temos um sistema adicional de RESET e porta de leitura (READ). A porta de leitura é interessante pois ela permite transferir os dados digitais ao circuito externo somente no instante que desejarmos. Assim, podemos dar tempo ao circuito para se estabilizar, o que pode ser importante se usarmos sensores rápidos, impedindo que, na saída, os valores oscilem rapidamente, o que causaria uma interpretação errática do computador ou microprocessador onde ele está ligado.
Aplicando nessa entrada (READ) um pulso de curta duração, lemos o valor digitalizado naquele instante. No circuito indicado, esse valor é armazenado em um registrador formado por um conjunto de flip-flops.
Assim, esse valor se fixa na entrada e pode manter acionado, por exemplo, um indicador. Para a leitura seguinte, o valor armazenado no registrador precisa ser apagado antes de ser feita nova leitura. Isso é conseguido por meio de um pulso de RESET.
b) Circuito de Conversão Por Contador
Na figura 14 temos um diagrama de blocos de um conversor que usa esta técnica.
Destaca-se neste circuito o comparador único que tem duas entradas. Numa entrada é aplicado o sinal que vai ser medido (uma tensão dentro de uma determinada faixa de valores). Na outra entrada aplicamos um sinal que é produzido por um gerador especial denominado "gerador de escada".
Esse sinal consiste numa tensão que sobe "aos saltos" com tantos degraus quantos sejam necessários à saída digital. Por exemplo, num conversor de 8 bits, este sinal consiste em 256 "degraus" iguais de tensão.
Esse sinal pode ser gerado facilmente por oscilador de clock que aplica seu sinal a um contador ligado a uma rede R/2R, conforme mostra a figura 15.
Observamos que o clock deste circuito é habilitado pelo próprio circuito comparador. Assim, supondo que exista uma certa tensão na entrada e a conversão é habilitada, o oscilador de clock entra imediatamente em funcionamento. Supondo que o contador esteja zerado, começa então a produção da "escada" de tensão que passa a ser aplicada ao comparador.
No instante exato em que a escada gera um degrau que se iguala à tensão de entrada, o comparador comuta. O resultado disso, é a parada do clock e portanto da contagem. Neste instante o contador terá registrado o número de degraus contados, ou seja, ele saberá em que valor binário ocorreu a comutação.
Basta então transferir este valor para o circuito externo o que pode ser feito, da mesma forma que no processo anterior através de um registrador. Para nova conversão, o que pode ser feito uma fração de segundo depois, ou quanto tempo for necessário, basta ressetar o contador e reabilitar o clock.
Além dessas duas configurações existem outras, como a de aproximação sucessiva. No entanto, não as analisaremos ainda nesta parte.