Arduino Auto Mixing System

Hi All,

During the winter months I am commencing the build of an Arduino auto gas/air mixing valve system.
One obstacle I am running into is the cost of the AEM Wideband 02 sensor/gauge kit.
In Canada the kits are now well over $300 when factoring in freight.
Before spending money on the AEM, I thought best to check with the forum and ask if there have been any new methods for air mixture sensing/control that may have surfaced over the past few years.
Any less expensive boards that can read a generic Lambda sensor and interface with an Arduino?
Or… sensing something else instead of exhaust 02, such as engine rpm modulation perhaps?
(throttle air inlet based on a designated sweet spot rpm target ??? )

Bottom line…
Anything new in the Arduino mixing valve method?
Cheaper components?


You’ll need some sort of wideband O2 sensor, I’m sure there’s cheaper options out there.

Wideband has a range up to 5V and a Narrowband I think is either 1V or 2V, it’s very sensitive.


I too have started learning the Arduino, so far l have been able to write a code that turns a LED on and off :smile: lm a genius am l not?

But seriously, l have been thinking about this stuff for a while now. Lots of problems if you want to make it right.

Per instance, there may come a time when you want to run rich. Like in heating up the gasifier after a long idle. But then again, since o2 se.sor only takes combustable gases to acount, maybe it wuld self richen when weak gas comes in? God knows…

I dont think there is any other good way but to phisicaly measure your gas somehow, with a O2 sensor after combustion or with some exotic sensors before the engine. In the last case, you can probably add a few zeros to the cost…

Problem is that a wideband O2 sensor has a linear voltage output/fuel ratio graph, while the narrow band has it all messed up, bell shape.

So, the controller can also not be linear if we use a cheaper narrow band sensor.

But the good news is woodgas realy doesent give a damn for exact a/f ratio. If its in the ballpark its gonna run ok. Its when different conditions throw it off ballance severely that problems occur… but we got the automixer to fix things back to the ballpark area. That, lm sure is much easyer to achive, and also with a narrowband.

I have spent hours looking on the voltage display from my narrowband sensors (l never owned a wideband) while driving, l got an idea how this works, but l cant remember exact voltages… l never set the a/f ratio based on o2 sensor, rather l set it by feel and monitor whats happening with the sensor…
basicly, l ran the seting on the rich side, to compensate for sudden lean pockets of gas when taking off etc. But idealy, woodgas likes it lean, so l traded some power and efficiancy for comfort. This l wuld like to fix with the automixer.

Im thinking, culd it be possible to make this controller to work in steps? Like l sayd, woodgas isnt a picky thing… Basicly, instead of having one air valve governed by the Arduino, culd it be possible to just have a couple of small valves to just throw in a bit more or less air, to fine tune the ratio but the main seting wuld still remain manual. Maybee just two wuld be enaugh, one for richening and one for leaning.
Main advantige here might be that l can not imagine a cold start with just a o2 sensor automixer. The sensor is cold, gas isnt constant… so a mean of manual override sistem is a must and since we alredy have it installed, why not just build on it with the arduino?


Hard to describe my thods. What l wanted to suggest was that in adition to a clasical manual controler valve, we have two aditional small on/off valves. If mix gets rich, the controller will add a fixed amount of air via opening a small valve. Same for lean contmdition. This way all we realy need is a simple code for two conditions and two on off electric valves. And this culd be an adition to any existing manual sistem.


Okay I think I see where you are going with this. You set up the manual control valve for air for a 1 fuel and 1 air ratio, then let the auto mixer fine tune it. On my auto mixer unit it is running on a 1 fuel to 1 air ratio. Then I can add manually extra gas to it. But the auto mixer adds extra woodgas when taking off from stop anyways or if I excelerate. But aways leans out. So to get a richer mix I have to open the extra woodgas valve that is ahead of the auto mixer in the wood gas lines.
It sounds like it could be done with the right Arduino auto mixer programing, then the mechical vaccum way I am doing it. With less moving parts and less parts and weight under the hood.


@ Kristijan, RobertM
Thanks for the replies. I should have mentioned that my system under construction is for power generation. However, my system will need to instantly adapt when a load is added or taken away from the generator.
Oxygen sensors are available, and they are not that expensive, but to get the linearized 0-5 volt output that an Arduino requires, a controller/signal modifier is needed.
These kits are $225 - $300 CAD.

Your idea of switching various gas valves/ports based mixture and load is interesting, but how would your Arduino know if the mixture is too lean? How will it know that the “rich” port needs to be opened?


Yes wery close. Imagine driving in a normal manual control sistem vehicle. Usualy, when you set the air right and all is warmed up, you rarely touch the air control while driving. But then sometimes comes a situation where you want to squeeze the air just a tad. Long idle, trafficlights… we usualy do this beforehand based on experiances. but soon you are on your way you open it up again. Well its those occasions l think this wuld be usefull. And those occasions are plenty, we are just lazy and settke for some middleground setting because noone wants to fidle with the valve at every stop sign. But its a shame, we loose performance this way


Why does the Arduino need 0-5v? Im not sure but it seems thats not the case…

A narrowband sensor has its scochiometric ratio at about 0.5v. If voltage drops to about 0.25v, we get to the lean zone. All the arduino needs to know is if the voltage is 0.25v or below, it shuld output a signal to the air valve to be closed. Well thats my thod, lm sure there are hidden catches but in principal it shuld work.


Hey, wanna hear a nother redneck solution? You know those fancy 10 dollar air fuel guages most guys like to put in their trucks? They got a LED strip around them… lm wondering if we can take the signals from those led lighs to talk to our Arduino… nice and linear motion…


No way around the AEM spend the money! There is nothing better on the market and you must have this good quality high definition signal.

You dont need to re invent this either. There is well developed code already here on this forum. This code started development back in 2014 and has evolved since then and is now tried and true.


I find this interesting, has been in to electronic auto-mixers some, and there has been many automixers made with “simple” lambda sensors, they use to be based on a threshold voltage (the sweet spot, not necessary stochiometric) the electronic use to read the value in interval’s, second or milliseconds, “asking” low or high? Then close or open secondary air valve a small step, the time and size of step has to be tweaked in, to avoid hysteresis.
All this should be easy to do with arduino, the ones i’ve experimented with has been based on the “classical” 555 timer (3 of them, one for sample time, one for setting “frequency” to control a standard rc-servo.)
Isn’t there some very good info in the Thrive of grid-thread?
And yes, a wide-band lambda should be the best solution, to get a steady control, the ones i describe often has to be bypassed, or “manipulated” but works well with highway, steady driving.


My tutorial here: Wide Band Electronic Mixer Control Tutorial - #14 by Pelletpower


The signal voltage range is less than one volt. This is not enough definition. I have mapped those sensors to a higher definition range with no success. You can also set the Arduino to a 1 volt working range. Tried that too and it didnt work. The signal was just all over the place and it would not run stable.


And a question: someone know if wide-band lambda sensors have a “standard” or if they differ between car manufacturers?
I have saved some from work, that are replaced, but not the reason to the “check engine” i believe these are good enough for experimenting. :smiley:


The signal of those can be a real trouble, when i experimented i used high-class coaxial antenna wire for the signal, common ground for sensor and “control box”


AEM has proprietary internals and are exclusive to them. The O2 sensor is from Bosch. Its a 6 wire sensor, if anyone can come up with any info on what each wire is for send it my way. I couldn’t figure out how they work other the heater wiring. So stuck with what was working and just ran the AEM gauge and lambda out.

Tell ya a story. I have a bad gauge, called AEM for a replacement. They said: sure!! But you first must send us a video of you destroying that bad gage. So I didnt get the return because now I want to know whats inside!! I still have it amongst many others in our stock.


I would share if i come up with something, i have 2 Bosch 6wire, nippon (?) 5wire and shield, and Mitsubishi 6wire, if i remember wich car each is from i probably can look in schematics, and figure out from numbers on the connection socket.


@ Matt Ryder,
The AEM sensor and signal conditioner are available for a bit less money if the gauge is not needed.
In my case, I can use my Arduino LCD display to show the values.
Here is what the kit without the gauge costs me at the moment… ($234 CAD)

There is also another option…
The controlduino which is an Arduino add-onboard and also comes with the oxygen sensor

These solutions have both been available for some time and the purpose of my question was to find if there have been any new products or developments in this are since 2015.
Based on what I have been able to find, I agree with you that the AEM may still be the best solution.


Get this one its way cheaper. The white wire on the four wire cable is the lambda out. Its all you need.

Yeah by the time you buy the wideband sensor and that third party card. You are in it for the same cost and the gauge is actually pretty nice. Ive coded it into a GUI but Ive reversed to simpler interfaces. Basically a mode button that can change colors and I can make it send blink codes to tell the user mode of operation, faults etc.


The problem with these expensive electronics is that it makes it very difficult to keep a spare on hand.
If time get tough, and these electronics are not available, it would be nice to have an alternate method of throttle mix automation. Keeping 3 spare Arduino’s is easy :slight_smile:

Has anyone played with engine vacuum as an indicator of load and gas/air mix ?