ADC de alta resolução para sensores ruidosos em condições variáveis

9

Introdução

Em resposta a esta pergunta sobre amplificadores adaptativos , foi recomendado que, para lidar com condições variáveis, pode ser mais econômico simplesmente usar um ADC com resolução mais alta, para que eu não precise me preocupar com amplificação e possa fazer o dimensionamento. em software.

Visão geral

Estou tentando projetar um circuito de aquisição de dados para sensores de estiramento baseados em têxteis montados no corpo. O tecido varia de resistência à medida que é esticado (cerca de 1 ordem de magnitude, 10k -100k com 30% de alongamento). Os intervalos exatos mudam dependendo de como o tecido é cortado, se está encharcado de suor, da temperatura, da idade do material, de como é montado etc. A coisa toda precisa ser o menor possível, porque é montada na mão , minimizar o número de componentes é uma grande vantagem.ΩΩΩ

Além disso, eu gostaria que o circuito fosse reutilizável para outros aplicativos que podem ter desempenho pior. Por exemplo, se eu usar uma versão mais barata do tecido, minha faixa de resistência poderá ser tão ruim quanto 100 a 300 .ΩΩΩ

Caminho do sinal

[têxtil] -> [Ponte de Wheatstone] -> [passa baixo] -> [amplificador de instrumentação] -> [ADC] -> [AVR]

Exigências

Então, estou procurando um ADC que atenda aos meus requisitos. O ADC deve ser:

  1. 16bits +
  2. Tão fácil de usar quanto possível: muito melhor se já houver código de interface escrito para o AVR / Arduino ...
  3. ... mas, ao mesmo tempo, o mais abrangente possível: eu já vi alguns ADCs com filtros passa-baixo e PGA embutidos - tanto quanto melhores, desde que isso não torne a configuração um problema
  4. Mais de 8 canais ou, se for fácil o suficiente, 2x mais de 4 canais. EDIT: Se estou usando uma ponte Wheatstone, talvez eu queira 8 canais de entrada diferencial (16 canais) ...
  5. Eu não acho que a tensão de operação é importante ... (melhor se não for acima de 5V)
  6. Montagem em superfície
  7. Não precisa ser barato (é único)
  8. SPI vs. I2C não importa, eu acho ...
  9. 100+ Hz

Pesquisa

Até agora, no Google, encontrei os seguintes chips:

e os seguintes tutoriais:

Referência de tensão?

Finalmente, algumas pessoas recomendaram uma referência de tensão de precisão, como a série REF19x dos dispositivos analógicos . Você acha que isso é necessário? A resolução é definitivamente importante para mim.

Conclusão

Deixe-me saber se você tem alguma recomendação! Também não sei exatamente o que estou procurando, portanto, dicas sobre como decidir também são apreciadas.

terraço
fonte
Espero evitar esse tipo de história: arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1264346368
terrace
@ msutherl - Seria um grande problema se você tivesse que usar um mux para se conectar a este ADC? Você terá um tempo difícil encontrar um, 16+ bit ADC de 16 canais, mas partes de 1 canal ou 2 canais são bastante fáceis ...
Kevin Vermeer
11
Os bits por si só não determinam o alcance dinâmico. Os conversores de 24 bits teoricamente poderiam ter uma faixa dinâmica de 144 dB, mas os conversores reais são de 100 a 120 dB ou mais. Tem certeza de que precisa dessa resolução para um sensor de alongamento? Você está tentando lidar com vários sensores de estiramento diferentes de valores diferentes? Seria melhor usar apenas um amplificador de ganho variável, eu acho, e ajustá-lo para cada um. Você terá que fazer essa calibração em algum lugar de qualquer maneira.
endolith 24/03
11
Você precisa de 100Hz + para cada sensor ou para todos eles? Com os ADCs multicanais, você recebe frequentemente 1 ADC e um mux, portanto, terá que dividir o SPS pela contagem de canais (ou mais se o par mux / adc não puder mudar de canal muito rapidamente).
JPC
11
@msutherl Sim, um pote de ganho manual ou um amplificador de ganho programável. Algo como um PGA116 poderia lidar com a amostragem de todos os seus sensores de maneira round-robin com ganhos diferentes para cada um, com tudo feito em software?
endolith 25/03

Respostas:

7

