Need a manual?  Buy a Haynes manual Here

Main Menu

EFI updates

Started by chris900f, January 30, 2023, 07:11:35 PM

Previous topic - Next topic


So last spring I built and test-fit a set of throttle bodies, found a mount point for my modular fuel-pump, took a few pics and then put it all back to stock for summer riding.

I've just finished building and bench-testing a Speeduino NO2C ECU. The Speeduino boards are called "shields" as they plug directly into an Arduino Mega2560 processor module. I also have a smaller Arduino processor called an UNO, that runs Adrustim firmware. This allows you to emulate the crank/cam trigger patterns of several engines. Mine is running on a crank-only simple distributor pattern. I had to mod the 4-cylinder dizzy program to get correct RPM on a 180-twin.

I have all my sensors, except the o2, running on the bench. The TunerStudio software allows you to manually
calibrate your sensors; so you can use a thermometer and an ohm-meter to set 3 points, which the software will use to calculate a curve for the sensor. I'm using a VW cylinder head sensor in place of a coolant sensor. My air temp sensor is from a Yamaha FZ/MT 07. For bench-testing, I'm using the same type of Mikuni TPS unit used on the F bikes.

Speeduino differs from MegaSquirt in that MS was first designed as a "fuel-only" system, so it's pretty straight forward to get it to run from a simple tach signal. Speeduino was designed as a complete engine management system. As a result there is little info online or in the forums about "fuel-only" set-ups, but using the ArduStim I have emulated the tach-signal you could get from the number 1 coil(igniter signal).

The advantage of the fuel only set-up is that it is a "piggy-back" so the stock ECU and wiring remain unscathed. The disadvantage is that you don't have ignition control so you leave a fair-chunk of performance on the table.

The trigger wheel in the above pic (holding the syringe plunger) is from a Ninja 650. Its a 24-2 type. (I got it for about 5 bucks on ebay) This wheel would give enough resolution for full ignition control. The mod would be to cut the stock rotor off and get the shaft machined to accept the 24-2 wheel. I think the stock pick-up will work, but it needs to be moved about 1 cm on the backing plate. Other issues going the ignition route include fabbing an igniter box and figuring out what to do about the neutral-switch as well as redirecting the connections from the stock igniter to the Speeduino or to the igniter box.

Space is tight so I'm starting to appreciate how much tech is packed into the tiny stock ECU...


NICE WORK!   :bowdown:   

I'll definitely be following this.  Please keep us posted.
Being shot out of a cannon will always be better than being squeezed out of a tube. That is why God made fast motorcycles, Bubba....
- Hunter S. Thompson


Here you can see the NO2C plugged into the mega. I bought an extra board for $6.00 and a bill-of-materials is available if you want to source your parts locally. The 2nd board was useful as a guide, once you start to get a lot of components on the board that cover the lettering.

The little green board is the bluetooth module(~$10.00), which works well and allows you to datalog wirelessly to your smartphone. You get access to ShadowDash (android) with a registered copy of TunerStudio. This is a great option, since you can monitor your O2, MAP etc real-time while riding, as well as datalogging.



This is what I'm working on in Ardustim. I've modded an existing wheel definition(420a) and have a pretty good replica of the GS500F rotor. I need to verify the scope pattern against the actual trigger-log pattern, check degrees etc.

Still have lots of work to do, but once this emulates the real pattern, next step is to convert it to code that can be added to the Speeduino firmware. This means that the Speeduino ecu will be able to recognize/decode the Suzuki trigger pattern, and users will simply be able to select "GS500F" from the list when setting up their trigger in TunerStudio. It should be just a case of connecting the signal generator to the Speeduino once the code has been selected.

Right now I'm having issues with minor stuff, like changing the name of the wheel, :icon_lol:  so if there are any Python or C+ coders out there...


Quote from: MSerfozo on January 31, 2023, 06:16:08 AMNICE WORK!  :bowdown: 

I'll definitely be following this.  Please keep us posted.

Thanks man. I just got a new camera, so at some point I'll make a how-to video for building the Throttle-bodies, as well as the install. Here is my original thread from last spring.,73915.0.html

and cheese-video of the TB's installed. They are just the right size for the GS's intake boots (maybe 0.5mm bigger than the stock carb) and all the stock cables function without modification.

Finally got a registered copy of TunerStudio, so I can read/log the crank-position trigger signal, check for noise etc. I'm going to take another crack at reading the tach output directly from the ECU. It would be a great place to get a nice clean, reliable (square-wave ?) signal pulse.

