mpx 5050DP drucksensor wert springt

Guten Tag,
Hier einmal der sketch:

#include <LiquidCrystal.h>   

LiquidCrystal lcd(22, 23, 24, 25, 26, 27, 28);

int backLight = 29;
int   mpxPin = 5;
int   mpx;                
      
float mb;             

void setup() {
  lcd.begin(20, 4);
pinMode(backLight, OUTPUT);
digitalWrite(backLight, HIGH); 
}

void loop() {
    mpx = (float)analogRead(mpxPin);
    mb = (mpx/(float)1023-0.04)/0.0018;
    
    lcd.setCursor(0, 0);
    
    lcd.print(mb);
    lcd.print("mb     ");
    delay(1000);
  }

In diesem sketch sollte der Sensor den luftdruck in millibar auf dem display anzeigen.
Wenn ich nicht rein blase soll einfach 0.00mb stehen aber wert springt komischerweise immer rum mal 0.04 denn 1.13 , 0.59 . 1.67.
Warum hüpft dieser Wert rum? und wie kan ich den fehler beheben?

Mfg

strohhirn

Hallo auch !

Zuerst die Dumme Frage: Ist die Spannungsversorgung am Sensor OK ? Vieleicht mal einen Entstörkondensator einbauen.(Falls das Datenblatt dies nicht sowieso in dein Lastenheft schrieb...)

Dann solltest Du das analoge Eingangssignal ebenfalls gegen Störungen filtern (100nF).

Viele Grüße

Jörg

Ich glaube, dass der Sensor durch kriechströme oder andere elektromagnetische Wellen gestört wird, oder eventuell einfach der Luftdruck schwankt. Ein Millibar Luftdruck ist nicht soooo viel, 10-3 Bar, also ein 1000stel des Atmosphärendrucks bzw. ein 3300stel (2,3 + 1 Bar) eines durchschnittlichen Autoreifens. Wenn dein Druckmesser nicht für atmosphärische Messungen sondern für Hochdruck ausgelegt ist, kann das durchaus innerhalb der Messtoleanz sein.

Falls die Schwankung nicht in der Messtoleranz des Sensors liegen sollte (siehe Datenblatt) einfach einen kleinen Entstörkondensator (ca 100nF) zwischen Arduino und Sensor parallel schalten. Allerdings wird dann die Abfragegeschwindigkeit beeinflusst, da der kondensator läd. bzw. Ladung abgibt.

Wenn man Deine Berechnung hinzuzieht, sind das die Werte 41, 42, 43 und 44 vom Analog-Eingang. Du hast also eine Schwankung von +/- 10mV, was durchaus durch die von Marcus W aufgeführten Fehlerquellen ausgelöst werden könnte. Welchen Bereich möchtest Du denn messen und mit welcher Genauigkeit? Welchen Sensor verwendest Du und wie ist dieser mit dem Arduino verdrahtet?