Calibrare sensore MPX5700GP

Salve,
Ho acquistato un sensore di pressione relativa MPX5700GP il quale è stato collegato sulla board e Arduino Uno, con il seguente collegamento; Vcc sensore al pin 5V, il GND a massa e il primo pin analogico alla porta A0 di Arduino (vorrei capire se i restanti 3 pin debbano essere collegati e a cosa servono).
Nel codice ho provato ad utilizzare la funzione map ma non penso sia propriamente giusta, penso che debba essere calibrato il sensore essendo pressione relativa e non assoluta.

A=analogread(A0);
Pressione=map(A,0,1023,0,70000);

Avete suggerimenti per la calibrazione del sensore?
Grazie tante.

leggi il Datasheet https://www.nxp.com/docs/en/data-sheet/MPX5700.pdf.
Lí sono indicati le tensioni senza pressione e a fondoscala.
Ciao Uwe

Dai un'occhiata anche qui e qua! ::slight_smile:

Federico

Grazie Federico66, ho visto i due topics che mi hai allegato. Ho un solo problema nel capire questo codice. Non capisco perché effettua una conversione A/D e perché usa un ciclo for. Mi potete aiutare a capire? Grazie

sketch_jul24a.ino (447 Bytes)

Ziostep:
Grazie Federico66, ho visto i due topics che mi hai allegato. Ho un solo problema nel capire questo codice. Non capisco perché effettua una conversione A/D e perché usa un ciclo for.

Guarda, non conosco il sensore e ho solo fatto una ricerca nel forum, cosa che avresti potuto fare anche tu :slight_smile:
Comunque, invece di fare una lettura, ne somma 10 consecutive e poi divide la somma per 10, quindi fa la media su 10 letture; infatti moltiplica per 10 anche i valori di calibratura (offset, fullScale).

Spero ti sia chiaro come calcolare i valori offset e fullScale.

Federico

// MPX5700 pressure sensor (700kPa)
int rawValue; // A/D readings
int offset = 410; // zero pressure adjust
int fullScale = 9630; // max pressure (span) adjust
float pressure; // final pressure

void setup() {
  Serial.begin(9600);
}

void loop() {
  rawValue = 0;
  for (int x = 0; x < 10; x++)
  	rawValue = rawValue + analogRead(A0);
  	
  pressure = (rawValue - offset) * 700.0 / (fullScale - offset); // pressure conversion

  Serial.print("Raw A/D is  ");
  Serial.print(rawValue);
  Serial.print("   Pressure is  ");
  Serial.print(pressure, 1); // one decimal places
  Serial.println("  kPa");
  delay(500);
}