Real VO2Max--Measure Your Athletic Potential

20K15642

Intro: Real VO2Max--Measure Your Athletic Potential

VO2Max is an interesting concept that proposes that there is a natural limited ability to extract Oxygen nutrient out of the air and consume it. It is like the IQ of sports activities--some algorithm that tells you how gifted you are in doing a variety of athletic contests. It was worked on at the beginning of the last century and relied on bags of exhaled air that were carefully measured with arcane gas analysis that have only gotten more complex. The machine needed to measure this is expensive enough that just taking the test costs about $150. It requires a room with strange machines, assistants, masks and treadmills. Or you can just get an Apple watch that "does some math" and puts out a number that's based on a variety of well regarded tests --"name of a random doctor who correlated the expensive test with some easily measured thing like heart rate while walking". They always tell you that Lance Armstrong has a very high one and Sled dogs in Alaska have one that twice as high as Lances. It gets lower as you age, females lower than males and seems to have some basis in physiology--it is the amount in cc's of oxygen gas used in one minute per kg of tissue.

To measure this you actually have to carefully measure the amount of gas going in and out of your body, the level of CO2 and Oxygen in this gas, its humidity and temperature and use a confounding number of formulas to get to this number. (Or just make it up based on shoe size...) This Instructable will enable you to build a 3D printable portable device to do this with reasonable accuracy that costs about $150 and can be used for testing in a variety of sports. It can be Bluetooth/Wifi connected and provide a wealth of information during use. The breathing components can be easily separated from the expensive sensors to limit worries of virus transmission. It could be cheaply offered at health clubs or to individual users to evaluate training progress.

STEP 1: Gather Your Materials

The only thing that is expensive in this build are the very fine sensors that are necessary to do the analysis. The heart of the design is based on the https://www.instructables.com/3D-Printed-Spiromete...

spirometer design that measures the volume flow through a tube using this sensor:

1. SDP816-125PA Pressure Sensor, CMOSens®, 125 Pa, Analogue, Differential $30 Newark, Digikey

2. TTGO T-Display ESP32 CP2104 WiFi bluetooth Module 1.14 Inch LCD Development Board $8 Bangood

3. Gravity: I2C Oxygen Sensor $55. DFRobot

4. SCD30 Gas Detection Sensor, Carbon Dioxide, 40000 ppm, 3 % $55

5. Lipobattery 600 Mah $3

6. Switch $1

7. Connector cables $2

8. Dead Snorkel $1

9. Silicone Film High Temp Thin Rubber Sheet Gasket Super Clear Flexible 12x19.7 x1/32 inch

These sensors have been carefully tested for use in this device...there are cheaper but wildly dysfunctional alternatives. I have used different oxygen sensors in the past that required separate ADC and booster boards but found this new one from DFRobot has built in I2C and works very well. (I get no money from no-one)

STEP 2: 3D Print It

The design is based on previous valved snorkel designs: https://www.instructables.com/3D-Printed-Snorkel/...that utilize one-way valves to prevent the collection of dead air in the snorkel tube. In this case we build a breather apparatus that sucks air in one way and exhausts it through a flexible tube borrowed from a snorkel that connects it to the gas-measuring device. In this way we only measure the exhaled quantity of gas and the level of CO2 and O2 in the exhaled portion. Without the one way valve we would get admixing of the incoming and outgoing flow. The design for the one way valves and their assembly can be found in the above Intstructable. The valve material is soft silicon sheet that is easily cut out with a 3D printed guide.

The Venturi tower is the same design as in the spirometer with extra enclosures for the O2 sensor and the CO2 sensor with built-in covers that make them air-tight and do not interfere with gas laminar flow. The only modification to the computer housing that contains the differential pressure sensor is to enlarge it slightly to accommodate the extra room need for the two I2c connector cables.

STEP 3: Wire It

