Spirometer

Mit einem Spirometer untersucht ein Arzt die Lungenfunktion, indem u.a. das Volumen der herausströmenden Atemluft bestimmt wird.

Zur Bestimmung des Volumens macht man sich die Bernoulli-Gleichung zunutze. Sie besagt, dass in einem strömenden Medium (Wasser, Luft…) die Summe aus statischen Druck p + ρ · g · h und dynamischen Druck 1/2 · ρ · v² konstant ist.

Dies hat etwa zur Folge, dass in einem Rohr bei Verringerung des Querschnitts die Geschwindigkeit v bzw. der dynamische Druck zunimmt und daher der statische Druck abnehmen muss. Schnell strömende Gase/Flüssigkeiten erzeugen also einen Unterdruck!

Mein Spirometer verwendet ein Blasrohr, welches in der Mitte einen geringen Querschnitt aufweist. Mit einem Drucksensor (Modell MPX5010DP) wird nun der Druckunterschied am Ort dieser Engstelle und außerhalb des Spirometers (bei v = 0) gemessen. Laut Bernoulli gilt ja bei gleicher Höhe h:

p1 + ρ · g · h + 1/2 · ρ · v1²  = p2 + ρ · g · h + 1/2 · ρ · v2²

1/2 · ρ · (v2² – v1²) = p1 – p2

v2² – v1² = 2 · (p1 – p2) / ρ

Ausserhalb des Spirometers wirkt der Druck p1 und die Geschwindigkeit v1 ist dort 0! Dadurch vereinfacht sich die Gleichung zu

v2² = 2 · (p1 – p2) / ρ

v2 = √(2 · (p1 – p2) / ρ)

Man kann also mittels der gemessenen Druckdifferent p1 – p2 auf die Strömungsgeschwindigkeit der Luft in der Engstelle des Blasrohrs schließen.

Das innerhalb der Zeit dt durchströmende Luftvolumen beträgt dann dV = A · v2 · dt, wobei A die Querschnittsfläche der Engstelle ist.

Um auf das Gesamtvolumen zu kommen, müssen einfach die Teilvolumina dV aufsummiert/integriert werden. Dies macht der Arduino. Er misst die Druckdifferenz p1 – p2, berechnet daraus v2, bestimmt dann das Teilvolumen dV und addiert diese auf. Hierzu muss das Programm natürlich die Zeitschrittweite dt wissen. Fügt man ins Programm ein delay zwischen den Messungen von z.B. 1 ms ein, so beträgt das dt = 0.0011605 sek.

Ich habe den zeitlichen Verlauf der Druckdifferenz mit dem Oszilloskop aufgezeichnet. Dabei stellte ich fest, dass das Signal sehr verrauscht ist. Daher würde ich raten, an den Ausgang des Drucksensors noch einen Tiefpass (engl. low-pass-filter) zu installieren.

 


Arduino-Code: