This device measures the flow rate of the Aurora Scientific 200B miniPID photo-ionization detector. At its heart lies a Renesas FS2012-1020-NG calibrated mass flow sensor, which is rated for 0 to 2 SLPM. Will Dickson wrote the original firmware and software, which I slightly modified to make Python 3-compatible.
In addition to standard electronics equipment and access to a 3D-printer:
| Item | Price (USD) | Quantity | Source |
|---|---|---|---|
| FS2012-1020-NG | 94.90 | 1 | DigiKey 800-3797-ND |
| Arduino Nano (clone) | 13.99 / 3 | 1 | Amazon ASIN: B0713XK923 |
| Silicone tubing (3/16" ID) | 7.99 / 10 feet | 1 | Amazon ASIN: B07TH8H1QP |
The sensor can be swapped out for an alternative Renesas FS2012-series sensor, such as the FS2012-1100-NG, which is rated for 0 to 10 SLPM.
The adaptor between the FS2012 sensor and the long metal PID inlet is 3D-printed. The measured OD of the PID's metal inlet is approximately 1.30 mm. In my experience, printing an exact 1.30 mm ID hole on an FDM printer is tricky, and requires some trial and error. I provide a .gcode file that worked for me on a Prusa MK3S with Prusament PLA. Adjustments can be made with the provided .step file. A corresponding .stl file is also provided. N.B. I've tried generating .stl and .gcode files for printing the adaptor with TPU, but I've not yet had any luck.
| Arduino Nano pin | FS2012 sensor pin |
|---|---|
| 5 V | VIN |
| GND | GND |
A5 or A6 (can be modified in firmware.ino) |
VOUT |
The firmware supports up to two flow sensors, for which GND and VIN are common.
Use the silicone tubing to secure the components together. The assembled sensor, prior to electrical hook-up, might look something like this:
If you're having difficulty adjusting your printer settings so that the adaptor press-fits against the PID inlet, or you're in a rush, just bodge it with some parafilm. Parafilm might not be a bad idea, even if the adaptor fits snugly. The assembled flow sensor device might look something like this:
Clean the inside of the 3D-printed adaptor prior to use. I recommend going through the channel with some kind of filament (e.g. some solder) to clear away large particulate debris. Then, apply some air pressure through the channel to rid of any remaining particulates.
Collecting data with the device is straightforward. Clone the FS2012 flow sensor repo, upload the firmware, and install the software. The software is Python 3-compatible only. For a Python 2-compatible version of the code, see the original repo. Then, call the relevant Python function (probably DataReader(<my_port>).get_data()) in your acquisition script. Alternatively, for something quick, try out the existing flow_sensor_app or flow_sensor_live_plot scripts:
See the FS2012 flow sensor repo for more details.



