Enviro+ / Ohms to PPM

Hi there,

have my Enviro+ up and running and set up a custom .py to read values and send them to MQTT. From there on I further use the values in openHAB (Smarthome).

My question is about the Enviro+’ MICS6814 sensor. Right now it reads…

  • 566 kOhm redu
  • 25k kOhm oxid
  • 369 kOhm NH3

Is there a chance to convert these resistances to PPM? I’ve stumbled upon a data-sheet (https://www.mouser.fi/datasheet/2/18/1143_Datasheet-MiCS-6814-rev-8-1144828.pdf) where there are diagrams for RS/R0 over PPM, but the RED sensor diagram only reaches to 10.00 kOhm on Y-axis.

Many thanks in advance!

The gas sensors seem to be totally dependent on air temperature, pressure and humidity so I can’t see how anything accurate can be read from them. I have two boards. On in my garage near Manchester current reads as follows:

This is in my lounge in Tenerife:

Ignore the flat section where my RPI crashed.

Hi @nophead, thanks for your reply.

I don’t have any issues with sensor data, just wanted to know if someone here managed to convert the Ohm’s to PPM.

Have a nice & KR!

@nophead what did you use to graph the data from the Enviro+?

It is code I wrote myself and published here: https://github.com/nophead/EnviroPlusWeb


Nice! It will be this week’s project to see if I can make it play with luftdatden.py

I’ve managed to convert the ohms readings from the gas sensors to ppm using the following algorithms.

red_in_ppm = math.pow(10, -1.25 * math.log10(red_rs/red_r0) + 0.64)

oxi_in_ppm = math.pow(10, math.log10(oxi_rs/oxi_r0) - 0.8129)

nh3_in_ppm = math.pow(10, -1.8 * math.log10(nh3_rs/nh3_r0) - 0.163)

Where each respective rs/r0 is the current reading in ohms divided by the baseline air reading in ohms. They therefore require an r0 calibration measurement to be made upon startup and after a 100 minute warmup period.
They’re embedded in the code here: https://github.com/roscoe81/enviro-monitor

That code also includes some temperature, humidity and air pressure compensation of the gas sensors.

Hope that’s of value to others on this thread.

Dear Roscoe,

I appreciate if you could help me:

I’m developing a project based in the gas.py example of the enviroplus library. I’d like to know if the resistance value that the code gives is the Rs, R0 or Rs/R0 ratio.

on the other hand, could you advise me about the calibration you mentioned, I’d like to get measurements in ppm.

Thank you so much,

Hi Christian. That code will give you Rs. You can get R0 by measuring Rs in clean air and then Rs/R0 can be applied to the formulae to get approximate ppm values. I found it best to take an R0 measurement after the 100 minute sensor warmup period has been completed and you need to check that the air is clean at that time. Because of the need for clean air and the fact that each sensor responds to multiple gases, the ppm readings are just an approximation and won’t be highly accurate but their much more useful that just reporting Rs. My code on GitHub at https://github.com/roscoe81/enviro-monitor/blob/master/Northcliff_AQI_Monitor_Gen.py can show you how I did it. I’m still working on improving the gan sensor calibration algorithms.