Oxygen Sensor Question


We have the Grove Oxygen Sensor connected to an SeeedUnio Cloud via the Base Shield V2 and the results we are getting seem a little low.

Initially we had the sensor code set to use 3.3 volts but the base shield is set to run at 5v due to other sensors also being used. We have adapted the code ( we are using the demo code from the WiKi ) and the percentage value increased from 12% to just over 18%. It is worth mentioning that we did run the sensor at 5 volts but eh code was set to 3.3 for several hours.

However we are expecting the percentage to be higher, apparently it should be close to 20%. We have tried the sensor both indoors and outdoors and the % value doesn’t seem to change.

There are two things we are not sure about

Pre heating - The WiKi suggests the sensor needs pre-heating for 5 - 10 mins. What does this mean, do you just plug the sensor in and leave it powered up… is there any code that needs to be run ?

The Code - As i mentioned above, we are using the demo code to test with and the only setting we have changed is the voltage

</s>const float VRefer = 3.3; // voltage of adc reference<e>

We have now set this to </s>const float VRefer = 5; // voltage of adc reference<e>

Is there anything else that needs to be changed as i presume the voltage being used affects the calculation to present the percentage value.

If anyone can offer any guidance it will be appreciated.



The choice of ADC reference voltage depends on the voltage input of the O2 sensor. If O2 sensor’s supply is 5V, Vref is 5V. Otherwise Vref is 3.3V.

We just use Seeeduino’s adc that can get sensor’s data. I use a Seeeduino V4.2 to test it, and can get right data. But the wiki makes a mistakes. It connects O2 sensor to A0, but in the demo code it use A5 pin. I have told wiki manager to check it, maybe it has been checked now.


I’ve got same problem. Connected sensor to Arduino Uno without Base Shild, and it show 8-9% O2 in the air and Vout amount 0,85.

When blowing value changing, but it still wrong.

Support don’t answering

Hi there,

You can use below code to do calibration. thanks.

<LINK_TEXT text=“https://github.com/SeeedDocument/Grove_ … _value.zip”>https://github.com/SeeedDocument/Grove_Gas_Sensor_O2/raw/master/resources/Read_O2_value.zip</LINK_TEXT>


Thanks for reply, but I’m already tryed this calibration code. When it’s run, serial monitor shows right value, but sensor, for some reason, don’t reacting when I blow at it. If, after running of calibration code, I’m try to use main sketch, low values comes back.

Can you advise me what must to happened after running calibration or what should I do?

Hi there,

This code is running calibration first and then read the o2 sensor data. You do not need to change to original code. thanks.


I’m run calibration code and the O2 value is Ok. But why, when I’m put on balloon with exhale air at the sensor, value don’t changed?

When sample code runs, values changing, even when blowing on sensor, but it’s very low.

I saw the page http://wiki.seeedstudio.com/Grove-Gas_Sensor-O2/ was edited with warning of reference value of voltage.

According to this if I’ll rewrite line “float Concentration = MeasuredVout * 0.21 / 2.0” to “float Concentration = MeasuredVout * 0.21 / 0.85” where 0.85 - my Vout value at fresh air. Does it OK that my sensor showing Vout at two times lower than in sample?

Hi there,

Yes, you can do that, The current ranage of ME2-O2 is 80uA~160uA due to individual difference. So the output will be different. For more info, please refer to below link. thanks.

<LINK_TEXT text=“http://wiki.seeedstudio.com/Grove-Gas_S … /#hardware”>http://wiki.seeedstudio.com/Grove-Gas_Sensor-O2/#hardware</LINK_TEXT>