Calibração do sensor de pressão MPS20N0040D com Arduino

Tempo de leitura: 12 minutes

A pressão é definida como uma força uniformemente distribuída atuando sobre uma superfície com uma determinada área. A medição precisa da pressão é essencial para aplicações que variam de testes de materiais a escalas de pesagem, previsão de altitude de aeronaves e avaliação de funções biológicas em humanos relacionadas à respiração e fluxo sanguíneo [leia mais sobre medição de pressão aqui]. Neste tutorial, um transdutor de pressão digital e um manômetro de pressão analógico serão usados para medir a pressão manométrica – onde o manômetro analógico é usado como ferramenta de calibração para o sensor de pressão digital. O Arduino será usado para ler o transdutor de pressão digital, um MPS20N0040D e um manômetro impresso em 3D será usado para medir a pressão analógica manualmente. A simplicidade e confiabilidade de um sistema analógico são demonstradas, junto com a facilidade de um sistema digital. Os sensores digitais são frequentemente calibrados com instrumentos analógicos, e a razão disso fica evidente nos experimentos a seguir.

Sensor de Pressão de Fundos

Os sensores de pressão funcionam sob uma variedade de princípios físicos diferentes que incluem: densidade e gravidade do fluido, piezoeletricidade, piezoresistividade, capacitância elétrica e resistividade elétrica. O sensor de pressão MPS20N0040D usado aqui tem documentação muito pobre e, portanto, sua transdução elétrica (conversão de pressão em sinal elétrico) é desconhecida. É provável que ele use um elemento piezoresistivo como muitos outros transdutores de pressão de baixo custo [veja a série MPR da Honeywell ou os sensores MPXV700xxx da NXP Semiconductors – ambos piezoresistivos]. Não é necessário conhecer o método pelo qual o sensor de pressão funciona, desde que conheçamos a sensibilidade do fabricante e o alcance do sensor.

A ficha técnica do sensor MPS20N0040D consiste em três páginas de descrição e imagens de baixa qualidade que não nos dizem muito sobre o comportamento real do sensor, nem fornecem informações valiosas sobre as curvas de resposta ou informações de calibração. Por exemplo, a folha de dados afirma que a faixa de pressão é 0 – 40kPa, mas também afirma 5,8 psi (correto) E 580 psi (incorreto). A folha de dados continua afirmando que o sensor tem um desvio de tensão de ± 25mV e uma saída de tensão em escala real de 50mV – 100 mV. Qual é? 50mV ou 100mV? E se for ambos – qual é o qualificador? O deslocamento é normalmente associado ao ponto zero da faixa de detecção, então talvez a faixa seja 50mV (0mV – 50mV). A faixa de tensão e a faixa de pressão operacional são essenciais para interpretar a resposta digital de um sensor e aproximar um valor de pressão analógica. Assim, é nosso dever usar instrumentos analógicos (um manômetro no nosso caso) para calibrar e comparar a resposta real do sensor com as informações citadas na folha de dados.

O manômetro U-Tube

Um manômetro é um dispositivo de medição de pressão que tira proveito de diferentes densidades entre líquidos e gases sob a influência da gravidade. O NIST, Instituto Nacional de Padrões e Tecnologia, reconhece o manômetro de tubo em U como o principal padrão para medir a pressão devido à sua precisão e simplicidade. Um manômetro geralmente consiste em uma interface do ar com um líquido, geralmente água. O NIST usa manômetros de ar-mercúrio como forma de evitar alguns dos erros associados aos manômetros de ar-água, mas as aplicações são idênticas. Uma configuração ar-água é usada e discutida aqui, principalmente por questões de segurança [leia mais sobre manômetros aqui].

Abaixo está uma visualização de um manômetro tipo tubo em U padrão em equilíbrio (P1 = P2):

O manômetro está em equilíbrio no manômetro acima porque o nível da água entre os lados esquerdo e direito são equivalentes, o que significa que suas pressões são iguais em P1 e P2. Se tivéssemos que exercer uma pressão mais alta em P1, o manômetro se comportaria como mostrado abaixo:

A visualização acima mostra que quando uma pressão maior é aplicada em P1, os níveis de água mudam no manômetro de tubo em U. Usando o princípio de Bernoulli para fluidos incompressíveis em dois pontos diferentes de medição, a relação entre a pressão e a altura diferencial δ pode ser derivada para o cenário de um manômetro de tubo em U:

