Back to MembersPage/NanassyPeter
15 minus 1 trigger installed on Inline 5 Audi engine
Primary trigger is a 15-1 (yes, missing tooth!) crankwheel with [GT101 HALL sensor]
(which pulls down when it detects ferromagnetic material and leaves the signal high in the gap, as pulled up by the pullup resistor).
- either falling or rising edge is OK with HALL sensor, but falling is "sharper", so
- primary_trigger=10 # (decimal 16); which means
The falling edge (metal coming in) right after the missing tooth is 2 teeth+60degs = 48 crankdeg + 60 crankdeg = 108 crankdegrees BEFORE TOP DEAD CENTER Cyl1
- trigger_tooth=3
- another_trigger_tooth=6
- ign_tdcdelay=97 (??? together with 3*4 teeth, this is 0x97 /2 + 72 = 147.50 crankdegrees that is very different from 108 crankdegrees )
Secondary trigger (HALL)
Pulse (falling or rising edge?) is set 10deg BEFORE primary trigger missing tooth.
trigger_tooth
- trigger_tooth=03 # 00 .. 01 or 03 ..04 might be candidate, a good variable to play with
- note that 02 or 05 will not work
- another_trigger_tooth=06 # next trigger tooth; 06 for sure, changing this will break things
trigger_tooth | teeth used for trigger |
00 | 0, 6, 12, 18, 24 |
01 | 1, 7, 13, 19, 25 |
02 | 2, 8, 14, 20, 26 BAD |
03 | 3, 9, 15, 21, 27 |
04 | 4, 10, 16, 22, 28 |
05 | 5, 11, 17, 23, 29 BAD |
As you see, 00 .. 01 or 03..04 are good values, 02 and 05 are BAD because tooth 14 and 29 simply does NOT exist. Because of the missing tooth, after 0..13 the toothcount jumps to 15 (tooth 14 is skipped), and after 15..28 it jumps to 0 (which would be same as 30, that is 2 cam rotations). Tooth 29 is skipped as well. This is the same situation as with a 6cyl 60-2, where another_trigger_tooth=14 (decimal 20) and 0..17 are valid for trigger tooth (18 or 19 is not, because 58 and 59 missing).
- ign_tdcdelay=9A # (decimal 154) ign TDC-delay: 77deg ; adjusted for good base timing
- normal tooth width=1
- missing tooth width=2
- reset_engphase_after=1e # engine phase when to reset=30
Camsync position
Main positions to take note of
- the first falling (metal coming to the GT101 HALL sensor) edge after missing tooth (tooth 0 if you like)
- than, after 3 tooth = 3*24 = 72 crankdegrees, cyl1TDC comes
- than, after appr 25 camdegrree = 50 crankdegree, the secondary trigger (CAM) falling edge comes (the window coming to the original audi cam-HALL sensor, remember it is "inverse" output, it pulls down when it sees air, not when it sees metal)
- as you see, camsync pulse comes
- more than 30 degrees ATDC cyl1
- but well before 50 crankdegrees BTDC cyl2
- as you see, camsync pulse comes
that should be fine (always come between the cyl1 and cyl2 sparktime), and match the ignition sequence (read on).
mct
h[2]=01 00 02 04 03 .. .. ..
ign sequence:
ignch | cyl | cam position when TDC (crankdegree) | crankdegree mod 360 = crank position when TDC (crankdegree) | triggertooth | TDC-tooth |
ignch1 | cyl2 | 144 | 144 | 21 | 24 |
ignch0 | cyl1 | 0 | 0 | 15 | 18 |
ignch2 | cyl3 | 576 | 216 | 9 | 12 |
ignch4 | cyl5 | 432 | 72 | 3 | 6 |
ignch3 | cyl4 | 288 | 288 | 27 | 0 |
This assumes that after camsync (chosen edge, eg. falling) comes, ignch1 =cyl2 fires. Than the igncount is resetted to ignchmax(=04), that is ignch3 (cyl4) to follow.
As you see, trigger_tooth=03 is good value for this.
.... the rest of h[2] ignition sequence is don't care, since ignchmax is 04 (5 cyl)
Result
Fires well on the bench, but something is not perfect on the real engine. It weakens at several points and lambda shows >10.0 values (O2 present, missfire ?).
What can be wrong ? The engine was running earlier with HALL trigger and distributor (though pistons were changed since than)
- sparkplugs
- were tortured a bit, but ... changed to new NGK ones
- We also changed the WBO2 sensor and lambda readings are ok
- ignition coils. Unfortunately instead of measuring position (which turned out to be very easy, gear 5 push the car so engine is in position, than look at crank and cam wheel to tell) and some planning in wiki, they spent one day with experimentation that might have break things.
- on the top of that, not the recommended separate 5 or 7.5 A fuses were used, but a shared 10A, which, together with 1 day of very bad config (another_trigger_tooth=03) put the coils at risk.
- firmware: though 1.0.45 worked well with different config, and worked well on the bench with this config, this cannot be ruled out 100%
- cranktrigger (primary trigger) signal
- though GT101 HALL sensor gap is 1.7mm, unlikely that this would be the problem. Wheel error doesn't climb (it was climbing with bad another_trigger_tooth value)
- cam-HALL (secondary) trigger signal
- very unlikely, this should be fine. The position when the signal comes is a bit hard to determine by looking, because the sensor is wiiiide.
- several other things changed, including compression increased from 7.5 to 8 due to pistons, but unlikely to be the cause
- maybe knock happens with the increased compression, or due to slightly changed base timing ?
- unlikely, but possible. Knock sensor is not installed / configured.
Also, the main (coolant radiator) fan got stuck (not fun), the motor might have burnt down (the wire insulation melted!). Not a 15 minute task to replace on this engine (but 2..3 hours).
Cars current status:
After replacing the stucked fan,we tried different settings on the engine (with the old config it was way too rich(but why?)
With 0.69 lambda all the way from 160kpa it was nor revving clearly (past 6K)and this is with dwell set to 3.
I leaned out to 0.77-0.8 then tried different dwell settings from 2.5 to 3.5,higher settings were much better.
We run then on Tököls DRAGBeach,we did a record (personal and this years category too) 11.18@196.In the finals we unfortunately lost out tranny again the gearchange fork broke again.So second place.Note that this is with shiftlight set at 6900,this engine needs to rev to 8500 to make its full power.
Looks like we reached the limits of the overlapping dwell,so i suggest a firmware mod for this ASAP.I also want to thank Mcells great support!
experimentation with bad primary_trigger config value
While we were lucky enough to get the engine running with totally misconfigured values (another_trigger_tooth=03 and reverse sequence ;-), it was running really poor and showed 2x higher RPM (than real).
firmware version= 1.0.45
Both mcd and mct are important to reproduce.
// amendment from MembersPage/AttilaSzucs
I've got the same problem. (firmware 38 and 45) My crank trigger is a 36-1, currently configured for cheating waste spark (4 COPs, dual ign). Few weeks ago I wanted to change full seq. ingition, but the same problem stopped me. I took out the ECU, tabletested many combinations, and figured out this problem occures only if N-1 multitooth crank AND want to camsync it. If changed to coil-type crank trigger, it worked perfectly, even with camsync. It seems (after the table-tests) that every one full revolution of crankshaft "resets" something. That's why you've got 3 sparks, and I've had 2 ( 4 cyl ). After the revolution with sparks, comes the rev. without sparks, and starts over again.
I tested various parameters. If ignchmax = 3 (for my 4 cylinder), then 03 and 02 will fire only. If ignchmax set to 7 then 07 and 06 fired and starts over again.
So my engine still is a "cheater waste" :(
Use 1.0.45 and configure primary_trigger=10, experimenting with other values will not work for camsync, it's only a waste of time. I recommend to ask, don't forget to include your mcd and mct dump.
mcd
- alternate=04
- ignchmax=04\n
mcdmct together Hello> primep=00 primep_temp_scaling=00 cwl=32 cwh=0A cranking_thres=02 awev=00 awev_temp_scaling=00 awec=00 warmup_clt_range[0]=00 warmup_clt_range[1]=12 warmup_clt_range[2]=26 warmup_clt_range[3]=3A warmup_clt_range[4]=50 warmup_clt_range[5]=64 warmup_clt_range[6]=78 warmup_clt_range[7]=8C warmup_clt_range[8]=AA warmup_clt_range[9]=C8 warmup_clt[0]=B4 warmup_clt[1]=AC warmup_clt[2]=A0 warmup_clt[3]=90 warmup_clt[4]=87 warmup_clt[5]=83 warmup_clt[6]=7F warmup_clt[7]=71 warmup_clt[8]=6B warmup_clt[9]=64 warmup_rpm_scale=BF req_fuel=21 divider=01 alternate=14 injopen=00 battfac=13 kpafac=CD kpaoffs=8E injocfuel=0D injrampup_battfac=FF injpwm=FF injpwmt=FF injpwm6=0A rpmk[0]=09 rpmk[1]=60 tpsdot_kpadot_conf=00 tpsdotrate[0]=24 tpsdotrate[1]=3D tpsdotrate[2]=55 tpsdotrate[3]=82 tpsaq[0]=0D tpsaq[1]=16 tpsaq[2]=20 tpsaq[3]=2D als_cut_mintps=73 tpsasync=02 acmult=C8 tpsacold=96 launch_enrich=00 launch_retard=1C overrun_fuelcut=46 overrun_fuelresume=41 rev_limit=54 airden_ignore=00 config11=41 config12=40 config13=02 batt_cal=BD fastidle=00 als_max_cut=65 dbaro=0C tps_low=0E tps_high=A3 fan_temp=5F fan_hyst=05 fan_channel=FF iac_step_seq=C9 iac_conf=00 iac_max_steps=E0 iac_tps_thres=54 iac_cold_idle_temp=87 iac_warm_idle_temp=CF iac_cold_rpm=19 iac_warm_rpm=10 iac_cold_start_pos=E2 iac_warm_start_pos=B0 iac_afterstart_rpm=1F iac_afterstart_duration=64 iac_speed=05 iac_kp=14 iac_ki=0F iac_kd=14 launch_rpm=34 iac_integral_limit_dec=05 iac_integral_limit_inc=78 iac_integral_deadband=0A iac_deadband=05 als_cut_maxtps=A6 iac_overclose_interval=FF iac_ref_pos[0]=36 iac_ref_pos[1]=33 iac_ref_pos[2]=33 iac_ref_pos[3]=33 iac_ref_pos[4]=30 iac_ref_pos[5]=30 iac_ref_pos[6]=2E iac_ref_pos[7]=2E iac_ref_pos[8]=2E iac_ref_pos[9]=2B iac_sol_channel=7F iac_ign_slope=20 softrpm_range=12 iac_ign_advance_limit=08 iac_ign_retard_limit=08 iac_ign_threshold=08 ego_conf=06 ego_lag=01 ego_coolant=B4 ego_maxtps=E6 ego_maxmap=FF ego_minrpm=06 ego_maxrpm=FF ego_warmup=3C ego_lean_limit=03 ego_rich_limit=03 ego_pid_kp=28 als_enrich=1A ego_delta=1A ego_target=19 ego_pid_window=FF wbo2_warmup_ramp=C0 als_react_tps=00 wbo2_abs_limit=F5 wbo2_limit_maxt=A0 wbo2_fallback=60 wbo2_retry_t=06 wbo2_edgetime_corr=BA wbo2_edgetime_min=50 wbo2_ri_target=9A wbo2_nernstdc_target=89 wbo2_pump_pw_zero=64 wbo2_calibration=D9 wbo2_heater_pid_kp=46 wbo2_heater_pid_ki=10 wbo2_heater_pid_kd=1A wbo2_heater_pid_ilimit=80 wbo2_pump_pid_kp=15 wbo2_pump_pid_ki=37 wbo2_pump_pid_kd=00 wbo2_pump_pid_ilimit=FF wbo2_ri_confidence_scale=80 knock_conf=01 knock_sampling_window=FF knock1_frequency=29 knock1_gain=FF knock1_integrator=FF knock2_frequency=29 knock2_gain=FF knock2_integrator=FF knock_threshold=FF knock_noise_scale=FF knock_max_retard=00 knock_default_retard=00 knock_retard_step=00 knock_retard_delay=00 knock_advance_step=00 knock_advance_delay=00 knock_minrpm=FF knock_maxrpm=FF ve_learn_coolant=D8 ve_learn_max_power=FF ve_learn_rpm_scale=1E ve_learn_kpa_scale=1E ve_learn_ego_scale=43 ve_learn_min_weight=4D ve_learn_speed=FF ve_learn_limit=33 ve_learn_conf=00 lcd_c0=FE lcd_delay=FF lcd_backlight=FF kpa_conf=22 ign_balance=64 als_retard_mintps=99 als_retard_maxtps=CC lcd_default_view=00 primary_trigger=D0 secondary_trigger=10 tooth_wheel=0E trigger_tooth=02 another_trigger_tooth=06 crank_minper=00 tooth_wheel_twidth1=00 tooth_wheel_twidth2=00 cam_sync_r_edge_phase=00 cam_sync_f_edge_phase=00 reset_engphase_after=1E ign_tdcdelay=8C ign_dwell14=2F ign_dwell6=43 ign_crank_advance=28 ign_out=70 ignchmax=04 engine_off_delay=0F pump_on_mintime=0B fuelpump_channel=5F inj_stage2_rate=FF inj_stage2_start_tps=FF inj_stage2_start_map=FF als_deact_rpm=1E als_deact_time=00 als_deact_egt=00 als_retard=F0 als_rev_limit=FF misc1out_minrpm=00 misc1out_maxrpm=FF misc1out_mintps=00 misc1out_maxtps=FF misc1out_minmap=00 misc1out_maxmap=FF misc1out_channel=7F misc2out_minrpm=FF misc2out_maxrpm=FF misc2out_mintps=00 misc2out_maxtps=FF misc2out_minmap=00 misc2out_maxmap=FF misc2out_channel=6F act_wot_rpm=FF act_wot_channel=FF act_rpm_rpm=48 act_rpm_channel=60 egt1_cal=4C als_tks_channel=FF boost_conf=59 boost_targetoffs=1E boost_minpressure=3C boost_pid_kp=B4 boost_pid_ki=46 boost_pid_kd=23 boost_pid_ilimit=4B boost_channel=70 water_pump_temp=00 hybrid_rpm_a=00 hybrid_rpm_m=00 water_pump_hyst=00 water_pump_channel=FF toothrel_normal=00 toothrel_missing=00 fuelcut_min_kpa=0A fuelcut_max_kpa=FF tach_channel=FF tach_div=FF shiftcut_conf=00 shiftcut_channel=00 shiftcut_time=3F softrpm_rpm=52 j[0]=3380 3480 3780 3880 3980 3C80 3D80 3D80 3D80 3D80 3C80 3980 j[1]=3780 3780 3C80 3B80 3D80 4080 4080 4480 4480 4480 4480 4680 j[2]=3A80 3A80 4280 4280 4280 4680 4780 4B80 4B80 4A80 4A80 4A80 j[3]=5280 5480 5380 4F80 4F80 4F80 5280 5480 5280 5280 5280 5080 j[4]=5E80 5D80 5D80 5C80 5980 5980 5B80 5C80 5A80 5B80 5A80 5980 j[5]=6680 6680 6680 6380 6380 6780 6780 6780 6980 6980 6880 6580 j[6]=7080 6F80 7080 7080 7080 7380 7180 7280 7280 7180 7280 7080 j[7]=7D80 7C80 7C80 7C80 7980 7980 7A80 7980 7880 7780 7880 7880 j[8]=8080 8080 8180 8280 8280 8280 8280 8280 8280 8280 8280 8280 j[9]=8580 8580 8380 8580 8A80 8A80 8A80 8880 8880 8880 8880 8880 j[A]=8780 8780 8780 8480 8C80 8C80 8C80 8A80 8A80 8A80 8A80 8A80 j[B]=8B80 8B80 8B80 8980 8C80 8E80 8E80 8C80 8C80 8C80 8C80 8C80 l[0]=47 47 47 47 47 47 47 47 47 47 47 47 l[1]=47 47 47 47 47 47 47 47 47 47 47 47 l[2]=48 48 48 48 48 48 48 48 48 48 48 48 l[3]=48 48 48 48 48 48 48 48 48 48 48 48 l[4]=48 48 48 48 48 48 48 48 48 48 48 48 l[5]=48 43 43 43 43 43 43 43 43 43 43 43 l[6]=5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C l[7]=5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C 5C l[8]=5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E 5E l[9]=63 63 63 63 63 63 63 63 63 63 63 63 l[A]=70 70 6D 6D 6D 70 6D 6D 70 6D 70 70 l[B]=7E 7E 7E 7E 7E 7E 87 87 87 7E 7E 7E n[0]=38 38 6C 89 9D A4 A7 A9 AB AB AB AC n[1]=38 38 69 85 97 9F A3 A5 A8 A8 A9 A9 n[2]=38 38 65 7F 93 9B A1 A1 A4 A4 A8 A8 n[3]=40 3F 60 79 90 99 9E A0 A1 A2 A5 A6 n[4]=40 3E 63 7D 8F 98 9E 9E 9E 9E A1 A2 n[5]=3C 45 5E 75 86 8F 93 93 95 97 99 9A n[6]=32 39 54 6A 77 7E 86 89 8C 8D 90 92 n[7]=22 21 3A 57 6B 7A 7F 84 88 8B 8E 8E n[8]=1D 1D 2E 45 64 70 78 7C 80 84 88 88 n[9]=1B 1B 29 3A 60 70 78 78 7C 80 84 84 n[A]=1A 1A 25 37 4C 5C 60 64 68 6C 70 74 n[B]=14 14 14 19 20 27 2D 31 36 39 3B 3E k[0]=0A 14 1E 28 32 43 53 64 75 85 9B A7 r[0]=07 0C 0F 14 1E 28 32 37 41 46 4B 55 h[0]=04 10 08 02 01 00 40 80 h[1]=00 00 00 00 00 00 00 00 h[2]=01 00 02 04 03 07 07 07 b[0]=7D 82 82 96 96 96 96 96 96 96 96 96 t[0]=FF FF FF FF FF FF FF FF
Overlapping dwell
New firmware
- 1.0.59_experimental was the first that we couldn't get to make an error on bench (ign switching off later than should) under any circumstances (trigger killed and restarted fast; noise injected; fast RPM changes). See [release]
Note that this release only supports N-1 multitooth (actually only tested with 15-1 ), wait a few days for N-2 and coil-type.
Firing order is 1,2,4,5,3
Special settings needed for the reftooth for each cyl (yes, odd-fire V6 would be possible as well).
- h[1]=18 12 0C 06 00 .. .. ..
- that is decimal 24, 18, 12, 6, 0
- WAS THIS WHAT WE APPLIED ? or we rotated is, maybe to h[1]=00 06 0C 12 18
- Unfortunately this hasn't been documented. In any case, above 2 options are the most likely that worked with h[2]=01 00 02 04 03. .. .. ..
h[2]
- ign-outputs ch00..ch4 are used for cyl1..cyl5 respectively, so
- h[2]=03 01 00 02 04 .. or this but rotated
- h2 was originally 3,4,2,0,1 THIS CANNOT be right!!!
- you mean h2=00 02 04 03 01 .. .. .. ? This means ignch1 (cyl2) after tooth0
- with oveerlappingdwell firmware we had to change to 4,2,0,1,3 to start the car. THIS CANNOT be right!!!
- note that h[2] alone is not enough with the overlappingdwell firmware, we must know what was h[1] at the same time ! (because h[1] and h[2] can be rotated, if done simultaneously). Do you happen to remember ?
MOST likely:
- h[1]=00 06 0C 12 18 .. .. ..
- h[2]=01 00 02 04 03 .. .. ..
- Since this also seems like ignch1 (cyl2) comes after tooth0 (h[1] bin that has 00, that is leftmost - or topmost in MegaTune)
- normal tooth width (...twidth1 =0x60) decimal 96
- missing tooth width (...twidth2 =0xC0) decimal 192
- reset_engphase_after = 0x40 = decimal 64 // Since 26 * 96 + 2 * 96 * 2 = 2880 (that is 720 * 4) = (2880 / 256 -11) * 256
- config.tooth_wheel=0E decimal 14 obvious for 15-1
- als_launch_input=FF just to maintain old behavior for ALS and launch activation (SDA and SCL lines)