Carbon Dioxide


After the last tinkering with CO sensors on the VO₂ max device, Sensirion released an updated chip the STC31-C with finer resolution (0.2% vs 0.5%) and a more "raw" reading mode.

The idea had been to use the CO₂ sensor to calculate the respiratory quotient, the VO₂ max device uses the O₂ sensor primarily to determine consumed oxygen.
The O₂ sensor appears to be more accurate, reliable and consistent than the CO₂ sensors, however being electro-chemical, the O₂ sensors have a fixed lifespan.

So the other idea is to see if it's possible to calculate the VO₂ max based on the expired CO₂ volume instead.

The initial attempts had used the SCD30 sensor, however, despite being ridiculously accurate these sensors can only read up to 4% CO₂ levels, well below expired breath CO₂ levels and no use for exercise levels.

So I ordered a few of the new STC31-C to play with and built up a new module to test.

PCB with an STC CO₂ sensor and SHT temp sensor


Initial results breathing on the sensor look promising:


Inelegant, but marked and cut out a larger opening on top of the VO₂ device.

Hole to cut marked on case.

Then "bodged" fitting the new CO₂ sensor right in the airflow and moved the barometer to the outside of the case, with hindsight this needs moving off the main tube since that warms up with breath/use.

'Bodged' development fitting.

Next updated the VO₂ source code to use the new sensor, but also discovered the current O₂ sensor had now died - the device uses the expired O₂ levels to calculate the CO₂ for the VO₂ max calculation.

So thought it was worth a go, trying to calculate the VO₂ max from just the CO₂ sensor.
20min exercise test

Unfortunately the first "in exercise" test run shows an excessive but also constantly climbing CO₂ reading.

Raw temperature data


Looking at the raw data is seems that there might be a few causes for this, firstly the barometer is mounted on the side of the breath tube so the "ambient air" temperature reading is constantly climbing, secondly it takes >10 minutes for the breathed air temperature measured at the CO₂ sensor to rise, finally looking back at the first CO₂ breath graph it appears that in the "low noise" mode of the sensor the "return to zero" levels are always climbing.

So, long term need to move the barometer, but for testing will just read the ambient temp just once, then hardcode the body temperature as before, finally will tweak the sensor mode to not use the low noise mode.

Will need to wait for a new O₂ sensor to arrive to test properly and be able to compare the calculated vs measured CO₂ numbers.

Popular posts from this blog

seven month update

Tracking running Part #2

back from the brink