Page for the 135-tooth, 3-signal trigger system found on many 5cyl audi engines
Note that for GenBoard/VerThree v3.3 the trigger HW was modified so it can directly use the 3 input signals from the Audi wheels:
- VR 135 crankteeth
- VR crankhome 1 tooth
- and cam-HALL (1 per every cam rotation).
The first successful install with this trigger-setup was done by Miska Peippo in Finland, see MembersPage/MiskaPeippo/AudiSSix. Congratulations.
HW modifications
For v3.0 .. v3.2:
- easy: connect the pullup of secondary LM1815 output to cam-HALL signal instead of direct 5V. Ask for help if this is not clear.
For v3.3 shipped in 2005:
- GenBoard/Manual/InputTriggerHardWare/ReplaceC is effected, removing the 220nF from C103 is necessary (or or replacing with 1nF new value)
- added 1uF cap in parallel with C40 (eg. piggyback on top, or replace) for longer peak hold time (might be essential depending on crankhome-VR noise, and does not hurt)
- 20..43k pullup to 5V for crankhome VR signal (a good place to mount a 1206 size resistor is between board-pad and 5V at primary LM1815 pin8)
For v3.3 shipped in 2006: - done at assembly if requested in shop order note
- added 1uF cap in parallel with C40 (eg. piggyback on top, or replace) for longer peak hold time (might be essential depending on crankhome-VR noise, and does not hurt)
- 20..43k pullup to 5V for crankhome VR signal (a good place to mount a 1206 size resistor is between board-pad and 5V at primary LM1815 pin8)
multitooth Audi crankwheels
The old Five cylinder engines with electronically controlled ignition have 2 VR sensors and a HALL sender.
- One VR sensors sense the starter gear (135teeth for 5cyl)
- another VR sensor sense ONE pin in the flywheel located at 62deg before #1 TDC
- with 12453 firing order,this is the same as 134 BTDC cyl5
- The HALL sender is in the distributor, and the HALL trigger wheel has ONE slot acting as CAM reference. CAM ref and the Crank pin must overlap each other for the engine to start in the stock application.
These engines use a homebrew ignition module with a visible TO-3 transistor in the ignition coil console. (at least the ones I have seen) Igniton computer is made by Hitachi (MAC-xx).
The small spacing between the teeth (together with cambelt sloppyness) makes it impossible (at least without very advanced, long-term filtering) to sync the engine without the pin in the flywheel.
Signal timing graph from 5-cylinder MC-engine:
The same type of triggersystem is used on many older Audis, even the Audi V8 had it until it was replaced with the A8. The engines with an even number of cylinders has an 136teeth flywheel to make everything add up.
Solution:
We use AND( HALLsignal, crankhome_pulse) logic operation (implemented in HW) and pass this to the AVR secondary-trigger input.
The camsync masks out the 62deg BTDC cyl1 crankhome pulse, but leaves the 134deg BTDC cyl5 pulse alone, to reach the processor.
This way the secondary trigger the AVR sees is timed from crank, but only 1 pulse for each cam-rotation (suitable for 5cyl ign). Effectively a 'cam ref signal' with no slop at all.
135 interrupts per crank-rotation still needed, but the interrupt code is much shorter than for 60-2 wheels, allowing > 20000 RPM:
We thought that 135teeth takes up too much CPU time. After thinking about it, we found that the multitooth processing code can be bypassed altogether, so the CPU load would be smaller than for 60-2 wheel.
- There are rumors that there is some problem (trigger error) at appr 6000 RPM.
- there are rumors that this is caused by the cam-hall pulse being too narrow (or positioned a bit badly) to safely "include" the crank-home VR pulse (zero-crossing falling edge): This tolerance could be verified with dual-channel scope (or 1 channel and mixing the 2 channels)
- rumors say Emil Malmstem widened camhall (probably with file, or angle-grinder) and auditrigger problem went away immediately
- Today we were able to run engine up to over 7000rpm by making some small experimental mods to firmware. It seems that firmware sees "cramhome" signal a bit too early, according to logs one or two tooth compared to lower rpms. Also, once 6k limit was hit, timing kind of slipped by one tooth and after that every primary trigger occurred one tooth too early (in firmaware, camsync path in primary trigger code)
Q:What is (theoretically) the MAX RPM that this kind of trigger can handle?We just build an engine thet will rev
9000RPM without problems.//pnanassy
How to connect the 3 trigger signals
- EC36pin27 - Primary trigger 135 cranktooth VR. Usually no problem
- EC36pin13 Sec.trig cam-HALL 1 window camtooth.
- don't forget to apply supply voltage for your HALL sensor
- EC18pin12 - crankhome VR (1 tooth per crank)
- added 1uF cap in parallel with C40 (eg. piggyback on top, or replace) for longer peak hold time (might be essential depending on crankhome-VR noise, and does not hurt)
- 20..43k pullup to 5V for crankhome VR signal (a good place to mount a 1206 size resistor is between board-pad and 5V at primary LM1815 pin8)
- Original successful trigger setup only used a 10k towards 5V. Higher (than 10k) pullup resistor might be better if the signal amplitude is low (although Miska's was high enough even at very low RPM during Finland-Sweden-cold-winter cranking ).
- Important It is necessary to reverse crankhome polarity at the crankhome connection on the firewall (engine bay side), using 3 pieces of wire, 3pin JPT Male and Female connector is needed to make this properly. A good signal looks like [this] at EC18 Pin 12
Don't forget to use shielded cables, separate for all 3 signals. The shield only connected at the ECM end. "return" is to GND (sensor ground), not GND5. See MembersPage/PhatBob/UserGuide.
See InputTrigger/AudiTrigger/TestLM to see how the first installs got sorted out.
- Note the Manmdd0c TerminalProgram command. After this command:
- capture output (start log; crank for 5 seconds, but don't cut ECM supply as you'll have to issue Manmdd0c again)
- Upload the mdd0c_trigger.log file (see file-aree on DocsPage bottom)
- and publish the link on your MembersPage, so it can be analized (looking for trigger malfunction) if
Possible elmination of RPM trigger shadow from the crankhome-VR signal (also called magnetic shadow, or magnetic ghost)
Marcells idea to connect both the crankhome-VR and crank135-VR signal via appr 33k (best resistor value needs some experimentation and tuning with scope) to a +-700mV clamped point (fast diodes towards GND, eg with a BAV99 or 2 1n4148). The crank135-VR might need to be reversed for this to work (in the elimination direction, not to amplify the unwanted ghost signal).
The crankhome-VR polarity is fixed, of course (because LM1815 senses negative going edge).
Jorgen's SwCAD simulations: two 1n4148 switch diodes connected antiparallel to each other and in series with the incomming VR signal from the TDC sensor. I have no Audi here to test it on but logic, some scope plots I have taken earlier and the CAD software say that it will totally eliminate all signals smaller then 0.5-0.6v or so while also dampening the TDC pulse with 0.5-0.6v. The TDC signal should be over 0.7v at all cranking rpms and the RPM shadow should be lower then 0.5v at most critical rpms. At higher rpm the RPM signal should be eliminated properly by the arm level logic in the LM1815. -Jörgen Karlsson
Signal Sloppyness
The sloppiness seems small, see [image1] and [image2]. Our implementation accepts if the "cramhome" (== crank-cam hybrid) pulse comes normally, or one tooth too early (which should be rare, but possible if the VR sensor is not aligned properly).
If the crank-home is sloppy, not always between 2 given crankteeth, the code will finally sync as if the crank-home always came after the tooth coming later.
Example
Here we name 3 given teeth A,B,C. If crankhome is seen
- always after B: this is the normal setup, this should theoretically be the only possibility if the VR sensor mechanical install is fine. trigger_tooth=00 means timing from B.
- mostly after B, but sometimes after A: this (though it should be unlikely) is tolerated, timing from B
- mostly after A, but sometimes after B: timing from B, but initially (while crankhome is coming after A) timing from A might happen !!
- sometimes A, sometimes B, sometimes C: forget it. In fact this (>2.67 degrees sloppyness and unfortunate position) should really never happen (unless you hold the VR sensor in your hand while running the engine ;-) : remember that crankhome is timed from crank
- no more possibilities
Configuration - applies to 1.0.x and 1.1.x
- the 5cyl InputTrigger/AudiTrigger engine will need 1.0.29 firmware (see GenBoard/UnderDevelopment/FirmwareChanges), which is currently under testing
- MegaTune r027 or later will be needed (r028 should work too)
We must start from a coiltype + camsync setup (maybe like MembersPage/MichaelRichards/Projects/NicksGTX or [Fero]
- secondary_trigger=1D is standard (rising edge, camsync with filtering) Michael Richards and Fero use this
- secondary_trigger=19 (rising edge, camsync without filtering) could work too. But secondary_trigger=09 cannot work.
- don't forget the reset_engphase_after and tooth_twidth.. variables!)
- primary_trigger=FB # rising edge, coiltype (yes!), trigger filter disabled (bit2=0)
- very important, that coiltype chosen, and primary trigger filter MUST be disabled
- tooth_wheel=87 # decimal 135
- trigger_tooth=1B # tooth "27". For auditrigger, tooth_cnt counts from (another_trigger_tooth-1) down to 0. So beware that lower trigger_tooth value uses a later tooth as the "trigger tooth"
- recommended trigger_tooth=1B is actually appr. 27.8 toothtimes after secondary trigger (assuming first crankpulse comes 0.8 toothtime after "cramhome") pulse
- ignchmax=04 # 5 cyl
- alternate=14 # or 04 if no simultaneous injection is needed at startup
- ign_tdcdelay=78 # = decimal 120 = 60 degrees
- together with our trigger_tooth setting, cramhome is assumed to be 60 + 27.8 * 360/135 = 134 crandegree before cyl5 TDC (standard setup)
- h[0]=08 02 01 04 10 00 00 00
- assuming 53124 fire order,
- and direct mapping injchannels A,B,C,D,E (hexadecimal 01,02,04,08,10)
- remember that hexadecimal 10 (last active element) == decimal 16 (if using MegaTune)
Config this part applies to 1.0.x ONLY; note that 1.1.x is recomended for auditrigger!
- another_trigger_tooth=36 # decimal 54
- h[2]=40 10 00 20 60 00 00 00
- assuming 53124 fire order.
- Remember to change h[2] if you use a different output mapping for ignition channels (like the not standard 00..04 mapped to cyl 1..5)
Config; this part applies to 1.1.x ONLY
- for audi 135 tooth use 0B (decimal 11) : precise 2.6667 degrees will be used (not 2.75). delaydeg unit 3% smaller than 0.25 deg
- for volvo 142 tooth use 0A (decimal 10) : precise 2.5352 degrees will be used (not 2.5) . delaydeg unit 1.4% higher than 0.25 deg
- note that this 142 tooth version is NOT supported yet (should not be hard, so yell if you need it)
- rpmk = 04B0 # RPM constant= decimal 1200 ... as if it was 10 cyl (updated every 27 tooth , not every 54)
- rpmk[0]=04
- rpmk[1]=B0
- divider=02 # to only fire 5 times per camrot (not 10 times; same reason as the changed rpmk)
- trigger_tooth=1B
- another_trigger_tooth=87 # (135 tooth) is right for the new code (not 0x36=54)
- with 12453 firing order,this is the same as 134 BTDC cyl5
- Reftooth array (0, 54, 108, 162, 216 mod 135 = 0,54,108,27,81 but traversed backwards). STICK TO THIS reftooth array, starting with 0, tweak h[2] to get the desired firing order.
- h[1]=00 51 1B 6C 36 00 00 00
- for cyl order 5,3,1,2,4 (ignchannels 4,2,0,1,3 in Miska's wiring)
- h[2]=40 30 10 00 20 00 00 00
- the starting point seems to be different than in 1.0.x, but otherwise same idea, traversed from right to left (bottom to top in MegaTune)
The h1 is the reftooth array: the toothcount position for matching h2 (ignition output) entries, traversed backwards the same way. After 108 we apply 108+54=162 modulo 135 = 27
this should NOT matter, but:
- config.tooth_wheel_twidth2=00
- reset_engphase_after=9A
Other Audi triggers:
There is also an other audi trigger arrangement on the older audis that don't have a knock sensing ignition. They only have a 5 slot trigger wheel in the distributor and no crank trigger and a hall sender controlling a auto dwell ignition module. If a few degrees of ignition inaccuracy is acceptable one of these distributors can replace the entire ignition system on the computer controlled cars.
The later models have a standard Motronic triggerwheel and a CAM synk sensor.
Header for easy switch between primary_trig=HALL and 3 signal audi-trigger
For an assembled controller, one wants to avoid too many clamping/unclamping. (assemble/disassemble)
The alubos endplate is very easy to remove, unclamping is not needed. The trigger section can be reached for soldering or measuring with just the alubos endplate removed. However the onboard mounted MAP sensor makes it impossible to reach the connections.
- audi_header_pin1: primary_trigger connection (same as EC36pin27)
- audi_header_pin2: 5V
- audi_header_pin3: rail-point (for protecti
- audi_header_pin4: AVR primary-trigger input
- audi_header_pin5: trig1 LM1815 output
Choices:
- for simple HALL setup:
- 2.7k .. 10k (pullup) resistor (easy to solder 0805 SMD) between pin1 and pin2. Not needed (but does not hurt) if the HALL sensor has internal pullup (most HALL sensors don't have this, they can only pull towards GND)
- close pin4 to pin3
- for Audi-trigger setup:
- remove any resistor between pin1 and pin2
- close pin4 to pin5
I had to apply relatively much hotmelt to prevent the header from shorting on anything (it might take 4..5 minutes of scratching to clean the header when one wants to change it: but at least only the endplate must be removed for it). 3 DIP switches would work for the same too. Are DIP switches acceptable in a car? I would say that they are, I have never heard of problems with the engine management systems that have it. we could make a backup solution with proper smd jumpers too.
See also:
- InputTrigger
- http://www.lanzo.se/auto/audi.html an interesting story about mechanical issues
- MembersPage/KristsMezgals
- InputTrigger/AudiTrigger/OldCircuit the old circuit that was eliminated by firmware code
- InputTrigger/AudiTrigger/TestLM1815 - some guys got problems with VR input for secondary, here is instructions how to test it and write report