I started this project a) as a way to gain more visibility into what my ECU is actually doing (aka what spark advance and fuel is it asking for) and b) give me something to do while I'm watching my newborn in the middle of the night. It's now been a month. The kid is now sleeping regularly AND I have an initial understanding of how to use QH that I'd like to share with folks considering how to tune their 5.0 tbirds.
1) Get more visibility into the ECU; datalog what the CPU is requesting (Total Spark and Injector Duty Cycle) AND what the sensors are reporting about the engine (ACT, ECT, WBO2 Lambda)
2) Simple tuner changes: remove EGR/thermoreactor control, lower rev limiter (endurance racing), remove any speed limiter.
3) Fancier tuner fixes: see if I can get a little more powah while maintaining a safe tune.
WHAT YOU NEED TO BUY
1) Quarterhorse Module: $250 from https://www.moates.net
. They seem to run $200 on the resale market. I actually got a deal on mine by monitoring eBay and snapping up a QH module + ECU from a 2.3T turbo tbird. I then sold off the ECU for ~$120 net after all the eBay fees (and the hassle of dealing with an idiot buyer) so at the end of the day my QH module only cost me $94. YMMV of course.
It's kind of annoying that with such an old car, you cannot just re-flash the stock ECU but this is honestly the next best thing (ex: tuning a subaru can be done with FREE RomRAIDER software and a $59 module that plugs into the OBD2 port. crazy).
QH also offers additional functionality like datalogging your WBO2 setup (you wire one analog output from the WBO2 controller into the EGR analog input if you have EGR disabled).
2) WBO2 Setup: ~$200. Even if you buy a canned tune, you should have one of these sensors + gauges if you are doing ANY mods to best understand how rich/lean your engine is actually running. On the Roadkill Youtube series, they use a WBO2 setup to tune their carb'd cars. Don Lasota swears by the Zeitronix setup as one of the most accurate in the consumer price range but I've had good luck with my AEM UEGO 30-4100 and Innovate Motorsports LC-1 setups so far (both were handmedowns from friends and report the same numbers). If I had to buy a kit myself, I’d probably buy the Zeitronix or AEM setup.
AEM 30-4110 Wideband UEGO kit - Great for Monitroing Air-Fuel Ratios - new LSU4.9 sensor
- The only annoying thing I can report about the AEM is that while it does seem like you can buy a BOSCH replacement OEM WBO2 sensor for ~$50, it’s unclear if it ships with the custom resistor that eliminates the need for free-air calibration. I ended up just spending $75 on a replacement WBO2 sensor just to be safe.
AEM UEGO Replacement Sensor (Screw You AEM Im Not Paying What You Want) - 8th Generation Honda Civic Forum
- The LC-1 is an early gen consumer WBO2 setup so I will toss it whenever the WBO2 sensor goes bad (they all do eventually). You also need to do free air calibration every so often before use. In order to change from gasoline to Lambda I needed to make my own serial to 2.5mm cable (since I didn’t want to pay $15 for a stupid cable) and termination block (ditto for $10). It was a minor side project and only cost me $3 for the 2.5mm jacks. For now though, I have both passenger AND driver side WBO2 sensors. Why? Because racecar.
Oregon Volvo Tuners ? View topic - Innovate LC-1 Serial Cable Pinout
- Update from 2016:
If you only have one WBO2 sensor and you have EGR disabled on your car, you do NOT need any additional datalogging HW to bring the WBO2 data into the QH module. Physically, you connect the 0-5V signal output from the WBO2 sensor and replace the EGR Valve Position wire going into the ECU. Within the SW, under the Datalog Screen, you define a new Transfer Function that uses IEGR (EGR Valve input voltage) and changes it to a user-defined tag like (WBO2). The datapoints for the conversion will be found in the WBO2 sensor documentation. For example, my AEM UEGO model #30-4100 gauge and matching sensor, 0.5V = .751Lambda and 3.5V = 1.143 Lambda).
NOTE: While this is immediately obvious in hindsight, I thought I should make a note of one "downside" from this wiring change. Should you ever go back to a stock tune, you WILL throw a CEL because you will be injecting WBO2 voltage instead of EGR valve position data that the ECUs stock tune is expecting. I learned this when I swapped computers during my last lemons race.
3) Binary Editor/EEC Analyzer software: $160-240.
- I'm not entirely sold on the EEC Analyzer SW yet; I understand it’s supposed to be good for analyzing your datalogs (ex: to understand what further tweaks need to be made based on your aftermarket cam specs, for example) but I haven't done this yet so I cannot comment on if it was worth the premium.
- I did opt for the more expensive dongle setup though so I could easily swap between my computers.
- IMPORTANT TIP:
I didn't realize this until a month afterwards but Clint gives you the license to ONE tuner license (twEECer, Moates, SCI) -- obvious -- plus one supported logger (PLX, DataQ, Innovate, DLP, or SLC) -- not as obvious to me. If you don't pick your datalogger, Clint will give you the most popular one by default (Innovate apparently b/c the SSI-4 it's ~$100). More Logger discussion below but if you decide to use a different one, you will need to pay Clint an extra $20 to enable a new datalogger license. Like it or not, Them's the rules. This addt'l logger license can be tied to your dongle so if you have a dongle, Clint will email you an upgrade file for your it.
4) GSALI Strategy from Sailorbob (tells BE how to interpret the binary from the tbird "W3D" ECU) $25.
I'm not sure how old this is but here's a read-only ver of the CRY file GSALI strategy Derek supplies. You can use this read-only file to read your stock ECU (and see all the parameter you can change) but NOT save the tune.
Optional Gauge - KNOCK
I setup my engine with an aftermarket knock gauge from
- It works like a charm, uses most any knock sensor you find at the JY and has the option of inputting to an external device.
- I'm now datalogging this using my external A/D module.
Optional Plan: Switch to a Mustang ECU
- You can switch from the tbird W3D (GSALI strategy) to a 94-95 Mustang ECU that uses the far more common CBAZA strategy. The main reason to do so is for more advanced support.
- The downside is that the injectors, MAF, and exactly what tables/functions affect spark advance are slightly different between GSALI and CBAZA so you are trading apples for oranges and hoping the oranges are slightly better.
- You can use the free CBAZA strategy built into BE but for $25, you can get Sailorbob's strategy that has much more of the ECU mapped out (more knobs to tweak).
- You can make your tbird wiring harness also work with the Mustang ECU but you will need to snip 3 wires that are different between the two ECUs (first one is where the wire goes on a Mustang, Second one is where the wire goes on a Tbird).
Pin 32 Fan Hi / Programmable Ride
Pin 34 Secondary Air Injection Solenoid / Data Output Line
Pin 55 Low Fan Control / nowhere
NOTES: As a corollary here, you COULD implement electric fan control
on you tbird BUT that means you cannot switch back to a tbird ECU on
the fly. That may work for you but it's less than ideal for me.
Discussion here: http://tccoa.com/forums/showthread.php?t=151785
- Buying Tip: There are five common ECUs that use the CBAZA strategy and a few more that are more uncommon (ex: the J4J1 and ZA0 ECUs from the Cobra or Cobra R). Since you will be using the ECU with the QH module, you don't care what ECU you run so long as its a CBAZA ECU. I found that the price delta was quite surprising as the manual ECUs were $150+ whereas you can pick up a W4H0 ECU for far less (I think mine cost $40 shipped). Start searching ebay
WHAT YOU SHOULD DO TO ESTABLISH A “PROPER” TUNE
You can learn a lot about the steps required to tune this from buying Lasota's manual ($75) and by reading this website from another popular tuner: Decipha.
Binary Editor; Moates QuarterHorse Tuning Guide
www.EFIDynoTuning.com - FREE Custom Tuning Software
1) Configure BE for the tbird:
"Settings" / "Vehicle_Info"
Drag: .31 (for tbird)
Frontal Area: 22.2 (for tbird)
Transmission gears (for calc quarter mile)
"Settings" / "User_Pref"
Set tuning for Lambda.
NOTE: I would highly encourage tuning Tuning for Lambda vs. E10 or pure gasoline. THis is because there's no guarantee of exactly what fuel you will be getting everytime you fill up your tank (note the pumps always say "up to 10% ethanol") and this changes the target Air to Fuel ratio. In comparison, a Lambda of 1.0 simply means the idea stoichometric mix no matter if the "actual" AFR for your tank is 14.7 (100% gas) or 14.08 (E10).
You no longer have to consider if someone tells you to target 12.5 if they are referring to E10 or E0. Just aim for .85 lambda.
2) Set the scalars to turn off stuff you aren't using. Here's my modification list for my GSALI strategy.
Scalar Desc Value Units NOTES
ATBYS Thermactor Bypass Min ACT -256 deg F DISABLE Thermactor
EDFHP Low Speed Fan Present No switch Disable Fan (set for all duplicate fields)
HEDFHP High Speed Fan Present No switch Disable Fan (set for all duplicate fields)
NLMTHI_0 Rev Limit Drive Stage 3 5700 rpm Lowered Setting for endurance racing application
NLMTLO_0 Rev Limit Drive Stage 2 5000 rpm Lowered Setting for endurance racing application
NLMTNEUHI_0 Rev Limit Neutral Stage 3 5700 rpm Lowered Setting for endurance racing application
NLMTNEULO_0 Rev Limit Neutral Stage 2 5000 rpm Lowered Setting for endurance racing application
OCCDT1 IMRC Open Circuit Check 0 volts 0V to eliminate test
OCCDT3 High Speed Fan Open Circuit Check 0 volts 0V to eliminate test
OCCDT5 Canister Purge Open Circuit Check 0 volts 0V to eliminate test
OCCDT7 Fuel Pump Open Circuit Check 0 volts Not sure about this one; eliminated for now
OCCDT8 Low Speed Fan Open Circuit Check 0 volts 0V to eliminate test
PFEHP EGR Present No switch Removed EGR (set for all duplicate fields)
SARCHG Engine Displacement (8 cyl) 304.53 Cu In Used for calculating load (set for 20 overbore)
THRMHP Thermactor Present No switch Removed Thermoreactor (set for all duplicate fields)
TRLOAD Transmission Type auto non electronic neutral drive switch switch Stock trans setting works for my M5R2; not messing with it
VS_LMT1_CL Vehicle Speed Limiter Stage 1 Off 240 mph Disable Governor
VS_LMT1_SH Vehicle Speed Limiter Stage 1 On 245 mph Disable Governor
VS_LMT2_CL Vehicle Speed Limiter Stage 2 Off 240 mph Disable Governor
VS_LMT2_SH Vehicle Speed Limiter Stage 2 On 245 mph Disable Governor
VSMAX Vehicle Speed Limiter Stage 3 On 245 mph Disable Governor
Z_AFR Stoichiometric A/F Ratio E10 switch Change to make tuning more accurate (E10 in CA)
* For the GSALI strategy, some items appear multiple times so I set them all to OFF or ON as needed. Sailorbob says that these PIDs may map to multiple areas in memory which allegedly explains the duplication.
* As with my electric fan, my fuel pump circuit is also a separate relay from the ECU now so there's no reason for the ECU to monitor it.
* If you have swapped MAF (I didn't), replace the MAF transfer function
* If you have swapped injectors (I didn't), you need to copy over the injector related scalars (found under Fuel, Scalars).
2) Dial in the MAF Curve. This is done by adjusting it based on turning off all adaptive adjustments (look for the scalar) and making a nice smooth partial throttle acceleration under load. The goal is to make what you see from your WBO2 (Lambda) match what the ECU is requesting (Lambse).
3) Scale the load tables to 200% (vs stock which tops out at ~90%)
4) Adjust the fuel trims once the MAF is dialed in. You can read up more on what to do on Decipha’s website.
My Actual Implementation - W3D ECU + tune
1) Since I scored a cheap W4H0 ECU AND Sailorbob will sell you his CBAZA.cry (strategy map) for $25, it was worth seeing if I could map over all the data from the tbird calibration (which can be read out of the W3D ECU with Sailorbob's GSALI.cry). This was my initial goal so I could use the Mustang ECU in my tbird.
2) While the the values for some scalars you want to modify are pretty straightforward (set the RPM limit to xxxx), there's quite a bit of interdependence in how the functions modify/allow for extrapolation of the various spark advance tables.
- What I did to ease comparison was to cut out all the scalars from each of the stock tunes and compared them in excel.
- I also opened up multiple copies of Binary editor (one with GSALI and one with CBAZA) and compared the two function and tables lists.
TIP: For CBAZA at least, Decipha offers a simplified base tune that reduces the spark table and fueling scaling function to the minimum necessary. This is probably a good idea if you have an engine with a serious power adder but the counter argument is that for a mostly stock engine, lots of tuning was done at the Ford factory by Ford engineers to establish the best fuel economy and drivability under partial throttle conditions (aka what the vehicle does most of the time). If your engine isn’t that modded, you may be better served trying to get things to run as close to the stock calibration as possible.
3) This took a week or so of playing with it and the net result was a baseline tune that will "probably" work on my car. Since the CBAZA had several functions that referred to tables that didn’t exist in the GSALI (tbird) ECU, all of the spark tables would have been mustang based vs tbird based. To be honest, I didn't do extensive testing though with this hybrid setup because I ended up concluding that the GSALI.cry strategy was mapped out well enough for my needs.
4) Having setup BE and learned how QH works a bit more, I then focused on just modifying the factory W3D calibration with the GSALI strategy. This will allow me to keep using the stock tbird ECU and minimize the items being changed.
- I can't test my engine under load until the next race so I decided to minimize my tune changes as much as possible (basically focus any enhancements only on WOT tuning).
JUSTIFICATION: My justification here was that I was using my stock MAF and the stock MAF transfer function, any error in the MAF function should be uniform across all levels of airflow. Furthermore, I compared this transfer function with the one measured on a flow bench for a stock 91 Foxbody. There is a difference at the top end but they are nearly identical (within a few kg/hr) for the lower half of the curve. Since there is very little chance that my engine will intake air anywhere near the limit of this MAF where the delta is most significant (this engine just doesn't make that much "powah"), I was convinced that the MAF transfer function as recorded in the stock ECU was adequate for my need (i.e.: the margin of error is acceptable).
- I did NOT re-scale my load to 200%.
This is recommended in most tuning manuals as a way to increase the granularity of your tuning parameters.
Justification: Since I don't have a turbocharger or a SC, I see no reason to adjust the load tables significantly that I know work under load for my specific car/engine setup (prior to making any changes to the ECU, I took this car to a track day and beat on this engine, as modified, for 6 hours w/o any drama for the engine. The starter died so during driver changes and pee breaks, we actually just left the car idling so we wouldn't have to push start the car or crawl underneath and try to hot start the engine (did that once. not fun.)
- I modified the scalars as outlined above.
- I also zero'd out the "Spark Adder for EGR" (FN1121) so if EGR turns on somehow, spark advance won't be altered.
- Finally, I got "greedy" and tweaked timing + fuel. Since my car had no problems running this engine at partial throttle, I focused on making very small adjustments purely for the engine at WOT.
According to Decipha, the total spark is calculated several different ways using various tables and functions. The ECU then picks the lowest calculated number for the spark to be used. Since I only care about WOT, I left most of the spark advance tables alone. Also, there are several WOT modifier functions for ACT, BP, and ECT. There is no Barometric Pressure sensor on the tbird so this function is ignored. ACT and ECT specifically pull timing at higher temps which for an endurance racer, is fine by me.
While Decipha says that GT40 heads can make power from 29-31 degrees adv, based on feedback by Don and given my application I decided to play it safe and max out at 29 degrees. Decipha has a table here of various heads and MBT. This shows a target of 32 MBT for CA pump gas.
MBT Reference Chart / EFIDynoTuning
FN131 WOT Spark vs RPM 3500RPM = +1, 5000RPM = +1, 16KRPM = +1 RPM. Total spark would be 29degrees max. Compared to stock shape i maintained same shape as stock function.
FN1121 Spark Adder for EGR Zerod everything out No Spark is added anymore for EGR
FN1360 Fuel Stabilized Table leaned out table (0.82 => 0.85) @ 90% load for RPM for 1500, 2000, 3000RPM, 16K RPM. This is probably the “riskiest” setting I implemented but considering 0.85 lambda is 12.5AFR for gasoline, that’s still pretty conservative for GT40 heads.
FN901 Spark Temporary Load Increase bumped spark to 29 deg at 75% load for >=2500RPM
4) Configure the "Datalog" screen. This screen governs what data will be saved into the datalog file.
- Add all the variables that make sense to datalog into a "payload".
- Setup the Transfer Function for the WBO2 function so BE can process the data being sent via the QH module.
EECTuning.org ? View topic - How to connect a Innovate LC-1 to the EGR input
- While it’s not immediately obvious, once you have a configuration setup, you can save it as a “Payload” on the right.
- The extra visibility into what the ECU is doing has already yielded some benefits. I noticed that my MIL light was on but didn't understand if the code I pulled using my EEC-IV reader (http://www.summitracing.com/parts/ino-3145
) about the ACT was real or not. A quick datalog of the engine warming up showed that after a certain amount of time, the ACT being used would go straight to 150F (the default setup by a scalar ACTFMM). After this confirmation, I replaced the bad ACT sensor and poof, no more CEL.
5) Setup the "Dashboard" screen to report all the relevant variables that would be useful to see on the fly while the car is running (by your passenger, of course).
- Compare LAMBSE vs LAMBDA (measured by WBO2)
- Load and Spark Adv (total)
- Desired Idle RPM vs Actual RPM
- ACT & ECT
- MAF vs Desired MAF
- Injector Duty Cycle (to confirm that they aren't pegged or maxed out at WOT)
- Calculated HP & TQ (why not?)
- I used Decipha’s CBAZA dash template as a starting point and figured out which FLAGS did NOT exist with the GSALI tune: http://info.efidynotuning.com/CBAZA-BE12.exe
- I also updated the various buttons below to show the right status bits (checked with Sailorbob as they are different from the CBAZA strategy) for: open/close loop, ECT Stable Status, and HEGO Status.
- My modified Dashboard may be downloaded here:
- Engine idles just fine and revs without any issues. My car is no longer street legal and I live in a dense city so I can’t just take it around the block. There’s a giant dragon painted on the hood and a shopping cart/rear wing with a star shaped exhaust on it so it’s not exact inconspicuous, either.
- The beauty of such a conservative setup is that:
a) no changes were made to partial throttle so the car should be perfectly drivable while in the pits and fuel economy won’t suffer while we are lapping under caution (which happens a fair amount in Lemons Racing).
b) I know exactly where my changes were made so I can always back off of them as needed or advance things a little further provided I don’t see anything on my knock gauge
- While I could have gotten this minor advance by twisting the distributor cap a little bit, QH allows me to only advance timing above a given RPM and >3500RPM.
Final Tuning Q: How much power do I think I gained with QH tuning?
A: Honestly, probably not much. I’ve always been told that the best case scenario for ECU tuning a N/A engine is 10% but to me, that’s pretty laughable considering how little I changed the actual timing and fuel curves. Running race gas and just twisting my distributor would probably gain me more power but that wasn’t my goal.
In the end, I think the investment was worth it because of what I learned about engine tuning and to gain visibility into what my engine is doing before it blows up. As with everything else I’ve learned on this Lemons car (from welding to head swaps to rebuilding my engine from the bare block), I've enjoyed the learning process almost as much as throwing the car around Sears Point.
TIP - QH Module Batteries die but Moates Customer Service is fantastic
- In our last race, I was experiencing weird behavior from the ECU which led me just to swap ECUs during the race.
- It turned out that this was because the hardwired battery in the module is only good for 2-5 years and mine had died. Later versions have a coin holder instead of a hardsoldered battery and a tweak to allow the QH module get power from the vehicle battery when the car is off.
- When I realized my issue (QuarterHorse Battery Life « Moates Support
), I called Moates and asked what they could do for me; they offered, at no cost, to replace my battery with a socket and add this wiring tweak to the existing module! These guys are fantastic.
- Bottom Line: if you got your QH module second hand and are experiencing squirrelly behavior, check the battery voltage.
TIP - Datalog Analysis
- As of 11/24/14, my datalog analysis has been fairly limited so far (basically just to determine that my ACT was out of whack). This is because my car is no longer street legal and living in an urban area (SF), I can't exactly tear out of my garage and drive back and forth a little bit.
- Personally, I'm still skeptical as to the value of EEC Analyzer (not sure what I can really do with it yet despite reading up on it) and I plan to explore this further.
- I also recently learned that SCT LiveLink SW has some pretty good datalog analysis/graphing tools, can read in .CSV files generated by BE vs. the SCT HW, and is available for free. You need to download "SCT LiveLink ver 6.5" in order to read the QH-generated datalogs though as the "Livelink Gen II SW" seems to look for a proprietary header that the QH-generated .csv files won't contain. I found this link under the "Livewire Programmer - FORD" product. Also, you only need to install the Livelink SW pkg and not the SCTdriver package (cancel that part of the install when it starts).
COMMENT - Clint @ Binary Editor and Derek also offer fantastic customer service
- My most recent debug issue came when I was receiving checksum errors with the latest revision of BE and the GSALI strategy that Derek supplied me.
- First, Clint confirmed that this "checksum error" would be a mere annoyance vs. affecting the ability of my car to run the engine. This put my mind at ease. At worse, the car would throw a check engine light because the checksum wouldn't match the stock tune.
- After going through a bunch of emails with both Derek & Clint where they both checked the versions and my tune, Clint located the issue in his code and promised to push out a fix shortly. Given that both guys are running niche businesses, that's great customer service!
- Since my last race, I went through my wiring and simplified my setup. This post now reflects my current setup (Driver's WBO2 going into QH directly with Passenger side WBO2 + KNOCK going to DATAQ. I have since removed all other signals from my DATAQ setup I originally wired into my car BEFORE I had moved to Quarterhorse.
- Perhaps the most "trick" new addition is an Intel Compute Stick (essentially a tiny PC running Windows 10 but is the size of a Chrome stick). This is hardwired in thanks to a few 12V -> USB adapters from Ebay. I can use this PC to automate datalogging (Windows boots and starts BE automatically. BE will begin logging ONCE a trigger is hit). I remote control the Intel stick using Chrome Remote Desktop from my mobile phone (which requires a network link) but there's a ton of other software you can use instead.
- On the Datalog screen, the "trigger" option allows you to start datalogging once a certain PID exceeds a certain value. I have mine set to begin datalogging once RPM ("N") exceeds 1000RPM.
- There's also a powered USB hub wired in with a 12V -> 5V adapter that has my BE dongle, DATAQ module, and QH plugged in. This hub needs to be powered b/c of the current demands of the various devices.
- Under "Hardware" block in the DATA Q section, you can define the channels and transfer functions for your various channel inputs.