Overview
Trying to get VEMS to run in a plug and play fashion on a 1997 Seat Cordoba SX, with a 2.0-16V engine (engine code ABF). The current engine hardware:
- 60 trim T3 Garrett with 0.63 AR turbine
- Audi external wastegate
- Stacked headgaskets
- 440cc/min highZ injectors, with 750cc/min lowZ planned for later
- Just over 1 bar boost
- Mapped water injection with aquamist HSV solenoid
Sensors
- Hall-effect type crank sensor on a 60-2 trigger wheel (15th tooth at TDC; counting convention used is missing tooth#1 is 0th tooth and missing tooth#2 is 1st tooth)
- Hall-effect sensor on camshaft for camsync (1-window trigger wheel)
- Bosch coolant temperature sensor
- GM open element air intake temperature sensor
- Two stock Bosch 3-wire knock sensors
Standard actuators
- Single Bosch coil triggered by Bosch ignition module located just under the coil. Original ECU controlled the dwell. Now swapping to waste-spark using VAG coil from 2000 Golf 2.0-8V
- 2-wire 4-ohm Bosch idle control valve, operating at around 140Hz
- Currently 440cc highZ injectors, but hopefully the VEMS will be able to idle the new lowZ 750cc injectors without problems
- RPM signal from ECU to instrument cluster to drive tachometer
Extra actuators
- High current PWM driver for aquamist water injection high speed valve (HSV)
- 2 stage shiftlight using 2 large LED's
- Intake air temperature based output to drive intercooler spray solenoid
- Boost control using Cosworth or Saab boost solenoid
- one EGT using k-type thermocouple in exhaust manifold
- Noritake VFD 4x20 LCD-pin-compatible display to replace the blue LCD ordered from webshop
- One wideband bosch LSU4 sensor
Wiring
Proposed wiring for ABF to VEMS plug and play loom:
Description | ABF ECU pinout | VEMS Econoseal pinout | VEMS channel |
Main grounds | T68/1 | EC36-5,21,32,22 | |
Sensor grounds | T68/33 | EC36-26 | |
Air temp sensor | T68/36 | EC36-2 | |
Coolant sensor | T68/14 | EC36-14 | |
TPS signal | T68/40 | EC36-1 | |
Crank sensor power | T68/68 | EC36-28 (for 5V) or T68/38-EC36-25 (for 12V) | |
Crank sensor signal | T68/67 | EC36-27 | |
Camshaft sensor power | T68/46 | EC36-28 (for 5V) or T68/38-EC36-25 (for 12V) | |
Camshaft sensor signal | T68/44 | EC36-13 | |
Switched 12v power | T68/38 | EC36-25 | |
TPS reference voltage | T68/41 | EC36-29 | |
Ignition coil output 1 | T68/8 | EC36-35 | I259_0 |
Ignition coil output 2 | External wiring | EC36-33 | I259_1 |
Idle control valve | T68/27 | EC36-18 | INJFET_7 |
Injector 1 | T68/24 | EC36-7 | INJFET_0 |
Injector 2 | T68/25 | EC36-19 | INJFET_1 |
Injector 3 | T68/26 | EC36-8 | INJFET_2 |
Injector 4 | T68/2 | EC36-20 | INJFET_3 |
Injector 12V common | External wiring | EC36-23 | |
Fuel pump relay | T68/6 | EC36-15 | P259_5 |
Tachometer signal to cluster | T68/22 | EC36-10 | I259_7 |
Knock sensor 1 signal | T68/34 | EC18-3 | |
Knock sensor 1 ground | T68/32,10 | EC18-2 | |
Knock sensor 2 signal | T68/57 | EC18-3 | |
Knock sensor 2 ground | T68/55,56 | EC18-2 | |
Boost control | T68/31 (Charcoal canister) | EC36-6 | INJFET_6 |
Shift light 1 | External wiring (350mA) | EC36-4 | P259_0 |
Shift light 2 | External wiring (350mA) | EC36-16 | P259_1 |
Coolant fan | External wiring (350mA) | EC36-31 | P259_6 |
ALS kicker solenoid | External wiring (Needs external flyback diode) | EC18-12 | SPECFET_0 |
Water injection HSV solenoid (PWM) | External wiring | EC36-24 | I259_6 |
Intecooler water spray solenoid (on-off) | External wiring (350mA + 5 pole relay for override) | EC36-30 | P259_7 |
Unused outputs:
- SPECFET_1
- WOT actuator
- RPM actuator
- WB heater#2
- INJFET_4
- INJFET_5
- I259_2
- I259_3
- I259_4
- I259_5
- Stepper S259_3, S259_4, S259_5, S259_6
- Idle solenoid P259_4
Input trigger
Proposed Primary trigger settings:
- Edge: Rising
- Type: Multitooth
- Filtering: Disabled
- Advanced filtering: Disabled (NOT SURE WHAT THE FUNCTION OF THIS FILTER IS YET; waiting for EricN's page to update?)
- Special N-1: Disabled
- Fiat Stilo: Disabled
- TDC after trigger: 60
- Number of teeth on wheel: 58
- Trigger tooth: 3
- Next trigger tooth: 30
- Crank min period: 3750 usec
- Angular width of tooth: 2
- Tooth relation Normal: 122 (irrelevant with multitooth advanced filter disabled)
- Tooth relation Missing: 181 (irrelevant with multitooth advanced filter disabled)
- Angular width of missing teeth: 6
- Engine phase: 240
Proposed secondary trigger settings (not very well documented in the manual, but I might not end up using this trigger):
- Active: Enabled?
- Edge: Rising?
- Edge while cranking: single?
- Filtering: disabled?
- Type: coil type?
- Use: Alien advance?
- Rising edge phase: ?
- Falling edge phase: ?
Fueling
Req fuel = 6.49 * (D / N / I) = 6.49 * (1998/4/506) = 6.4ms (42lb injectors)
Req fuel = 6.49 * (D / N / I) = 6.49 * (1998/4/862) = 3.8ms (72lb injectors)
It's recommended to halve this req-fuel, so the max VE entries will be (instead of 100) around 200 (or even up to 255) for better precision. Thanks for this suggestion, hence new req_fuel will be 3.2ms and 1.9ms for the two injector sizes respectively.
Ignition
For single coil setup (coil=>00):
ignchmax=00
h[2]=00 00 00 00 00 00 00 00
For wastespark setup (1+4=>00 and 2+3=>01 paired up):
ignchmax=01
h[2]=01 00 01 00 01 00 01 00
If COP used, then wire up coils to IGBT's as follows (assuming 1-3-4-2 firing order): 1=>00 4=>01 3=>02 2=>03
For COP running in normal COP mode:
ignchmax=03
h[2]=03 01 02 00 03 01 02 00
For COP running in wastespark mode (1+4=>00 and 2+3=>01 paired up):
IGN_DUALOUT=Enabled
ignchmax=01
h[2]=01 00 01 00 01 00 01 00
Idle valve settings
ISV details...
Boost control
Boost control settings...
ALS
- check MembersPage/GaborRacz/NewAlsLaunchAndOthers
- AND [v3.x shop item] for analog inputs available with your product options
Mapped water injection
Looking for the best hardware solution to (PWM) drive the water injection solenoid according to a 3D map, or at least in scaled proportion to the fuel injectors' pulsewidth (i.e. VE map).
The staging code should work for this.
Installation problems
I made two mistakes in the rush to install the VEMS on the vehicle:
First I connected the coil to channel0 as I was following Phatbob's writeup. I got no spark. Turns out channel0 is configured as a logic output. I transferred the coil to channel1, and now i have spark. I'm just wondering if I damaged the channel0 output, and whether I will be able to use it for other purposes in the future.
After getting no fuel out the injectors, I tested them with an LED on the connector. Nothing. CHecked the software settings. They seemed fine. Turns out I made the big error. The bigger problem was forgetting to connect pin 23 to injector +12V common. I know it's a silly mistake. I know it's mentioned 100000 times in the manual. I know. Too late now. I guess this is one of the problems of plug-and-play looms. No excuses though. I connected pin23, tested injectors again and they're still not being actuated so I guess I damaged something.
- What do I need to change now on the Genboard?
- Shipping it back is not the best option. I have access to people who can solder SMD => FETs are not SMD, but TO220 throughole.
- note that first you want to know if anything was damaged at all. If injector PWMing was on (not 100% and 25.5msec), than damage is likely. If injector PWMing was off (100% or 25.5msec) than there is some hope.
- even if you damaged 4, there are 4 spares so it is possible to get it running
- normally these spare are used to drive fuelpump relay, iac solenoid, etc... If no free left, and you use P259 outputs to drive (say fuelpump relay or solenoid or other inductive load), please install a diode (which acts as flyback, to provide extra protection for P259 instead of the weaker protection inside the chip; when you use it for essential functions, reduce risks, especially if spare FETs are blown earlier) across the inductive load
- the stripe-marked cathode connected to the +pin of the inductive load
- anode connected to switched point (-pin of the inductive load).
Testing Injector outputs
5..60W 12V lightbulb is best for testing. Connect as if it was an injector.
See TerminalProgram
http://www.vems.hu/wiki/index.php?page=GenBoard%2FManual%2FDigitalOut
Note that it is essential that h[0] is set up for injector outputs to be actuated (even if used for other outputs)
The standard injgroup h[0] table is:
h[0]=01 02 04 08 10 20 40 80
With this injgroup (h[0] table):
- mdh80 will turn on channel 0 (A)
- mdh90 turns on channel 1 (B)
- mdha0 turns on channel 2 (C)
- mdhb0 turns on channel 3 (D)
- ...
- mdhf0 turns on channel 7 (H)
When output is turned on (activated), output is pulled towards ground (GND5 to be precise, but you have all GND5 connected to GND anyway).
Measure across the lightbulb, that is between +12V and the tested output. Document what you measure.
- dump config and tables via (Man) mcd, mct
- publish the results via FileArea
- look for ..._channel=.0 because those might trick you to think a given injector output is bad, when in fact only turned off by some misconfigured function (like coolant, or RPM, or TPS based, or iac, or boost or whatever output).