Skip to content

ESP32 based differential pressure (and air flow) meter. Handheld, battery powered DIY device for measuring small pressure differences (Sensirion SDP810-500Pa).

Notifications You must be signed in to change notification settings

ardiloot/dif-pressure-meter

Repository files navigation

Differential pressure (and air flow) meter

To measure and adjust air flow in air valves, diffusers or grilles accurate measurement of small pressure drop (differential pressure) is often required (usually in the range of -50 to 50 Pa). Pressure drop is used to calculate flow through air valve by using formula

$$q = k \cdot \sqrt{Δp}$$

where $q$ is flow (L/s), $Δp$ is measured pressure drop (Pa) and $k$ is the flow coefficient (k-factor) that can be found in the datasheet of the air valve (depends on the valve setting).

For example, Flakt Group air valves have nice illustrations :

Source: KSO air valve product page

However, it is hard to find measurement equipment for such small pressures (±50 Pa). There are some professional options (e.g Fluke 922), but they cost quite a bit.

Here, as an alternative, DIY handheld battery-powered differential pressure meter is built. It is based on Sensirion SDP810-500Pa differential pressure sensor (measurement range ±500 Pa, zero point accuracy 0.1 Pa). As a brain, ESP32-WROOM-32E chip is used. Firmware is mainly based on ESPHome.

Electrical

Electrical design is made using KiCad 7.0 software. The main components are:

  1. ESP32-WROOM-32E + USB to UART converter (CH340C) - main compute
  2. Sensirion SDP810-500Pa - I2C differential pressure sensor
  3. 1.8" LCD ST7735S - screen
  4. PKLCS1212E40A1-R1 - Buzzer for making sounds
  5. 5 way buttons for navigation
  6. Battery charging management (TP4056)

For details see:

Front Back

Mechanical

The mechanical design is done using Onshape: project files. The case is mostly 3D printed:

  1. Front (STL)
  2. Back (STL)
  3. Screen spacers (STL)
  4. 1 mm thick Plexiglass for screen protection (37 mm x 50 mm)
  5. M2x5 screws for screen mounting
  6. DIN912 M3x12 screws for case

Printer parameters:

  • Printer: Ender-3 V2 (Trianglelab DDB Extruder V2.0 + BLTouch)
  • Slicer: Ultimaker Cura 4.11.0
  • Filamant: eSun PLA+ 1.75mm 1kg Black
  • Profile: Standard Quality
  • Printing temperature: 210 °C
  • Build Plate Temperature: 60 °C
  • Initial layer horizontal expansion: -0.1 mm
  • Generate support: yes
Powered on Powered off Case opened

Installing firmware

Firmware is developed using ESPHome with additional custom component for calculating flow. The configuration file can be edited to include more air valve types or to make any other changes if needed

To install precompiled firmware:

  1. Download latest firmware (.bin file) from releases page.
  2. Connect with USB cable
  3. Use https://web.esphome.io/ to prepare device for the first use and to flash the firmware

Usage

Most of the usage is explained in the image. Some (hidden) features:

  1. Automatic poweroff after 10 minutes of inactivity
  2. Automatic poweroff on low battery level

Development setup

This paragraph contains instructions for development of the code and can be skipped if not relevant.

To begin, create virtual environment (Python 3.11), activate and install requirements:

python -m venv venv
source venv/bin/activate # or on Windows: .\venv\Scripts\activate
pip install -r requirements.txt

To compile and upload firmware, run:

esphome run dif-pressure-meter.yaml

Lint checks:

yamllint $(git ls-files '*.yaml')
pylint $(git ls-files '*.py')
clang-format-13 --dry-run --Werror $(git ls-files '*.cpp' '*.h')

If requirements change or need to be updated, run:

pip-compile --upgrade -o requirements.txt requirements.in
pip-sync

About

ESP32 based differential pressure (and air flow) meter. Handheld, battery powered DIY device for measuring small pressure differences (Sensirion SDP810-500Pa).

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published