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 (in [triggerlog]), difference from following
- 41 3
- 47 13
- 73 2
- 77 14
- 105 3
- 111 13
- 137 2
- 141 14
- 169 3
- 175
3,13,2,14, ... pattern seems correct for the wheel.
worst case: (note that the log is very-very short read below! There are likely to be worse cases)
- highest tg/tg_prev for single tooth: 1.16 (2010/1733)
- lowest tg/tg_prev for missing tooth: 1.41 (1869/1318)
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 standard 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=44 # or 54; tg_prev * n/16 <= tg <= tg_prev * (1+N/16)
- toothrel_missing=40 # tg_prev * (1.25 + m/8) <= tg <= tg_prev * (2.5 + M/8)
Explanation - N,n,M,m are one hexa digit each:
- toothrel_normal=Nn #tg_prev * n/16 <= tg <= tg_prev * (1+N/16)
- toothrel_missing=Mm #tg_prev * (1.25 + m/8) <= tg <= tg_prev * (2.5 + M/8)
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
As you see, 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
In our case, it's critical than N is 6 or less. Thresholds for different config:
- toothrel_normal=6x # 1+6/16 = 1.375
- toothrel_normal=5x # 1+5/16 = 1.31
- toothrel_normal=4x # 1+4/16 = 1.25 ... recommended
Apparently it's problematic to define a good threshold for this engine. 1.5 was too high by any means, 1.375 didn't work either (we don't know exactly why, it didn't improve from 1.5).
The best is somewhere between 1.16 and 1.41, my vote is to try
- 1.25 (toothrel_normal=44) first and
- 1.31 (toothrel_normal=54) later
If it really doesn't want to work - note: longer triggerlog needed to decide -maybe (but this is hard, requires nontrivial firmware mod)
- 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 normal tooth
- what to do when nothing expected ? (at the beginning). 1.31 would be a good threshold ?
Also upload the binary triggerlog (before formatting with binary.pl). Use zip if fileyhingy otherwise does not allow upload.
Analysis of new [log2]
With improved binary.pl (see http://www.vems.hu/files/MembersPage/YasecElise/trig2_all.zip ) it's easier to spot MISSINGTOOTH for certain threshold (default 1.5, but any other (like 1.31) can be specified on the command line.
The right side is interesting (left side is rabbish), the 3,13,2,14 pattern is also shown:\nÿ2ÿ
This means that the pattern is recognized with the original 1.5 threshold (without the advanced filter). The * 1.41 that we've seen in the short log is not very typical.
So what's wrong with this setup ?
- Does the timing lamp show fire when expected ?
- Maybe base timing is off? (maybe as much as 180 crankdegrees ?)
- or fuel quantity way off ?