This page is dedicated to Low-Z injector tuning, at BMW M30B34 turbo engine.
Injectors are the stock ones for this engine: Bosch part no. 0 280 150 200, maybe 270-300 cc/min @3/3.5bars (different sources say different values). R=~3 Ohms.
My previous calculation was for required fuel:
Req_fuel = 6.49 * (D / N / I) = 6.49 * (3450 / 6/ 300 cc/min) = 12.44 ms = 0x7C
Which seems to be on the high side. (So the injectors are not 'so' big for this displacement).
But engine was flooded with those values, finally I ended up with a Req_fuel of 5ms, and still I've got VE values of 20-30 (decimal) near idle. Idle is ~1ms pw.
I guess something is wrong with injector settings. I worked with the following settings:
UPDATE
2006.01.28
- Removed D100 diode, which finally seemed (you mean measured?) like a ~8 Ohm resistor instead, and now it looks like everything is fine, car is running again.
- Is it possible that removing the diode affects inj. closing significantly? Running tests showed that VE-table (at low-MAP, right?) isn't fit as good as it did before.
- I guess injpw had to be increased by 0.1 .. 0.2 msec or so. This might need significant VE change at MAP=10..20kPa (especially with big injectors => low req_fuel ) because the multipliers are small. In this case, easier to add 100..200usec to injopen variable (which was 0 before, I guess!). But you can easily calculate the necessary adjustment to VE (eg. if your result is to add req_fuel/33, that is MAP*VE=300=100*100/33, than VE+=30 at MAP=10kPa, VE+=20 at MAP=15kPa,VE+=10 at MAP=30kPa, and so on). This likely makes your VE table more realistic.
2006.01.22 Installed powerflyback, and everything changed a lot!
I had to raise VE table to 3-4x values, which are close to previous calculations. I guess it's because of much more quick injector closing time. After that, we were able to tune the car in an hour. Thanks, powerflyback! :)
The bad news is, after that we've killed some (10A) fuses (powering the injectors). Changed it two times, but had no chance to find reasons there (-8 degrees C, some snow, hard wind and dark). Finally we felt burned smell from the GenBoard... Fortunately the car almost brought us home before (no point to tow on the front).
New details: Flyback burned onboard:
D100 should have been removed when installing GenBoard/Manual/PowerFlyback. Thanx for the report, and sorry for the inconvenience.
GenBoard/Manual/PowerFlyback add-on looks fine however. Every fuse-kill (and finally, board-kill) happened at relatively high RPM with high loads. Injector settings were similar to the pic above.
Luckily, when D100 shorts it only kills fuse (injector fuse), other components should be safe.
Obsolete
I guess a PowerFlyback couldn't be a bad choice here.
If you're interested [here's] a datalog with starting, badly oscillating idle, and cruising home with unmapped car, etc.
For analysis I suggest my actual favorite: [MegaLogViewer] the first program which knows everything I wanted, not buggy (just a bit slow -java)
- Have you tried divider 2 (or is it 3 for 6cyl? I dont know), so no injection on every rotation -> twice longer pw.
- I'm not sure about inj calculations (and manual doesn't cover divider config), but let me guess: if (alternate+1)*divider should be equals to 6 in my case, then if I use divider=2, then I need to use alternate=2 which means to me that I have to form 3 injection banks?
- If above equation is true, using divider wouldn't twice inj-pw but cut into half! Please correct me.
- Divider means you get squirt every Nth trigger, Mostly suitable if you have injectors in banks. Doesnt affect pulsewidth at all. //Emil
- OK, I shouldnt say anything that I don't really know. I remember doubling pw from megasquirt, used with coil triggering.
- Powerflyback may help if pw is near 1mS, someone else may know it better.
If (injpwm14 + multfact(VBatt) * injpwm6 ) > 100% (at certain - low enough - VBatt) than it is railed at 100% (since that is the limit of the duty)
- To keep same current, example if pwm@14v=30% pwm@6v=70%, so is injpwm6=40% correct? Or what is this multfact(VBatt)?
- In my mind that seems correct.