Sorbent Tester Build Thread

Here’s a home for any technical details on building sorbent testers - sensor notes, chamber setup, hardware lists, software ideas, etc.

Some links to start:
Overview of CO2 Sensor considerations
Spreadsheet comparing sensor options
Jay’s notes on a sensor/microcontroller setup
David’s post on the SCD41

1 Like

Some details on a build:

The above build might be considered an “advanced setup”. It uses redundant CO2 sensors (A Sensirion SCD30 inside in ambient mode, and a Sensair K30 outside in sampling mode), controls a pump motor, and has filters that need to be plumbed to the external sensor. A functional block diagram looks like this:


Advanced electronics functional diagram

(A note about sample gas flow direction. The documentation on CO2 Meter for the sample kit addition to the K30 CO2 sensor shows a “pull configuration”, with the pump after the sensor pulling gas through it. After speaking with engineers at CO2 meter, we were recommended to use a “push configuration”, with the pump before the sensor pushing gas into it.)

The sensor suite was configured to post data serially in a format that could easily be captured by a serial monitor (such as that included with the Arduino IDE) and pasted as a CSV text block. Typical data looks like this, with a header row followed by one or more data rows:

[*** BEGIN DATA OUTPUT ***]
Elapsed time (s), CO2-K30 (ppm), CO2-SCD30 (ppm), Temp-SCD30 (C), RH-SCD30 (%), Temp-BME280 (C), RH-BME280 (%), Pressure-BME280 (hPa)
20.02,858,619.51,27.54,57.01,27.07,57.80,1002.47
40.03,817,623.10,27.61,56.46,27.06,57.42,1002.41
60.05,797,621.98,27.70,56.60,27.05,57.46,1002.40
80.06,781,620.59,27.76,55.60,27.05,56.73,1002.42
...

By reporting elapsed time from start (rather than, say, local absolute time or equivalent), any microcontroller should be able to generate similar data without the need for a real-time-clock (RTC) or access to network time. Data could be easily pasted into any spreadsheet, such as Google Sheets:


Example of CSV output imported to a spreadsheet.

Data could also be sent to the cloud, such as Adafruit’s IO service (based on MQQT).


Example of data shared to cloud.

In order to get as many people as possible building sorbent testers and testing sorbents, the team also looked at simplifying the setup. After several tests in which the K30 and SCD30 tracked each other (with a consistent delta in readings but always trending the same direction and similar relative changes measured), we felt that a simple version built around only an ambient sensor in the chamber would be adequate for our purposes. This would eliminate the need for powering and controlling a pump. A minimum setup looks like this:


Minimum viable sorbent tester.

This arrangement would sacrifice some nice-to-haves: a sensor carefully filtered from humidity and isolated from moisture, one with dedicated manual calibration functions, online data reporting, etc. But it would be much simpler and should still provide usable insight comparing sorbent candidates.

To further simplify things, a no-solder path would be nice, enabling people without soldering experience or equipment to participate. As of 2021, many microcontroller development board manufacturers offer built-in 4-pin peripheral connectors, enabling sensors to be added to microcontrollers without soldering. The SEEED studio Grove ecosystem is one such option. Adafruit and Sparkfun also offer a compatible I2C bus port built around standard JST-SH connectors, called either STEMMA or QWIIC. Adafruit offers the SCD30 on a STEMMA-enabled breakout board, so one easy no-solder option is to use an Adafruit Feather form-factor microcontroller.

Here, an ESP32-based Feather is connected to an SCD30 inside the test chamber. (An even simpler version could omit the electrical connection on the lid for simply hot gluing a Stemma cable passed through a small drilled hole).


Simplified sorbent tester.

Data from this setup simply reports the three parameters tracked by the SCD30:

Elapsed time (s), CO2-SCD30 (ppm), Temp-SCD30 (C), RH-SCD30 (%) 
5.11, 0.000, 28.47, 49.95
10.18, 545.124, 28.50, 49.97
15.24, 519.152, 28.51, 49.92
20.31, 520.115, 28.56, 49.83
25.38, 520.488, 28.57, 49.75

In this case, the ESP32 board can easily send MQQT data to the web, but this wouldn’t be necessary for a non-networked microcontroller, making this arrangement suitable for pretty much any microcontroller someone might prefer to use.

Both the simple and advanced Sorbent Testers in use simultaneously:

Here’s what data from these devices looks graphed in a spreadsheet: