How to MegaSquirt your Ford Zetec Engine
If you haven’t already, please read the ‘disclaimer’ at the top of the parent page here.
Updated 6/1/2018: MS3 and variable cam timing added
Applications: This works for the 2.0 or 2.3 Zetec engine installed in many Fords, including the Focus, Escort, Cougar, and Contour / Mondeo. This engine is also a popular choice for kit cars. Both MS2/Extra and MS3 have excellent support for the factory crank trigger (for MS3Pro, see section 5.3.39 of the MS3Pro documentation). This page also includes instructions for using other MegaSquirt variants.
The mods in this article also apply to many other Ford four cylinder motors. For example, the 1.9 CVH and 2.0 SPI engines found in ’91 and later Escorts and some Focuses also used a similar ignition system, along with many European Fords. The ’91-’95 Escorts had an external EDIS module, while ’96 and later US market cars all had the ignition control built into the ECU.
Most Zetecs use a coil pack with a simple wiring setup – the center terminal gets 12 volt power, the side terminals each fire the two spark outputs on their respective sides of the coil.
These engines, at least in US market versions, are equipped with variable cam timing. The exhaust version is more of an emissions control feature, but the MS3 can control it. The SVT Focus version also used variable cam timing on the intake; controlling this can help get a wider powerband.
Using an MS3 V3.0 or V3.57 to control ignition and Variable Cam Timing
We recommend using an MS3X expansion board and QuadSpark ignition module if using an MS3 V3.0 or V3.57 board on these engines. (If using an MS3Pro instead, see section 5.3.39 of the MS3Pro documentation.)
You will want to configure the board for VR input.
- For a V3.0 board, jumper TachSelect to VRIN and TSEL to VROUT.
- For a V3.57 board, put the JP1 jumper in the 1-2 position and the J1 jumper in the 3-4 position.
MS3 TunerStudio settings
- Spark mode: Zetec VCT
- Ignition input capture: Falling Edge
- Spark output: Going High
- Number of coils: Wasted spark
- Spark hardware in use: MS3X spark
- Dwell type: Standard dwell
We recommend starting with 2.5 ms dwell for stock Zetec coils.
Direct Coil Control Distributorless Ignition on a Megasquirt-II V3.0 or V3.57 Board
Using MS2/Extra firmware, version 2.0.0 or higher
These mods use two BIP373 mod kits.
Hardware mods required:
- Build the VR conditioner circuit, as described in the MSExtra MS2 Manual. All our preassembled Megasquirts with the V3.0 or V3.57 board come with this circuit installed.
- Jumper TachSelect to VRIN. (V3.57: Set JP1 to the 1-2 position.)
- Jumper TSEL to VROUT. (V3.57: Set J1 to the 3-4 position.)
- You may need to adjust the VR trim pots, R52 and R56, when this is installed on a running engine. A usual base setting is to turn them all the way counterclockwise.
- Jumper IGBTOUT to IGN to send to IGBT ignition coil driver signal out of pin 36 on the DB37. (not needed on a V3.57)
- Cut out R57 if fitted (This won’t be there on my units, though.).
Now for constructing the outputs…
- Get a 330 ohm 1/4w resistor and cut the leads down to about 1/2″ at each end. Maybe a bit less.
- Tin each end of the resistor with a bit of solder.
- Cut a 5″ piece of hookup wire (22ga is fine) and strip just a 1/8″ or so. Tin the stripped wire with solder.
- Melt the tinned wire tip to one end of the tinned 330 ohm resistor tip and let it cool.
- Heatshrink wrap this wire/resistor assembly.
- Use this wire/resistor combo to jumper the ‘top’ (top as in when you facing the silkscreen side of the PCB, with the text so that you can read it normally) lead of R26 to IGBTIN on the opposite side of the PCB. (On a V3.57, this is kind of tricky. It’s easier to use pin 7 on the U1 socket instead.)
- Now, you will be constructing duplicates of this BIP373 circuit for each coil output you need. You will be using outputs A through D on a V8. You can mount the additional BIP373s on a second heat sink stacked on top of the first, attached on top with long screws. Or you can mount the BIP373s to the case.
- Each BIP373 will need a resistor-on-a-wire assembly, running to its left leg. You will get the BIP373 input signal from the following locations:
Output | Input Location (V3.0) | Input Location (V3.57) |
Spark A | Top of R26 | U1 pin 7 |
Spark B | Top of R29 | U1 pin 8 |
- The center leg of the BIP373 is its spark output. We have found that the IAC traces can carry enough current for normal use, so you can use one IAC trace for each spark output. You may need to add an extra connector with the V3.0 on 12 cylinder applications, or if you are running a stepper IAC. You can use this pinout if you are not running a stepper IAC, for up to 8 cylinders.
Output | Board connection | DB37 pin |
Spark A | IGN | 36 |
Spark B | IAC2B | 31 |
Our assembled V3.57 MS2s are already built for stepper IAC control, so this is the pinout they use.
Output | Board connection | Output pin |
Spark A | IGN | DB37 pin 36 |
Spark B | IAC2B | DB15 pin 10 |
- Connect the right leg of each BIP373 to a ground, such as the proto area ground or SG pins. It’s best if you can find a separate ground for each BIP373.
External wiring:
- Connect the VR sensor to pin 24 and the shielded ground wire.
- Connect the negative terminals of the coil to the pins specified in the above pinout.
TunerStudio settings required:
Under Tach Input / Ignition Settings:
- Set Spark Mode to “Toothed Wheel.”
- Set the trigger angle / offset to 0.
- Set Ignition Input Capture to “Falling Edge.”
- Set Spark Output to “Going High (Inverted).” Setting this wrong can overheat the BIP373s or damage the coils.
- Set Number of Coils to “Wasted Spark.”
- Set Spark A output pin to D14.
Under Trigger Wheel Settings:
Some settings are the same for all engines.
- Trigger Wheel Arrangement: Single wheel with missing teeth
- Trigger Wheel Teeth: 36
- Missing Teeth: 1
- Wheel Speed: Crank Wheel
- Tooth #1 Angle: 80
Enable dwell control and adjust as needed to match the coils you are using. Set the dwell at a very low value to start with (we’ve found Ford EDIS coils have especially short dwell times) and increase it slowly. Back it off if the BIP373s become hot to the touch.
EDIS on a Megasquirt-I V2.2 Board
Using MSnS-E firmware
Hardware mods required:
- Remove D5, D8, R10, and the XG1-XG2 jumper.
- Jumper XG1 to the right hole of D5.
- Install a 1K resistor in place of D8.
- Run a jumper from the bottom hole of R10 and the banded side of the D9 diode.
- Use a 750 ohm to 1K resistor to connect the right side of R23 to the negative side of D17.
- Run a wire from the negative side of D17 to X11 to bring the SAW output out on the DB37 pin 25.
External wiring:
- Connect the EDIS PIP signal to pin 24.
- Connect the EDIS SAW signal to pin 25.
MegaTune settings required:
Under Codebase and Output Functions:
- Set EDIS on, and all other code types off.
- Set LED17(D14) Function to Spark Output A.
- Turn off all other spark outputs.
Under Spark Settings:
- Set Trigger Angle and Trigger Angle Ignition to 0.
- Set Cranking Timing to Trigger Return.
- Set Hold Ignition to 0.
- Set Spark Output Inverted to Yes.
- Do not select oddfire.
Under Dwell Settings:
- Specify Fixed Duty, 50% duty cycle.
DIYAutoTune.com has a detailed write-up about EDIS here.
EDIS on a Megasquirt-I V3.0 Board
Using MSnS-E firmware
Hardware mods required:
- Remove C30.
- Run a jumper from the top hole of C30 to S12C.
- If building the board from scratch, you do not need to include D1 or D2, but they do not need to be removed.
- Replace R12 with a 1K resistor.
- Remove the XG1 to XG2 jumper, and jumper XG1 to TachSelect.
- Jumper OPTOUT to TSEL.
- Connect a 750 ohm to 1K resistor from the right side of R24 or the 5V hole in the proto area to the negative lead of D14.
- Run a wire from the negative lead of D14 to the IGN jumper hole on the opposite side of the board to bring the SAW output out to pin 36 of the DB37 connector.
External wiring:
- Connect the EDIS PIP signal to pin 24.
- Connect the EDIS SAW signal to pin 36.
MegaTune settings required:
Under Codebase and Output Functions:
- Set EDIS on, and all other code types off.
- Set LED17(D14) Function to Spark Output A.
- Turn off all other spark outputs.
Under Spark Settings:
- Set Trigger Angle and Trigger Angle Addition to 0.
- Set Cranking Timing to Trigger Return.
- Set Hold Ignition to 0.
- Set Spark Output Inverted to Yes.
- Do not select oddfire.
Under Dwell Settings:
- Specify Fixed Duty, 50% duty cycle.
DIYAutoTune.com has a detailed write-up about EDIS here.
Direct Coil Control Distributorless Ignition on a Megasquirt-I V3.0 or V3.57 Board
Using MSnS-E firmware
This uses two BIP373 mod kits.
Hardware mods required:
- Build the VR conditioner circuit, as described in the MSExtra MS-1 Manual. All our preassembled Megasquirts with the V3.0 or V3.57 board come with this circuit installed.
- Jumper TachSelect to VRIN. (V3.57: Set JP1 to the 1-2 position.)
- Jumper TSEL to VROUT. (V3.57: Set J1 to the 3-4 position.)
- You may need to adjust the VR trim pots, R52 and R56, when this is installed on a running engine. A usual base setting is to turn them all the way counterclockwise.
- Jumper IGBTOUT to IGN to send to IGBT ignition coil driver signal out of pin 36 on the DB37. (V3.0 only)
- Cut out R57 if fitted (This won’t be there on my units, though.).
Now for constructing the outputs…
- Get a 330 ohm 1/4w resistor and cut the leads down to about 1/2″ at each end. Maybe a bit less.
- Tin each end of the resistor with a bit of solder.
- Cut a 5″ piece of hookup wire (22ga is fine) and strip just a 1/8″ or so. Tin the stripped wire with solder.
- Melt the tinned wire tip to one end of the tinned 330 ohm resistor tip and let it cool.
- Heatshrink wrap this wire/resistor assembly.
- Use this wire/resistor combo to jumper the ‘top’ (top as in when you facing the silkscreen side of the PCB, with the text so that you can read it normally) lead of R26 to IGBTIN on the opposite side of the PCB. (On a V3.57, this is kind of tricky. It’s easier to use pin 7 on the U1 socket instead.)
- Now, you will be constructing duplicates of this BIP373 circuit for each coil output you need. On these motors, you’ll be using spark outputs A through D. You can mount the additional BIP373s on a second heat sink stacked on top of the first, attached on top with long screws. Or you can mount the BIP373s to the case.
- Each BIP373 will need a resistor-on-a-wire assembly, running to its left leg. You will get the BIP373 input signal from the following locations:
Output | Input Location (V3.0) | Input Location (V3.57) |
Spark A | Top of R26 | U1 pin 7 |
Spark B | Top of R29 | U1 pin 8 |
- The center leg of the BIP373 is its spark output. We have found that the IAC traces can carry enough current for normal use, so you can use one IAC trace for each spark output. This is our recommended pinout, which we use in our assembled ECUs.
Output | Board connection | DB37 pin |
Spark A | IGN | 36 |
Spark B | IAC2B | 31 |
- Connect the right leg of each BIP373 to a ground, such as the proto area ground or SG pins. It’s best if you can find a separate ground for each BIP373.
External wiring:
- Connect the VR sensor to pin 24 and the shielded ground wire.
- Connect the negative terminals of the coil to the pins specified in the above pinout.
TunerStudio settings required:
Under Codebase and Output Functions:
- Set Generic Wheel on, and all other code types off.
- Set one spark output for every two cylinders.
- Turn off all unused spark outputs.
Under Wheel Decoder Settings:
Some settings are the same for all engines.
- Wheel decoder base teeth: 36
- 2nd trigger enable: Off
- Missing Teeth: -1
- Dual dizzy mode: Normal
- Wheel decoder routine: 025 style
Use these wheel decoder settings.
Trig pos A | Trig return pos A | Trig pos B | Trig return pos B | Trig pos C | Trig return pos C | Trig pos D | Trig return pos D | Trig pos E | Trig return pos E | Trig pos F | Trig return pos F |
3 | 8 | 21 | 26 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Under Spark Settings:
- Trigger Angle: 60
- Trigger Angle Ignition: 0
- Cranking Timing: Trigger Return.
- Set Spark Output Inverted: Yes. Setting this wrong will overheat the BIP373.
How To MegaSquirt Your Ford Zetec Engine
Enable dwell control and adjust as needed to match the coils you are using. Set the dwell at a very low value to start with (we’ve found Ford EDIS coils have especially short dwell times) and increase it slowly. Back it off if the BIP373s become hot to the touch.
EDIS on a Megasquirt-II V3.0 Board
Using standard MS-II Firmware
Hardware mods required:
If you’re assembling your MegaSquirt-II from a kit (Part# MS230-K):
- Build the ECU up to trigger from the Hall/Optical Input.
- Jumper JS10 to IGN to bring the ignition output directly to pin 36.
If you’re modifying a DIYAutoTune.com MS230-C MegaSquirt-II Assembled ECU:
No mods are required; our units are set up for EDIS out of the box.
External wiring:
- Connect the EDIS PIP signal to pin 24.
- Connect the EDIS SAW signal to pin 36.
MegaTune settings required:
Under “Base Ignition Settings,” make the following settings.
- Trigger Offset: 0 degrees
- Predictor Algorithm: Last Interval
- Ignition Input Capture: Rising Edge
- Cranking Trigger: Calculated
- Coil Charging Scheme: EDIS
- Spark Output: Going High (Inverted)
DIYAutoTune has a detailed write-up on using MS-II with EDIS for further reading.
Other things the ECU controls
The ECU on these cars typically controlled a lot more than fuel and spark. In particular, on Focuses we recommend using a parallel installation to keep the stock ECU in control of the gauges. See this article for more tips about parallel installations. Most earlier applications can ditch the stock ECU altogether if you have a manual transmission. Because of the wide variety of cars these motors came in, this advice will need to be a bit generic.
Air Conditioning: Most of these cars simply have the ECU activate a relay to cut off the A/C at full throttle; the A/C otherwise works on its own.
Automatic transmission: All factory Zetec cars have the automatic transmission controlled by the stock ECU. If you have one of these, you will need to retain the stock ECU for transmission control.
Cooling fans: These can be run with a relay control mod.
Fuel pump: Cars with return type fuel systems can have the MegaSquirt control the fuel pump relay through its fuel pump output on pin 37. For cars with returnless fuel systems, we recommend leaving the stock ECU in control of this.
Gauges: On the Ford Focus, the ECU controls the gauges over a network, so we recommend leaving it in place for gauge control. On earlier cars, the only ECU controlled gauge is the tachometer. This can be controlled from an EDIS tach output, or you can modify the ECU for tachometer control. See the tach output circuits in the MS1/Extra and MS2/Extra guides.
Idle speed: These use a 2 wire PWM idle air control valve which can be controlled using the standard output circuit on a V3.57 board. V2.2 and V3.0 boards can control this using our MK-PWMIAC mod kit.
What to Order
If you’re buying an assembled unit, it will need special mods to work with the ignition, as described above. We can install these for you for an extra charge; please contact us for details.
If you’re building your unit from a kit, here is what we recommend.
MS230-K MegaSquirt II V3.0 Kit
2 x MK-BIP373 to add coil drivers
MK-PWMIAC to control the IAC valve
MK-RelayCtrl for relay outputs, as needed
JimStim-K JimStim kit
MSHarness12 12′ wiring harness (If you are wiring up a kit car from scratch, you could instead use a relay board, relay cable, and 12′ wire bundle, as shown on the kit car on this page)
TuneCable6 serial cable
USB-2920 if your computer doesn’t have an adapter port
If you are doing a parallel installation, we also recommend giving the MS its own coolant and air temperature sensors:
CLTIATwPiggy Closed element CLT sensor
IATwPiggy Open element IAT sensor
We also recommend a wideband oxygen sensor system for tuning.
DIYAutoTune is a MegaSquirt EMS/EFI manufacturing and distribution company.