O ADS1256 da TI possui oito canais de 24 bits de extremidade única com buffer de entrada de alta impedância e PGA. O projeto OpenEXG possui código PIC para fazer a interface (eles usam a versão ADS1255 de dois canais, mas deve ser a mesma).

Se você deseja entradas diferenciais, existe o ADS1298 , com 8 canais, PGAs e A / Ds, referência interna, mais circuitos de ECG / EEG que você pode ignorar. Não tenho certeza se você pode encontrar qualquer código de exemplo para este, no entanto.

Se você está procurando uma resolução, uma referência precisa e com baixo ruído é uma obrigação.

Jaroslav Cmunt
fonte
5

Uma ideia talvez não convencional, estou curioso para saber o que vocês pensam sobre isso:

Uma ordem de magnitude parece uma mudança suficientemente grande para medi-la diretamente em um circuito divisor de tensão.

Você pode usar um ADC menor e variar a corrente através do sensor. Uma fonte de tensão PWM filtrada + um seguidor de tensão (pode ser um transistor NPN se você estiver na coxa no espaço) pode melhorar drasticamente sua faixa dinâmica.

Você pode usar um ou dois destes e mudar a tensão ao medir diferentes sensores.

jpc
fonte
Não é nada convencional. De fato, se ele quiser usar um microcontrolador pequeno de 8 bits, dessa maneira ele poderá evitar lidar com valores de 24 bits e a complexidade poderá ser menor do que a interface desses ADCs sofisticados. A faixa dinâmica pode ser a soma das faixas dinâmicas de ADC e PWM no caso ideal. Por outro lado, parece que, para muitas pessoas, os designs analógicos são mais difíceis do que o digital; portanto, o uso do ADC de 24 bits pode ser mais simples. Além disso, a faixa dinâmica do ADC pode ser aumentada por superamostragem e filtragem digital ... bem, não é mais simples.
Jaroslav Cmunt
@Jaroslav Thanks. 1. Ele já tem uma ponte de Wheatstone, então acho que ele não tem muito medo da parte analógica. :) 2. É possível obter 1 ou 2 bits de resolução adicional por um simples filtro de soma em execução.
JPC
11
De fato! Aqui está um link para o OP: http://www.dspguide.com/ch15.htm
Jaroslav Cmunt
3

Se sua principal preocupação é ter uma ampla faixa dinâmica para qualquer "sensor", considere o uso de DACs (ou mesmo apenas fontes de tensão controladas por pinos MPU) para ajustar o desvio / ganho do amplificador para alterar o desempenho do sistema para diferentes materiais.

Você também pode seguir esse estágio de ganho variável com um circuito de integração de carga, para poder obter uma sensibilidade do sinal de sintonia fina ajustando o período de "exposição".

Construtor de brinquedos
fonte
0

Se você tiver energia de computação suficiente para a taxa de amostragem necessária, considere a filtragem digital. Um filtro Savitzky-Golay , f / ex.

  • Você pode alterar algoritmos mais facilmente do que alterar partes;
  • Ao inserir parte da filtragem no software, você provavelmente pode usar uma parte de especificação mais baixa do que se a parte em si tivesse que ser mais tolerante a ruído ou fazer toda a filtragem;
  • Você aprenderá muito mais sobre suas entradas e o que precisa delas e poderá fazer uma escolha de peças mais bem informada, se, de fato, precisar de uma peça com especificações mais altas.
  • Software e habilidades são facilmente transferidos para seus outros aplicativos!
JRobert
fonte
toda a filtragem será feita em um PC em um ambiente de processamento de sinal em tempo real.
terrace
0

Por que não aumentar para 11 e apenas use a TI ADS1262 . É um ADC de 32 bits, com 11 entradas e um PGA!

ADS1262

Com 32 bits, você pode experimentar praticamente qualquer coisa. E nem é tão caro. Além disso, se você estiver fazendo apenas um desses, obtenha uma amostra grátis .


Outra opção é usar um PSoC. Estes são microcontroladores contendo blocos analógicos e digitais reconfiguráveis, que você pode usar para compor todos os tipos de funções. Você pode escolher um com um ADC de 16 bits, um PGA, um DAC e um filtro digital, para criar o seu próprio ADC de alcance automático, ajuste automático, amostragem excessiva e filtragem digital!

PSoC38xx

Programar essas coisas como uma trapaça, como você simplesmente desenha o esquema que deseja, escolhendo funções predefinidas em uma lista. Em seguida, escreva um código C e você estará fora.

Rocketmagnet
fonte