onde P é uma medição de pressão em um determinado ponto, ρ é a densidade de cada fluido, g é a aceleração devido à gravidade, v é uma velocidade (assumido como zero neste caso) e h é a altura do fluido em relação a nível do solo (definindo sua energia potencial). Os subscritos i, j simplesmente representam dois pontos dados no mesmo continuum. Supondo que não haja velocidade, a equação acima simplifica para o seguinte:

A próxima suposição é que para a maioria dos manômetros de tubo em U, P2 está aberto para a atmosfera. Assim, usando a equação acima, e assumindo que abaixo do ponto δ as pressões são iguais, surge a seguinte relação para a pressão aplicada:

A pressão atmosférica é definida aqui como P0. Essa diferença de pressão também pode ser escrita como pressão manométrica, que será simplesmente escrita como P daqui para frente:

Esta é a definição padrão de medição de pressão usando um manômetro de tubo em U. A altura do líquido, δ, pode ser facilmente medida com um micrômetro ou régua com medida precisa da distância. As densidades também podem ser aproximadas por seus valores padrão (e até mesmo em temperatura e pressão específicas para maior precisão). Por último, uma aproximação mais precisa da aceleração devido à gravidade também pode resultar no aumento do desempenho de um manômetro.

Transdutor de pressão MPS20N0040D

O MPS20N0040D, conforme mencionado acima, é um transdutor de pressão manométrica que se aproxima da pressão, P, dada na última equação acima. Não há muito a ser dito sobre este sensor neste momento, já que a folha de dados é terrivelmente vaga e indireta. Portanto, a suposição é que o MPS20N0040D daqui para frente responde a 40kPa em um intervalo de 50mV. O sensor usado aqui é conectado a um Hx710B, que é um conversor analógico-digital de 24 bits (ADC) e amplificador de sinal com uma amplificação definida de 128. Assim, ao aplicar 5 V ao sensor, obtemos uma possível resposta de 0V – 6,4V. Sob a suposição de linearidade (comum para transdutores de pressão), a resposta do MPS20N0040D pode ser aproximada usando uma relação de inclinação e interceptação entre o sinal elétrico e a pressão medida:

Na observação do gráfico acima, a faixa de trabalho do transdutor de pressão pode ser aproximada entre -20kPa e 12 kPa. Esta é a resposta esperada registrável pelo ADC. É provável que isso não seja correto devido à natureza muito vaga da ficha técnica, porém, isso será determinado posteriormente neste tutorial através da calibração com o manômetro analógico. Na próxima seção, o diagrama de fiação e a lista de peças para fazer medições com uma placa Arduino e manômetro serão apresentados.

Lista de peças e configuração experimental

Os componentes principais usados neste experimento são a placa breakout MPS20N0040D e um manômetro analógico. No entanto, como ar e água são usados, alguns acessórios e tubos também são necessários. Assim, a lista de peças e configuração para a ligação e configuração estão listados abaixo como uma forma de demonstrar a repetibilidade deste experimento:

  • MPS20N0040D Ported Pressure Sensor Breakout Board – $9.00 [Nesta Loja]

  • Analog U-Tube Manometer – $30.00 [Nesta Loja]

  • Arduino Uno Board – $13.00 [Nesta Loja]

  • 2.5mm (ID) x 4mm (OD) Acrylic Tubing –

  • 4mm Tee Fitting – R$ 80,90 (5 pcs) [Amazon]

  • Mini ProtoBoard – R$ 7,95 [Amazon]

  • 4x Jumper Wires – R$11,90 [Amazon]

  • Digital Caliper (6-inch) – R$ 180,99 [Amazon]

  • 4mm Push Valve – 61,99 [Amazon]

A Ligação entre o transdutor de pressão MPS20N0040D e a placa Arduino também é fornecida abaixo:

O código do Arduino usado para ler o MPS20N0040D é fornecido abaixo:

/*
Pressure Measurements with the
MPS20N0040D Breakout Board
with the HX710B/HX711 ADC
5V Supply Voltage
 */
#include <Q2HX711.h>

const byte MPS_OUT_pin = 2; // Pino de dados OUT
const byte MPS_SCK_pin = 3; // Pino de dados do relógio
int avg_size = 10; // #pontos para calcular a média

Q2HX711 MPS20N0040D(MPS_OUT_pin, MPS_SCK_pin); // começa a comunicação com o HX710B

void setup() {
  Serial.begin(9600); // inicia a porta serial
}

