Oxygen sensors — formulas to check linearity with an ambient air and an oxygen reading

Please register or login

Welcome to ScubaBoard, the world's largest scuba diving community. Registration is not required to read the forums, but we encourage you to join. Joining has its benefits and enables you to participate in the discussions.

Benefits of registering include

  • Ability to post and comment on topics and discussions.
  • A Free photo gallery to share your dive photos with the world.
  • You can make this box go away

Joining is quick and easy. Log in or Register now!

LFMarm

Contributor
Messages
871
Reaction score
538
Location
Colorado
# of dives
500 - 999
Hi all,

I am trying to do a better job at monitoring my O2 sensors and have been measuring every time I calibrate both the ambient air reading and the pure oxygen reading at ambient pressure. I am then calculating the mV constant from both readings and checking the percent difference as a quick measure of linearity in the field.

1721924861494.png

Here are the formulas I am using:
  • Constant based on ambient [mV] = Ambient [mV] / Ambient pO2 [bar]; e.g., 58.2 = 11.9/0.204
  • Constant based on O2 [mV] = O2 [mV] / Ambient pressure [bar]; e.g., 55.6 = 55.4/0.997
I am surprised that even for new sensors I get about 4% difference (while I understand from the manufacutere specs it should be <2%). I suspect I am doing something wrong with the math and hence looking for your kind feedback on my calculation.

Attaching here the table in case anybody wants to play with the numbers:

Ambient [mV]O2 [mV]AmbientConstant based on ambient [mV]Constant based on O2 [mV]Δ [mV]
123C3H123C3HPressure [bar]Amb. fO2 air [%]pO2 [bar]123C3H123C3H123C3H
11.910.712.611.855.450.158.753.40.99720.50%0.20458.252.461.756.455.650.358.952.34.8%4.2%4.7%7.8%
12.010.812.611.957.050.059.056.01.00020.51%0.20558.552.761.456.757.050.059.054.72.7%5.3%4.1%3.6%
11.910.812.611.955.650.559.053.80.99920.55%0.20558.052.661.456.655.750.659.152.64.2%4.1%3.9%7.6%
12.010.812.611.955.350.458.853.90.99820.52%0.20558.652.761.556.755.450.558.952.75.7%4.4%4.4%7.6%
 
Because you are setting your slope intercept to 0, set it to a non-zero value instead. You are expecting the sensor to respond perfectly linear and have a reading of 0.0 mV when the fO2 is 0% when the reality is that it does not. The manufacturer spec is 2% for the readings against a certified calibration within the specified operating range not 2% deviation from perfect linearity. and where are you getting the ambient readings? generally you use 20.9% or 21% for ambient.
 
and where are you getting the ambient readings? generally you use 20.9% or 21% for
PO2 of ambient air is based on RH, temperature and ambient pressure. It’s very relevant for me when taking measurements at elevation.
 
except you don't change fO2, only the pressure and thus pO2. your pressure isn't correct, assuming denver elevation it should only be around 0.82 bar.
 
I think the main issue is your calculation of the O2 constant effectively assumes 100% FO2 in the loop, which is only asymptotically true. Meaning it takes a lot of loop flushes to achieve. Can you elaborate on what you do between measuring the ambient mV and the O2 mV?

As an aside, are you getting your Ambient Pressure from a weather app? If so, that is not what you want, as it's normalized to sea level. You need to get that from your Shearwater, and it will be around 830 mb near Denver. It doesn't impact the deviation within a given row, but comparison across rows (i.e., across time/location) would be erroneous. OTOH, if these readings were taken at sea level, then ignore this part!

Lastly, your 3H constants seem to be scaled. (I can match the answers for the other three cells.) The %dev agrees, so the scale factor seems to be consistent between ambient & O2.
 
Because you are setting your slope intercept to 0, set it to a non-zero value instead. You are expecting the sensor to respond perfectly linear and have a reading of 0.0 mV when the fO2 is 0% when the reality is that it does not. The manufacturer spec is 2% for the readings against a certified calibration within the specified operating range not 2% deviation from perfect linearity. and where are you getting the ambient readings? generally you use 20.9% or 21% for ambient.
I didnt know about this 2% constant, until you mentioned,

so I started googling it appears Kevin Gurr wrote an article in 2012 where he said

"At 25oC, after instantly reducing thePPO2 from a nominal value to 0.0 atmthen the actual reading within 36seconds could be 0.5% of the startvalue. E.g. if the PPO2 is reducedfrom 2.0 atm to 0.0 atm then after 36seconds the measured PPO2 couldstill be 0.1 atm."

He didn't state what the offset was (after waiting longer than 36 seconds)

He also said "The sensor is first exposed to dry air (20.9% oxygen) for a short period then100% oxygen is applied. The sensor will display a voltage equal to 90% of the gas it is measuring (100% oxygen) in under 6 seconds. The remaining 10% ofthe measurement can take up to a minute and 10-60 minutes for the last 1mV.This is obviously a large change and smaller changes from one level toanother are relatively rapid"

Oxygen sensors and their use within Rebreathers
Author – Kevin GurrDate - 2013
 
@LFMarm if you are doing this indoors, temperature and humidity correction will be negligible.
It gets me to 20.50% instead of 20.95% where I am at the moment.
 
I think the main issue is your calculation of the O2 constant effectively assumes 100% FO2 in the loop, which is only asymptotically true. Meaning it takes a lot of loop flushes to achieve. Can you elaborate on what you do between measuring the ambient mV and the O2 mV?
Very good point but I believe I am very close to FO2=100% because the ChOptima uses a nipple and an exhaust valve to continuously flush the scrubber until sensors stabilize.

As an aside, are you getting your Ambient Pressure from a weather app? If so, that is not what you want, as it's normalized to sea level. You need to get that from your Shearwater, and it will be around 830 mb near Denver. It doesn't impact the deviation within a given row, but comparison across rows (i.e., across time/location) would be erroneous. OTOH, if these readings were taken at sea level, then ignore this part!
Ambient pressure is from my Garmin running watch so it is quite accurate.

Lastly, your 3H constants seem to be scaled. (I can match the answers for the other three cells.) The %dev agrees, so the scale factor seems to be consistent between ambient & O2.
3H on the ChOptima is on the monitor circuit and I suspect there is a different resistance than on the controller circuit. I typically scale 3H based on the comparison between reading of sensors 1 and 2 between monitor and controller (1 and 2 are measured by both circuit while 3C and 3H are only on one or the other). From a few checks it seems to be 3% off.
 
https://www.shearwater.com/products/teric/

Back
Top Bottom