Problema na leitura do sensor..

Boa Dia/Tarde/Noite a todos.

Estou montando um projeto de medida de pressão com Arduino, para o projeto estou utilizando um sensor automotivo de pressão de fluido, a tensão e de 0,5 a 4,5v, 3 pinos GND, Alimentação 12V e Sinal e um arduino uno.

Quando coloco pressão no sensor a tensão varia, medindo com multímetro a tensão varia como deve, aumentando a pressão a tensão aumenta, mas quando coloco para o arduino medir a tensão sempre fica em 0, utilizei um código padrão para ver quais valor estavam na porta analógica, sem o sensor esta conectado os valores ficam oscilando, conecto o sensor e o valor fica sempre em 0, com o sensor conectado o valor sempre é 0, mesmo com o sensor com ou sem carga o valor não muda.

um dos códigos que utilizei para testar segue abaixo:

void setup() {

Serial.begin(9600);
}

void loop(){
int sensorVal=analogRead(A1);
Serial.print("Sensor Value: ");
Serial.print(sensorVal);

delay(100);
}

Utilizei outros códigos e sempre acontece a mesma coisa, com multímetro a leitura é feita corretamente.

Desde já agradeço a ajuda de de todos.

Como você realizou a conexão de seu sensor ao Arduino? Você tem um resistor de pull-down na entrada A0? Caso não tenha pull-down, deveria ao menos mostrar uma oscilação na entrada analógica e, portanto, mostrar algo maior que 0. Poste como suas ligações estão feitas. Com detalhes.

Boa Noite Jeff

Como estava fazendo apenas testes a ligação foi feita da seguinte forma, pino 5v do arduino no pino de alimentação 5v do sensor, Pino gnd do arduino no pino gnd do sensor e pino A0 no pino de sinal do sensor, o estranho é que ligando a alimentação e o gnd do arduino no sensor tem valor no A0, quando conecto o pino de sinal do sensor no A0 não tem mais valor, só vem 0.

ediplo:
Boa Noite Jeff

Como estava fazendo apenas testes a ligação foi feita da seguinte forma, pino 5v do arduino no pino de alimentação 5v do sensor, Pino gnd do arduino no pino gnd do sensor e pino A0 no pino de sinal do sensor, o estranho é que ligando a alimentação e o gnd do arduino no sensor tem valor no A0, quando conecto o pino de sinal do sensor no A0 não tem mais valor, só vem 0.

