Bom dia a todos, estou fazendo um projeto para monitorar a pressão de um transdutor de pressão com saída de 0.5 a 4.5V que vai medir a faixa de acionamento de um vacuostato, alem disso tambem estou realizando a medição da resistência interna dos contatos do vacuostato.

O projeto já está funcionando faltando apenas alguns ajustes, porem um dos pontos que me preocupa é a precisão das medições. Vi em alguns sites que se diminuir a taxa de amostragem do ADS1115 ele faz medições mais precisas, mas não consigo achar informações de como alterar essa taxa.

Abaixo está o código e o link da biblioteca que estou usando:

ADS1115.ino

https://github.com/adafruit/Adafruit_ADS1X15

Exibições: 66

Responder esta

Respostas a este tópico

olá novamente, J. Leonardo.

      Há algumas observações significativas sobre sua questão.

      Mas antes de falar sobre estas observações, vamos à sua questão principal: alterar a Taxa de Amostragem do ADS1115.

      A LIB da Adafruit  tem uma função (ou "método", se preferir),  que permite vc alterar a Taxa de Amostragem, e ela se chama "setDataRate".

      Vc pode chamar esta função no "setup" do Arduino.  Mas vc pode também chamar antes de qualquer leitura do Conversor, pois isto fará com que seja usada a nova taxa especificada.

      Há 8 Taxas de Amostragem disponíveis (e não há como vc usar outras taxas além dessas 8), e elas são:   8, 16, 32, 64, 128, 250, 475, e 860 samples por segundo.

      Para facilitar a seleção dessas taxas, a LIB da Adafruit definiu nomes que vc pode usar. Estes nomes estão definidos no arquivo "Adafruit_ADS1X15.h", e são mostradas na figura a seguir onde marquei os mesmos em azul:

(clique na figura para "zoom")

      Assim se quiser por exemplo usar a Taxa de 64 samples por segundo,  no seu caso como vc instanciou o objeto "ads",  basta que vc especifique dessa forma:

               ads.setDataRate( RATE_ADS1115_64SPS );

      Note que se vc não especificar uma Taxa de Amostragem, a LIB usará a taxa default de 128 samples por segundo (ou seja, o valor "RATE_ADS1115_128SPS", correspondente a 128 Hz).

      Importante:  não adianta chamar o "setDataRate" passando como argumento um valor numérico igual à própria Taxa de Amostragem,  pois existe uma codificação binária (um índice) na definição dos nomes no arquivo "Adafruit_ADS1X15.h", e esta codificação é que de fato é usada na função (o que por sua vez está atrelado a um Registro de Controle  interno do ADS1115).  Isto é feito assim justamente devido ao fato de existirem apenas 8 Taxas possíveis.

      Agora seguem algumas observações importantes sobre sua questão:

      1)  uma melhor precisão não está presa a uma menor Taxa de Amostragem.  Há diversos parâmetros que definem a precisão. Veja que o ADS1115 é um Conversor Sigma-Delta, e por isso normalmente já tem ótima precisão, que no caso usa 16 bits. Além disso, a maior taxa possível com o ADS1115, é de 860 Hz,  ou seja, muito baixa para os padrões dos Conversores A/D tradicionais. Então como seria de se esperar,  o ADS1115 é excelente para o que ele se propõe a fazer:  converter sinais analógicos de baixa frequência.

          Note que vc deve garantir que no seu sinal analógico sendo convertido,  não existam componentes de frequência acima da metade da Taxa de Amostragem, senão existirão ruídos inerentes à sub-amostragem, e depois da Conversão A/D  não será mais possível  eliminar estes ruídos de forma alguma (nem o mais fantástico DSP  conseguiria fazê-lo, sob pena de eliminar também partes do sinal real).  Assim, se por exemplo vc está usando uma Taxa de Amostragem de 128 Hz,  garanta que não exista no sinal sendo amostrado, frequências acima de 64 Hz.  Para garantir isto, use um Filtro Anti-Aliasing (normalmente um FPB).

          Na verdade, o ADS1115  por ser um Sigma-Delta, já tem alguma rejeição à frequências mais altas, mas não use isto como pretexto para não usar um Anti-Aliasing, se realmente vc quer um bom resultado.

      2)  Há uma tolerância  especificada para a Frequência de Amostragem, e os limites dela são de 10%  para cima ou para baixo, conforme vc pode ver onde marquei em amarelo na figura a seguir:

(clique na figura para "zoom")

      Isso significa que a Frequência de Amostragem pode não ser exatamente a esperada. Mas como isto varia???  Veja isto na figura a seguir, onde marquei em azul e amarelo:

(clique na figura para "zoom")

      Como se pode ver no gráfico na figura anterior,  a variação é pequena, e portanto a princípio isto não seria um motivo de preocupação. Mas é importante saber que ela existe, e qual sua faixa de variação (e saber que é dependente da alimentação e da temperatura ambiente).

      3)  finalmente, sobre a questão de aumentar a precisão com a redução da Taxa de Amostragem, de fato isto poderia ser efetivo caso existissem elementos no seu Hardware  que não estivessem adequadamente dimensionados.  Veja: se a alimentação  dos Circuitos Analógicos do seu Sistema possui algum ripple significativo (em relação à faixa de sinal convertido e ao step de 16 bits do A/D),  então este mesmo ripple  poderá contaminar o sinal analógico sendo convertido, e neste caso, reduzindo a Taxa de Amostragem iria naturalmente reduzir o efeito daquele ripple.  Mas neste caso,  talvez fosse mais sensato considerar melhorar a alimentação dos Circuitos Analógicos, pois seria uma ação mais efetiva.  Claro,  um Filtro Anti-Aliasing  poderia também eliminar o ripple, dependendo da faixa de frequência do sinal sendo convertido (e da frequência do próprio ripple).

      Espero ter ajudado.

      Fique à vontade para perguntar caso tenha alguma dúvida.

      abrçs,

      Elcids

Olá Elcids,

Como vai ?

Referente ao meu problema de como mudar a taxa de amostragem já está resolvido, acredito que entendi tudo que explicou sobre a biblioteca e consegui alterar meu programa.

1) Acredito que não me atentei muito a taxa de amostragem do sensor, vou pesquisar um pouco mais sobre ela, mas acredito que o sensor realize 5 medições por segundo.

Estou usando para alimentar o circuito uma fonte de 12V.

Vou implementar o filtro anti-aliasing que você sugereriu.

Irei atualizar o projeto e se tiver alguma mudança eu posto aqui no forum.

E novamente obrigado pela resposta bem explicativa.

RSS

© 2022   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço