Skip to main content

@Stan Galat posted:

I have a mico-squirt ECU from the last time, before I chickened out. Thoughts?

Should be bullet proof. Wasted spark and semi-sequential are minor limits compared to Speeduino or MS2. Doesn't support Bluetooth tuning out of the box, so that might either be a small pain or require some research.

On my Android phone, I use MSDroid tuning software. It's nearly the equivalent of Tunerstudio and a lot more portable. Bluetooth and MSDroid are just the thing for collecting a ton of data logging or to make that minor fueling or accel enrichment tweak without carrying a laptop and plugging serial cables.


Stan, you'll be fine, as Mike says, MS stuff is bulletproof, including the Microsquirt.

Mike, my Speeduino will have bluetooth for MS Droid, built-in idle stepper circuit(just in case) and built-in VR conditioner.

IAT and Temp sensors from CB, theirs are smaller diameter(1/8" pipe thread) than others I've seen. 

I'm finalizing my build list, currently attempting to figure out fuel pump/hoses and yes/no on surge tank. I've got to figure out exactly how much room I have, and where, and whether I'm using the external MSD pump I have or buying a nice new Bosch 044. The Bosch would sit inside the surge tank, a sweet little aluminum box. Low pressure in and out, and a return. High pressure comes off the end of the half-wet pump, the suction side sits in the well. Pretty cool, and not that expensive either.

Once I actually start ordering things, I'll start my own thread.

Speaking of individual throttle body (ITB) sizes, apropos hardly anyone. As I mentioned earlier, using my superpower to ignore important facts, I ordered 45mm ITBs for my 1776 that are probably 10-11mm too large, each. Based on my similar experience putting a Mustang 5.0 75mm throttle body on a supercharged Miata, I knew it would work, but I also knew that if I was way off, there would be drivability downsides. In the Miata case, this was easily solved because everybody and their 3rd cousin sell a progressive linkage wheel for the Mustang that makes most of the pedal travel control the very lowest portion of the throttle opening. As I discovered today, that is not the case for Weber ITF style crossbar linkage - huh, big surprise.

Now don't get me wrong, it's not terrible at all. In fact, the only time I notice it is when I'm driving over speed bumps and slight movements of my throttle foot creates noticeable jerking as the throttle cracks open and closed. I'll have to PERFECT this problem with a little home fabrication, but that's in the future. To prepare for this, I wanted some data about what part of the pedal curve was getting the most use.

I've been doing tons of data logging of every engine event over the last 2 weeks while tuning and playing around with settings. Megalogviewer (MLV) lets you load multiple datalogs at one time and just stitches them together into one big log. The only thing I was interested in was how much pedal (throttle position sensor - TPS) I was using during the majority of the time. Once I'd loaded several megabytes of detailed engine logging, I went to the Scatter Plots function and asked MLV to plot the throttle position against the engine load (MAP) and to just count the number of hits in each cell. The resulting scatter plot shows I spend at least 70% of driving time in the lower 35% of the pedal. So, that means I will need to try to fabricate a cam action that gives priority to the lower 35% of the TPS. I'm thinking of building an aluminum cam that lies on the face of the bar that the cable attaches to to reduce the travel of the bar during the first 35% of the pedal press. At least that's my current thinking... Change my mind or give me a link to someone who's already fixed it :-)

Here's the scatter plot:

Screen Shot 2020-08-11 at 5.44.58 PM


Images (1)
  • Screen Shot 2020-08-11 at 5.44.58 PM

I'm thinking in the case of a hexbar linkage, if the main throttle arm is rotated to almost opposite the pull location, you'd get some "cam" action. 

I'll try it on mine, even with carbs it should have some effect.

Mike, it is possible you're experiencing drivetrain "wrap". It could be just motor and trans mounts moving, causing the "pogo" routine.

I got rid of this in my Spyder by loosening the accelerator cable, leaving just a little slack in it, and resetting the full-throttle stop on the pedal.

On hex linkage, the length of the throttle actuator arm, and the position of the cable attachment on said arm, makes a YUGE! difference in throttle "feel".  I had to mess around with where the cable attached (in or out) to get to where it felt sorta-kinda right.  In the old days, Rochester carbs had several holes up and down the throttle actuator so you could choose aggressive to whimpy throttle action.  Webers and Dells are not so blessed.

Some pineapple farmer once said: "The only time I notice it is when I'm driving over speed bumps and slight movements of my throttle foot creates noticeable jerking as the throttle cracks open and closed."

Exactly what I get currently on my beloved Dells (which are forever known for holding EFI in contempt).  God help you if you change your mind just after initiating a launch and back off of it because you'll soon be on top of a bucking bronco, just trying to find a way off without breaking sumthin because your foot is pumping the gas pedal up and down.  Exciting, yes.  Cool-looking?  Absolutely not.

BTW:  You might have noticed that, if you hit said "speed bumps" at, say, 50mph or so, you don't get that jerking of the throttle business.  Just a little "tip o'the day" from Five Cent Racing, here in Swelter Cove of the Blackstone River (down to 91* at 4:30pm).

Last edited by Gordon Nichols

There are several pickup points on my "aftermarket" non-VW throttle pedal. I attached the cable at the closest one to the hinge point, which seems to work with the comparatively longer attachment at the throttle arm on the hexbar.

But what I'm telling Mike about, and you, Gordon, is rotating the throttle arm by one or two flats on the hexbar, but probably only one flat. This will give you a "cam" action, less movement initially around the "just open" part but as the throttle opens the arm will be more perpendicular to the hexbar. Then it will get to full quickly.

I believe a lot of pan cars are sensitive to throttle because they need a bow in the throttle cable housing, just like the clutch "Bowden tube" needs.

@DannyP posted:

But what I'm telling Mike about, and you, Gordon, is rotating the throttle arm by one or two flats on the hexbar, but probably only one flat. This will give you a "cam" action, less movement initially around the "just open" part but as the throttle opens the arm will be more perpendicular to the hexbar. Then it will get to full quickly.

What's funny is that as a novice with the crossbar linkage, what you are suggesting is the way I first installed it. Before testing and after seeing a better picture of a CBP setup, I took it apart and redid it. Guess I'm getting good at this...

Good move on ebay.

Stan, I've done that to replace some well-worn Cayman parts, the shift knob and the A/C controls. The ebay offer/counteroffer can be your friend, especially on outrageous buy-it-now prices that sit there for weeks.

I got automatic climate controls with brand-new buttons already installed for little more than the price of the new buttons alone, and upgraded from manual heat/AC. Plug and play as well, no coding needed.

I just replaced the el cheapo fuel pump with a Bosch 044. What a beast. It's easily twice the diameter of the old pump and makes about 1/3 of the noise.

To amuse my neighbors, I test drove it a block uphill before the 10 amp fuse that was totally adequate for the old pump said "No way, Jose!" I coasted back to my street and pushed it into the garage before it struck me what the problem was. Yep, the 044 is rated at 13 amps. A 20 amp fuse got me started again. Let this be a lesson to you all. Don't let Mike sign off on your test drives. 

Last edited by Michael Pickett
@DannyP posted:

I'm not on facebook, Mike. All I can see is the original post. I wonder if he's got his option jumpers configured properly? 

I'm doing wasted spark and batch-fire injection though, so I'll be using one VR crank sensor.

You'll be fine. It appears to be a pull up resistor problem with the VR conditioner board(s). Dana Hall just bent one of the plug legs to make his work. I'm running semi-sequential so it doesn't matter to me, either.

Last edited by Michael Pickett

Update and lessons learned: I'm having to redo my EFI fuel return.

The original design used a brass 3/8" tee between the fuel tank and the pump to connect to the fuel pressure regulator fuel return. This works, BUT, the pump is cooled by the fuel running through it, and the same fuel recirculates until the pump gets hot. Obviously, this is not good for the pump and hot fuel isn't as good as cool fuel for horsepower.

The usual EFI design is to dump the fuel return back into the fuel tank, being careful not to create bubbles near the gas feed at the bottom of the tank. 

I've got a 6an bulkhead fitting on order to return the fuel directly into the fuel tank. The larger amount of fuel being recirculated should lower the pump temperature.

 @DannyP, have you thought through where you are going to locate the fuel return back into your tank yet?

Last edited by Michael Pickett

When I changed a carbed Ducati over to FI the return line came in the bottom of the tank, but inside the return tube extended about 1/3 of the way up the tank and was aimed at the tank sidewall (return tube ended 1/4" from the side wall and was aimed at a 45* downward angle).  It was also at the other end of the tank from the fill cap.  The intake was, of course, well below that, but in the same general vicinity (maybe 4 inches way as the crow flies?).  No aeration issues arose, and there were no problems with extra vapors being created which might be an issue with our cars.

Yes. I'm going to attempt to install a 6AN bulkhead fitting on the gas gauge sender. It appears there might be enough room.

If it doesn't fit on the sender, I'll drill a hole next to the sender. I plan to heat and bend a special open-end wrench(Chinese throwaway) to slip in the hole and grab the fitting. I'll put the nut on the outside.

On the inside, I'm using a 6AN to 3/8" tube adapter. I bought some NiCopp fuel lines, they bend SO easy. I'll use about a foot, leaving a 90 at the bottom, directing the return fuel away from the feed port.

I'll be using 5/16" lines for feed and return, and 3/8" in the tank as an attempt to reduce the return flow speed a bit.

All my tube and thread adapters and such are coming from Jeg's. I'm buying hose and clamps from Amazon.

Here's what I did five-six years ago:

Drilled the hole so the fitting threaded itself in. The solder was just icing. A lil epoxy would've done as well. Never a hint of leakage.

Return fuel just pissed down in there until this spring, when I had some trouble with the fuel outlet being blocked by a gasket that fell in there. While chasing that I got the idea that aeration might be part of my problem, so I unscrewed the fitting and press-fit a piece of hard fuel line in the end, about six inches long, to carry the gas down to near the tank bottom. This did no harm, but was obviously unnecessary in retrospect.

Anyway, just saying. The fuel return is a low pressure system & doesn't have to be a big production.

Last edited by edsnova

In other Speeduino news, I added a second MAP sensor to the Speeduino so it could do altitude compensation in real time, rather than just on startup. It's a very simple circuit, and I took the shortest route rather than trying to do a fancy circuit board and mount. 

I bought an identical MAP sensor and cut off the unused 3 pins (pins 4-6) and ground off the mounting tabs and the air inlet. I then soldered it right on top of the MAP sensor on the board connecting pin 3 (+5V) and pin 2 (ground). Pin 1 is the output. I connected pin 1 through a 470 ohm 1/4 watt resistor to the A7 analog input pad for the Arduino chip. I also connected a 330 nf capacitor between pin 1 and ground.

To enable real time barometric correction, you go to the Tools tab in Tunerstudio and choose Calibrate Pressure Sensors. You enable Baro and tell it which type of sensor you're using and which analog input pin it's connected to.

Most people won't need to do this. It's really only useful for folks who deal with a lot of altitude changes.2ndBaro


Images (1)
  • 2ndBaro
Last edited by Michael Pickett

That's a really cool install, Mike. Clean. 

Glad the return worked out for you. Did you use the 6AN bulkhead fitting? Picture?

I've got all my parts except some 6AN fuel line and ends, and 5/16" rubber EFI hose and clamps.

The onboard baro was one of the reasons I got the UA4C. The other reasons were size, easily available closure, built-in harness connectors, and cost. Soon.

Injector Latency or Injector Dead Time

One of the Speeduino settings that determines when the injector actually squirts is the amount of time between when the injector gets power and the time that it actually squirts. This is called latency or dead time. Depending on the injectors you choose, you may be able to find the latency on the internet or not. For the Acell 150117 17 lb/hr injectors I chose, I could not find the data. I called up Holley technical support (Holley bought Acell), and they searched in their files for about 10 minutes and couldn't find the spec, either. The default injector latency value in the Speeduino .ini is 1ms, so that is what I used. After doing a lot of searching, I came upon a method described by one of the Speeduino Gods (PSIG - David), that shows how to collect data once you've got a good tune and use it to calculate the real latency for the injectors you're using. Setting this correctly is seen as making things "better" or "right" so you know I'm going to try it out.

I just wanted to share the link to PSIG's draft paper on how to do this magic trick:;hilit=PSIG#p41357

Fine Tuning - Lambda Table, the hidden key to a fast autotune: Once you get your Speeduino controlled engine running, you then begin fine tuning everything. For a few of who are clearly obsessed, this becomes a long-term pastime. Others just like to get it better than those darn Kadrons/Webers/Dellortos and move on to enjoying the ride.

Assuming you're not implementing forced induction here's how to get started using TunerStudio (go ahead and spring for the paid version). I'd recommend buying a copy of Megalogviewer HD also for datalog analysis. This update will deal with calibrating the key table that allows both TunerStudio and Megalogviewer to do accurate autotuning. Get this badly wrong and you'll end up chasing your tail.

TunerStudio autotunes using the Tune Analyze Live option. This has to be started/ended by mouse click and any changes have to be intentionally saved to be permanent. Speeduino has an internal autotune that can operate continuously to fine tune the match between the air:fuel reported and the AFR target table that you have setup. This is enabled under TunerStudio's Tuning/AFR/O2 drop down menu. The Algorithm most commonly used is PID.  Some folks recommend disabling PID at first and doing the initial rough tuning using the Tune Analyze Live option (and/or running log files through Megalogviewer's VE Analyze tuning option). So, consider leaving PID turned off for the next few steps.

Calibrate your WBO2 sensor. In addition to all of the other normal TunerStudio configuration, make sure you calibrate your Speeduino for the wideband-O2 kit you are using (under Tools/Calibrate O2 Sensor). Speeduino has built-in EGO Sensor calibration options for a lot of WBO2 setups, but some controllers, like the14point7 Spartan II have an integral self-test calibration option to get it spot on. In that case, you would choose Custom Linear WB and key in the data observed during the internal calibration process. In any case, the O2 calibration tool loads the firmware on the Speeduino with the appropriate voltage conversion info so it reports accurate AFRs. Once you've made your choices click on Write to Controller and wait until it says it's finished. Now, time for some test rides.

Using the default VE table (fueling by RPM and Engine Load), AFR table and a spark table that isn't too aggressive (or tables borrowed from a friend), start the engine, connect with TunerStudio and make sure you're getting sensible readings. Once everything seems ok, click on "Tune Analyze Live - Tune For You." There are two tabs under this option. The one you want is the "VE Table" tab. On the right side, click on "Start Auto Tune" and gently drive around until your engine is at normal temperature. I periodically click the "Save on ECU" button to save the changes that have been made to the Speeduino. As the tune improves, I run it up and down the RPM and engine load ranges. Obviously, if you hear knocking, back off and see what's going on (too much timing, too little fuel, etc). I never heard any knocking, but 90% of my conversions with my wife begin with "What?" As you drive, TunerStudio will look at your reported air:fuel ratios (AFR) and compare it with the AFR target table. It will change the VE (fueling) table to either add fuel or take it away in an attempt to match up the reported and target tables. Remember to click on the "Stop Tuning" and the "Save on ECU" buttons when you're finished.

This gets you a first cut fueling table. Now the tweaking begins. Your first cut table should be safe for full throttle data logging now. This allows you to collect information about how much delay occurs between the time fuel is injected and the time your WBO2 sensor reports the change to Speeduino. This varies by engine speed and load, so you have to build a table that is custom to your particular WBO2 sensor, your exhaust setup and your engine characteristics. In other words, you just have to collect some data and build what is called a Lambda Delay table in TunerStudio (and make a copy in Megalogviewer if you use that to analyze your datalogs).


The easiest way I've found to do this step is use Engine Protection to setup fuel cuts under 3 different RPM maximums and to then hit those RPMs under different throttle loads. In my case, I used 1200 RPM, 2400 RPM and 4900 RPM. This was pretty arbitrary. I use MAP rather than TPS to measure engine load and I set up table rows for 46 kpa, 80 kpa and 96 kpa. This allows Speeduino to match up the reported AFR with what you've told it you want in the AFR target table under different speed and load conditions.

Starting TunerStudio Autotuning


So, I started with my max RPM set to 2400 RPM and hit the road. It was very easy to hit the 96 kpa target by just flooring it and holding the throttle down while it bounced off of the rev limiter. You'll get more accurate readings if you don't lift the throttle immediately when it hits the rev limiter because your RPM and MAP/TPS won't be changing much during the time the exhaust pulse is traveling through the engine and past the O2 sensor.

Getting the 46 kpa involved speeding up, lifting the throttle totally and shifting into a lower gear to spin the engine up over the 2400 rpm rev limit. You'll still see fuel cut in the datalogs even though the throttle is lifted. Be VERY careful not to spin your engine up above a reasonable redline when you're trying to do this at higher RPMs!!!!

Hitting the 80 kpa was just running steady moderate throttle until the rev limit is hit.

Doing the lower RPM rev limit is tough and I recommend an empty parking lot or street. You won't get enough speed to drive in traffic, so don't. Once you're in a safe place, just fill the engine load buckets as above - full throttle (don't lift!), moderate throttle and downshifting with no throttle.

