Lambda Control of Oxigen Content in Flue Gas of Pellet Boiler

I am new in this forum. I searched deeply in it but did not find similar project like mine. I will highly appreaciate your advise on following matter:

I would like to measure the oxygen content in percentage in exhaust gases of my pellet boiled by using simple and cheap LSM-11 narowband Bosch lamda sensor. Then to show it on display. Further development is to includ PID algoritm and control the burner fan speed (air quantity) in order to keep the oxygen content in flue gas constant. This will optimize the burning process and increase efficency.

I know, there are ready devices using wideband lambda sensor that give linear output 0-5v for oxygen 0-21%. But they cost about 200 EUR. However I am looking for cheap solution. LSM-11 is intended for O2 control in boilers. It has simple heating circuit and voltage output in range of about 1v.

https://1drv.ms/b/s!Av7Gpg63Y-oIxmOT8Z0UiOcz3mmF

The curve is extended in the lean side. This is the part that boilers use for lambda control. Not like in petrol engines the pellet boilers neads about 5.3% O2 in the flue gas for optimal fuel burning. I want to use only the lean side of curve -10 mV to 40 mV :

https://1drv.ms/u/s!Av7Gpg63Y-oIxmL8I5eel5YpWo6U

The output voltage commes from the 2 wires of the sensor and vary from -10mV to 40mV in the range in which I would like to measure the oxygen content in %. So it need amplification and shifting so the all analog signal is positive in order to be readed by Arduino analog input. I purchased one LM358 ready board with 2 stage voltage amplifier to play with it. I still wait for it to arrive. It is just a base on which I can chage the diagran as I want.

https://de.aliexpress.com/item/1005001622201285.html?spm=a2g0s.9042311.0.0.3c774c4dmFNeIf

May you suggest a proper diagram for amplifiacion of this signal for importing in Arduino uno by analog input with resonable resolution - 0.1 mV should be enaugh? Should it be differential amlifier? How to shift the negative voltage so all output to be pozitive? How to limit the amplifier input only to 40 mV??? Or to limit the output insread? I do not need to read teh part from 40mV to 1 volt input. The curve is non linear but that I will corrected by program ways. So , even if amplification is not enaugh linear I can correct it in the program at the calibration stage. I suppose the input impedance should be enaugh high to not influence the output of the sensor.

Best regards, Gendov

This circuit should do what you want. The gain is set by 1+R2/R1 = 28 The offset is adjusted with R4 but if R4 = 470k you would add an offset of 0.1V

You will probably need to play with the values to get the gain and offset to match your requirements.

I'd suggest a CMOS op amp such as the mcp6002.

You dont say which arduino you plan to use?

noninv.png|552x386

Nice project. Where did your lean side curve come from? It shows the sensor voltage going negative at about 11% oxygen, which doesn't seem to correspond to the Bosch datasheet. Where does the negative voltage come from in automotive environment with a single-sided supply? S.

Hi johnerrington , Thanks for your suggestion. I will try it. I will use Ardoino UNO.

Hi srturner, The LSM11 diagram that I posted is comming from "VIESMANN Service instructions VITOLIGNO 300-P" pellet boiler which utilizes lambda control of the burnig process. See link with 2 pages PDF file - curve is on the second page :

https://1drv.ms/b/s!Av7Gpg63Y-oIxmcnDZd3MVA4qxoi

I do not know what is the diagram of input electronix to which it is connected. It might be the shifting to minus mV is comming for the external to the sensor items in the connection digram. It does not matter. If all signal is positive that is more easy to connect to UNO.

Having all positive voltage output will simplify the design a little. The project looks doable using the circuit posted by johnerrington. But I can't imagine how you're going to calibrate it. S.

I don't think you will find the LM358 to be stable enough to reliably measure those low voltages. I would you suggest you use something like this ADC Converter

In addition to being very stable, The delta - sigma is very good at noise rejection and will definitely provide a better measurement than the Arduino analog input.

gendov: The output voltage commes from the 2 wires of the sensor and vary from -10mV to 40mV in the range in which I would like to measure the oxygen content in %. So it need amplification and shifting so the all analog signal is positive in order to be readed by Arduino analog input.

Don't waste your time tinkering with amplifiers. Use an INA226 power monitor module. They cost less than 2$ at your favourite chinese store.

They are primary designed to monitor shunts in the range +-80mV. They even can read the mV differential off-rail by up to 36V. Isn't that perfect for your usage?

Just unsolder the shunt and read the "mV" directly over the I2C interface.

With the Arduino INA library from Zhanshin you get directly a stable and precise mV reading: INA.getShuntMicroVolts(0);

Enjoy!

Don't waste your time tinkering with amplifiers.

Hardly a waste of time! However that little module looks interesting.

Also the SPI interface would allow the module to be used remotely from the arduino.

A 16 bit ADC and 2.5uV resolution makes it very tempting; and cheap as chips!

@RIN67630 - is there an option to change the range for the measured voltage other than +- 80mV?

I can't imagine how you're going to calibrate it.

A resistive divider, pot & multimeter to apply voltages?

RIN67630:
Don’t waste your time tinkering with amplifiers.
Use an INA226 power monitor module. They cost less than 2$ at your favourite chinese store.

They are primary designed to monitor shunts in the range ±80mV.
They even can read the mV differential off-rail by up to 36V.
Isn’t that perfect for your usage?

Just unsolder the shunt and read the “mV” directly over the I2C interface.

