Audi S2
This car is owned by a friend and I have been able to use it for some AudiTrigger testing. It has been a slow project as it's hard to allocate garage cycles.
It's a clean car with mostly handling and brake modifications but the 2.2L 5cyl 20VT "3B" engine was recently upgraded with some RS2 parts and a slightly bigger then RS2 turbo. The car is used on the road and for trackdays.
Engine managment specifics:
Firing order: 1,2,4,5,3
Ignition type: Distributor with Audi stock coil and stock powerstage. Driven with Stepper output A with no resistor in between. This is very similar to how Autronic drive ignition modules and active coils in all applications.
Note that 1.1.x does not officially support distributor yet. It can work, but keep a few things in mind
- Ignition set up like if it was a coil on plug setup but with the same output for all positions
- limit dwell in config so you always have 0.4 msec free, even at rev_limit. Don't forget ign_dwell6=00
- I think that we need an ON/OFF for overlapping dwell
- instead of that big, in some future 1.1.x, the available time will be detected automatically (by looking at the h[2] values), so there is no artificial limit (only the limit by the coil itself). Eg.
- when using same ign output for two consecutive events, 144 degrees - 400usec available (not always enough energy at high-RPM, depends on coil type and VBATT; short-dwell nissan coils might work up to 10000 RPM)
- when using wasted spark coilpacks (known to work), same ign output for two events 2*144 degrees apart, available=288 degrees - 400usec (more than enough). In this setup cyl1 is fired from it's own dedicated coil (cyl1 is a good choice because it is the natural choice for timing-light), cyl2+5 fired from same wasted-spark coil, cyl3+4 fired from the other wasted-spark coil.
- when using 5 coils: 720degrees - 400usec available (more than enough)
- instead of that big, in some future 1.1.x, the available time will be detected automatically (by looking at the h[2] values), so there is no artificial limit (only the limit by the coil itself). Eg.
1.1.22 airtempsensor calibration:
I fitted a 510ohm resistor in parallel with the 2700ohm pullup to get the recommended 428ohm pullup.
I used the 2252_256 file from: http://www.vems.hu/files/Firmware/release/ptc_airX_cltfactor.zip but found that it seem to be built for 490 ohm.
Can I expect a temp sensor curve for he recommended 428ohm pullup or should I replace with 490ohm to match the current file? This car can be mapped well enough for now and remapping it if the new file arrives within a week is no problem. -Jörgen
1.1.22 Auditrigger testing 2007-04-26.
440cc injectors and 4 bar fuel pressure, this is standard for the RS2.
- 440cc@3bar injectors ? so you effectively running 440 * sqrt(4/3) cc/min ?
- No, I think it's measured at 4 bar
Dump of some information and also some snapshots of wheelerror counter at the end of the file: http://www.vems.hu/files/MembersPage/JorgenKarlsson/AudiS2/20070426223513_dump.txt
There are at least one significant error in the configuration, the dwell is set too high for the available time at the max rpm. As 1.1.22 doesn't support distributor engines properly this cause loss of ignition at around 7200rpm. By lowering dwell a bit the rev limit can be set higher. On coil on plug engines the dwell can be kept at 3ms (allthough the coils on the coil on plug engines will likely like a bit less dwell.)
The WBo2 failed for some reason when we did some highway testing, it was late and we haven't checked what went wrong yet. I will check that nothing is wrong in wbo2 config.
Update: The WBo2 problem was caused by the sensor body being overheated. All air that reach the outside of the sensor has passed between the head and the wastegate or between the strut tower and the wastegate. This is not very related to exhaust temperature as it would not happen at high speed testing, but it would happen when we let off and cruised afterwards. The sensor recovers when it has cooled down. -Jörgen
1.1.22 Auditrigger testing 2007-04-25.
After updating the configuration with these setting the car started and ran with an ignition cut once in a while. After tuning the fuel somewhat while warming the engine the ignition stopped cutting. I suspect trigger errors but was not able to reproduce them when logging the wheelerrors.
The car now ran very smooth and the ignition seemed fairly stablem, not rock solid but more like +-0.5deg at idle.
- this canNOT be improved by adjusting the triggertooth to be able to use a lower TDC delay (now ign_tdcdelay=decimal 68deg). Always the last tooth is used for scheduling.
- maybe you use idle ign advance adjust ?
- The timing precision should be appr +-0.25 deg, and the tooth precision might be around +-0.2 degree (less than 1/10 of a 2.67 deg gap between teeth), which could theoretically be filtered a bit by using more than one tooth for timing: this is not planned (probably not worth the effort)
I have NOT fully indexed the car yet as wednesday is when we go to a car meet. The car sounded smooth enough for us to dare to carefully drive it to the meet even if it was not indexed.
I dry-reved the car to somewhere above 5k while checking the wheelerror counter in the terminal. It was fixed at W00. I need to fully index the ignition before going further.
This car will hopefully be done and reliable on May 5th as he is attendig the same track day as me on Mantorp Park.
- Keep in mind that this car has a distributor so the ignition order could be fucked up and I would not notice!
- chance is virtually 0 that ignition order deviates from the configured h[2]: since the h[2] always matches the configured h[1] reference tooth (so if ign goes to an output in some h[2] entry, always the matching reftooth configured in h[1] will be used as a reference, and actual timingtooth is calculated from that).
N+1 bench testing - TODO: move this, belongs to a subpage of InputTrigger/MultiToothNoneMissing
Config for 1.1.27 firmware 24+1 (started from Toyota Supra 24+1 config)
- See InputTrigger/MultiToothNoneMissing none_missing toothwheel. This is actually simpler than the missing tooth code. It is configured as "coiltype", but several variable that were "don't care" earlier are important now
- primary_trigger=07 # coil type, filtering, rising edge. Alternatively 06 would be falling edge (could be suitable for HALL, but not for VR)
- secondary_trigger=19 # camsync, rising edge; alternatively 1d is same, but with filtering
- tooth_wheel=18 # decimal 24 tooth (between cam pulses)
- trigger_tooth=01 # or upto 03
- ign_tdcdelay=C4 # 98 crankdegrees
- another_trigger_tooth=04 # 24 tooth / 6 cylinders
- tooth_width is allowed to be higher than 64 degrees. The missing tooth width is the upper byte. (there is no missing tooth anyway). Use 0 if the tooth distance is less than 64 degrees.
- tooth_wheel_twidth1=78 # decimal 120, that is 30 crankdeg per tooth
- tooth_wheel_twidth2=00
- since tooth_wheel_twidth2=00 it does not strictly require 1.1.27, it works since 1.1.11
These should not surprise anyone:
- RPM constant for 6 cyl = 2000 (=0x07d0)
- rpmk[0]=07
- rpmk[1]=d0
- alternate=15 # injgroups 5 .. 0 (fire all banks during cranking)
- ignchmax=05 # ignition 5..0
- reset_engphase_after=40 # since camsync is used
- h[1]=00 14 10 0C 08 04 .. ..
- h[2]=10 60 50 40 30 20 .. ..
- This table assumes that after ignch1: ignch2, ignch3, ignch4, ignch5 and ignch6 fire in this order. Which is recommended, but not actually wired this way in the Supra installed by Fero.
After the (secondary trigger) campulse (taken from the middle cam transceiver; not the other cam transceiver at cyl6 that was 360 crankdegrees offsetted), the (primary trigger) cranktooth is named tooth0 (first, topmost entry in the example h[1] reftooth table). Tooth 4,8,12,16 and 20 follow, in this order (going from bottom to top in MegaTune).
128 degrees (trigtooth=1 + ign_tdcdelay=98 crankdegrees) after tooth0 we have the TDC of cyl2 (connected to channel 1 in our example, that is 0x10 in the first entry of the h[2] ignition output table ).
10+1 trigger, config for 1.1.27 firmware - TODO: move this, belongs to a subpage of InputTrigger/MultiToothNoneMissing
- primary_trigger=07 # coil type, filtering, rising edge. Or 03 without filtering
- Alternatively 06 or 02 would be falling edge (suitable for HALL, but not for VR)
- secondary_trigger=19 # camsync, rising edge; alternatively 1d is same, but with filtering
- tooth_wheel=0A # decimal 10 tooth (between cam pulses)
- trigger_tooth=01 # 00 or upto 01
- ign_tdcdelay=C4 # 98 crankdegrees
- another_trigger_tooth=02 # 10 tooth / 5 cylinders
- tooth_width is allowed to be higher than 64 degrees (72 degrees in this case). tooth_wheel_twidth2=01 ("missing tooth width") is the upper byte. (there is no missing tooth anyway, so the variable is reused as the upper byte of toothwidth). Would be tooth_wheel_twidth2=00 if the tooth distance < 64 degrees
- 720/10=72 tooth_width=72*4=288=0x120 (tooth width 0x20=decimal 32, while upper byte is 01)
- tooth_wheel_twidth1=20
- tooth_wheel_twidth2=01
These should not surprise anyone:
- RPM constant for 5 cyl = 2400 (=0x0960)
- rpmk[0]=09
- rpmk[1]=60
- alternate=04 # injgroups 4 .. 0 (fire banks sequentially during cranking to minimize current draw during cranking.) alternate=14 fires all banks during cranking
- ignchmax=04 # ignition 4..0
- reset_engphase_after=40 # not actually used, it's just what GenBoard/UnderDevelopment/FirmwareChanges requests when camsync used
- h[1]=00 08 06 04 02 .. .. ..
- h[2]=10 50 40 30 20 .. .. ..
- This table assumes that cylinders are wired in fire order: ignch1, ignch2, ignch3, ignch4, ignch5.Note that the IGBTs are moved to upper nibble in 1.1.x firmwares (and 1.0.69 and above for 1.0.x firmwares.)
1 A 10
2 B 20
4 C 30
5 D 40
3 E 50
Auditrigger testing 2007-03-11: (note that this was before 1.1.22! so config was different)
- Today it was discovered that H[1]must be ... as specified on InputTrigger/AudiTrigger !!! This made the changes to the timing a bit more predictable.
- trigger_tooth was changed from trigger_tooth=1B to trigger_tooth=16 to get the timing about right while cranking (+-5deg)
- The engine started up on the first start attempt and after fitting the forgotten MAP sensor hose it idled. After some minor tuning of the area up to 2000rpm or so it would start up and idle when only turning the key. It syncronized and started supprisingly fast! It did however pop once in a while. The triggererror light in mt did NOT light up which make me wonder if something has gone bad in vemsv3.ini recently.
- The ignition timing was not stable, it would roll back and forth slowly maybe 15-20 degrees, it could then start to scatter sparks over the same 15-20 degee window. Only to go pack to rolling back and forth 15-20 degrees again. I haven't seen a pattern in this yet.
- I checked the wheelerror counter in terminal mode, at first I found that there was no wheel errors. Then I started the log to capture this and found that it started running rougher and now there was wheelerrors! I tried starting the car up again but could not get it to start without wheelerrors. It took a few more turns to start the engine now.
Final configuration taken from the car + log + mlp02mll capture of wheelerror: http://www.vems.hu/files/MembersPage/JorgenKarlsson/AudiS2/AudiS2_2007-03-11_bad_igntiming_wheelerrors.zip
Auditrigger testing 2007-03-10:
The more or less undocmunented 1.1.18 auditrigger configuration caused some trouble initially but it was solved after making some questions on IRC questions.
- The main difference is the lack of distributor support in 1.1.18, this means that ignchmax has to match the number of cylinders even on a distributor engine. So it's set to 4 instead of 0 in this case. The 4-0 channels then has to be set to the same output.
- The addition of overlapping dwell also cause some trouble as you currently have to limit the max dwell so it will never overlap in a distributor application. If it overlaps the output will stay on. I'm sure this will be fixed shortly as a distributor is a very common on high power engines.
- I didn't have time to fanny around when hearing that the H1 table previously had to start at 0, so I changed it at once and don't know if that was an issue in Kalske's configuration.
- There is still issues with this configuration, we ran out of battery and the timing light started resetting when cranking so we had to stop testing before we could get the base timing right. Timing issues seem to be related to low voltage to the timing light. Makes more sense now. Will see if I figure the rest out
Auditrigger testing 2007-02-23:
Secondary trigger
Tested secondary trigger and found that even with C40 upgraded to 1.2uF it does not prevent false triggs during the last third of the rev. This was very clearly seen on the scope.
A weak pulldown of 2.7k was fitted (1k resistors not available during the test) and the mode jumper was used to connect pin 5 of the secondary trigger 1815 to 5v. This removed most of the magnetic noise from the speed sensor wheel and improved signal quality a lot.
Signal was still very strong and for the next test a 1k resistor will be used.
Primary trigger
I forgot about that I configured the pulse length for the output signal to be shorter on the primary trigger, this resulted in a scope setting that was to slow to reliably see all pulses. The pulselength is now ca 30us with R57=33k, R57 is normally 75k which will prevent high rpm operation with Auditrigger.
This had the benefit of me scoping most signals around the LM1815 chip. The signal on the adaptive thresold pin (pin7) was interesting:
Add pin7 scope plot here.
When charging the capacitor the current is pulsed, with R181=150k this results in a very strong sawtooth signal. For Auditrigger R181 is most likely not needed and I bridged it in this application. We need to review this to check if it can cause problems!!! An additional capacitor to even out the signal could improve performance.
So far the tests has been run with R56=18k (has to be changed to 10k), no pulldown (1k will be fitted, signal is VERY strong at cranking).
Ignition:
Something is wierd with the ignition output, possibly an inductive load somewhere on the wire to the ignition powerstage. I didn't have time to investigate in the middle of the night. It produced a 0.5v negative sharktooth instead of a 5.6v positive square pulse. Very tired...