Agora que a corrente já foi medida e o sinal ampliado, o próximo passo é converte-lo para digital.
A procura pela ADC é uma coisa interminável, pois existem muitas, com várias funções etc...
O que procurei foi uma ADC com o máximo de bits, dentro do possível, pois com as comuns ADC de 10bits dos MCU a resolução mínima de leituras seria algo como 38uA (100mA/1023)... o objectivo é medir bem abaixo disso!
Uma vez que se pretende medir com algum rigor, a ADC tem de suportar uma entrada de Vref, sobre a qual serão feitas todas as divisões para a conversão.
Após alguma pesquisa e de ter conversado com o meu amigo Vitor Goulão (desde já um obrigado), consegui no stock dele uma MCP3428. Esta ADC tem mais do que aquilo que estaria a imaginar...
É uma ADC de 16bits, com 4 canais diferenciais (embora só vá usar 1 deles), com uma referencia interna de 2.048V (erro +-0.05%) e com um PGA na entrada (ganhos 1, 2, 4, 8), que me permite facilmente e de forma "digital" variar os ganhos de forma a ter sempre a máxima resolução possível. Esta ADC permite a medição de tensões negativas (canal diferencial) e por isso, os 16bits máx são aplicados de -2.048V a +2.048V. Como a tensão a medir será sempre positiva, quando configurada para leituras de 16bits, vou apenas ter resolução de 15bits, uma vez que não estou a usar a metade negativa da escala.
A frequência de leitura também afecta a resolução, pelo que para esta ADC:
De forma a dar alguma rapidez na leitura e manter o máximo de resolução, optei pelo modo de 60SPS, ou seja, 14bits.
Qual a ideia geral?
Bem, para quando estiver a medir um sinal muito pequeno, ajustar a ADC para o PGA tenha o ganho máximo, à medida que esse sinal vai aumentando ir reduzindo o ganho do PGA. Simples... desde que se tenha em atenção a escolha dos valores, para que o programa não fique retido, mas isso vem a seguir.
O ganho do PGA é 1:
Topo de medição da ADC vai corresponder a 100mA;
Meio da medição da ADC vai corresponder a 50mA, então podemos subir o ganho.
O ganho do PGA é 2:
Topo de medição da ADC vai corresponder a 50mA;
Meio da medição da ADC vai corresponder a 25mA, então podemos subir o ganho.
O ganho do PGA é 4:
Topo de medição da ADC vai corresponder a 25mA;
Meio da medição da ADC vai corresponder a 12.5mA, então podemos subir o ganho.
O ganho do PGA é 8:
Topo de medição da ADC vai corresponder a 12.5mA;
O contrário também deverá ser feito, de modo a reduzir o ganho, quando o valor medido começa a subir. Para qualquer ganho abaixo de 1, se o valor medido for de 2^13-1, então o melhor é reduzir o ganho, porque se atingiu um topo de escala.
No que toca à comunicação, é utilizado I2C. Tem apenas um byte de configuração e aquando da leitura a resposta tem 3 bytes. Os primeiros 2 correspondem à leitura da ADC e o último é o byte de configuração que informa também se já foi feita uma nova leitura (utilizando o oscilador interno da ADC).
No proximo artigo irei descrever um pouco melhor os aspectos da comunicação, configuração e a gestão que o MCU terá de fazer.