The car got an 1.6L 4cyl NA engine because it is believed to better compete in that class, compared to the 1.8L engine.
The deadlines are very tight, it should be ready for race before 2006-03-17
With a standard trigger, it should be no big deal, but this engine has a special trigger.
IAC
Simple bipolar stepper - should be straightforward
Ignition
Wasted spark. Coil on plug style. Yes, only 2 transformers, each have a second high voltage connection for the cyl pair (1-4 and 2-3).
MAP / AlphaN
The engine has a MAP sensor. However, because of very aggressive cams, some loadsites might need to be tuned from TPS (AlphaN).
Trigger - Rover K-series wheel (we refer to it as "elise" trigger)
The engine has camsync, but because of wasted spark, only primary trigger will be used for now.
- Primary trigger VR
This crankwheel is very smart construction, because it can sync in half revolution (often even earlier!).
- Early startup is supported (the right output channel will be fired as soon as it can be found).
- camsync is currently not fully supported for this elise trigger (recommended to keep secondary_trigger disabled in config)
We made some modifications to signalgen to generate the wav sound files to test the trigger setup on the table. Firmware code was tested against this.
The trigger is supported from 1.0.38 with the following setting (multitooth, no camsync) MAKE SURE YOU TRY THESE TOO, there is a mismatch right at the very first (primary_trigger=00 is not 01 although it might work with both edges if the sensor is HALL for sure):
- primary_trigger=01 # multitooth (advanced filter is not applied; actually, advanced filter could work with N-1 setting)
- secondary_trigger=02 # disabled
- another_trigger_tooth=12 # decimal 18, no surprise
- tooth_wheel=20 # decimal 32, no surprise (36-4 wheel)
- trigger_tooth=04 # 0..12 could work with different TDC position; 4 seems right with above drawing
- ign_tdcdelay=78 # decimal 120, that is 60 degrees; according to drawing, TDC is 60 degrees after tooth 4
- this can be varied of course, but F0 sounds way too high (adjust trigger_tooth instead);
- is it possible to check with timing light ?
- ignchmax=03 # fire ign channels 3..0, and ign sequence:
- h[2]=02 03 02 03 00 00 00 00
- assuming 03 channel (EC36pin36) is wired to fire spark for cyl1 and 4
- 02 channel (EC36pin34) fires cyl2 and 3
Take InputTrigger/TriggerLog to check the tooth pulsetrain correctness. (upload the binary too, and possibly the output after formatted with perl binary.pl < terminal.log > terminal.txt )
A describtion of the trigger (HU; just to confirm the direction and position seen on the image):\n
Mind1, itt küldöm a képet, immáron dedikált lendkerékkel. A felsõ holtpont fizikailag ott van, ahol a lendkerék tövében a csap van. (azaz van 6db felfogató csavar + 1 tájoló csap, na a csap van felül holtponton) A jeladó ehez képest lejjebb van, gondoltam azt a bordát jelölöm meg, amit "lát" a szenzor felsõ holtpontban. Komikus mód ez úgy semmilyen rendszerben nincs semmivel se. Utána a forgásirány szerint még kettõ bordát "olvas" a szenzor, és kezdõdik az elsõ kihagyás. Udv Yas Azt hittem soha nem fox feliratkozni.:) Lenne 1 kersem:) Ha lehetne akkor kommentalnad magyarul is a torteneseket? Lassan azert tanulok angolul:) A_Feri/Saybor:)
Here are the configuration files:
Seems very nice, signal and polarity is correct. Analysis of the file, missing teeth:
- position, difference from following
- 41 3
- 47 13
- 73 2
- 77 14
- 105 3
- 111 13
- 137 2
- 141 14
- 169 3
- 175
The problem is, that the engine stroke kicks the engine at the 169 position, so the crank accelerates (I guess it has a lightweight flywheel).
Therefore the 1318 (*4 usec) difference is followed by 1869 difference, which is LESS THAN 1.5 * 1328. Normally a missing tooth is 2x normal tooth, and the code only consides it missing if >1.5 x
We must use multitooth advanced filter (checking toothrel_ ... on GenBoard/UnderDevelopment/FirmwareChanges), and set the treshold, so 1869 / 1318=1.41 is accepted as missing tooth.
- primary_trigger=09 # instead of 01, to enable multitooth advanced filter
- toothrel_normal=54 # or 64; max allowed +/- normal tooth deviance [1/16] 76
- toothrel_missing=40 # max allowed +/- missing tooth deviance [1/8]
Explanation - N,n,M,m are one hexa digit each:
- toothrel_normal=Nn # max allowed +/- normal tooth deviance [1/16] 66
- toothrel_missing=Mm # max allowed +/- missing tooth deviance [1/8] B5/00
OLD semantics - before 1.0.40
If the tg (time-gap) between 2 teeth compared to tg_prev (previous time-gap)
- if( tg_prev * (1-n/16) < tg < tg_prev * (1+N/16)) than it's considered normal tooth
- if( tg_prev * (1.5 + m/8) < tg < tg_prev * (2.5 + M/8)) than it's considered missing tooth
NEW semantics - since 1.0.41
If the tg (time-gap) between 2 teeth compared to tg_prev (previous time-gap)
- if( tg_prev * n/16 < tg < tg_prev * (1+N/16)) than it's considered normal tooth
- if( tg_prev * (1.25 + m/8) <= tg < tg_prev * (2.5 + M/8)) than it's considered missing tooth
In our case, it's critical than N is 6 or less. 5 is recommended.
Also, for the missing-tooth condition, original 1.5+m/8 changed to 1.25+m/8 in [ http://www.vems.hu/files/Firmware/release/v3_firmware_1.0.41.zip
firmware 1.0.41]
Apparently it's problematic to define a good threshold for this engine. 1.5 was too high, 1.375 didn't work either (we don't know exactly why, it didn't improve from 1.5) ...
If it really doesn't want to work - note: longer triggerlog needed to decide -maybe
- when missing tooth is expected, we should allow tg > 1.25 * tg_prev to be considered as missing tooth
- when normal tooth is expected, we should allow tg < 1.5 * tg_prev to be considered as missing tooth
- what to do when nothing expected ? (at the beginning). 1.375 would be a good threshold ?