void loop() {
  float avg_val = 0.0; // variável para média
  for (int ii=0;ii<avg_size;ii++){
    avg_val += MPS20N0040D.read(); // adicionar várias leituras de ADC
    delay(50); // atraso entre as leituras
  }
  avg_val /= avg_size;
  Serial.println(avg_val,0); // imprime a média
}

O código acima simplesmente calcula a média de mais de 10 leituras ADC da placa breakout MPS20N0040D e as envia para a porta serial. Isso permitirá a calibração da saída do sensor em termos da pressão lida no manômetro.

 

Configuração Experimental

O manômetro e o sensor MPS20N0040D serão conectados por meio de uma configuração de tubo de pressão de ar, onde uma junção em T será usada para que diferentes pressões possam ser aplicadas. Também é recomendado que uma válvula ou seringa seja usada para manter a pressão consistente durante as medições. Um diagrama simples de conexão de pressão de ar com todos os componentes é mostrado abaixo:

A pressão incidente, P, pode ser qualquer aplicação de pressão: uma bomba de bicicleta, respiração dos pulmões, uma seringa, bomba de ar eletrônica, etc. – o método de aumentar e diminuir a pressão do ar na junção em T não é importante. O principal requisito é que a pressão deve ser estática o suficiente para medir medições consistentes e estáveis tanto na altura da coluna do manômetro quanto no sinal digital do transdutor.

 

Calibração do transdutor MPS20N0040D

O sensor de pressão MPS20N0040D deve ser conectado à placa Arduino e conectado ao tubo de junção em T. O manômetro também deve ser conectado à junção em T. E, finalmente, o método escolhido de aplicação de pressão deve ser conectado à última entrada na junção em T. O método de calibração envolve a variação da entrada de pressão para alterar a altura da coluna d’água no manômetro de tubo em U. Isso nos permitirá registrar as medições do manômetro (um paquímetro é uma medição precisa da altura da coluna) e usar essas medições de pressão para ajustar a resposta de tensão do MPS20N0040D.

Depois de obter vários pontos de dados (pegamos cerca de 8 negativos e 8 positivos), podemos observar a relação entre o valor ADC e a aproximação da pressão do manômetro.

Usando os 16 pontos de calibração adquiridos a partir das leituras do ADC digital da altura da coluna de água do manômetro, os pontos podem ser plotados uns contra os outros para chegar ao seguinte:

E este é um resultado extremamente importante. Como esperado, a resposta digital do transdutor de pressão está linearmente relacionada à altura da coluna do manômetro sob pressões de entrada variáveis. Voltando à relação de pressão em função da altura da coluna:

Podemos agora aproximar a entrada de pressão da altura do nível de água, δ, as densidades da água (ρ2 = 997 kg/m3) e do ar (ρ1 = 1.225 kg/m3), e a aceleração devido à gravidade (g ≈ 9.81 m/s2) Uma coisa a observar é que todas essas variáveis (exceto δ) podem mudar com a variação da temperatura, geolocalização e pressão atmosférica. Portanto, as relações de densidade sob pressão e temperatura variáveis, junto com aproximações de gravidade mais precisas (usando latitude e longitude) devem ser incorporadas para minimizar o erro associado à pressão derivada da equação do manômetro.

A seguir, queremos dar uma olhada na resposta do ADC MPS20N0040D. Lembrando que o HX710B amplifica o sinal do transdutor de pressão em 128x e envolve a resposta em torno de um sinal de 0V – 5V, podemos afirmar a seguinte relação:

onde X é a leitura do ADC calculada no código Arduino, e VR é a tensão aproximada emitida pelo transdutor MPS20N0040D antes da amplificação.

Usando ambas as representações da tensão do sensor e da pressão do manômetro, podemos construir o seguinte gráfico relacionando os dois:

Acima, podemos finalmente ver como a resposta do sensor se relaciona com os valores de pressão do mundo real. E a resposta é a esperada: o transdutor de pressão é zero em torno de 25mV (realmente mais próximo de 22,6mV), e os valores de pressão estão na faixa de kPa.

Agora, se retornarmos à relação entre a saída de tensão do MPS20N0040D, sua tensão de deslocamento e a faixa de pressão operacional, podemos começar a entender como o sensor pode ser calibrado:

A equação acima agora faz sentido, já que temos tanto o valor VR quanto o deslocamento aproximado (em nosso caso b ≈ 22,6mV). Implementando a afirmação original na folha de dados de que o deslocamento é de + 25mV e que S ≈ 50mV/40kPa, podemos representar isso em relação aos nossos dados:

