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 (2 VR crank + 1 HALL cam).
We thought the firmware mod is necessarily complex, but it is not the case. Firmware mod was done in an afternoon, testing and polish is still needed
for this mod is still needed''', and testing of course.
HW mod for a v3.0 .. v3.2
is easy: connect the pullup of secondary LM1815 output to cam-HALL signal instead of direct 5V. Ask for help if this is not clear.
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.
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
- 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
- trigger_tooth=35 would be appr. 1.8 toothtimes after secondary trigger
- To your luck, changing this shouldn't be necessary
- In any case, keep it min 1 and max another_trigger_tooth-1 (for auditrigger, trigger_tooth=00 is invalid!).
- another_trigger_tooth=36 # decimal 54
- 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)
- h[2]=04 01 00 02 06 05 05 05
- assuming 53124 fire order,
- and recommended reasonable ignition channel mapping 00,01,02,04,06 (remember that channel 3 and 5 are logic-level in the [6+2 IGBT assembled controller]
TODO
- test it. especially the correctness of initial sync-sequence
- testers please provide full mcd / mct dump, along with the results. Don't forget to disable (or even remove, from FASTPATH) the serial debug when testing RPM limits.
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