I tried with a multi-meter last year and got a signal, but I can't tell if I'm getting the tach signal while cranking, (either because multi-meters don't read low-frequency pulses that well, or because the ECU doesn't output a tach signal until the engine starts.)

I will continue to work on the rotor decoder, but it might take a while...

There are still a lot of unknowns with the fuel system, and it's probably wise to iron out the bugs there first.


Really cool project! I'm interested to see how this comes along.
2006 GS500 Naked Touring Bike



Still too cold to pull the bike out, so I've been working on the throttle bodies.

You can see that the stock rail is split into two, with a separate fuel supply for each rail-section. The hose clamp in the center locks both sides to a reinforcing cross-member. The rails must be joined this way as they provide the downforce to keep the injectors in place. This configuration could easily be adapted for different bore spacing on different bikes.

The cladding over the 5/16" fuel hose is from a leftover piece of electrical conduit I had kicking around. A steel reinforcement bar is secured to the conduit on either side of the brass tee (larger hose clamps.) I wanted the secondary rail solid enough that I can use it to mount the injector harness.

It came out pretty well, and the whole fuel supply can be removed from the bodies as a unit.

By the intakes you can see the empty holes for the (now removed) secondary butterfly shaft. Normally I would just seal these up with JB weld, but I'm thinking of putting a breather tube between the two intakes.

Next step is to set up a test rig to check for equal flow from each injector. I can use the Speeduino/Uno to drive the injectors at various pre-set rpms, (running borrowed fuel table from my other bike.) I will run the injectors, ECU and fuel pump from a common 12v battery; feeding the pump Seafoam from a funnel and collecting it into two graduated jars as it exits the injectors. I don't expect to see a big difference in flow between injectors for most of the range, but the extreme high-end may show some bias.





Pretty fookin amazing if you ask me!
"Its something you take apart in 2-3 days and takes 10 years to go back together."


"H.R. Giger Edition"

No kidding! And just as beautiful in its own way.


Thanks guys. I haven't done much more lately, I'm waiting for warmer temperatures. I need to work in the garage for the rest, but it's still too frosty.

Those sexy Giger-tubes (lol) are from the air-box of an FZ07. The newer twins don't seem to use the motorized secondary butterflies. Instead they are using these funky tuned-length "Helmholtz" tubes (seems to be a Mikuni thing).

I sure hope they'll fit, as they'll help make up for not having an air-box; giving a little bit of a CV effect and making tuning easier and more fuel efficient. Also they should help capture the atomized fuel "stand-off" at idle and avoid the fuel smell of a straight pod set-up.

It'll be interesting to see how the lower resonant frequency effects/increases the low-end torque as per Helmholtz theory. As a bonus, increasing the length lowers the pitch just like a slide-trombone, so the whole exhaust/intake sound of the bike should drop an octave er' two  :cool:



I released the plug for the Tach output from the ECU connector and swapped in a Y-plug set (salvaged
from the GSXR TB's.) This is a kind of plug n' play splice. The connectors are not a perfect match, but fit well enough for testing.

I connected the Speeduino up to the bike's battery for power, and connected the Tach output to the Speeduino RPM+ and RPM-(ground) input.

On the multimeter, the ECU tach pin showed about 10.75v+ at power up, and shows about 5.5v at idle.

The Speeduino recognized the tach signal as the crank RPM signal--so I'm in business. I ran the engine a little, and the sync was perfect :thumb:



specimen continues to mutate


Ran into a snag with using the tach output. I noticed that the bike's tach would not work when sharing the signal with the Speeduino.

I had this capacitor in the parts box, so I connected it between the tach signal and the Speeduino primary input: problem solved, but I'm not exactly sure why it worked, so if anyone has an insight here...?


Fuel rail removed for cleaning ahead of flow test.


Close up of the throttle connection. The Mikuni bodies use 6x1 metric fasteners throughout. The extension nut is 18mm long, and threads directly to the drive body's butterfly shaft, in place of the stock retainer nut.

A short piece of 6mm threaded rod, flattened on two sides, is threaded into the other end of the extension nut. You need to file the flattened edges to match the "squared" hole in the driver/adjuster arm, so that it aligns correctly with the arm of the other body. Note I re-used the stock nut and lock-washer to secure the driver arm.


SMF spam blocked by CleanTalk