The wiring for this device is very simple. I did a fritzing diagram of it but for the most part it relies on two I2C devices connected together on the same bus( they have different baseline addresses that don't have to be modified) line with 3v power from the TTGO board and ground. The SDP816-125PA Pressure Sensor has to be connected with its output going to GPIO pin 33. Power and ground are also supplied from the 3v line on the board. The SDA and SCL lines are connected to the GPIO pins 21 and 22. The battery connection is the same as the Spirometer with the tiny JST connector to the TTGO unit with the positive line run through the main push button switch to turn it on and off. To charge the units battery you must of course have the unit turned on. When wiring up the SPD816 unit make sure you GND the OCS pin in the diagram. I used a 600 mah battery but a larger one can be fit in the case. The unit can also be run through the C type connector for power.

STEP 4: Build It

A variety of methods have been used for collecting the exhaled breath for the expensive standard lab units -- most involve a strap on mask which controls the breath from nose and mouth. Our build relies on a snorkel mouth breathing unit that makes it more compact. The mouth unit has two valves in it that separates the inhaled from exhaled gas and directs it into the measuring Venturi unit. All the parts for this unit are 3D printed except for the valve discs that must be cut out of thin sheet silicon sheet. A 3D printed disc that is used for cutting the valve discs is also included. The discs are then punched with a central hole to be placed on the valve spindles and a tiny nut is superglued over them to hold them in place. The valve cages are turned so one is input and one is output. The air exit pipe is then super glued on the exit side and the inlet cover disc with holes is glued on the inlet side. Assembly of the computer unit is much like the Spirometer. Two sections of plastic aquarium tubing are fitted into the bottom holes of the unit as far as they will go and then trimmed flush with clippers.M3 heat nuts are placed into the holes in the computer unit and the pressure sensor is screwed into place with M3 20 mm screws. It is then wired to the TTGO unit which is easily fit into its notch in the housing. Some E6000 is used to stabilize it into the housing. Cabling ( 4 wire I2C) to the O2 and CO2 sensors is wired and led through the holes in the top case. The small switch is superglued into place after placement of the battery and wiring. The head of the O2 sensor fits into the round receptacle on the Venturi tube and is held in place with additional heat nuts and M3 screws. A cover fits over the unit and is held in place with additional M3 screws. The CO2 sensor is held in place with a touch of hot-glue and the snap fit cover keeps it airtight. Make sure you have the sensor side facing toward the air chamber.

STEP 5: Program It

The program relies on a couple basic sources for doing the computation of VO2 max: https://sites.uni.edu/dolgener/Instrumentation/Rep...

https://www.biopac.com/wp-content/uploads/h19_bsl4...

https://web.cortland.edu/buckenmeyerp/fall2004/lab...

A key concept is that the volume you inhale is not the same as the volume you exhale! It is modified by lung physiology and multiple factors must be calculated to ascertain the true amount on Oxygen you are nibbling on. The software must first take in your weight--this is done by the two buttons cleverly enabled by the TTGO unit-- VO2 max is measured in cc/min/KG. Three slots appear on the first of the TFT screen shots and weight is increased by pushing the lower button. The upper button when brought to ground lets you manipulate the next box. This is done in the wtRead() function. Once this is complete a breathing cycle check is initiated to check for the volumeMinute total over 30 seconds of readings. This can be reset with the lower button at any time during the process to restart the 30 seconds count of breathing. A new screen appears with your collected volume so far in the sample and a countdown timer for the 30 seconds. Most commercial machines use a minute but I found it tortuously long if you're at the end of your breathing limit. In between breaths the oxygen and the co2 levels are checked and placed in a rolling average matrix. Temperature and Humidity are also sampled from the co2 sensor. At the end of the sampling time the goFigure() function calculates the VO2 max and compares it to previous samples and chooses the Max one of course and presents it on the last screen. The volume of expired gas is compensated based on the corrected volumes of expired CO2 and O2 and the temperature, pressure and humidity. I did not include an atmospheric sensor in the unit and used sea level. Bluetooth, Wifi and App development could easily be deployed to make continuous output to TV screens in a club or your phone display CO2, O2, Gas Volumes and Calories Burned.

STEP 6: Testing

Most commercial units like this are tested using standardized gas mixtures to check the accuracy of their sensors. I did not. I was more concerned with the accuracy of the volume measurements from the Venturi tube. When building the spirometer I checked it on a rather gross flow meter (15 L/ Min) and found it pretty accurate, but commercial labs standardized their volume calculations with a large 1 liter syringe of air. I built one out of PVC and 3D printed parts and found the accuracy to be about +/- 8% which I was impressed with. I did not spring for a "Real" VO2 Max test to compare my results on the two machines....

STEP 7: Using It

The principal is simple--you're an engine that burns oxygen and you want to rev the engine until red line and then measure how much oxygen your burning per minute per kilogram. The simplicity of this portable device is that you can pursue your favorite overtaxing sport --- running, biking, extreme tennis--and use this instrument when your about to burst and check your VO2Max. You can hang this device from a set of safety glasses if more convenient but I found it was easiest to just grab it and blow for 30 seconds. There are garbage cans of relevant material on VO2Max significance which I won't drift into but like many other things in life you may have been gifted with a great one or cursed like the rest of us.

31 Comments

What is the material spec for the 3D printed parts? and what is the cost of the printed parts?
Did anyone get this working. I found an error in the sketch code whereby readOxygenData had been used instead of getOxygenData. Correcting this allowed it to compile but the ESP32 appears to not be functioning, displaying a black screen, also it won't power up from the battery port. The only sign of life is the led illuminated. I have the correct libraries installed as the authors spirometer sketch compiles and appears to display correctly when uploaded to the same ESP32?
Wow very cool project!!!! I've been researching ways to build an arduino-based indirect calorimeter to estimate resting metabolic rate, and stumbled across this!
Since the exhaled CO2 can sometimes go > 4% (40,000PPM), I was wondering whether this CO2 sensor (SCD30) can handle that accurately?
Super cool project! There is all what I like: sensors, electronics and sport.
This project is a great idea, unfortunately the O2 sensor needs to be able to monitor millisecond changes in O2, this requires a paramagnetic sensor costing thousands. I would love for this to actually work but as a professional who has just purchased my second testing rig for $50000 l'm affraid to say it will still be making up / estimating VO2. One day when fast response 02 sensors are less expensive?
There is no way that other top-of-the-line devices in the market are using paramagnetic O2 sensors.

This is from https://DIYRebreathers.com

"The paramagnetic sensors are excellent sensors, but they are not intended for use where the sensor is moving while measurements are being taken. Even the motion of a ship can cause instability, let alone the movement of a diver. "

(link to the above quote: http://diyrebreathers.com/data/uploads/documents/r... )

For example, the VO2 Master, which is the most discrete device, and goes for ~$5,000 just cannot use a paramagnetic sensor (link to product: https://vo2master.com/ ) (see attached image)

The best "portable VO2 device" is the Cosmed K5 (link to product: https://www.cosmed.com/en/products/cardio-pulmonar... ) (see attached image)

I just searched online and found out that the VO2 Master uses a galvanic fuel cell O2 sensor:

"The VO2 Master unit contains a passive, pump-less system for gas sampling, a galvanic fuel cell O2 sensor, and a differential pressure flow sensor (personal communications with manufacturer).The VO2 Master automatically calibrated to the ambient air for gas concentrations, ambient temperature, humidity, and barometric pressure when it was turned on (the device does not calibrate to other O2concentrations). Following gas calibration, the VO2 Master was fitted to participants, and participants were instructed to take 10-15 deep breaths for flowmeter calibration. Once the protocol was started, the device recalibrated automatically at 5 minutes and 25 minutes (took ~30-45 seconds each time). The device measures breath-by-breath ventilation and VO2but does not have a CO2sensor and, therefore, cannot capture VCO2. The VO2 Master transmitted data via Bluetooth to an iPod (Apple, Inc. Cupertino, CA, USA) equipped with the VO2 Master mobile application for storage and later download."

Link: http://www.sandme.co.jp/pdf/VO2MasterValidityandRe...

This technology (galvanic O2 sensors) is what SCUBA divers use in their breathing circuits. This can be easily repurposed for a DIY VO2 max, with good engineering skills, to calibrate it. This is mainstream technology.

The poster of this project may want to check out this website: http://diyrebreathers.com/

Ultimately, the sensor has to be high quality and have a high frequency (Hz) sensing rate, which is in the milliseconds range.

I should point out that the mask being used for the VO2 Master is a popular mask used in VO2 Max training. It is called the Hans Rudolph 7450 series V2 mask (you can find the headgear for it online): https://www.amronintl.com/hans-rudolph-7450-series...

Basically you can get a valve for the mask and 3D print all of your parts and enclosures, with a galvanic O2 sensor, to fit around the mask itself, like the VO2 Master device.

It would be a very nice form factor. I hope this helps.




Hi
This is really interesting. My background is physiology / medicine rather than electronics. But I completely agree the minimum specification for the O2 sensor needs to be 10 measurements per second. This way even at high respiratory rates an accurate end expiratory O2 can be measured and true O2 consumption calculated with the spirometry data. It also needs to be accurate to within 0.1%. Generally end expiratory O2 will be around 16% but with 1litre tidal breaths every 0.1% will be 10ml O2 consumption which becomes 400ml at 40 breaths per minute. This project would be amazing if an O2 sensor of this spec can be incorporated. The current spec has a 15second response which is fine for a lot of applications but sadly not this one.
Hopefully this is all helpful info.
My background is in electrical engineering.

It is crucial to reduce errors, including if the device is for personal use.

Basically, all Breath-by-Breath modes on VO2 machines are of dubious accuracy: https://www.vacumed.com/pdfs/BBB3.pdf

This is a peer reviewed journal article of the Cosmed K5 (which I mentioned above and gave a photo of), in various modes, which has this issue too (note that the galvanic O2 and an infrared CO2 sensor are mentioned with response times): https://journals.plos.org/plosone/article?id=10.1...

The original poster of this project may find this article interesting, "Errors in VO2 testing": https://www.vacumed.com/images/Errors%20in%20VO2%2...

Anyways, I did not have too much luck finding galvanic O2 cells with response time that was adequate.

I did find a fiber optic oxygen minisensor, which is used for both air and underwater situations, with a response time of 0.3 seconds. A system with O2 and CO2 sensors which have the capability of working in both air and water have an advantage: the exhaled air does not have to be dehumidified or dried to get an accurate reading.

A response time (Time to 90% of the true value) of 0.3 seconds for an O2 sensor is decent, but one would want to do better if this was a commercial device. Also, the sensor does not consume oxygen and lasts much longer than galvanic O2 sensors. It probably is easier to calibrate, too: https://www.pyroscience.com/en/products/all-sensor...

I should point out that this particular O2 sensor is rated with a response time of 0.3 seconds in both water and air. The speed of light in air is much quicker, so the true response time could certainly be closer to 0.1 ms.

Here are some other interesting PDFs that I found:

Issues affecting the accuracy of Metabolic Carts: http://www.redbackbiotek.com/wp-content/uploads/20...

Understanding the Issues Affecting the Accuracy of Measuring Oxygen Consumption Utilizing Metabolic Carts: http://www.redbackbiotek.com/wp-content/uploads/2017/12/AEI-and-Redback-Biotek-Webinar-Issues-affecting-errors-in-VO2-measurment-1.pdf
I guess the rolling average is a bad idea....
Gads I was wondering what those machines cost!! Thanks for writing in. Build one and offer two levels of service! My wife and I were just happy finding out we were in the "Good" level.
Hi, this is a reply to 2 posts.
Yes for really accurate measurements rapid response O2 is needed.
But
Some of the time you can just use CO2. This is because when we start to exercise we burn our (glycogen) carbohydrate stores. Every molecule used to burn carbohydrate makes one molecule of CO2 so measuring CO2 will give O2. But if you exercise for more than 15 to 20 minutes you begin to burn more fat. This gives 80% CO2 to O2. To complicate matters more as you approach a true VO2 max you will move to anaerobic metabolism where you clear more CO2 by breathing more so that the acidity of the blood is kept constant (as the levels of lactic acid climb). To do an accurate test you need to 'ramp' exercise to ensure that you are 'maxed out' by about 15 minutes and be able to measure O2 accurately as the relationship with CO2 will be unknown at this point. The device with CO2 only is interesting and will tell you more than a smartwatch, but the goal of VO2 max measurements remains elusive (with current sensor technology).
Thanks. I clearly will have to read more. Would measuring initial respiration, burning carbohydrate stores, tell me about my athletic condition? I'm out of shape. I get short of breath much faster than when I was younger and in better shape. As I have gotten in shape in the past I notice being able to exercise longer before getting winded as an indicator of progress. Could I use what I might call Initial respiration as a measure of my cardio conditioning, or is the case than my so out of shape that my breathing heavy means that I'm entering anaerobic very soon? I want to quantify that subjective experience of not getting winded as easily as I get in shape.

Could I, say do a 50 yd sprint and measure how much CO2 I can generate. Workout for a month and do that again. I assume that I would be able to convert more O2 and glycogon to CO2 after that short sprint if I'm in better shape.
Maybe it is better to do the measurement after a 50 yd race walk so that I stay in the aerobic range.
Hi, there are really 2 questions here. From a maker perspective, can a low cost VO2 analyser be built? Sadly as I have noted, not with current sensor technology. I have been looking again but paramagnetic O2 sensors seem to be 'contact us for a quote' type items. So still not in home maker territory ( if any electronic engineers are reading this - a small and less than $100 rapid O2 sensor would have big applications in medicine and sports science, and i suspect a lot of other places).
The second question is about measuring fitness. For this I suggest search 'incremental shuttle walk test' - it is very low tech, but has good correlation to VO2. There are apps available to assist with test and show predicted VO2 based on result. Hope this helps.
I think you may not reach the level of sophistication in measurement with these cheaper sensors but what you can achieve and probably of much greater interest is portability and democratization of data gathering to the field of exercise physiology.
just read https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5872716/ Figure 1 show that trained resting people have more glycogen in their muscles than untrained resting people. Combined with exercise induced cardiovascular changed that allow for the delivery of more oxygen this could be a way to quantify my getting into shape.
This is awesome! I got to use one of these while studying public health in college :D
What health college did you go to? I wanna study health. I wanna be a nutritionist.
I went to University of Louisville under their public health program.

Nutrition is something I've thought about going back for, but I wonder if I could make it through more years of school. :P
I didn't notice if a non-Apple product (Android ) can be used, is this the case?
Is there something special about Apple products that limit the usage?
More Comments