Open alexlib opened 4 years ago
This curve is the theoretical correlation based on the dimensions of the venturi tube we used. Using the theoretical equation we achieve measurements that appear visually correct. We're still trying to get access to a respirometer and/or flow meter to calibrate our measured values.
Here's the relevant arduino code ` // read the venturi flow meter and return value in lpm double readFlow() { float r1, r2, A1, A2, rho, deltaP, flow; tcaselect(0); // flow meter on channel 0 ams.Measure_PressureAndTemperature(AMS5915_0100_D_MIN, AMS5915_0100_D_MAX);
// venturi flow meter constants r1 = 0.0095; // outer radius (m) r2 = 0.00189; // inner radius (m) A1 = PI sq(r1); // outer area (m^2) A2 = PI sq(r2); // inner area (m^2) rho = 1.225; // density of air @ sea level (kg/m^3)
// Flow calculation from https://www.engineeringtoolbox.com/orifice-nozzle-venturi-d_590.html deltaP = ams.getPressure() 100.0; // mbar to N/m2 flow = A2 sqrt(2 deltaP / rho (1 - sq(A2/A1))) 1000 60 - foff;
// If flow is below flowDeadZone in magnitude, ignore it to avoid integration error if (abs(flow) < flowDeadZone) { flow = 0; } return flow; }
// read quiescent flow value, and store it as zero offset void calibrateFlow() { foff = 0; foff = readFlow(); } `
The spec of the differential pressure sensor is 0-100mbar difference. For a straight tube of 20 - 30 mm, this would require very far pressure tap connections or very small difference, of the order of the sensor error, e.g. 1 cmH20 or 1mbar. The authors answered me that they use the 3d printed contraction tube (Venturi tube) posted here: https://a360.co/2JGjDKU and the calibration curve is here: