CCS811 Error: HeaterFault MaxResistance

Dear,

Starting from the code on the sparkfun “CCS811 Air Quality Breakout Hookup Guide”, I connected the CCS811 with a DHT11 for temperature and humidity readings.

The readings that come back are C02 400 and tVOC 0, with error ‘HeaterFaultMaxResistance’.

The CCS811 spreadsheet indicates that this is probably a soldering error, but as I did not have only attached headers and no NTC thermistor I don’t think that my soldering is the problem.

Anything else that I can try?

Greetings,

Lieven

Hi Lieven,

I have a few quick questions to try and get a better idea of what is going on here. First, if you remove the DHT11 from your circuit and just run the [Basic Readings Example, do you get the same error? If so, it’s most likely a solder or wiring issue and reworking the soldering joints and re-wiring may fix the problem.

If you do not get the error, it’s probably how you are integrating the DHT11 into your code or potentially your circuit. We only have the [BME280 Compensation Example so I’m curious how you are adapting (or creating) code to use the readings from the DHT11 since that would be the most likely culprit if running the basic example eliminates the “HeaterFaultMaxResistance” error. Can you please elaborate a bit on how you are integrating the DHT11 readings with your CCS811? We cannot help debug custom code but we might be able to give you some pointers on how to resolve that issue.](SparkFun_CCS811_Arduino_Library/examples/Example2_BME280Compensation/Example2_BME280Compensation.ino at master · sparkfun/SparkFun_CCS811_Arduino_Library · GitHub)](SparkFun_CCS811_Arduino_Library/examples/Example1_BasicReadings/Example1_BasicReadings.ino at master · sparkfun/SparkFun_CCS811_Arduino_Library · GitHub)

Hello Mark,

Thanks a lot for your reply, indeed I started from simple answers, should have specified that.

I2C Scanner gives the CCS811 at the expected address:

I2C device found at address 0x5B !

The basic readings example gives the following output for hours and hours, not real output as far as I know.

20:08:20.533 → CO2[400] tVOC[0] millis[1049752]

That is why I extended the code, first by adding the environmental data from the DHT11, then by selecting different drive modes, and finally by adding the error handling from other examples.

For now I extended the BasicReadingsExample as follows:

void loop()

{

if (mySensor.checkForStatusError())

{

//If the CCS811 found an internal error, print it.

printSensorError();

}

//Check to see if data is ready with .dataAvailable()

if (mySensor.dataAvailable())

{

//If so, have the sensor read and calculate the results.

//Get them later

mySensor.readAlgorithmResults();

Serial.print(“CO2[”);

//Returns calculated CO2 reading

Serial.print(mySensor.getCO2());

Serial.print(“] tVOC[”);

//Returns calculated TVOC reading

Serial.print(mySensor.getTVOC());

Serial.print(“] millis[”);

//Simply the time since program start

Serial.print(millis());

Serial.print(“]”);

Serial.println();

}

delay(10); //Don’t spam the I2C bus

}

This results in the following output:

20:15:49.923 → Error: HeaterFault

20:15:49.923 → Error: HeaterFault

20:15:49.957 → Error: HeaterFault

20:15:49.991 → Error: HeaterFault

20:15:49.991 → Error: HeaterFaultMaxResistance

20:15:50.024 → CO2[400] tVOC[0] millis[7036]

20:15:50.058 → Error: HeaterFault

let me know your thoughts.

Greetings,

Lieven

Just replaced the ccs811 with a new one, everything works fine now