[etwas OT] Druck - bar - Dreisatzrechnung, lang lang ist es her

Hi, ich habe bei folgender Rechnung einkleines Denkproblem.

Druckmessung in einem Rohrsystem: Manuelles Manometer zeigt bei drucklosem System 0,0 an (ich nehme an, das sind ATÜ) bei Zulauf offen von oberem Depot und Pumpe aus: 0,6 bei Zulauf offen von unterem Depot und Pumpe aus: 0,2 bei Zulauf offen von oberem Depot und Pumpe an: 1,6 bei Zulauf offen von unterem Depot und Pumpe an: 1,4

Mein Drucksensor hat 0-0.5 mPa, mit Signal 0-5V, siehe Aliexpress Ausgebaut bringt er am Arduino ADC A3 ca. 118

0.5mPa sind 5 bar. Ich nehme nun an, der Unterschied von bar zu ATÜ ist +1

Wie rechne ich nun am einfachsten in die Werte des Manometers um?

ATÜ = (Signal-118)*5/1024

oder wie muss ich das machen?

Edit: Hab etwas mit Excel rumprobiert. Immer noch nicht klar.

Allerdings wieso bringt der Sensor 118 bei Umgebungsdruck? müsste doch 1 bar = ca. 205 bringen. Seltsam

Das sind nicht 0,5miliPascal sondern 0,5MegaPascal (MPa) Je nach Sensormodel wird eine Druckdiffernz oder ein Absolutdruck gemessen.

der Unterschied von bar zu ATÜ ist +1

Das hängt vom Standpunkt ab. Wasserdruck im Rohr wird immer bezogen auf den Luftdruck gemessen. Also ATÜ = bar.

Bei der Druckmessung im Rohr mußt Du immer die Druckverluste durch den Widerstand des Wassers beim fließen berücksichtigen.

Grüße Uwe

Mir geht es erstmal nur um die Umrechnung. Inzwischen hat der Chinamann ein Diagramm auf der Webseite:

0 bar = 0 MPa = 0,5 Volt 5 bar = 0,5 MPa = 4,5 Volt

jetzt kommt langsam Licht in die Sache

Allerdings bringt meine Formel immer noch die falschen Werte

habe einen Korrekturfaktor von 0,8 mit reingemacht, nun stimmt's irgendwie, ich weis aber nicht warum: Signal=Signal-118 // um die Leerlaufspannung abzuziehen bar=Signal*5/1024/0.8

muss wohl damit zusammenhängen, das die 0-5 bar sich auf nur 4V verteilen, von 0,5 bis 4,5 Volt. Hätt ich doch nur was gescheites studiert :roll_eyes: :disappointed_relieved:

Du mußt noch den Offset 0,5 abziehen. Und 0,8 = 4/5

void loop(void) {
  int val = analogRead(A8);
  float volt = val * 5.0 / 1023.0;
  float druck = (volt - 0.5) / 4.0 * 0.5;
  Serial.print("val = "); Serial.println(val); // Debug-Ausgabe
  Serial.print("volt = "); Serial.println(volt); // Debug-Ausgabe
  Serial.print("druck = "); Serial.println(druck); // Debug-Ausgabe
  Serial.println(); // Debug-Ausgabe
  delay(500);
}

Alle Angaben ohne Gewähr :)

EDIT: 4.0 anstelle 4.5

soweit hab ich dein Programm verstanden. den Offset habe ich direkt vom Analogwert abgezogen, genau den Wert, den ich im Drucklosen Zustand bekomme (118), dürften etwas mehr als 0.5V sein.

Warum dividierst du durch 1023 und nicht durch 1024?

Die Berechnung von druck = (volt - 0.5) / 4.5 * 0.5; ist mir allerdings noch nicht ganz klar, warum so.

druck = (volt - 0.5) / 4 * 5; wäre mir klarer

ElEspanol: Warum dividierst du durch 1023 und nicht durch 1024?

Der maximale Meßwert ist 1023 (int 0 ... 1023). Logischer wäre val /1023.0 * 5.0

ElEspanol: Die Berechnung von druck = (volt - 0.5) / 4.5 * 0.5; ist mir allerdings noch nicht ganz klar, warum so.

druck = (volt - 0.5) / 4 * 5; wäre mir klarer

Stimmt, habe ich korrigiert. Hatte "0,5 MPa = 4,5 Volt" falsch berücksichtigt :o

dann liefert deine Ausgabe MPa, nicht bar. Ok.

Die 1023 sind jetzt auch klar. Ich dachte, es sind ja 1024 werte, deswegen durch 1024 teilen.

Alles klar nun.

In bar dann druck = (volt - 0.5) / 4.5 * 5.0;

agmue: In bar dann druck = (volt - 0.5) / 4.5 * 5.0;

warum nun doch wieder geteilt durch 4.5 ??

ElEspanol:
warum nun doch wieder geteilt durch 4.5 ??

Weil es zu spät ist ;D sorry und gute Nacht!

Gute Nacht und danke!