ECM Tuning
From GM Wiki
Contents |
Hardware
ECM
First and foremost, you need to be aware of what ECM you are running. For a 2nd gen J-body, there is about a 99.9% chance that you already have the correct ECM. To check, pull your ECM out (it's usually in the top of the glove box) and there will be a sticker on it. The ECM's model number should read either 1227727 or 1227730.
MEMCAL
The MEMCAL, pictured to the right, is where the program that runs your engine is stored. Depending what year your car is, the MEMCAL can be different. The data stored on the MEMCAL affects your ability to run certain diagnostic software, see below. The definition is the format in which the data is arranged on the eprom. A 91-94 MEMCAL uses the A1 definition on its eprom. If you have an 88-90 MEMCAL then you have the 6D definition. EFILive & Freescan don't understand the 6D definition. However, as long as you have an analog dash, you can grab a MEMCAL from a 91 J-body with the same trans (either auto or manual), swap it in, and you're good to go.
I'm sure there is a way to Datalog, but it can not be done with FreeScan. If you have an 88-90, and choose to swap to a 91 A1 memcal, you dont need to go hunting in the junkyard for that exact setup. You can get any memcal, put the rewritable chip in, download the A1 bin (code), and burn it to the chip. Its the exact same thing as getting a 91 ECM from the junkyard. Your gonna have to make a rewritable MEMCAL eventually, you might as well get it out of the way now.
EPROM
The 27C256 EPROM is the actual chip inside of the MEMCAL that the program data is stored on. To be able to make tuning adjustments you will need to modify your ECM by replacing the EPROM (electronically programmable read only memory) with an 29C256 EEPROM (electronically erasable programmable read only memory). To do this, first you should pick up a few spare MEMCALs from a junkyard. It doesn't matter where you get the MEMCAL from, as long as its from an 86-94 GM V6. You can use MEMCALs from an 88 Corsica if that's what is available to you. Since you'll be removing the EPROM from the MEMCAL, you'll only need it for the socket anyway. Once you have a few donor MEMCALs, remove the blue cover from the memcal. There will be an IC & a board in there. The board is a noise filter for the knock sensor, leave this alone. The chip to the right is the EPROM.
You'll want to use a fine pair of wire cutters and cut the pins off the chip and remove it. Then get a small pair of needle nose pliers, unsolder each pin, and pull them out. You will then need to replace the chip with the EEPROM because the stock EPROM cannot easily be erased, and its just easier to replace with a re-writable chip. The 29C256 EEPROMs can be found here: http://www.mcumall.com/comersus/store/comersus_viewItem.asp?idProduct=3130
Once you have the new EEPROM, you will need to CAREFULLY put it back into the MEMCAL socket. Take note of the way the wording is facing on the chip before inserting into the MEMCAL socket. Use a fine tip soldering iron, solder each pin into the MEMCAL socket one by one, then replace the cover and your ready to go. Alternatively, you can solder in an IC socket in place of the EEPROM, so you can easily use other EEPROMs with different programs, or even an emulator.
Emulator
(This section needs filling in)
Programmer
You are going to need an EEPROM programmer to write new data to your MEMCAL's EEPROM. The one commonly used is the Willems Dual Power Universal EEPROM Programmer (pictured to the right w/ memcal adaptor), found here: http://www.mcumall.com/comersus/store/comersus_viewItem.asp?idProduct=3081
In that picture you will notice that it has an adapter. This is because you would typically have to remove the EEPROM from the MEMCAL and put it into the programmer to write it. It's very risky to remove the chip even once, and you risk bending or breaking the pins doing it. You can also buy the adapter from Craig Moates for $10 here: http://www.moates.net/product_info.php?cPath=25_36&products_id=52
You can see a picture of the Willems programmer with a MEMCAL mounted Here
Software
Diagnostics
Before you can start tuning, you need to know what your car is and is not doing. To do this we Datalog. Datalogging requires an ALDL cable to connect the ECM to your laptop, and Datalogging Software to read the data coming from your ECM.
Datalogging gives ALOT of information to you. You can also record these datalogs, which many third-party ECM tuners will request from you. It is a .csv (comma seperated values) file that can be imported into Excel. It will record everything your engine is doing. ECM tuners use this information to custom tailor the calibration to how your engine is running. Among that information, some of the most important for tuning, is your BLM (Block Learn Multiplier) and INT (Integrator).
ECM Tuning Software
In order to make adjustments to your ECM, you have to have something to edit. Before modifying your MEMCAL, put the stock MEMCAL into your programmer and read the data stored on the MEMCAL into a .bin file using the software supplied with your programmer. Once you have accomplished this, there are a few programs available to edit those .bin files. Some of the better programs available for that are:
Click on any of the links above for more detail about that specific software, including where you can find it. Each one has it's own benfits and drawbacks, and it's up to you to choose the one that is right for you.
Tuning
BLM & INT
The BLM is a long term adjustment that your fueling is based on. The INT is a short-term version of the BLM. Basically, these two strategies are used to make adjustments and adaptations to the ever changing loads, atmospheric conditions, and fuel quality to keep the car's air/fuel ratio correct for driveability and emissions. Keep in mind that when we say Long Term or Short Term, we are talking in computer time, not human time. In your ECM the Long Term fuel adjustment (BLM) happens about twice per second, while the Short Term fuel adjustment (INT) happens about 20 times per second. It uses fuel tables stored on your MEMCAL's EPROM. If your O2 sensor detects your engine is running excessively rich, it will decrease the BLM which leans out the mixture. If your O2 sensor detects your engine is running excessively lean, it will increase the BLM which richens the mixture. If you jump on the gas, and the fuel tables don't provide correct fueling, the O2 sensor detects this condition and rapidly adjusts the fueling via the INT. If the condition is consistent then it will change the BLM.
BLM Cells
The fuel delivery strategy uses a two dimensional table that has four rows and four columns, for a total of 16 "cells". Each cell contains a BLM value (from 0 to 255), which represents a long-term fuel correction based on that cell's operating conditions over a relatively long period of time. Each BLM value in turn contains an INT value (also from 0 to 255), which is a short term fuel correction based on immediate operating conditions. For both the INT and BLM values, a higher value represents a correction that adds fuel to the fuel mixture by increasing the Pulse widths of the Fuel Injectors.
|
MAF / RPM |
0-800 rpm |
800-1100 rpm |
1100-1500rpm |
1500 +rpm |
|
0 9 GPS |
Cell 0 |
Cell 1 |
Cell 2 |
Cell 3 |
|
9 20 GPS |
Cell 4 |
Cell 5 |
Cell 6 |
Cell 7 |
|
20 30 GPS |
Cell 8 |
Cell 9 |
Cell 10 |
Cell 11 |
|
30 - + GPS |
Cell 12 |
Cell 13 |
Cell 14 |
Cell 15 |
The table above depicts the BLM cell table that is held in the typical 8F code ECM. As you can see, it is offset by rpm in the columns, and by airflow in the rows. The individual cells are numbered 0 through 15 (for a total of 16 cells). So, the cell being accessed at any given point in time is controlled by airflow versus rpm.
Examples
Let's say the car is sitting in the driveway in Park, up to temperature, and just idling. In that case:
* RPM = 750 * MAF = 6
Since the RPM is very low and the MAF is very low, the car will be using the information in BLM Cell 0 to adjust the idle fuel mixture. The value contained in that cell is adjusted with the Integrator values (which changes based on O2 readings, etc.).
Now, let’s go for a typical highway cruise, at about 65mph, on a nice flat road:
* RPM = 1800 * MAF = 22
Since the RPM is above the highest value in the column to the right, and the MAF is reading a value in the “third” row, we can see that the ECM is now accessing, and using the BLM value in cell 11. Cruise conditions will often move between cells 7 and 11 based on small changes in MAF, since the typical highway cruise value is between 15 and 25.
Typically when you pull away from a stop sign or traffic light in fairly normal circumstances, you’ll see that it takes only a second or so for the RPM to jump over the 1500 upper RPM limit, and the MAF (air flow) will very easily jump up over the 30 gps upper MAF limit. In this example the ECM will be using cell 15 (sometimes erroneously called the WOT cell) (WOT meaning Wide Open Throttle).
The INT in action
On a cold start the INT is set to 128 and kept there until the following conditions are met:
- The coolant reaches a threshold value
- A timer says the engine has been running long enough
- The O2 sensor has warmed up and started responding.
Once those conditions are met, the ECM then sets the closed loop flag. In Closed loop mode the ECM adds to the INT in small increments until the O2 voltage goes above a threshold so the ECM knows the engine is now rich, then it starts subtracting from the INT until the O2 voltage goes below another threshold and the engine is lean. The ECM keeps cycling the INT, trying to keep the time spent rich equal to the time spent lean so it knows that the average is stoichiometric. If other conditions are met then the learn control flag is set and the ECM keeps a moving average of the INT values. If this average is not 128, it will add to or subtract from the current BLM value to move the INT average towards 128. This is done a few times a second, without the INT ever having to get to an extreme value such as 90 or 150. The normal BLM range is 105 to 150, but even if the BLM has reached one of these limits the ECM is still able to keep the engine averaging stoichiometric so long as the INT is not also at a limit. For example, the BLM could be 150 and the INT ranging between 135 and 145.
You can watch this process by datalogging. The ALDL update rate will keep you from seeing all of the INT values but you will still see the long-term trends. Start the engine and let it warm up so that learn mode is enabled, then pull the vacuum hose off of the fuel pressure regulator. The fuel pressure will jump up 4-7 psi and the engine will go rich. The INT will drop below 128 and go down until the engine finally goes lean or a limit is reached. The INT will then go up and down over a range of maybe 10-20 units as the ECM keeps the engine bouncing between rich and lean, and the BLM will start dropping. As it does, the average INT will rise back to 128. Once the INT average is 128 the BLM will stop changing. Put the vacuum hose back on, the fuel pressure will drop, the engine will go lean, and the opposite will occur. The INT will rise and start bouncing up and down. After that the BLM will rise, the INT average will eventually reach 128, and the BLM will stop changing again.
Summary
BLM values are divided in to "Cells" based on MAF vs. RPM. Within each cell, there typically values from 105-150 for the BLM. Within the BLM value, there are Integrator values, typically 105-150 also.
The Integrator is adjusted based on sensor feedback (primarily the O2 sensor) to make real time adjustments for varying conditions. If the adjustments cannot be made in a INT value, then the BLM value is either increased (add fuel) or decreased (subract fuel) to compensate. However, if the INT has not exceeded the max or min INT values set in code, the BLM will not be incremented/decremented.
If you reach the "corner" of an individual cell and no further adjustment is possible, the car may not run correctly. In that case, it is likely there is a problem with the calibration, a critical sensor, or your fuel injectors may be sized incorrectly.
It all sounds very intimidating, but really isn’t. One must keep in mind that the changes that are being made, as in the INT for example it is happening at close to 20 times per second. Think of it this way; The INT is used to “drive” the BLM number toward a value needed to maintain stoichiometric A/F ratio. As in one of the examples above, make a radical change (such as removing the fuel pressure regulator’s hose) and watch the INT adjust. The INT will jump to a high value, and hover there while the BLM starts its “march” up the scale. As the BLM approaches the value needed to get the A/F ratio corrected you’ll see the INT value heading back down toward 128. Ideally, they will both meet at 128 at about the same time. It’s really neat stuff to watch.
Parts of this article were adapted from V6Z24.com by Darkknight. The original author of those parts was Burn

