Picture of Arduino Throttle Body Syncronization Shield

A common Motorcycle maintenance task is to synchronize the throttle bodies on the engine to smooth out any rough idle. This is done by monitoring the vacuum on each throttle body and using the idle screw to make the adjustment.

While this sounds rather advanced, with a little knowledge, a few standard tools to access the engine, and a TBS tool (Throttle Body Synchronization); the maintenance item really isn’t that hard.

Now you can buy a tool or build a TBS tool using fluids and tubes (there are examples of this out there on the interwebs), but I wanted to use an Arduino and some electronics to build my own to do the job. This instructable describes my journey in making my own Arduino Throttle Body Synchronization shield.

Remove these adsRemove these ads by Signing Up

Step 1: Research

Picture of Research
A TBS tool is rather simple in what it does; it will measure the vacuum that each cylinder is actively producing when the engine is running.  To measure vacuum with an Arduino I needed to build a shield that would contain a vacuum sensor for each cylinder on my engine (4 in my case). 

There are many vacuum sensors available from your favorite electronics parts stores.  The interesting range that I need to measure is around -33 kPa (-4.78 psi).  This is the value that should be measured on my motorcycle on a single cylinder when the engine is warm and at idle.  You should consult a service manual for the specifics for your engine.  So I picked one that measured a range between 0 kPa to -50 kPa.

Then I needed to understand how to connect this to my engine.  The service manual helps here also, but I also found many great write ups on the web.  I just needed some standard engine vacuum hose with an inner diameter of 1/8th inch which will push onto a service nipple already present on the throttle body.  This same hose will directly push onto the vacuum sensor.  I found this in bulk at my local automotive store.  I needed four hoses each with at least 3 feet length so I could put the Arduino and sensors in a safe place.
flaquito2 years ago
Very nice! What was the part number for the sensors that you used? Also, any chance of sharing your code for either the Arduino or the PC? (Preferably both... :))
Makuna (author)  flaquito2 years ago

Look for an update to the article in next day or so, I will include the part number for the sensor and few other requests.

I am planning on having a follow-up Instructable that will include more of the software side of this project with explanations; where more of the code will be shared.
xocoatl Makuna8 months ago

Hi, Makuna,

Could you please share the PCB designs?

Makuna (author)  xocoatl2 months ago

I have included a link to the PCB design, and all the source code. If you make it better, please contribute with GitHub.

I'am doing the same thing with other vacuum sensors. I have done also android UI.

It's a simple UI with 4 progress bars indicating pressure on each channel..

Can you please modify your library to support 3V sensors?

synfinatic1 month ago

Hi Makuna,

Thanks for posting everything up on GitHub. I was curious to know if you've picked a license for your code/eagle design?

synfinatic1 month ago

This is a great project and thank you for sharing! It's incentivized me to create my own, but with a small LCD screen for easy tuning without a computer.

Hi Makuna, I would like to buy one of these.

Is it possible? Please email me at

Thank you

Makuna (author)  malcolm.ragan1 month ago
Sorry, I don't produce them yet. There hasn't been enough demand and one offs are expensive to produce and support.
bernie3082 years ago
Wow, very nice!!

Just a suggestion for future, what about using 4 rows of ~20 Led's. It will take some multiplexing but judging by your workmanship, you should have no trouble making this into a very portable unit!

Thanks for sharing.
Makuna (author)  bernie3082 months ago

I don't like the layout either as it doesn't fit the Arduino well.

The problem with something that works is that its hard to justify fixing the design and the cost to do it again. I made the files public in the hopes someone will contribute and grow the project.

xocoatl Makuna1 month ago

When you say that it doesn't fit well you mean that the spacing of connectors is a bit off? I was just about to send your eagle file to oshpark, but it seems like I will have to learn Eagle first. ;)

GregM71 month ago

Is there a part number for your PCBs from I was wondering if I could just order one based on your previous order rather than redesign my own.

I have all my other parts on order.

rch1 year ago
Most Excellent!!!
I want to build one of these for my 2 cylinder BMW to help balance the throttle bodies on it for smoother operation. I look forward to you sharing your source code for both the Arduino and the PC.
Very nice build.
Makuna (author)  rch2 months ago

Done! See last step for the links.

pipereed1 year ago
Hi there, have I missed the update? I'd be happy to buy the schematics or a complete SHEILD and code from you. This would be for my own personal use?
Makuna (author)  pipereed2 months ago

I have made all the files available on GitHub. While my shield was good enough, the layout could have better fit the Arduino. I am hoping that by making it available, someone else may improve it and contribute it back.

Any modifications was done after 1 year? is possible to see final product?
Makuna (author)  kingofsteel2 months ago