I found the 4900 RPM was the easiest column to sample. Just floor it, moderate throttle and downshift as I was heading home.

Make sure you hit that rev limiter plenty of times under all of the conditions. There will be a bit of measurement error and observation error on your part. More data points will give you the confidence that you are in the right ballpark on each of the table buckets

Now you've got datalogs, fire up Megalogviewer (MLV) and load the datalog file. On the left side set up the log fields you want to watch, See the picture below for a few ideas.  In MLV, choose the Search dropdown menu and choose Expression Search. In the text box, enter (without the quotes) "[Hard Limiter]=1" and press enter. The first time the rev limiter engaged will be time marked on the screen (see line in the middle of the screen with a timestamp at the bottom). Write down the timestamp or put it into a spreadsheet along with the engine load (MAP or TPS) and the RPM. Look at the AFR data line and see when the AFR starts to go up. Click on that point and write down the timestamp of when Speeduino saw the result of the fuel cut. Subtract and write down the delay for that RPM and engine load. On a Windows machine press F3 to jump to the next rev limit event and repeat. Keep recording the delay data until you've reached the end of the datalog.  More after the pics

Rev Limit Fuel Cut


AFR Uptick


You can see the upward move in the AFR track and the timestamp at the bottom of the screen. Subtract the start time of the Hard Limiter fuel cut in the previous pic to get a datapoint delay time at that RPM and engine load (MAP or TPS).

