MembersPage/Gabor (2006-03-16 04:43:08)

Table of contents

MembersPage/Gabor/Iac

MembersPage/Gabor/TachSignal


Injector h[0] problem, SOLVED: it was a compiler bug

I'm installing a VEMS 3.1 on a turbocharged Mitsubishi Colt (port injection, 4 cylinders). Since I wired injectors from OEM ECU to VEMS, 1 cylinder is not working. The injector setting was sequential; h[0]=01 02 04 08 ..., alternate=3. I turned off one and one injectors in h[0], so determined which cylinder has the problem (01 alias INJA) I tried:

And the astonishing solution: I put 01 injector one step right in h[0] and the problem solved (h[0]=00 03 04 08). After I tried many combinations. Some of them explained below:\nÿ1ÿ

Notice that row 1 and 2 should have been the same, but only one of them working, in the other case 04 cylinder is not working. The situation is the same in the second two cases as well.

Just now I'm using h[0]= 00 05 00 0A setting and engine is working right. BUT WHY DO I HAVE PROBLEM WITH THE FIRST BIN OF h[0]?

Everyone was thinking (reasonably) that another function is using the injector channel. Marcell checked himself that all channel settings was FF in mcd output.

Problem is under investigation, see bottom of GenBoard/Manual/DigitalOut/Table. Hopefully not a loose pointer or sg. As a test I tried to disable some functions like LCD with mdd01 (also tried mdd0f mddf0 mddff) command, but mdh80 still ligths up test-LED for a very short time.

Firmware used (anyway experiences were the same with the lastest firmware): http://www.vems.hu/files/Gabor/firmware_szekeresg1.zip


Introduction

I installed a GenBoard v3.0 on a Suzuki Swift 1.3 8V.

Now the stock ECU handles only the ignition. A self-built GenBoard/VerThree v3.0 handles injection.

VE Learning experiences

I logged the factory ECU at almost all RPM-MAP area, and experienced, that lambda is 0.5V at low MAP and it is _ALWAYS_ 0.7-0.75V at high MAP (1 wire narrow band lambda sond). After I did some log with AVR in open-loop (my j[] table tuning) and saw that lambda variables between 0V and 0.9V depending on VE value. I did the logs above more times and draw the lesson: I should try to operate my EGO correction in closed loop mode always.

I completed the firmware (not committed, it is only in my firmware):\n

static inline void bangbang_ego(void)
{
	uint8_t target, ego_volt;

	if (engine.kpa250<260) target = config.ego_target; // 0.5V, 1kpa=4, 65kpa=260
	else if (engine.kpa250<320) target = 0x1F; // 0.62V, 80kpa=320
	else target = 0x26; // 0.75V

	ego_volt = ego_voltage();

Maybe you think this is dummy, but it works. There was a better solution a year ago (it was dropped when WideBand was proven; maybe it could come back instead of above hack): get the target voltage from l[] table.


Trigger in detail

I always had problem with cranking. I noticed that usually AVR doesn't get trigger at low RPM < 500 (LCD and logging with megatune confirms this). This installation problem is explained above.

I examined my trigger. I have two trigger wires (purple and green) which come from the distributor. I used ONLY the stock ecu for this measurement.

The results:

Alternating Voltage values measured with a simple DVM in V~ mode are peak2peak values divided by 2.82 (fake-RMS).

The lower-peak voltage must go below 0V. With 665mV DC and 60mV amplitude it obviously will stay above 600mV (not go below 0mV in any way). Obviously not good. Take 8 mins to review InputTrigger/AnalogSide and LM1815 datasheet. You need to use a series capacitor: eg. the 10uF 35V 1210 size cap that has pads onboard (from v3.1) so the signal on LM1815 input goes below 0V.

Unfortunately this board is a v3.0, and it has no pad for this series cap - because normally this is not needed at all (series cap added from v3.1 exactly for such hacks).

Just put the cap in instead of the 5k6 resistor, or cut a trace, or put into the external wiring.

PROBLEM SOLVED. I put a series 1uF cap into the external wiring, and now I have trigger at all rpm. I will change the 5k6 resistor soon to cap, but I have to buy one before.

Good. Could you please write 10..15 lines about ve-learning for newbies? Maybe onto page GenBoard/Manual/Fuel/VeLearning.

Stealing the trigger signal

The switched ignition signal (B16 on the schematic below), is tapped, and connected to AVR as primary trigger (trigg1).

The service manual, with the wire tapped and connected to AVR:

trigger.png

The circuit that I use to get this into the AVR 3.0

LM1815.jpg

OK, I see this is an early v3.0 with LM1815 soldered by you as the very first SMD soldering in your life :-)

MAPDOT

MAPDOT is working now and has been already in the firmware.

AVR vs stock ECU

I compared the stock ECU with a roughly tuned Genboard 3.0. I did some kickdowns and tuned the VE table at max MAP to be the NBO value about 0.7-0.8 V. So there are some more HP in the engine. I my opinion it will be at least 2-3% stronger above 5000 RPM.

I did the measure with street dyno 0.6.0

AVRvsSTOCK.png

AVR-STOCK.png

My wiring

I have throttle body injection so I used INJ_A (pin7 on Econoseal 36) on AVR. The connected an 5 ohm resistor to the injector channel of stock ECU (check engine don't lights). The wiring of the injector could be simpler but now I can change the injector control from AVR to Stock ECU or v.v. in 30 secs.

Of course the +13.8V RED wire is not directly connected to the battery, it is after the main relay. The injector's common should be after the relay of fuel pump, but if you don't want to wire a lot, you can connect it directly to AVR's 13.8V (RED wire).

Stock sensors on the car:

So here is my wiring. It's customized to my car so maybe you have to modify a little bit for yours.

Genboard_3.0_suzuki_wiring.gif

---

Could you upload your config and tables? Would like to take a look at the NBO2 config.. //Emil