Um ADC de US$ 2,97: quão ruim ele pode ser?
(excamera.substack.com)- O módulo ADS1115 ADC de baixo custo oferece funcionalidades quase idênticas às especificações oficiais
- O recurso de amplificador de ganho programável permite alta precisão de medição mesmo em faixas de tensão muito pequenas
- Em algumas placas baratas, foram observados casos de erro na velocidade de medição e na precisão
- Com a aplicação de um algoritmo de calibração simples, é possível obter resultados bastante precisos
- Há a possibilidade de que peças baratas sejam defeituosas ou cópias, mas isso não compromete muito o uso básico
Experimento de desempenho real do ADS1115 ADC de baixo custo
Visão geral
- Em trabalhos embarcados, normalmente usa-se o ADC (conversor analógico-digital) embutido no microcontrolador
- O ADC integrado é barato e rápido, mas o número real de bits medidos (ENOB) fica em torno de 8 a 9 bits
- Recentemente, foi realizado um teste com o módulo ADS1115 da Texas Instruments (TI)
- O ADS1115 é um ADC externo que oferece precisão de até 16 bits
Principais características do ADS1115
- O recurso de expansão de faixa dinâmica permite medir pequenas tensões com até 20 vezes mais detalhe
- Por meio do amplificador de ganho programável (PGA), é possível ajustar toda a faixa de medição de ±6.144 V até ±0.256 V
- O menor LSB é de cerca de 7.8 μV (0.256 V ÷ 32768), permitindo detectar até mudanças muito pequenas
- Em comparação, um passo de um ADC integrado de microcontrolador tradicional (base 3.3V, 9 ENOB) é de cerca de 6mV, o que mostra uma resolução muito superior
- O uso de referência interna de tensão é uma vantagem em relação a MCUs como o RP2040, que exigem uma referência analógica externa
Questão de preço e ambiente de teste
- O ADS1115 custa cerca de US$ 4 na Digikey em lotes de 1.000 unidades, enquanto na LCSC sai por US$ 0,60, mostrando grande variação de preço
- Foi comprada na Amazon uma placa breakout ADS1115 por US$ 2,97 cada (provavelmente usando o componente de US$ 0,60)
- Também está prevista a compra de uma placa mais cara (original) da Adafruit para testes comparativos
Processo de teste na prática
-
A placa barata foi testada usando o I²CMini e uma fonte DC de tensão de precisão
-
Principais pontos de verificação:
- se funcionava exatamente conforme a especificação
- ou se algum outro componente mais barato estava sendo vendido como se fosse um ADS1115
-
Resultados do teste
- O funcionamento básico, a saída de 16 bits, o amplificador de ganho programável e as diversas taxas de amostragem corresponderam em grande parte ao datasheet da TI
- Ao conectar a entrada no modo diferencial, a medição sempre foi 0; com entrada de 2.5V, a leitura foi correta; ao inverter a polaridade, a saída apresentou o valor oposto, sem problemas básicos de funcionamento
Precisão de medição e erros
- Data Rate (taxa de amostragem): pela especificação da TI, é permitida variação de até ±10%
- No modo 8 SPS, três placas operaram um pouco mais lentamente, em 6.5~7 SPS
- Uma placa operou com temporização completamente errada, a 300 SPS, e foi excluída dos testes posteriores
- Ao medir uma tensão de precisão (2.50067V), a saída foi 2.4883V, gerando um erro de cerca de 12mV/0,5% (maior que a especificação oficial da TI)
- Com a aplicação de um algoritmo de calibração linear simples no microcontrolador, o erro foi reduzido para menos de 10 μV
Conclusão
- Presume-se que peças defeituosas ou componentes abaixo da especificação em relação ao original tenham acabado entrando na cadeia barata de distribuição para hobby
- Ainda assim, medições bastante precisas são possíveis por padrão e, com uma calibração via software, não há grandes problemas para uso real
- Após obter uma placa original de maior preço, está previsto um novo teste nas mesmas condições
Encerramento
- O ADS1115 de baixo custo oferece uma relação custo-benefício bastante marcante
- Se for adicionada uma calibração simples no nível de hardware/firmware, é possível garantir boa precisão prática
- Vale ter atenção à procedência da compra e ao controle de qualidade para verificar questões como defeitos
1 comentários
Opiniões do Hacker News
Fica fácil comparar componentes baratos e originais lixando ambos com uma lixa fina e limpando com isopropílico, depois observando sob um microscópio óptico; mesmo sem chegar a marcações identificáveis ou às camadas metálicas, já dá para notar rapidamente semelhanças e diferenças estruturais no die do chip; peças clone normalmente mostram grandes diferenças em nó de processo, arquitetura, tamanho do chip etc., porque em geral apenas imitam a função; recomendo esse método de desmontagem de baixa tecnologia com lixa e compartilho imagens relacionadas (imagem 1 / imagem 2)
Já fiz esse tipo de trabalho várias vezes, principalmente para resolver disputas sobre a origem de componentes; a maioria dos encapsulamentos epóxi sai rapidamente ao ser dissolvida em ácido sulfúrico/nítrico fervente; pela minha experiência, a maior parte é apenas relabeling, mudança de bin, ou camuflagem óbvia de peças reprovadas no QC, muitas vezes amostras; há também um vídeo de exemplo de alguns anos atrás (link do vídeo)
Não necessariamente é clone; como o autor original disse, também há muitos casos em que produtos considerados abaixo do padrão no processo de fabricação são reembalados e enviados para canais normais de distribuição
Se houvesse função de marcar pessoas aqui, esse seria exatamente o tipo de assunto que o Ken Shirriff adoraria; recomendo o blog dele (righto.com)
Não concordo com a afirmação de que "é barato e relativamente rápido, mas a qualidade não é lá grande coisa; embora a saída seja especificada como 12/16 bits, o número efetivo de bits (ENOB) fica em torno de 8 a 9"; em MCUs modernos, se você tomar cuidados como fornecer uma tensão de referência externa estável e desligar subsistemas desnecessários no chip, dá para obter tranquilamente mais de 10 bits de ENOB; claro, um ADC integrado não terá o mesmo desempenho de um ADC dedicado, mas para 90% das necessidades reais de ADC isso costuma ser suficiente; se precisar de mais bits, o projeto exige mais esforço, e o texto original não menciona a fonte de alimentação usada, nem ruído do MCU ou controle de RFI; assim fica difícil dizer se era realmente um CI falsificado com especificações ruins ou se o ambiente de teste estava muito ruidoso
É possível obter resultados interessantes usando dois GPIOs em uma topologia sigma-delta de primeira ordem, com dois resistores externos, um capacitor e histerese desativada; usando um RP2040 com alimentação por LDO e medição diferencial (um canal rastreando apenas o ruído de limiar), consegui 16 ENOB a 1 kHz e ainda mais ENOB em DC; é muito importante impedir atividade periódica no chip; por exemplo, é preciso usar sleep em intervalos aleatórios para espalhar o espectro, e consegui usar USB com ruído abaixo de -100 dB; ainda não testei a precisão DC, mas com canais GPIO parecidos isso serve para usos não críticos e de baixa precisão, como sensoriamento da linha CC ou joystick analógico
As duas pessoas podem estar certas; o autor original talvez estivesse falando apenas de MCUs bem baratos, enquanto quem comentou parece ter em mente MCUs de categoria superior; o ADC de 12 bits do RP2350 tem 9,2 ENOB em especificação; pode subir com decimation de múltiplas amostras, mas o datasheet dá respaldo à afirmação do autor (link da documentação oficial do Raspberry Pi); o CH32V003, um MCU ainda mais barato, tem desempenho de ADC pior; por outro lado, há MCUs como a série STM32H7, cujo ADC de 16 bits registra mais de 13 ENOB; mas o H7 custa mais de 10 vezes o preço do RP2350, então experimentadores não lidam com ele com tanta frequência (nota de aplicação do ADC STM32H7)
Testei algumas placas de desenvolvimento STM32F103 com um multímetro Siglent SDM3055 e uma fonte Siglent SPD330X; o ADC SAR de 12 bits do chip era muito afetado pelo layout e pelo projeto da placa; mesmo a pior amostra entregou 10 bits, e a melhor chegou perto de um efeito equivalente a 12 bits; isso foi sem ajustes especiais de software; o desempenho às vezes caía quando a comunicação estava ativa, mas fora isso não houve influência especial de ruído
Eu planejava usar um ADS1115 (verdadeiro) em um projeto, mas no fim escolhi um STM32g071; era mais barato, estava mais fácil de encontrar na época e oferecia maior flexibilidade; nos ADCs recentes das séries STM32g/h, os riscos de hardware/software diminuíram claramente em comparação com a antiga linha f103
Eu só queria apontar que, quando o texto diz que "os ADCs de microcontroladores têm faixa fixa de 3,3 V, então 9 ENOB significa cerca de 6 mV de diferença", isso dá a entender que nenhum MCU tem tensão de referência independente; mas muitos MCUs, inclusive da NXP, oferecem tensão de referência programável integrada
Sobre a opinião de que "componentes baratos em geral são cópias excelentes ou produtos reprovados no QC que entraram no canal de distribuição", a maioria dos chips falsificados que vi era fabricada em ghost shift (produção secreta fora do expediente formal), mas a TI fabrica todos os seus produtos analógicos internamente, então acho improvável que seja ghost shift ou peça reprovada no QC; pessoalmente, acho mais provável que seja um ADS1015 relabelado
Os falsificados que me causaram prejuízo (FDTI, clones de STM32 etc.) eram, na maioria, falsificações feitas diretamente; ao contrário de excesso de estoque, ghost shift ou reembalagem de peças defeituosas, isso parece ocorrer com mais frequência na área digital e de sinais mistos; por sinal, chips clone de STM32 têm flash em die empilhado, porque não conseguem fazer o processo de flash e então o fabricam separadamente e empilham, de modo que ao lixar o encapsulamento aparece um conjunto extra de bond wires; também dá para usar esse barramento para contornar a proteção de leitura
Sou o autor do texto, e eu também sei que já houve casos reportados de ADS1015 remarcado como ADS1115; se fosse um ADS1015, a saída teria travado em 12 bits, mas as peças que testei realmente forneciam leitura de 16 bits
Tenho interesse nas histórias e no contexto da área de ADCs; na prática, só usei em velocidades baixas; comecei com o MCP3208 (SPI), usando 8 canais a 100 mil amostras/s, mas como era lento precisei de um ADC mais rápido e mudei para o ADS7953; ele tinha 16 canais e era 10 vezes mais rápido, então o desempenho era claramente melhor; só que programar era mais difícil, e a velocidade máxima só era possível escaneando as entradas em uma ordem predefinida; para mim, esses chips são como carros: o ADS7953 parece um supercarro, enquanto o MCP3208 parece um Toyota simples; também tenho curiosidade sobre a história industrial desses ADCs, como cada um encontrou seu lugar no mercado e o quanto são usados
Já vi no CERN um projeto com ADC de 12 bits operando na casa de dezenas de GHz de taxa de amostragem; o segredo era simplesmente paralelismo; várias unidades SAR de 12 bits operando na faixa de MHz eram replicadas, e um grande multiplexador analógico distribuía o sinal em round robin; isso exigia uma área de chip enorme, mas permitia alcançar essa velocidade; além desses métodos extremos, também se usam flash ADC (wiki de flash ADC) e, para precisão, ADC multisslope (tutorial de ADC multisslope); também tenho curiosidade sobre a história e os bastidores
Também quero mencionar o AD9226; ele é de 1 canal, mas oferece 12 bits e até 65 MSa/s; comprei um no AliExpress por cerca de $12 e usei em experimentos de decodificação por software de vídeo analógico; no meu caso, usando algo como 8 bits e 20 MSa/s com um Raspberry Pi Zero e o periférico SMI, o gargalo surpreendentemente era a transferência de dados; referência de uso do SMI (link do iosoft.blog)
Na minha realidade, 100 mil amostras/s já é absurdamente rápido; em programas de PLC, elevar o padrão de 2 mil amostras/s para 10 mil já é visto na prática como desempenho muito alto
ADCs ultrarrápidos são difíceis demais para lidar diretamente com microcontroladores, então isso costuma cair no território dos FPGAs; é preciso receber os dados do ADC direto no FPGA e convertê-los para um barramento paralelo que o MCU consiga tratar com facilidade, e como transmissão ultrarrápida exige muitos pinos, bastante processamento bruto e DMA, na prática isso parece bem difícil
Ao contrário da afirmação de que "ADCs de 12 a 16 bits ficam em torno de 8 a 9 ENOB", o método de conversão de 1 bit usado no SACD (centenas de milhares de amostras por segundo) alcança faixa dinâmica de 120 dB e largura de banda de cerca de 100 kHz; o CD (PCM de 16 bits) tem 96 dB e faixa de 20 kHz; do ponto de vista da complexidade do hardware analógico, conversores de 1 bit/bitstream são muito mais simples; o fato de ADCs de 16 bits serem baratos também se deve à produção em massa; na prática, substituir profundidade de bits por taxa de amostragem é uma abordagem bem atraente, parecida com SSAA em gráficos 3D, que amostra mais pixels para obter informação de alta frequência (wiki de DAC de 1 bit, wiki de Direct Stream Digital)
Um ADC de $3 não é barato; ADC realmente barato é o embutido em MCU barato; a própria TI também vende ADCs/AES baratos limitados de propósito a 10/12 bits, embora a linearidade real possa passar de 16 bits; a diferença de custo de produção entre peça defeituosa e peça boa é quase nula; se o processo semicondutor for o mesmo e o projeto for sólido, um ADC barato não necessariamente terá desempenho inferior
A LCSC pode vender barato porque compra diretamente em grande volume de empresas como a TI e trabalha com margens baixas; já vi chips clone na LCSC, mas na maioria das vezes eles são vendidos com outra marca
Preço baixo não significa necessariamente qualidade ruim; ADCs de alta precisão são fáceis de implementar graças a técnicas de processamento de sinal se não for preciso alta taxa de amostragem, e métodos como ADC delta-sigma ou de rampa conseguem medições precisas com circuito de pattern hold e até um único bit; só levam tempo; mas se você quiser um flash ADC de 16 bits a 100 MHz, talvez precise hipotecar a casa de tão caro que pode ficar
A maioria das empresas tem política de preços por região; por exemplo, minha assinatura do Spotify custa cerca de 60% do preço nos EUA; o setor eletrônico também tem listas de preço específicas para a China; aliás, os preços oficiais listados no Ocidente são apenas um teto máximo, e mesmo em projetos pequenos você pode conseguir desconto se falar diretamente com vendas
Na prática, um ADC de $3 não é um componente tão barato, e países com custo de fabricação menor conseguem comprar muito mais barato; no fim, o importante é que o produto funcione corretamente no teste de fábrica e passe pelas condições definidas pelo teste de produção para cada produto, porque na prática isso já basta