O2 sensor values on CCR dives

Jef Driesen jef at libdivecomputer.org
Fri Dec 1 07:54:25 PST 2017


On 2017-12-01 15:57, Davide DB wrote:
> Yes, what do you need exactly?
> I this thread I shared the dctool raw data file and some screenshots
> of Shearwater desktop and Subsurface of the same dive.
> I can share the Subsurface xml file and maybe an export from
> shearwater desktop if exist.
> Eventually I will send you everything off list.

The raw dive data, and also the data from Shearwater Desktop to compare 
against. The subsurface xml is useless here, because that's just the 
output of the libdivecomputer parser. Since that's basically what we 
want to verify it useless as "ground truth".

>> The average ppO2 is stored directly in the data, so that shouldn't 
>> match
>> perfectly. But the individual sensors is another story. In the data 
>> there is
>> only the millivolt, and libdivecomputer converts this into a ppO2 
>> value
>> based on the calibration values. This conversion is reverse 
>> engineered, so a
>> mistake there is not impossible. Note that libdivecomputer no longer 
>> reports
>> the average ppO2, only the individual sensors.
>> 
>> Is the resulting ppO2 wrong for the entire dive, or only during the 
>> deco
>> stop? The calibration does a simple multiplication with a constant 
>> value, so
>> if there is something wrong there, I would expect to see the same kind 
>> of
>> error throughout the entire dive.
> 
> Yes, it's wrong for the entire dive. I noticed the error looking at
> the deco part just because Subsurface signalled me being at over 1.6
> for all the 6 meter stop. But looking at O2 values in the deep part,
> Subsurface seems to report always 0.1, 0.2 more than the real value.

That's already good to know. So that means that either the calibration 
constant, our calibration formula, or even the decoding of the millivolt 
values is wrong. But the problem here is how do we verify this?

Look at the sample data in your xml export from shearwater desktop:

<diveLogRecord>
     <currentTime>0</currentTime>
     <currentDepth>4</currentDepth>
     <firstStopDepth>0</firstStopDepth>
     <ttsMins>1</ttsMins>
     <averagePPO2>0.98</averagePPO2>
     <fractionO2>0.18</fractionO2>
     <fractionHe>0.45</fractionHe>
     <firstStopTime>0</firstStopTime>
     <currentNdl>99</currentNdl>
     <currentCircuitSetting>0</currentCircuitSetting>
     <waterTemp>20</waterTemp>
     <gasSwitchNeeded>false</gasSwitchNeeded>
     <externalPPO2>false</externalPPO2>
     <setPointType>0</setPointType>
     <circuitSwitchType>0</circuitSwitchType>
     <sensor1Millivolts>54</sensor1Millivolts>
     <sensor2Millivolts>55</sensor2Millivolts>
     <sensor3Millivolts>54</sensor3Millivolts>
     <batteryVoltage>1.52</batteryVoltage>
     <tank0pressurePSI>0</tank0pressurePSI>
     <tank1pressurePSI>0</tank1pressurePSI>
     <gasTime>0</gasTime>
     <sac>0</sac>
</diveLogRecord>

There are millivolt values, but no corresponding ppO2 values. So I can 
double check the millivolt values, but we have nothing to compare our 
ppO2 values against.

Jef


More information about the subsurface mailing list