Close
0%
0%

CarbOnBal

Arduino based carburetor and throttle body balancer / synchronizer

Similar projects worth following
CarbOnBal is an easy to build, cheap and very user friendly carburetor synchronizer. I use it on my motorcycle which has 4 carbs.
Its battery operated and can be used as is, or connected to a PC for real-time engine diagnostics.
I'm convinced a beginner can build it using the step by step instructions and easy to understand schematic diagram.

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 (http://ohwr.org/projects/cernohl/wiki).
The software lives at Github. (https://github.com/dennisMe2/CarbOnBal).

The picture on the main page is the second prototype. It 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! The calibration routines have been overhauled and are now much more accurate. 

Features: 

- 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.

- Very 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.

The display is wired up the old fashioned way in the newest CarbOnBal "Basic" prototype. The Arduino has enough pins and I would not know what to do with more pins anyway.

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. 

ArduinoPower.sch.svg

How to Power Arduino From One, Two or Three AA batteries.

svg+xml - 270.90 kB - 03/03/2018 at 17:26

Download

ArduinoPower.pdf

How to Power Arduino From One, Two or Three AA batteries.

Adobe Portable Document Format - 53.82 kB - 03/03/2018 at 17:24

Preview
Download

panel.svg

Control panel layout I made for my CarbOnBal Basic prototype. I used Inkscape to make it (Free & Open Source)

svg+xml - 16.21 kB - 02/06/2018 at 18:16

Download

CarbOnBalBasic.pdf

New Schematic Diagram for CarbOnBal Basic. Especially user friendly design, made from the ground up using the Awesome KiCad (open source) software.

Adobe Portable Document Format - 31.85 kB - 02/06/2018 at 18:16

Preview
Download

  • 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 (or 8093594090) I got these off AliExpressfor about 8 Euros a piece: OEM-09359409-Manifold-Absolute-Barometric-Pressure-Map-Sensor-1Bar
  • 1 × 220 Ohm 1/8 W resistor Used to prevent frying of the display backlight led or arduino pin
  • 1 × 1K ohm 1/8 W resistor used together with a 47uF cap to smooth the output from the Arduinos PWM. LCD contrast can be sensitive to this. Unlike the backlight led which is driven directly.
  • 1 × 47uF Electrolytic capacitor 10v used with the above 1k resistor

View all 9 components

  • Ride On, Wouter

    dennis06/11/2018 at 09:18 0 comments

    Wouter was my fellow contributor to this project, and a fellow electronics and motorcycling lover.

    Unfortunately Wouter recently died in a traffic accident while touring in Luxembourg.
    I never got to meet him personally but he was a likeable guy, and a very active member of the Dutch motorcycling community and a couple of classic car clubs also. He will be sorely missed by many, many people. Not least of which are his girlfriend, friends and family.
    My condolences go out to all those who feel the loss.

  • Laptop Application in the Pipeline

    dennis06/07/2018 at 18:31 0 comments

    I couldn't resist and after a bit of kicking around I decided to build my own graphical app for the laptop. Its written in Java and should run on Mac, Linux and Windows.

    This allows me to simulate an attached engine for easy and faster debugging. It also has the added advantage of not waking up, or gassing, the neighbors kids.

    What it also does is provide lots of cool new ways to visualize and save the data coming out of CarbOnBal. In the first prototype version I have Bar graphs, a running plot and four gauges, which pretty much covers the ways we all used to balance our carburetors, for nostalgia's sake!

    Right now its clunky and probably broken in more ways I'd care to count but ts a start and I figure it will be a great addition, especially for those looking to balance 6 carbs.

    The software lives in its own location:

    https://github.com/dennisMe2/CarbOnBal_Laptop

    Right now its pre-alpha so you're on your own! I'll let you know when it becomes usable. 

  • Simplifying

    dennis05/19/2018 at 19:14 0 comments

    Just a quick update to let you know what's up!

    I'm getting to the stage when I need to clean up some of the clutter that has made its way into the code. I have three different approaches to calculating averages and I need to settle on what works best. Probably a mix of the different approaches. 

    I also added a diagnostic (text only) display to help me see what's going on under the hood. I might even leave that in, it seems to have merit now that I have come up with a good responsive averaging method.

    Planned is a Bluetooth interface to a mobile phone or tablet which could run an app to support up to 6 carbs, much better graphics and advanced diagnostics etc. This is one for the long term though, and I may let it go if it turns out to be too involved. We'll have to wait and see where it goes.

    Its also great to hear from those who have built their own units! I look forward to hearing more from you and would love to get your feedback on how to make CarbOnBal even better!

  • Betteries, bettered! [Advanced]

    dennis03/03/2018 at 16:16 0 comments

    It turned out that the little el-cheapo boost converters I have laying around are a little too cheap to use out of the box. They wrought havoc with my calibration routine and general accuracy.

    Luckily I was able to borrow a 'scope' from a friend and come up with a practical (simple, cheap) solution. 

    What this converter needed was a filter so I tried just slapping a humongous capacitor on the end. I like to keep things simple. Unfortunately the capacitor on its own wasn't working because it caused the switching regulator to unregulate. It needed a proper coil to make what is known as an LC filter. This can be tailored to lose the high frequency switching noise from the regulator and the mains noise which is picked up over the air.

     So I unsoldered a couple of coils from an old broken down router I had lying around and tested those, they worked well, very well. I also tested a coil I made from gaffer tape and 1.2m (4ft) of wire I had on stock. I just wound the wire on the end of a marker pen and glued it together with the tape. It works, not as good as the 'commercial 150uH coil I unsoldered, but well enough to not impact the calibration routines.

    The capacitor I ended up using was a 470uF 6.3V electrolytic. Small enough to fit well. 

    Here's a picture of the hand wound coil I tested. That's the purple and black round thing above the center of the LCD screen. You can see the 'scope indicating a ripple of about 4mV which is actually really good. This big a coil will aggravate the 50/60Hz mains hum though, but the capacitor will handle that, no sweat.

    To be honest I ended up using a 150uH coil I unsoldered from the old router because it was much more compact and works a tiny bit better. But this will do in a pinch!

    It also helps if you mount the boost converter physically farther away from the sensors and Arduino. I ended up sticking it in the same place anyway, because of space constraints, no biggie.

  • Just add "Betteries" [Advanced]

    dennis02/25/2018 at 10:18 0 comments

    So my 9V battery started to die on me yesterday, which prompted me to go to plan B.

    I know a 9V block is one of the least efficient ways of powering an Adruino, but it IS simple and it DOES work. For a while that is. I estimate I got just over two hours worth of run-time out of the one I had.

    But I just wasn't interested in buying another mucho expensive 9V block while I had better options lying on the shelf.

    The problem is that the Arduino has an on-board regulator that is very wasteful. It was designed to take a higher voltage than 5V and regulate that down to 5V for the Arduino and some accessories. 

    Thing is, it basically does this by burning off the excess energy. That's kind of like stoking up the fireplace and opening some windows and doors to keep from getting too hot! Arduinos were designed for rapid prototyping, not really for putting them to permanent use, and at the current price of clones I'm not complaining!

    Nowadays you can get some ridiculously cheap and easy to use modules that take voltages between 1 and 5V and regulate that up to 5V which we can use for our Arduino. These work by very quickly causing voltage spikes and storing them up in spools and capacitors while constantly regulating the process so the output stays at 5V. It sounds complicated but there's so much call for these today that they have become dirt cheap.

    To use these I rigged up two AA batteries in a battery holder and connected the leads to the DC DC Boost Converter. The outputs go to the Arduinos ground and 5V connections. 

    Here's the big difference, by using the 5V directly instead of the VIn we can bypass the wasteful regulator on the Arduino and save almost half the power. In fact, where CarbOnBal was drawing almost 300mA from the 9V battery (good for a couple of hours total)  its down to 150 from the 3V battery its now using (2x1.5V)! These batteries should last me 10 hours or so and rechargeables can be used with no ill-effects.  

    I've added a schematic to the files section in case you are interested in this option.

    Parts:

    • 1 pce. 2x AA battery holder (3x works even better, but wouldn't fit in the case I made.
    • 2 pcs. AA batteries
    • 1 pce. DC-DC Boost regulator 1-5 to 5V output rated for 250mA minimum

    In the Bottom left you can see the tiny module in place. Its stuck in with automotive grade Velcro. The black lead is the battery negative and the red (I ran out of black) that shares its pin is connected to the Arduino GND. Notice the unused VIn pin! The Module's Vo(ut) pin goes directly to the Arduino's 5V pin to power it.

    Note that this 'solution' turned out to be too simple. The boost converter I used was too primitive and put out a lot of switching noise and mains "hum". See the next update for a fix.

  • Progress

    dennis02/24/2018 at 08:32 0 comments

    Time to inform you of how the project's going.

    • Since updating the hardware to the current specs I have focused on the software side of the project. These are the things I've been able to add and fix the last couple of weeks:
    • Much better calibration system.
      You need to calibrate one sensor at a time but this saves memory for other functions and gets a much better result. Also, you can now calibrate incrementally, so each round of calibration adds to the accuracy in stead of replacing the previous data. You can still wipe and start over, per sensor, if you want.
    • Advanced menu.
      To accommodate the many additions to the menu system I created an "advanced" option which hides a lot of the internal software settings from casual users. Great if you want to lend CarbOnBal to a friend but don't want to confuse him with a bazillion settings!
    • Demos and tests.
      I added a "Matrix" style demo and also two bar graph self-tests like the digital meters in vehicles have these days. You can disable them from the advanced menu if you get sick of them.
    • Reorganized menus.
      Just adding advanced menus was not enough. I replaced some features to put them in a more logical grouping, making it easier to find the right setting in one go.
    • Dutch language translation.
      For those who'd like CarbOnBal in their own language I came up with a simple translation system. It requires one simple change to globals.h to switch to Dutch. Due to time constraints English will remain the primary language and other translations may lag from time to time. Contact me if you need help with any translation, or would like to add one.
    • Settings are now saved immediately.
      You no longer require a separate "save settings" action.
    • An Arduino-IDE compatible mode.
      This is for data transfer to a PC. It means you can now do live graphs from the Arduino IDE without requiring extra software. The original mode is still available in case you need accurate (+/- 1ms) timing data.
    • removed lots of little and some nastier bugs.
      See the commit log on Github for details.

    Hardware:
    I don't expect the basic hardware will change anymore, it has been holding up very well and testing has not revealed any problems. 

    Near future:
    I will probably do some additional power options for those who'd prefer AA batteries or Li-Ion. These will be an optional low-cost add-on which you can do after building the CarbOnBal Basic version if you want.

  • ArDONEo!

    dennis02/07/2018 at 19:56 0 comments

    OK, today I received the micro-mini USB adapters I ordered off Aliexpress. That was the last bit I needed to mount the Arduino board properly. Because its quite difficult to access the Arduino USB port through a thick layer of MDF I decided to use an adapter and mount that in the MDF, then stick the Arduino on the end of that and screw down the Arduino with a single screw. Hey, I'm not lazy, I'm efficient!

    It may not be pretty or professional but it sure works for me! I now have a flush-mounted micro-USB port!

    To celebrate this laudable achievement  (ahum) I uploaded some pictures of the insides of the project. I'm not saying you should do it my way, I suggest you do it better and send me the pictures! I'd love to see the results from some of you real crafty folks.

    The pictures show all the detail you need to see of the Arduino and sensor mounting, the LCD screen pillars and a bit of the front panel with it's switches in place. The wires are colored making it reasonably easy to track where they go, but I suggest you follow the schematic to see what goes where! I swear I followed it to the letter. The 47uF capacitor is an SMD type I soldered directly to the bottom of the LCD circuit board, so that isn't actually visible. Other than that you should get a pretty good idea of the total project from the gallery.

  • No Nonsense!

    dennis02/02/2018 at 21:15 0 comments

    I managed to simplify CarbOnBal Basic even further.

    Testing with the I2C interface board taught me this isn't the way I wanted to go. There are too many variants and they are all different. You lose out on adjustable contrast and backlight. Yuck. It also means you might have to piddle around with the software and I want CarbOnBal to be easy, you know, "doable". So I redesigned it from the ground up with NO NONSENSE!

    This means its now just a battery, switch,  buttons, a display and four sensors topped off with only three little gizmo's (or discrete components, for purists). Oh yes, and lots of wires. I hope you like spaghetti!

    Check out the schematic I just uploaded. It looks a LOT simpler right? I drew the components manually so they would be easy to recognize and wire up, even for first time builders.

    I have a working copy of the modified software and I'll upload it "real soon now" ;-)

    I started modifying the description and instructions but kackaday threw most of my edits out! Oh well, better luck next time I guess.

    Photos and video will follow the software upload so stay tuned!

  • A heads-up on development

    dennis01/24/2018 at 19:38 0 comments

    Wow, doesn't time fly! Its 2018 already.

    CarbOnBal basic is well underway by now. I even made a wood (MDF) and plexiglass box for it that looks neat (or it should after I finish painting it) and is quite easy to make without expensive tools or materials. A hand saw, a drill and some screws is all. This sturdy box will protect the electronics and ensure the system can be used in real-world conditions by people wearing size 10 gloves at least. The tiny buttons have been replaced by nice big ones and color coded for ease of use (well, that was the way they were sold).

    The battery management system has gone and so has the flammable LI-ION battery. Just a simple 9V block is all it really takes to tune carbs "ad nauseam". I'll add some power saving features to the software when I get it running just to eek out a couple more hours (or days).

    The display has a piggy-back I2C adapter which is easy to assemble and disassemble should you ever need to dig around inside the box. 

    I'll take a couple of photos soon and post them on the project site.

    I'm taking this reduce to the max thing seriously and I hope to have the first 'basic' version available and documented in time for the northern hemisphere's riding season!

    Good things are coming your way.. Hang in there!

  • 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. 

View all 13 project logs

  • 1
    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 or the files section 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 squarish boxes 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 diagram is set up so that the pins in the diagram correspond to their real-life locations. This makes it easy to wire it up and check your work as you go.

    Beginners please note that wires drawn crossing each other in the diagram are only connected if they have a dot on the junction. Rectangles are resistors (its a Euro-style diagram), US style uses squiggly lines but they mean the same.

    Sensors

    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 analog inputs A0 through A3 where the software can measure the voltage they give off. Keep these short in your project and don't go through a connector but solder directly to the board or to a pin header. This reduces interference.

    Arduino

    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 probably fry them with anything even slightly above 5V. The schematic uses a model of the arduino with all the pins in the proper places. This is an Arduino nano v3 type.

    Switches

    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. In fact my second prototype screen came with a resistor already. I noticed it was rather dim after I fired it up. I just cut out the resistor and it now draws 28 mA, which is perfectly acceptable to me and my 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.

    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!) In fact, there are displays without a backlight altogether, you may prefer using one and can then skip the backlight wiring.

    This display has a 4-bit parallel mode of working which we use that saves 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 +0V. 

    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?). 

    What I recommend for beginners is just hook up a 9V alkaline block, which will happily power your circuit for up to 7 hours, more if you are diligent with the on-off switch!

    Power switch

    It goes in the V+ line between the battery and Vin on the arduino. Its a simple single pole single throw rated for peanuts and low voltage.

  • 2
    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. For the new prototype CarbOnBal Basic, I wanted a box, it looks better and is much easier to handle. 

    My design (if you can call it that) was quickly thrown together on the workmate in the shed. Then I improvised my way out of trouble. I sawed the box by hand out of MDF I had available. To aid in futzing around with the prototype I screwed the six boards and the perspex together without applying any glue. 

    Lessons learned

    What I might do differently is leave more room for all the components. My LCD fits snugly and I had to cut down the tabs on the sensors to get them to fit four in a row. To its credit it s easily handheld this way. Whatever you choose to do I recommend waiting till you have the sensors and LCD in hand so you can fit them in place as you go. I'd also recommend mounting the sensors upside down to prevent stuff getting in there and messing them up. The spec sheets also recommend doing this, but I only really studied them after I built my prototype. 

    Front panel

    The front panel is simple perspex with some carefully drilled holes. Drill in small increments to prevent tearing the ridiculously fragile perspex. I have an SVG drawing as a design inspiration in the files section and on Github. I printed the SVG on plain A4 paper with a laser printer and cut out the holes with an x-acto knife. It was made using Inkscape, which allows you to precisely adjust the layout to match your real-life version. 

    After fitting the paper I screwed in the switches and wired them up.

    Display mounting

    I mounted the display on four threaded rods (3mm) that were simply drilled into (almost through) the bottom of the box and glued there. Then I wound a 3mm nut down each rod to the required height for the display, and it rests on those. I applied some loc-tite to keep them there. Four bent paper clips would do as well! The display is held in place by the perspex panel and does not need to be screwed down.

    Sensor mounting

    The sensors had to be trimmed down so I used the old dremel and a mitre-saw to carefully pare them down so they'd fit snugly. Then I grabbed a scrap strip of aluminium and drilled four holes for the air hose fittings. This strip holds the sensors in place and I just screwed it into the sides of the box.

    Battery

    The battery sits in the space behind the sensors and is easily reachable by removing the back cover. There is an option to power your CarbOnBal unit using cheap AA batteries. Tale a look at the included schematic in the files section. Reserve space in your housing if you decide to use three or four batteries, as they take up much more space than a simple 9V block!

    Arduino. 

    I ordered a micro to mini USB adapter which I fit into the wooden side. The Arduino goes into that and it is held at the other end using a tiny little screw. Of course, you may have a box made of thinner material, and in that case an adapter would not be needed at all.

  • 3
    What You'll Need

     To build the electronics you will need:

    Tools:

    A soldering iron. Any cheap soldering Iron will do just fine.
    A pair of small side-cutters for cutting the wire. 
    A wire stripper, although you can use the side cutters or a knife if you're very careful.
    Some insulation tape or gaffer tape to cover the resistors that go to the display. Or use some shrink stocking if you have it. 

    Materials (in addition to the 'official' parts): 

    Soldering tin, 60/40 flux core works best, or use the new lead free rubbish if you have to.
    Tinned copper wire on a roll, or re-use some wire from an old ribbon or network cable you have lying around. In that case, take care to pre-tin all stripped wire ends before making the definitive solder joints or you risk overheating the Arduino. 

    If you want to make use of the option to use AA batteries, then you'll also need a clip for them and a DC-DC Boost converter.

    Mounting hardware:

    You will need to put the electronics into a box and may need an assortment of screws, tie-wraps plus whatnots and thingamybobs. This all depends on your particular solution.

View all 10 instructions

Enjoy this project?

Share

Discussions

dennis wrote 01/24/2018 at 19:22 point

Haha Eric, Yeah, I'm late to the party as I just started riding at 47 years old. You could build one to tune your throttle bodies though. Its fun to use!

  Are you sure? yes | no

Eric Wiiliam wrote 01/09/2018 at 23:20 point

I would have killed for this back in the day. Well done!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

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