Arduino based carburetor balancer / throttle body sync tool

Similar projects worth following
CarbOnBal is a simple, cheap and very user friendly carburetor balancer. I use it on my motorcycle which has 4 carbs.
Not too complicated beginner to intermediate level build.

Basically it reads 4 MAP sensors and displays four bar graphs on a display so you can adjust the carbs to get them in sync. The menu allows you to set the number of carbs and the master carb plus lots of other handy features.

Software released under the GPL v3 and hardware under Cern OHL.

The picture on the main page shows the tubes I use for calibration of the sensors. I have to calibrate the sensors because they don't all give exactly the same readings out of the box. The tubes are used to tie them all together and apply the same vacuum pressure. The software then stores calibration values and uses them to calibrate the display. 

The "vacuum pressure" in this case is just me sucking hard... If you have more sophisticated hardware I suggest you use that! At the end of the calibration cycle (20 seconds) you get a report on how successful the calibration was. You can then choose to save the calibration or not.


- Balance up to four carbs / throttle bodies (2-4 user selectable).

- digital RPM guage.

- Absolue (bar graphs) or relative (centered around the master carb's values) display.

- Calibration for accurate results, calibration info downloadable to PC.

- Saves settings so you don't need to set it up every time you use it.

- User selectable master carb.

- Display brightness and contrast via software, no old fashoined potmeters required.

- Uses cheap and robust parts.

- Low parts count, easy build.

- cheaper than most solutions. 

           Ok, lengths of aquarium hose could be cheaper but a PITA to use (IMHO).

- software tweakable to the max, even by non programmers

-User friendly menu system.

- Freeze display feature to make it easier to read numbers and bar graphs.

- Real time data logging to PC via USB (Serial) so you can look at the vacuum pulses for yourself.

I wired up the display with a 74HC595 shift register because I have a bunch of them lying around. It would probably be even simpler to build if you bought a 'module' HD 44780 SPI adapter board. These can be had cheap on Aliexpress or Ebay.

Alternatively you could wire up the display the old fashioned way, but that would make it harder to expand the project later on. 

If  you want to build this but need help just drop me a line. I'll do what I can to help you get your own version built. Also if you need help with the software or have tips on improving it, I'm all ears. 


Fritzing original schematic. This was the first time I used Fritzing hoping to save some time. Next time I won't be cutting corners...Its ugly as #$%^ but it should be obvious what goes where.

x-fritzing-fzz - 35.60 kB - 10/04/2017 at 07:04



png Schematic for those who don't want to install Fritzing.

Portable Network Graphics (PNG) - 157.55 kB - 10/04/2017 at 07:04


  • 1 × Arduino nano v3 or clone If you get a clone you need to make sure it exposes all the I/O pins, not just a subset.
  • 4 × 09359409-MAP Sensor compatible I got these off AliExpressfor about 8 Euros a piece: OEM-09359409-Manifold-Absolute-Barometric-Pressure-Map-Sensor-1Bar
  • 1 × power supply or battery of your convenience It needs to output 5V for the Arduino and the MAP sensors. I used a lithium Ion battery and a small booster/charger board off Aliexpress. I power a lot of my projects this way.
  • 1 × Power switch In case you use a battery
  • 1 × PCB prototype board or other Something to stick the components on. I like soldering stuff onto prototype board because it makes for some robust electrical connections. I don't like having to touch wiring once I finish it.

View all 12 components

  • Reduce to the max

    dennis10/25/2017 at 19:44 0 comments

    I've had comments from a few people who were interested in building CarbOnBal and noticed a theme emerging.

    There are many people who'd like to build one for themselves but doubt their own soldering skills etc. I've thought about how to help them best and I think the answer is more simplification, not just a step by step guide.

    To get to the point where as many people as reasonably possible will be able to build their own CarbOnBal units I've decided to focus development on a basic version first. Once that is achieved and people start building them I will look at implementing a more advanced version.

    The first thing I'll do is use a serial I2C display module, eliminating the 74HC595 and associated wiring. This reduces the complexity as far as possible while still having a unit that can sync four carbs or throttle-bodies. The basic version will inherit all the functionality of the current prototype.

    The later version will support 4-8 simultaneous connections and probably have a graphic display, lots of RAM, digital waveform diagnosis etc. 

    The compromise this requires is that there will be no upgrade path from CarbOnBal-Basic to the advanced version. I will try to build a system to let two units wor in tandem though. I envision this as a master-slave setup to allow tuning up to 8 cylinders at once, albeit on two separate displays. 

  • Latest and greatest changes

    dennis10/16/2017 at 09:32 0 comments

    Over the last couple of weeks the CarbOnBal software has been enhanced greatly.

    • There is now an option to prevent the software from zooming in too far, making the display too jumpy to use in practice. This only affects the relative centered display.
    • The display units can be set manually in metric and Imperial units 
    • The values indicated can be set to count up from absolute 0 pressure (absolute vacuum) or indicate vacuum relative to the ambient air pressure (detected at startup / reset) This makes it easy to compare the readings to existing systems.
    • There's a reset to "factory" defaults setting for when things get screwed up from messing around.
    • The smoothing used is now responsive. ie: its smooth when the RPMs are stable, as in when you are trying to compare values, and snappy when you snap the throttle. This makes it much easier to use in practice.

    There's also the beginnings of what will ultimately become the manual. For now its just a text document which shows you all the menu options in the system. This should give you an idea of the features this software is loaded with. 

    Management summary: Its $%^ Bad-Ass if you ask me!


    Oh yeah, to get the software you need to visit Github because that's where it lives:

    Just download the latest source, a new 'official release is coming soon'. Just get the latest as zip or Git Clone if you are a dev and want to give back to the community.

  • What's it cost?

    dennis10/09/2017 at 17:34 0 comments

    A couple of people have asked me what this would cost to build.

    The answer is if course the usual, "it depends".

    For a rough idea I just added up the bill of materials listed here for the exact prototype I built.

    When all parts, plus a box are ordered off Aliexpress I come to a total of 56 Euros. If you already have stuff lying around it will be less. I know I spent a good deal less for the prototype because I already had switches, prototype PCB, resistors and capacitors etc.

     The most expensive items are the MAP sensors amounting to 50% of the total cost. The second most expensive item are, hold on to your hats; the four push buttons! I calculated the price using decent push buttons you would mount in a case, not the fidgety PCB mounted ones I have on the prototype. The Arduino modules are cheaper than the Mega328p ICs cost separately. They are in fact dirt cheap, as are the displays.

    Now I didn't factor in the soldering tin and odd bits of wire you need. I assume you have a decently stocked electronics setup. If not, you may need to add the costs of a soldering iron and a pair of side cutters etc. In that case it will be as expensive as you want to make it. OTOH, this may be just what you need to reinvigorate that old electronics hobby!

  • CarbOnBal side by side with CarbTune Pro

    dennis10/07/2017 at 18:02 0 comments

    Today I had the opportunity to test CarbOnBal side by side with a CarbTune Pro unit. Not only that but more experienced tuners got their hands on it for the first time and it resulted in a lot of enthusiastic responses.

    It took a while to get the damping set up right but we got it tuned in. I'll set this up as default preset in the next version. 

    I noticed that one of my vacuum lines was a fair bit longer (more than a foot longer) than the others and this affected the readings a lot. Note to builders: make all the vacuum hoses equally long!

    The other thing we noticed right away is that the relative centered display auto zooms way too aggressively. This needs to be more stable because it tends to make the balance look a lot worse than it is. It is in effect 'too accurate' to be easily usable. We ended up using the absolute display to get a good comparison.

    Bottom line:

    Looks like there will be some software tweaks coming up, and the hardware works well.

View all 4 project logs

  • 1
    Think about a layout or box

    If you want to build this project I suggest you think about a box first. My prototype proves the electronics and software works, so you don't need to worry about that. Still, a nice case would really make this awesome. Not to mention a lot stronger and probably longer lasting.

    The box dictates stuff like the kind of buttons you need to get and a power switch. I'd try to keep the MAP sensor data lines short though. Don't be hard on yourself and make them too short though.

    My focus was just on getting a working prototype. I have no idea if I will ever even do a box. I just screwed everything down onto a piece of scrap MDF. That prevented the wires from breaking during testing and it has held up to abuse some 6 months now, which I'm happy with.


    I will probably order a cheap ABS project box anyway and connect four tubes through holes in the box so the MAP sensors themselves don't stick out. That was a brilliant tip from a friend. It will prevent damage to the hose connections if the thing ever falls off the bike during use.

  • 2
    Study the schematic diagram

    Before jumping into the electronics part you need to get familiar with the circuit so it holds no surprises.

    This isn't too hard. Grab the schematics off github and take a look.

    I'll wait while you download and view the diagram....

    Ok, got it? Now I'll talk you through it from left to right.

    On the left are four squares that represent the MAP sensors. I'll assume you are following my exact build. Anyone doing their own mods should know what they are doing, right?


    The sensors are really simple (electrically speaking). They each need a wire to +5V and Ground to do their thing. Then they will constantly output a voltage (the third wire) that is proportional to the pressure sensed. Less voltage is lower pressure down to 0V at 150Mbar above absolute vacuum, and up to almost 5V at atmospheric (sea level, nice weather, no hurricane touring the neighborhood).

    The signal wires from the sensors are connected directly to the Arduino inputs A0 through A3 where the software can measure the voltage they give off.


    Now comes the Arduino. It too just needs V+ and Ground to work. Actually, you can feed it anything up to 18V (It will make its own 5V if it has to) so you could directly connect it to the vehicle power. If you want to go this route, feed the higher voltage into the Vin pin. Use the +5V for the sensors. You'd fry them with anything even slightly above 5V. 

    Arduino nano pins and connections.

    The link above shows how the pin numbering works on the Arduino. Note that many pins have more than one function. You should be able to match the pin numbers with the schematic using the above. I'll probably add them in a later revision though.


    The next thing you may notice is the four switches. These are just plain and simple push buttons that make contact when you press them. One side is connected to an Arduino digital pin and another is wired to ground. This keeps things nice and simple to hook up.
    However, if you like to play around with stuff then be very careful you NEVER set the Arduino pins connected to these switches to output HIGH (5V) or the switch will short the pin to ground when pressed! If that happens you may be lucky and find another pin that still works, but don't bet on it.

    The lone resistor

    R4 is a resistor that is in there as protection for the Arduino. The power used to drive the backlight LED of the display is limited by this transistor so the Arduino doesn't fry. Some LCD modules have this resistor, some don't. I figure a slightly dimmer backlight is better than a Kentucky Fried Arduino. 

    The dynamic Duo: R3 and C1

    These connect to the contrast setting on the LCD display. You often see some sort of adjustable resistor or (POTentiometer) used for this but I thought I'd rather do this in software.

    R3 is there to limit the current flowing into C1. C1 is used to smooth the signal coming from the Arduino. This is a pulsating PWM signal that can make these types of LCD flicker horribly and even become unresponsive. Don't ask me how I know. These two together do a great job at the frequency the Arduino software does PWM.  This is known as an R/C network and you can forget I said that.


    This is a special chip. What it does is make it possible to connect something with lots of wires, like our LCD screen, to something else using less wires. Note that it's perfectly possible to connect the LCD screen directly and its trivial to adjust the software. But I did it this way to save pins for future expansion. There are also I2C adapters for this display but this is a DIY approach that leaves the possibility to run up to 8 MAP sensors on one Arduino.

    This particular IC is a serial in / parallel out shift register with latch. You program it by offering up one bit at a time (the MISO pin on the Arduino) and shifting them into the device by signalling on another line (SCK pin). Then when you're ready you signal it to present the data at the 8 outputs all at once (D9 in our schematic). The Arduino has an SPI bus, which was especially designed for this. There's a library that I didn't write to take care of all this in software, so we can just concentrate on wiring it up. It sounds like a lot of work but it's blazingly fast and easy to use in practice. You could even make a chain of these all together and switch tens to hundreds of outputs with one Arduino this way!


    Because our thankless 'HC595 does a lot of fast switching it needs a little capacitor to help it compensate for power spikes caused by all the internal and external switching that is going on all the time. That's all C2 is for.

    LCD display.

    Last but not least is the display. Its a HD44780 compatible 20 characters by 4 lines display. These are easy for the Arduino to drive and can be tricked into displaying nice bar graphs with up to 100 segments. They can also be read in the dark or even in bright sunlight (if you turn off the integrated backlight!)

    This has a 4-bit parallel mode of working which we use to connect it to the output of our 'HC595. Using that saves another 4 pins. The other lines we need to connect are signalling lines that tell it t o turn on and accept commands offered up on the four data lines we are using. The other four data lines are happily hooked up to the +5V. 

    I've got the Power!

    Finally there's the issue of power. As I explained above you could just plug vehicle power into the Vin pin of the Aruino (that's +12-14.8v) which should work just fine. In theory its scary as hell, but it works for a lot of folks. The MAP sensors we have are automotive and can handle some abuse. I have run Arduino's on worse (Joule thief anyone?). 


    In my case I have a stack of old recycled cells from a laptop battery. One cell was busted while the rest were still fine so I saved them for Arduino projects. These are 18650 batteries (18mm thick x 650mm long) and pack 3000 mAh, which is a lot of power for this project. If you use two of these you can just plug that into VIn and use a special charger when the time comes. That's the easyest way I know of but beware of deep discharge! 

    What I did was buy a special battery management module which outputs a clean 5V and allows the battery to be charged in circuit. The connections are labeled, B+ and B- go to the battery and 0V and 5V to the Arduino ground and 5V respectively. Oh and I put a switch in the plus 5 V line to save battery power. These modules cost less than a dollar and prevent overcharging or deep discharging of the battery. Both overcharging or deep discharging (and especially subsequent attempts to recharge) can lead to burns or explosions in Li-ion batteries, so use them with caution!

    The sane person's alternative is just get a 5x or 6x AA battery holder and use the excellent rechargeables from Ikea. Plug the plus into VIn and connect the minus to ground. That's probably the safest option. Oh and run the plus through a simple on-off switch to save power while you're at it.

    That's it for our walk-through of the schematic. next steps we take a look at the tools and supplies you are going to need.

View all instructions

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates