CCS811 CO2/VOC Sensor Stability - Page 1
Forum section: electronics / projects

author: ZigmundRat
author_rank: Regular Contributor
timestamp: August 23, 2020, 07:05:54 pm
content: I'm working on a project here to give information about the exhaust from an outdoor propane burning 'appliance'. My purpose is to make an adjustment to the air/fuel mixture such that the CO2 level is approximately 1500ppm. I have a reference appliance, so I don't require absolute accuracy, but only the ability to measure relative to that. So I sourced a couple of sensors to measure the CO2 levels of the exhaust. The two that I am using now are the AMS CCS811, and the MH-Z19B. I know the CCS811 is not a true CO2 sensor, but I felt that the two sensors should at least track even if the absolute values reported are different. Unfortunately, that does not seem to be the case. For a while after first startup, the two track fairly well although the CCS811 is a bit 'noisier'. Then the CCS811 will *always* take off on excursions away from baseline. (See image below - MH-Z sensor upper left, CCS sensor upper right, reading delta lower left.)The CCS811 will track the MH-Z19B for sometime before wandering off. This occurs well after warmup time, so its not initial power on drift. Both sensors are located together, driven from the same power supply, driven from the same microprocessor, and in the same air stream (currently just ambient air). I have used different measurement modes for the CCS811, and it seem to make no difference. I am not using the Wake pin at the moment, it is grounded. I know that there were no sudden Temp/Humidity/Pressure changes when the CCS811 values changed.The next things I am going to try are:- add temperature/humidity/pressure and see if any of that tracks- set environmental data in the CCS811- see if the change is related to # of readings taken- see if the change is related to elapsed timeAre there any special tricks to getting reliable readings from this sensor? I am using Maarten-Pennings CCS811 library (https://github.com/maarten-pennings/CCS811) - I don't see anything there that goes against what's listed in the datasheets.

author: larryqiann
author_rank: Newbie
timestamp: August 25, 2020, 06:50:05 am
content: If I recall correctly this sensor cannot actually sense CO2 (CCS811). We have these at work and they do not work properly for this purpose. These sensors are Metal Oxide electrochemical sensors which are designed to detect levels of VOCs commonly exhaled by humans as a proxy for the real indoor CO2 reading, but cannot measure the gas. As you're measuring for CO2 itself (likely the ratio of VOC/CO2 is much more different than in an IAQ situation, which these are not good for anyway) you might be unable to calibrate it properly.The MH-Z17B, as you have tried, is a NDIR (non-dissipative infrared iirc) sensor which should be actually detecting the concentration of CO2. This is likely what you need.

author: ZigmundRat
author_rank: Regular Contributor
timestamp: August 25, 2020, 05:35:11 pm
content: Thanks for the reply. Yes, I do realize it's not a 'real' CO2 sensor - it reports calculated 'equivalent CO2' and TVOC values. I also got the MH-Z19B NDIR sensor for this reason. I am just not certain of why the sudden change in values.I wonder if it's applying a new baseline value. I will start collecting that data as well and see if there is a sudden change which happens at the same time. I don't expect the baseline value to change continuously- but it's not really stated in the datasheet. The datasheet does mention automatic baseline calibration, with a 'minimum time over which a baseline correction is applied is 24 hours'. The thing is, I see these sudden changes in well less than 24 hours. It may be that the baseline correction time period has changed with different sensor application versions (currently running version 2.0.0) and the datasheet has not been updated. There is also an application note: 'AN000370: CCS811 Clean Air Baseline Save and Restore' which I will be reading closely.If you have them at work, maybe you know if the baseline values are stored/restored in your application? And if so, when?