I purchased three electrochemical gas sensors (O3, NO, NO2) but did not receive documentation with them. Can you provide technical documentation and tutorials for these sensors?
Attachment omitted in migration: image001.png
Originally submitted via email support on 25 March 2025. Migrated to the forum for community visibility.
I’m not using the easyC port but connecting the SCL/SDA/VCC and GND pins directly. For addressing the three sensors, what is the operating voltage of the sensor board - 3.3 or 5 VDC?
You can use the SCL, SDA, VCC, and GND pins. If you use the same microcontroller for all three sensors, you will have address conflicts since the addresses will be the same.
The board has on-board regulators and can be connected via these pins or via easyC cable at 3.3V or 5V.
Start by testing one sensor at a time using the single sensor example. To use multiple sensors, refer to the twoSensors example in the library.
I want to use all three sensors with the same microcontroller. If I understand correctly, I need to set jumpers on jumper 5, 6, or 7 to change each sensor’s I2C address, so I can address them separately in my program?
Yes, you are correct about using the three jumpers. However, you also need to connect the LMPEN pins to different microcontroller pins. The microcontroller must pull the LMPEN pin to GND to configure the onboard LMP91000 chip. If all LMPEN pins connect to the same microcontroller pin, you won’t be able to configure the sensors correctly.
I recommend testing each sensor one by one first. When testing each sensor individually, connect its LMPEN to GND temporarily to enable it.
I2C is now fully functional with all three sensors and one LCD liquidCrystal display. Can you help me verify the sensorConfigData.h configuration for the O3 and NO sensors? I’m not confident in my configuration.
Here is what I created:
// NOTE: The reference voltage is always 2.5V
// The internal zero voltage has an offset in the PPM calculation - internalZeroCalibration
// This is due to the fact high gains amplify the noise as well so it's best to further calibrate it
// SGX-NO - Monoxide d'azote sensor
const sensorType SENSOR_NO = {
400.0F, // nanoAmperesPerPPM
0.078, // internalZeroCalibration
ADS_GAIN_4_096V, // adsGain
TIA_GAIN_350_KOHM, // TIA_GAIN_IN_KOHMS
RLOAD_10_OHM, // RLOAD
REF_EXTERNAL, // REF_SOURCE
INTERNAL_ZERO_20_PERCENT, // INTERNAL_ZERO
BIAS_SIGN_NEGATIVE, // BIAS_SIGN
BIAS_0_PERCENT, // BIAS
FET_SHORT_DISABLED, // FET_SHORT
OP_MODE_3LEAD_AMP_CELL, // OP_MODE
};
// SGX-4NO2 - Nitrogen Dioxide sensor
const sensorType SENSOR_NO2 = {
-600.0F, // nanoAmperesPerPPM
-0.015, // internalZeroCalibration
ADS_GAIN_2_048V, // adsGain
TIA_GAIN_350_KOHM, // TIA_GAIN_IN_KOHMS
RLOAD_10_OHM, // RLOAD
REF_EXTERNAL, // REF_SOURCE
INTERNAL_ZERO_67_PERCENT, // INTERNAL_ZERO
BIAS_SIGN_NEGATIVE, // BIAS_SIGN
BIAS_0_PERCENT, // BIAS
FET_SHORT_DISABLED, // FET_SHORT
OP_MODE_3LEAD_AMP_CELL, // OP_MODE
};
// SGX-4O3-20 - Ozone sensor
const sensorType SENSOR_O3 = {
1000.0F, // nanoAmperesPerPPM
0.1, // internalZeroCalibration
ADS_GAIN_2_048V, // adsGain
TIA_GAIN_350_KOHM, // TIA_GAIN_IN_KOHMS
RLOAD_10_OHM, // RLOAD
REF_EXTERNAL, // REF_SOURCE
INTERNAL_ZERO_20_PERCENT, // INTERNAL_ZERO
BIAS_SIGN_POSITIVE, // BIAS_SIGN
BIAS_0_PERCENT, // BIAS
FET_SHORT_DISABLED, // FET_SHORT
OP_MODE_3LEAD_AMP_CELL, // OP_MODE
};
#endif
Attachment omitted in migration: sensorConfigData.h
Glad to hear I2C is working with multiple sensors on one microcontroller!
Configuring sensorConfigData is more involved. To create the existing configurations, we used the sensor datasheets and the Texas Instruments LMP91000 software as a starting point:
The sensor database contains similar sensors. These two data points - the sensor datasheet and the TI LMP software - were used to approximate the parameters. We are currently improving the library, and an update with all sensor configurations is planned for the coming weeks.