Minor changes so that it would calculate RPM (by reading pressure curves). While it works, its pretty noisy so I suspect something isn't right. The project has been sitting for over a year now as I just haven't needed it.

joegeek10 months ago

I would like to get a copy of the eagle cad files with the Vacuum sensor libraries if it possible. Does anyone have one they would like to share. I've been trying to find and import the vacuum components but cant find them anywhere. I'll admit defeat !

Please help! I bought the sensors from Digikey and would like to get my PC board fabricated soon but cant get the Eagle Cad figured out. That's an entire new project for me. Thank you, joe at Joegeek

Makuna (author)  joegeek2 months ago

Sorry it took so long. I thought I lost them. I now placed them on GitHub so others can contribute.

DavidT55 months ago

Hi there, I like your approach to an alternative for mercury/cylinder/fluid vacuum gauges.

I admit I'm a bit lazy for writing the code ; any chance sharing the software. I already ordered the sensors and an arduino board (Have a raspberry PI + did some jobs with 8 bit PICS and atmel mcu's) and the PCB creation is no issue at all.

Makuna (author)  DavidT52 months ago

Done! They are on GitHub so others can contribute and make this project better.

GregM72 months ago

I love this idea. I have and old car with two twin body Solex carbs and I adjust one by one. This is so much better t see all four at the same time.

Can I get the Arduino and Windows Code so I can build one?

Makuna (author)  GregM72 months ago

I have included a link to the PCB design, and all the source code. They are on GitHub so others can contribute and make this project better.

vfr800nut10 months ago

a very elegant solution to reading each cylinder's vacuum. well done

maxpcuser11 months ago

That is very impressive. Awesome Job.

looks perfect for a custom boost gauge
foker2 years ago
The schematics and parts list both show 0.01 uf ceramic capacitors(surface mount 0603), but the link next to it takes me to C1608X7R1E103K (CAP CER 10000PF 25V 10% X7R 0603). Are these two items one in the same?
Makuna (author)  foker2 years ago
They are are the same. 10000 PF is the same as 0.01 UF. 10000 picofarad is the same as 0.01 microfarad. Its always strange when the manufacturers list a value one time using one value and then others use another value.

foker Makuna2 years ago
Thanks! I just got my parts in from Digi-Key and was wondering if you would mind sharing your eagle files. Me and a buddy are getting this bad boy going, and all we lack are the PCBs. Thanks!
eswayne2 years ago
Any more updates to this article. Could it be made to link bluetooth/wifi to your display results.....

Makuna (author)  eswayne2 years ago
Anything can be done with passion, time, and money.

I looked into using a smart phone but the investment of time wasn't worth it yet. If I got some investment money that will change.

The biggest issue with using a smart phone is which one? Andriod? iPhone? WP7? There is no one dev enviroment that works for all of them. Then how easy is to use serial bluetooth protocols (sometimes it just not exposed for app developers). Only Android supports USB to an Arduino so even a direct connect to a phone has limits (I don't own an Android phone either, or the custom Andruino to make this work).

Too bad there isn't a cheap "audio plug communications" kit out there. (see credit card readers for iPhone as an example).

Bluetooth and WiFi will require more hardware on the Arduino raising the cost.

No easy answers.

chesterjohn2 years ago
I would like to buy one set with the software from you.
hi can you provide me detail for some discussion

bigpinecone2 years ago
now you should connect servos to the idle adjust screws and package it all in a waterproof box, never sync your carbs again! that would be sweet. Great write-up!
Makuna (author)  bigpinecone2 years ago
Great minds think alike.

I looked into this and concluded it wasn't a good idea to mount it permanently. It is a pretty tight space under the gas tank where this is at and it gets pretty hot. There is a form fitting heat shield just above this area to protect the fuel tank and reflect heat. The servos would need to be real tiny and heat resistant. But the real issue is that the adjustments just don't get out of calibration very quickly to need it.

But I was thinking that if I could temporarily mount the servos, I could just hit a button and the computer would adjust everything for me. But it is very hard to even get the servos in place due to all the tubes for the inner cylinder adjustments.
yeah. my '78 xs400 has a lot more space around the carbs and their adjustments so it's a much more real possibility than on newer bikes. but you are right, they don't need to be adjusted much and it would be pretty pointless... but cool!
DouglasG12 years ago
What things did you put into the WPF application? Also could I use a regular widow form application instead?
Makuna (author)  DouglasG12 years ago
You could accomplish the same thing with Windows Forms application.

It is basically some serial communications protocol on top of the .NET serial interfaces; some pretty standard WPF UI, and a little averaging of the values for the red line in the graph.