With the Arduino INA library from Zhanshin you get directly a stable and precise mV reading:
INA.getShuntMicroVolts(0);

Enjoy!

Thanks for the suggestion. It always look better to use ready module than to start from scratch.
I was looking to use MAX6675 module for K thermocouples mV measurement. But it has internal room temperature compensation that will distort measurement. INA226 will do the job. I ordered one.
I may use MAX6675 for measuring the temperature of flue gas of the boiler. It should not drop less than 120 deg.C to avoid condensation. Do you know better module for K type temperature measurement?

srturner: Having all positive voltage output will simplify the design a little. The project looks doable using the circuit posted by johnerrington. But I can't imagine how you're going to calibrate it. S.

Let first establish some measurement circuit. 21% is easy - just open air. For 0% is necessary to blow the sensor with nitrogen. We had such calibration bottles with pure nitrogen on tanker ships. They are used for calibration O2 memeters that crew wear when going to closed spaces. However in the middle range between 0 and 21% should relay on the manufacturer curve.

gendov: I may use MAX6675 for measuring the temperature of flue gas of the boiler. It should not drop less than 120 deg.C to avoid condensation. Do you know better module for K type temperature measurement?

In that temperature range a PT100 should be the first choice. A max31865 Module should be preferable: https://www.aliexpress.com/item/4000151215433.html

Hi, Also google instrumentation amplifier. As you are having to measure such small voltages, some amplification may be necessary.

An instrumentation amplifier is designed for this application with low noise and LOW DRIFT in offset and gain.

Tom... :)

johnerrington:
A resistive divider, pot & multimeter to apply voltages?

Sorry, my wording was unclear. I meant calibrating the sensor output itself (not the amplification stage). I suppose the OP is planning to take the datasheet on faith. This is a bit troubling because the two different graphs correlating output with %O2 varied WRT output voltage.
S.

RIN67630: Don't waste your time tinkering with amplifiers. Use an INA226 power monitor module. They cost less than 2$ at your favourite chinese store.

They are primary designed to monitor shunts in the range +-80mV. They even can read the mV differential off-rail by up to 36V. Isn't that perfect for your usage?

Just unsolder the shunt and read the "mV" directly over the I2C interface.

With the Arduino INA library from Zhanshin you get directly a stable and precise mV reading: INA.getShuntMicroVolts(0);

Enjoy!

Well, datasheet say that input voltage can be up to 36V but that is in voltage measuring mode. I will use it in current measuring mode for range up to 50mV by removing the shunt resistor as you suggested. However the full range of my sensor is 1V . I want it measure only first 50mV of this 1 V. Will the input sustain 1v in current measuring mode?

RIN67630: In that temperature range a PT100 should be the first choice. A max31865 Module should be preferable: https://www.aliexpress.com/item/4000151215433.html

Temperature range should not be higher than 300 °C. Hence PT1000 will fit for the purpose.

You need to have a look at the nerst equation which relates to zirconia probes . The output is temperature dependant and proportional to the log of the partial pressures of oxygen across the probe. ( one side usually being 21%). A lot of automotive sensors use an internal heater , which you could drive to a constant resistance . Often with automotive sensors you get an offset voltage caused be heat not being constant across the sensor ( heated up the centre)

https://duckduckgo.com/?q=nerst+equation&t=iphone&iax=images&ia=images&iai=https%3A%2F%2Fclassconnection.s3.amazonaws.com%2F591%2Fflashcards%2F887591%2Fjpg%2Feq1320811406360.jpg

A further point is as flue gas temperature is low , there may be little saving due to running optimally ( there are tables for this) This for natural gas but it will do :

https://www.vesma.com/tutorial/furnaces.htm

There is a danger of carbon monoxide production here as the relationship between excess air and complete combustion may well vary .. you might not legally /wisely be able to do this ??

Everybody's got an opinion.

For the temperature I would use a MAX31855 board from eBay. I believe K type thermocouple is a better choice for a corrosive atmosphere.

Temperature sensor will be in 10 cm pocket to the middle of the funnel where temperature is highest. So, it will be not exposed to corrosion. Both types of temperature sensors will fit.

Regarding measuring of mV I reviewed also ADS1115 board . It looks to me suitable in differential mode for my purpose. There is also ready arduino function for it.

https://de.aliexpress.com/item/32817162654.html?algo_pvid=8ad85b25-ce8b-4d5f-a776-98586fac8c16&algo_expid=8ad85b25-ce8b-4d5f-a776-98586fac8c16-0&btsid=2100bdcf16141526908171647e5db8&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_

https://www.google.com/url?sa=t&source=web&rct=j&url=https://www.ti.com/lit/gpn/ADS1113&ved=2ahUKEwi309XmmYHvAhWGLOwKHel3AP4QFjAAegQIAxAD&usg=AOvVaw2yDMdT8SazzDmsgXsYiKIB

What you thing for ADS1115 ?

gendov:
Well, datasheet say that input voltage can be up to 36V but that is in voltage measuring mode. I will use it in current measuring mode for range up to 50mV by removing the shunt resistor as you suggested. However the full range of my sensor is 1V . I want it measure only first 50mV of this 1 V. Will the input sustain 1v in current measuring mode?

According to the data sheet the mV inputs will tolerate even 26V. But after 80mV the ADC is saturated.
You are also free to build a voltage divisor upfront.

Here you have a shield for 80 euros with a wideband lambda sensor. See if it works for you. https://pd2022.com/Lambda-Shield-Educative-1V0/