After you've gone through the log filling in the calculated delays into your spreadsheet or yellow pad, then break the data out into the three RPM ranges. Don't worry if the RPMs aren't exactly where the rev limit was set. It should be easy to see the groups. Then, in each group sort by the engine load (MAP or TPS). At this point, you just look at the RPM groups one by one and come up with a best estimate of the delay for each level of engine load. There will be outliers and bad data so toss them as you see fit. In general delay is greater for low engine loads and RPM and less for high engine loads and high RPMs. Build your delay table using the patterns that you see and then update the Lambda Delay tables in the Tune Analyze Live - advanced section and in the Megalogviewer VE Analyze tool. From this point on, TS and MLV will be a lot more accurate in matching up the actual AFR to the AFR target and will give you better autotuning.

TunerStudio Delay Table


Megalogviewer Delay Table


Once the delay tables are set, autotune to your hearts delight. When the datalog numbers and your butt dynometer tell you that the engine is happy, go into TunerStudio Tuning/AFR/O2 and enable PID so Speeduino will make real-time, non-permanent adjustments to fueling to match your target AFRs with what Speeduino is seeing at that particular moment, temperature, barometric pressure, etc. Reading up on this is always recommended, but the basic idea is that Speeduino will smooth things out for you once you've got the VE table close.

All the usual disclaimers apply. I may not know what I'm talking about and your engine may be different than mine. Be careful and listen for knock and remember, as my dearly departed Uncle Grover once said to me, "Mike, we ain't building no piano here." Just get it close and everything will be fine. I certainly won't be offended by corrections or questions. Just trying to share what I think I've learned before I forget it.



Images (5)
  • MeasureLambdaDelay0
  • MeasureLambdaDelay3
  • MeasureLambdaDelay2
  • MeasureLambdaDelay1
  • MeasureLambdaDelay4

Add Reply

Post Content
Link copied to your clipboard.