É fácil ver que nossos dados estão altamente desalinhados com a teoria, mas o comportamento é semelhante. Assim, estamos no caminho certo, mas precisamos fazer alguns ajustes. A primeira é que podemos incorporar o novo deslocamento como 22,6mV, em vez de 25mV. Isso irá melhorar imediatamente a relação entre os dados e a curva teórica. Em segundo lugar, podemos tentar ajustar o valor de S usando uma relação de mínimos quadrados, o que realmente reduzirá o erro entre a teoria e os dados.

Ajustando os dados e o deslocamento conforme descrito acima, podemos chegar à seguinte relação entre a tensão MPS20N0040D e a pressão incidente:

Usando a inclinação e a interceptação do ajuste linear de mínimos quadrados, podemos fazer uma aproximação melhor para o fator de sensibilidade, S. Para pressão aplicada zero, podemos encontrar o valor correspondente para a tensão (o deslocamento).

Podemos ver como o valor de deslocamento de 22,6mV foi derivado (a interceptação multiplicada por 1/inclinação), e agora podemos finalmente ver como a inclinação do ajuste linear se relaciona com a sensibilidade:

Finalmente, podemos escrever a sensibilidade em termos da amplitude de tensão de 50mV:

Assim, a sensibilidade é de aproximadamente 50mV/29,5kPa, que é um ligeiro desvio dos 50mV / 40kPa reivindicados na ficha técnica. Então, finalmente, podemos escrever a resposta do transdutor MPS20N0040D em termos dos parâmetros derivados relativos às suas características físicas e elétricas:

onde VR é a tensão emitida pelo MPS20N0040D em mV, e P é a pressão aproximada em kPa. Se quiséssemos ir diretamente da saída do ADC da placa de breakout MPS20N0040D para a pressão, tomaria o seguinte formato:

E esta é a equação de pressão calibrada final para a placa de breakout do transdutor de pressão MPS20N0040D que leva um valor ADC, X, e aproxima a pressão, P, em kPa.

O erro resultante (mostrado no gráfico final acima) é de cerca de 4%, o que é realmente notável considerando o quão barato é o transdutor de pressão!

Agora que conhecemos a sensibilidade, também podemos fazer declarações sobre a resolução do transdutor de pressão MPS20N0040D. O ADC HX710B tem resolução de 24 bits e sabemos que o sensor abrange 50mV/29,5kPa, portanto, esperamos que o ADC tenha uma resolução de aproximadamente 1,76bits/Pa, que é uma resolução bastante alta para a faixa que é capaz de capturar . Como comparação, a resolução de 10 bits do ADC do Arduino é capaz de gerar uma resolução de 0,26bits/Pa para outro sensor comum, o MPXV7002DP. Uma coisa a notar é que depois de testar vários sensores – eles não concordam em sensibilidade e deslocamento. Portanto, o usuário deve calibrar cada sensor para fornecer uma representação precisa da pressão.

 

 

Conclusão

A placa de breakout do transdutor de pressão MPS20N0040D foi introduzida junto com sua calibração usando um manômetro analógico. O MPS20N0040D é uma demonstração significativa da necessidade de calibração, onde as declarações feitas em sua folha de dados foram consideradas falsas ou desnecessariamente vagas. Assim, a teoria e implementação da manometria e sensoriamento de pressão foram introduzidas. Usando um microcontrolador Arduino e a placa breakout MPS20N0040D (com um amplificador integrado), pudemos registrar os valores digitais medidos pelo transdutor de pressão e compará-los diretamente com um manômetro. Após medir vários pontos de dados positivos e negativos em diferentes alturas de coluna de água no manômetro, os valores foram comparados com aqueles medidos pelo transdutor de pressão. Usando a suposição hidrostática, a pressão foi aproximada a partir dos níveis de água do manômetro e plotada em termos dos valores medidos no sensor de pressão digital. A relação entre os dois foi ajustada usando um método de mínimos quadrados linear, que resultou na calibração adequada do MPS20N0040D. As constantes do sensor de pressão encontradas no ajuste eram próximas às declaradas na folha de dados, mas longe o suficiente para exigir calibração adequada. O deslocamento DC foi estabelecido em 22,6mV, em vez de 25mV, enquanto a sensibilidade foi encontrada em 50mV/29,5kPa, em vez de 50mV/40kPa. Esses dois ajustes resultaram em um erro de 4% em relação às medidas do manômetro, indicando uma linearidade muito boa entre o transdutor e o manômetro.