No seu código anterior você usa A1 para entrada analógica. No seu comentário agora você diz que usou a porta A0. Precisa definir exatamente a porta de entrada para ser a mesma do código. Outro ponto, informe qual é o sensor exato. Pode ser que o arduino não esteja dando conta de alimentar o sensor.
Se tem variação de sinal em A0 quando você alimenta o Arduino e logo em seguida conecta o sensor em A0 (estando A0 configurado no código, uma chance é de que o Arduino não esteja conseguindo alimentar o Sensor.

Lembre-se, o código faz o que você manda ele fazer. Se configurar A0 como seu input analógico, USE A0 fisicamente.

Sim, eu utilizei a porta analogica correta, testei em todas as portas alterando no codigo para a cada porta e o resultado e o mesmo em todas as portas, informei que era a porta A0 em virtude da sua resposta que falava na porta A0, sei que no codigo que postei ta porta A1.

Jeff_85:
Como você realizou a conexão de seu sensor ao Arduino? Você tem um resistor de pull-down na entrada A0? Caso não tenha pull-down, deveria ao menos mostrar uma oscilação na entrada analógica e, portanto, mostrar algo maior que 0. Poste como suas ligações estão feitas. Com detalhes.

O correto em minha pergunta seria Você tem um resistor de pull-down na entrada A1?

Minhas desculpas pela falha ao postar a informação.

De todo modo, ligue seu sensor numa fonte de 5V a parte do Arduino, meça a variação de pressão com o multímetro. Faça upload do esboço para Arduino e em seguinte conecte seu sensor à porta selecionada. interligue os GND do Arduino com o sensor.

Jeff_85:
O correto em minha pergunta seria Você tem um resistor de pull-down na entrada A1?

Minhas desculpas pela falha ao postar a informação.

De todo modo, ligue seu sensor numa fonte de 5V a parte do Arduino, meça a variação de pressão com o multímetro. Faça upload do esboço para Arduino e em seguinte conecte seu sensor à porta selecionada. interligue os GND do Arduino com o sensor.

Primeiramente nao estou utilizando resistor algum.

So para ver se entendi, voce diz para alimentar o sensor com uma fonte externa de 5v e conectar somente o pino sinal na porta analógica, e depois interligar os gnds isso?

Eu fiz esse teste mas não com uma fonte e sim com uma bateria 12v com um regulador 7805 que regula tensão de saída para 5v e o resultado foi o mesmo, mas amanha farei o teste com uma fonte.

So para ver se entendi, voce diz para alimentar o sensor com uma fonte externa de 5v e conectar somente o pino sinal na porta analógica, e depois interligar os gnds isso?

Sim.

Eu fiz esse teste mas não com uma fonte e sim com uma bateria 12v com um regulador 7805 que regula tensão de saída para 5v e o resultado foi o mesmo, mas amanha farei o teste com uma fonte.

Quando disse "fonte externa" pode ser qualquer fonte diferente da alimentação que o Arduino recebe. Nesse caso bateria de 12V + 7805 funciona. O objetivo é ter 5V a parte apenas para alimentar o sensor.
Seria importante para o post se postasse foto e código ou link com o descritivo do sensor de pressão.

Jeff_85:
Sim.

Quando disse "fonte externa" pode ser qualquer fonte diferente da alimentação que o Arduino recebe. Nesse caso bateria de 12V + 7805 funciona. O objetivo é ter 5V a parte apenas para alimentar o sensor.
Seria importante para o post se postasse foto e código ou link com o descritivo do sensor de pressão.

Boa tarde, desculpe a demora, tava na correria essa semana, acabei atualizando as informações do tópico, descobri que a tensão de entrada do sensor é de 12v e o sinal e de 0,5v a 4,5v, adicionei como montei as ligações, print da serial e a foto do sensor, esse sensor é um sensor de pressão de alta do ar condicionado de um gol, não achei dados técnico na internet.

Fiz o teste com uma alimentação externa de 12v e o problema continua, não mudou nada.

É muito recomendado que não atualize sua postagem inicial. O melhor a se fazer é inserir um novo post aqui mesmo como se fosse uma nova resposta e nela colocar suas novidades.

Esse sensor pelo que você diz produz uma saída proporcional a pressão aplicada sobre ele. Há alguns desses sensores que são chaves (switchs) que ao pressurizar eles "fecham" e ao despressurizar eles "abrem" o contato, ou o inverso!

Também há os analógicos. Procurei por alguma referência para "52cp09-02 (escrito no seu sensor---vide imagem)" e obtive resultado para pressure switch.

Mas, como você disse que a tensão varia (vai de um valor pequeno até um grande passando por vários intermediários) eu perguntaria se lembrou de interligar os GND entre o Arduino e seu sensor?

E para não restar dúvida: os valores de tensão que mostram no seu multímetro são apenas 0,5V e 4,5V? OU variam....0,5...0,7...,2...2,3...3,2...4,1...4,5 a medida que a pressão aumenta, por exemplo?

A tensão vai variando, conforme a pressão sobe a tensão sobe junto.
O código do sensor é o 1J0959126.

Sim, interliguei os gnds do arduino, sensor e da fonte externa.

ediplo, faz um teste. Desliga o sensor e corre o programa que lê a porta analógica.

É bastante raro o conversor AD ler 0 consistentemente a não ser que um cabo esteja ligado mesmo ao GND.

Se desligares o sensor deves ver valores a flutuar. Podes até experimentar em mais do que um pino apenas para comprovar que a placa está boa.

Outra coisa que podes fazer para testar é ligares o GND ao pino do AD e ver a medição e ligar 5V. Os valores devem ser 0 e 1023...

Quanto ao sensor, ele tem de ser alimentado com 12V? Eu reparei que tens dois fios pretos no sensor, poderias talvez ter ligado o fio de GND ao AD do Arduino?

Eu não entendi muito bem a sequência dos passos que tomaste, mas podes ter inadvertidamente queimado parte do Arduino. Se ligaste o retorno do sensor sem ter o Gnd ligado entre o Arduino e o sensor, a tensão aplicada pode ter sido mais do que o AD aguentaria. Daí ser melhor comprovares primeiro que a placa está boa e depois continuares a tentar perceber o que se passa.

Boa noite,brother. Estou com um problema parecido com o seu, conseguiu resolver? Se sim, tem como me ajudar ?

Boa noite. Enfrentei o mesmo problema ao utilizar um arduino para controlar o nivel da caixa de agua e cisterna na minha casa (controla uma bomba para enviar agua da cisterna para a caixa). Utilizo dois sensores de pressão MPX5050DP.

Alem de conhecer a curva de pressão do sensor, possível de ver no Data sheet, foi necessario também programar uma media de 1000 medidas em cada loop, para conseguir exatidao e estabilidade em cada medida.

Com este codigo abaixo dentro do void loop, tenho utilizado este sistema a alguns anos em casa sem problemas.

"long valmedcisterna1 = 0;
long valmedcaixa1 = 0;
long valfinalcisterna1 =0;
long valfinalcaixa1 =0;

double valcisterna1 =(double) analogRead(A7);
double valcaixa1 =(double) analogRead(A8);

Serial.print("valor original da cisterna ");
Serial.println(valcisterna1);
Serial.print("valor original da caixa ");
Serial.println(valcaixa1);

for(int i=1000; i>0; i--){

// media de 1000 medidas para cada loop

valcisterna1 =(double) analogRead(A7);
valcaixa1 =(double) analogRead(A8);

valmedcisterna1 += valcisterna1;
valmedcaixa1 += valcaixa1;
delay(1);
}

valfinalcisterna1 = (valmedcisterna1 / 1000);
valfinalcaixa1 = (valmedcaixa1 / 1000);

double voltagecisterna = valfinalcisterna1 * (5.0 / 1023.0);
double voltagecaixa = valfinalcaixa1 * (5.0 / 1023.0);

kpacisterna = ((voltagecisterna/5.0)-0.04)/0.018; // curva de pressao do sensor fornecido no data sheet
kpacaixa = ((voltagecaixa/5.0)-0.04)/0.018;

Serial.print("valor medio original da cisterna ");
Serial.println(valfinalcisterna1);
Serial.print("valor medio original da caixa ");
Serial.println(valfinalcaixa1);

/ este programa da um resultado em porcentagem do nivel da caixa e da cisterna. Ao ligar o sistema a primeira vez, a calibracao do 100% é feita colocando a caixa e cisterna no nivel maximo de agua e entao verifico no Monitor Serial o valor medio original da cisterna e caixa. Esta numeracao deve ser inserida abaixo, substituindo o 480 e 400, neste caso, e carregando novamente o arduino /

kpacisterna = constrain(kpacisterna, 0, 480);
porcecisterna = map(kpacisterna, 0, 480, 0, 100); //
kpacaixa = constrain(kpacaixa, 0, 400);
porcaixa = map(kpacaixa, 0, 400 0, 100);

float caixa_volume;
caixa_volume = 3000 * porcaixa/100 ; // volume de 3000 litros da caixa de agua

float cist_volume;
cist_volume = 7000 * porcecisterna/100 ; // volume de 7000 litros da cisterna

// resultado no LCD mostrando porcentagem e volume em litros

lcd.clear();
lcd.setCursor(0, 0);
lcd.print("CAIXA ");
lcd.print(porcaixa);
lcd.print("% ");
lcd.print(caixa_volume);

lcd.setCursor(0, 1);
lcd.print("CTRNA ");
lcd.print(porcecisterna);
lcd.print("% ");
lcd.print(cist_volume);

delay(1000);"