Nitrox/Trimix & CO analyzer

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!

...
How is your 20.9 Air calibration point captured? Is it dry air from a scuba tank or atmospheric air. If Atmospheric then you should be accounting for temperature and humidity.
...
All air I use for testing is from scuba tanks. I've got a couple of small tanks with air, 50.6% nitrox, 100% oxygen, 100% helium and 15/55 trimix.
...
What's the ballpark figure on cost for materials? I imagine that it is substantially less than a cheap O2 analyzer plus a cheap CO analyzer.
Check aliexpress for all the parts in the opening post. O2 cell varies in price between 29 and 40 euro, CO sensor is around 9 euro.
I had not seen that sensor when I built my CO sensor. Does it come calibrated?
Yes. The sensor itself (ME2-CO) can be ordered separately and is replaceable. The board has all the electronics for calibration, provides serial communication, analogue output and digital output. I'm using the last one, DAC output. Range is 0 to 500pm, no idea how accurate the calibration is.
I will install a sensor in the air-intake of the compressor, if the sensor reads anything above 3ppm, a relay will switch off the compressor. CO below 3ppm will be handled by the hopcalite filter.
You might also consider an amplifier prior to the ADC to increase the size of the signal to help improve accuracy
I'm using a gain of 4, provided by the ADS1115 chip.
0% = 0mV (or any fixed value) should not be used or fixed in your formula/conversion, i think you proved this in your testing to yourself

as the sensors *should* have a linear output only use the 2 calibration points you capture to calculate a straight line, you can extend it below the 20.9 level allowing you to measure those ranges as well
...
The O2 cell turns out to be linear. A brand new one will produce around 11.5mV in air. After 3 to 4 days, it stabilizes and provides 10.0mV to 10.5mV in air. From several tests, I found that the deviation from theoretical values is linear as well. Several CCR topics here on SB describe that deviation as linear drift.
The accuracy might be just 1% off when measuring EAN32, but it's >4% when measuring pure oxygen. More than 1% oxygen difference between measured gas and planned gas is not acceptable in tech diving, so why would I accept it in an analyzer.....

Since the drift is linear as well, 2 calibration points should be ok. I'm just struggling with how to tell the processor that it should correct the purple line, making it look like the green line.
 
A brand new one will produce around 11.5mV in air [...] 3 to 4 days, it stabilizes and provides 10.0mV to 10.5mV in air.

The accuracy might be just 1% off when measuring EAN32, but it's >4% when measuring pure oxygen. More than 1% oxygen difference between measured gas and planned gas is not acceptable in tech diving, so why would I accept it in an analyzer.....


Since the drift is linear as well, 2 calibration points should be ok. I'm just struggling with how to tell the processor that it should correct the purple line, making it look like the green line.

If you are using the 2 calibration points in your formula to create whatever color line you want (and you recalibrate after 3~4days) it would be off by 0% across the range
 
additionally, if you know the drift is linear, theoretically you only need to "factory calibrate" the 100% and corresponding 20.9% once (until you change sensor). Then 20.9% can be used to recalibrate and automatically offset for the drift
 
Yes. The sensor itself (ME2-CO) can be ordered separately and is replaceable. The board has all the electronics for calibration, provides serial communication, analogue output and digital output. I'm using the last one, DAC output. Range is 0 to 500pm, no idea how accurate the calibration is.

Does it have a ppm per voltage or difference? My SPEC sensor had a ppm per nanoamp. This sensor (from the limited specs I found) looks good and maybe easier to work with. I have a CO analyzer - I built separate from the O2 analyzer - may combine one someday. With the extra parts I have it would be under $50 to build another CO one with that sensor.
 
Does it have a ppm per voltage or difference? My SPEC sensor had a ppm per nanoamp. This sensor (from the limited specs I found) looks good and maybe easier to work with. I have a CO analyzer - I built separate from the O2 analyzer - may combine one someday. With the extra parts I have it would be under $50 to build another CO one with that sensor.
It's even easier than that. The ZE07-CO needs a 5V power supply and provides one DAC output. The output is connected to an analogue pin of the arduino.
The circuit that comes with the sensor does the calibration, for scuba there's only one acceptable value: 0ppm. Or according to the EN12021 standard, equal or less than 5ppm. The sensor range is up to 500ppm.
Code:
#include <ZE07CO_Sensor.h> // https://github.com/casper-sv/ZE07_CO_Sensor
#define SensorAnalogPin A2 // pin 10 from CO sensor
#define VREF  5.0          // voltage on AREF pin

ZE07CO_Sensor ZE07CO(SensorAnalogPin,VREF);

float carbon = 0;

void setup()
{
}

void loop()
{
  carbon = ZE07CO.dacReadPPM();
  Serial.print(carbon);
  Serial.println("ppm");
  delay(250);
}
 
Very nice project.
I have one (maybe dumb) question. What's the need for the ADS1115 ADC??? Can't you just use Arduino's analogue inputs??? Do you really need 16 over 10 bit resolution? I'm pretty sure I've seen other projects reading O2 sensor output directly.
Cheers
 
I haven't tried using the sensor directly connected to the A-inputs. Next to this analyzer, I'm also working on a trimix analyzer which uses the other 2 inputs on an ADS1115, and I've got pressure sensors from banks connected to an ADS1115. The costs of these converters are minimal, precision is high. So my motivation is simply convenience.
 
Very nice project.
I have one (maybe dumb) question. [...] Can't you just use Arduino's analogue inputs??? [...] seen other projects reading O2 sensor output directly.

Yes, you can connect directly to an arduino the DAC output can be setup 0~2V, though you could also just read the data via UART if using the module board, if using the sensor directly on your own board you need an opamp to increase the signal to a readable level
 
Don't want to hijack your thread, for ref i'm toying with 2 versions, but handheld. 1) O2 2) COO2

Aluminum, like a dive torch so robust, 18650 for battery, smaller 128x32 OLED.. this was early mockup of the O2 version minus OLED and unfinished 3D printed housing
IMG_2840.jpg


IMG_2868.jpg
 
Battery-operation is indeed a requirement.

I'm looking into using the 18650 battery as well, including a charging option. With the recent live aboard disasters in mind, such a simple analyzer could be a personal CO detector as well. E.g. adding a buzzer that sounds when the CO level goes above a certain value.
At the same time, that battery should never become the cause of a possible fire....
 

Back
Top Bottom