Olá estou tendo dificuldade com um sensor de pressão MPX5999D, leio ele com a função analogRead e obtenho o valor de 40 mas depois disso não sei mais o que fazer, como transformar em Kpa ou bar, seria muito grato se conseguirem me ajudar
Tags:
De acordo com o datasheet, a tensão de saída do MPX5999D é Vout = Vs*(0.000901*P+0.04) (ignorando o erro), sendo Vs a alimentação (5V) e P a pressão em kPa.
A entrada analogica do arduino é capaz de ler tensões entre 0 e 5V em um range de 0 a 1023. Podemos então dizer que a leitura será Vin*1023/5
Unindo as duas equações teremos que a leitura será 0.921723*P+40.92, portanto podemos concluir que P=(leitura-40.92)/0.921723 (ignorando o erro)
Porem, analisando o valor que você obteve como leitura, a equação do sensor e os dados do datasheet, eu diria que é muito importante verificar o erro de leitura pois sua leitura não bate com o resultado quando se usa essa equação (daria -1kPa o que não faz sentido pra esse sensor). A leitura mínima deveria ser 40.92 (0kPa).
Utilize algum mecanismo para calibrar sua leitura. Como por exemplo utilizando a equação (leitura-40.92+erro)/0.921723 e defina o valor da variavel erro comparando a leitura do seu sensor com algum sensor pronto.
o valor que sai do analgoRead() vairia entre 40,41
Você esta medindo a pressão atmosférica do seu local. Qual cidade mora? Qual a pressão atmosférica média da sua região ? A pressão muda de acordo com o clima...
Calculando :
Meça a tensão no Pino VCC do sensor. Esta medindo 5V ? Esta medição deve ser precisa.
Supondo VCC = 5V
5 V / 1024 = 0,0048828125 ( conversor de 10 bits = 2 elevado a 10 = 1024)
Se a medição do analogRead esta dando 40 => 40 x 0,0048828125 = 0,1953125 Volts.
Vendo as informações do DataSheet (abaixo) - você esta medindo Zero de pressão.
Minha dúvida - esse sensor mede pressão diferencial ? Se for diferencial a leitura esta correta !
Pois não tem nenhum tubo conectado nele, não é ??
No datasheet do sensor:
Faixa de Pressão = 0 a 1000 K Pa
Sensitividade = 4,5 mV / K Pa
Zero pressão Offset ( tipico ) = 0,2 V
Fundo de escala( típico ) = 4,7V
Variação total - fundo de escala = 4,5V
1.0 kPa (kiloPascal) equals 0.145 psi.
Sim ele é diferencial, e não estou conectando nenhum tubo. E minha duvida o calculo para transformar o 40 em 0 de pressão
Caro Lucas, no post acima eu expliquei como consegue o valor de 0,195 volts a partir da leitura de 40 no pino analogíco do Arduino...
No datasheet informa que o sensor deve ser calibrado.
Portanto para o seu sensor => 0 KPa = 0,195 V
Para efeito de compreensão, vamos aproximar o valor para 0,2 V ou 200 mV ( 0 KPa) , ok ?:
Variação total do fundo de escala é 4,5V e a variação máxima de pressão é de 0 a 1000 KPa.
( essas informações estão no datasheet)
4,5 V / 1000 KPa = 4,5 mV para cada 1 KPa ( concorda ?)
Exemplo de leituras no Arduino ( 0 a 1023) para VCC = 5,0 V (importante isso ! )
5 V / 1024 = 0,0048828125 ( conversor de 10 bits = 2 elevado a 10 = 1024)
Leitura 100 = 100 x 4,88 mV = 488 mV ( cada bit LSB corresponde à 4,88 mV)
488 mV - 200 mV = 288 mV ( descontando o valor de 0 KPa)
288 mV / 4,5 mV = 64 Kpa (4,5 mV para cada 1 KPa)
Pressão = ( ( Leitura x 4,88mV ) - 200 mV ) / 4.5 mV
( universitários me ajudem por favor na conferência da fórmula - acho que é isso)
Se precisar converter para psi :
1.0 KPa (kiloPascal) é igual à 0.145 psi.
Alguma dúvida ?
Cara muito Obrigado, obrigado mesmo me ajudo muito, só mais uma coisa, meu sensor deve ser calibrado ? para dar o valor de 0,2V ou assim tbm funcionara corretamente?
Bom dia, Lucas.
Na verdade o sensor não tem como ser calibrado.
O seu Sketch que dever ser configurado para isso.
Por exemplo 0 KPa = 0,195 V
Faça bastante testes e se possível compare as suas medidas com um outro sensor de pressão (instrumento).
Boa sorte.
o que significa LSB? essa parte não entendi.
Eu fiz assim leitura saiu 40 40X0,004828125 = 0,193125 Volts
0,193125 X 1000 = 193,125mV
Pressão = (193,125 - 193,125)/4,5 = 0kpa
Exemplo com leitura de 100
100X0,004828125 = 0,4828125Volts
0,4828125 X 1000 = 482,8125mV
Pressão = (482,8125- 193,125)/4,5 = 64,375Kpa
Lucas boa tarde ,
Bit LSB é o bit menos signicativo ( least significant bit) .
É o bit de menor valor em um Byte.
https://en.wikipedia.org/wiki/Least_significant_bit
Como eu já falei , acho que o correto é 5 V / 1024 = 0,0048828125
O seu calculo é similar ao meu, só que multiplicou por 1000...
A diferença dos valores é por causa do bit que você desprezou ( 1023 ao invés de 1024).
Boa sorte !
Olha o Sketch que fiz
int sensor= A0;
int Vsensor;
double pressao;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
Vsensor = analogRead(sensor);
pressao = ((Vsensor*4.88)-195)/4.5;
Serial.print("Sensor = ");
Serial.println(Vsensor);
Serial.print("Kpa = ");
Serial.println(pressao,5);
delay(1000);
}
Bom dia Lucas,
acho que é isso mesmo. Teste e depois nos informe se deu certo.
( confira a pressão com um outro instrumento)
pressao = ((Vsensor*4.88)-195)/4.5;
O resultado será em K Pa.
Boa sorte !
Boa tarde JG, Como vai?
Estive olhando sua resposta, onde você cita:
"Se a medição do analogRead esta dando 40 => 40 x 0,0048828125 = 0,1953125 Volts."
Tenho um sensor de pressão aqui comigo, mas não tem nada escrito nele, para ver o modelo.
Ai resolvi fazer o teste, e coloquei ele em uma porta analógica do arduino, para ver o que estava lendo.
Está lendo valor 45, o que pela sua formula, seria: 45 x 0,0048828125 = 0,2197265625.
Arredondei para 0,22V ou 220 mV, Certo?
Porém para tirar a prova, medi a saída com o multímetro e o resultado é surpreendente, a medida foi 180 mV.
Onde você acha que está o problema?
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por