MembersPage/SkassaSubaruNewtrigger (2010-06-10 11:46:21)

This page contains all test of a subaru install (trying with 1.1.74)


[firmware 1.1.78 trigger log] as requested

We made a "scope canvas" to VT (2010-06-10, Tools/Analyze-Record-Triggerlog) in shows offending ghost pulses:

triggerloggraph.png

We made a new subarutrigger implementation vems.hu/download/v3/firmware/experimental/ 1.1.78 after Jorgen's proposal.


The new 1.1.78 is ready that

Things look good so far.

We continue when wiring is written here - or preferrably MembersPage/SkassaSubaruWiring . That's a basic requirement for any nontrivial project, so we can verify the full config with as few changes as possible.

Outputs that are most likely misconfigured

  • I belive they are not

That might be intentional:


The measurements look good, the expected noise was found and the filters seem to work. Noise rejection looks like it's around 8:1 now. I hoped for better noise rejection but this is probably good enough, it depends a bit on the signal amplituded with the car running. We'll check this again when the cranking-starting works as it should.

In adaptive mode, low values (even as low as 10k) of the R181, R182 help noise supression. The factory R182=150k is relatively high to allow running with uneven tooth amplitude (eg. many ford 36-1 and most home-many VR wheels). But this - theoretically - only matters in adaptive mode (not with LM1815 pin5 = 5V) This is FALSE! The LM1815 ALWAYS works in adaptive mode, mode=5v only sets a slightly higher minimum adaptation level. Just like mode=GND set a lower minimum adaptation level. -Jörgen

I see that the original signal amplitude at cranking is quite low, it looks good now but we need to keep an eye on this.

For now I would say that the hardware portion of the trigger is good enough.


Trying with wrong configurations =>will not work (even if trying for 2 weeks).

This is copied from v3.3_n002837-2010.05.23-20.17.11.vemscfg file:

The subaru configlet is used right from the start!!

on my laptop opening upp the last config 18.54.07, the reference tooth is 0 3 2 1, so if you have anything else, well the wonder of vems, i must say.../Skassa

I used 1.1.78 and latest nightly VT, but somewhat older should work as well (but avoid 1.1.76 when HALL-dirac filtering was first added).


2010-06-01:

Conclusions so far:

Goal:

We need to finalize the trigger hardware settings and verify the signals before any further trigger code development can be done.

The next step:

Measure:

You probably need to measure with the peak detector on in the scope. Measure with fuelpump OFF but with injectors ON and ignition ON.

Measurements in order of importantce.

If you see noise, try to zoom in on it and measure it before the filter, at LM1815 pin3 and at LM1815 pin12. This will show us how effective the filter is and if it's good enough for the 1815 to ignore the noise. If the noise has a higher amplitude then the VR signal you can usually trigg on the noise if you increase the scope trigger threshold until it only trigg on the noise.
  • CH2 is now at secondary LM1815 pin12. Trigger level was set to 2V so only noise pulses was captured. Cranking was done for more than 1 minute, a lot off noise pulses was seen, but not a single false output at pin12. The scope shot is the one captured with the largest noise pulse.
  • NewFile_F0.JPG

With the peak detector active in the scope you should not need the pulse extender, the signal at pin12 should be captured easily. If you can't capture that pulse you need to review the scope settings, otherwise it will not be able to see the noise in the signal!

Jörgen


List of essentials - none met yet ?

As described, the output from LM1815 is extended so the pulses herefrom is >220µs. At 5ksample rate any pulses from LM1815 will be captured.. 1-2µs pulses at input will at LM1815 output therefore be >220µs and therefore captured with the scope.

We have observed misfire at every attemp to start engine, even though correct output from both LM1815 has been measured several times. Therefore this problem have to be fund in the firmware. Other problems like rpm signals up to >50000 rpm (without 2x10nF at inputs)and misfire above 2500 rpm, could still be due to hardware. will have to do some more measurements to verify that.

  • We've seen 1..2 usec offensive pulses capacitively charged from the ignition of a Nissan (of a certain harness: 40 other working well without this problem). Since that was HALL, we could solve it in software with the HALL-dirac filtering and the customer was very happy.
  • With VR the same software solution is not possible, as the LM1815 hides the characteristics of the input from the processor. So with VR the triggering must be solved reliably in HW, but still without noise.
  • There is obviously a narrow range of values for auditrigger and subaru (and low toothcount VR in general). But just like auditrigger was solved (and now only 1 in 40 audi needs special attention beyond the normal procedure) the Subaru will be solved too.

The amount of work and chit-chat is fruitless without these rudimentary information. Another problem might be that the primary and secondary might require different pulldown/up values. If the VR polarity is wrong, it might be extremely hard or impossible to get it working properly. (just because it starts one way and not the other - with a certain pullup - does NOT mean that one way is good polarity !).

VERY IMPORTANT: If it turns out that you have very high frequency noise bursts it has very recently become clear that the very high performance ceramic capacitors we use are not optimal in the 1 MHz range. The datasheets fail to explain this so far. The reason for the behavior is so far unknown but practical tests and measurements show a huge difference between the ceramic and plastic caps at 1MHz in our application. -Jörgen.

I have had great success with polyester capacitors in the C30 and C33 positions on two cars with this type of noise, 2nF should be enough, I use: Wima FKP2 2200PF 2,5% 630VDC, Elfa# 65-710-61. I see that you have changed the capacitors in the C31 and C34 positions, these are NOT filter capacitors. They time the pulse from the LM1815. - Jörgen.


Trying to find the Subaru trigger problem while cranking, i have done some measurements.

My cheap, only 2k$ Agilent DSO3062A oscilloscope, does only have a sample rate of 1 to 5 kSa/s when measuring

over these relatively long times.. :o(

made an pulse extender. The following measurements is done with this extender between probe at CH2 and LM 1815.12.

NewFile_00:

NewFile_00.jpg

Measurements at secondary trigger.

CH1 at LM1815 pin3

CH2 at LM1815 pin12 (extender between)

Cranking at approx. 150 rpm

rpm signal in VemsTune jumps time to time to 170 rpm

Fuelpump off


NewFile_01:

NewFile_01.jpg

Measurements at secondary trigger.

CH1 at LM1815 pin3

CH2 at LM1815 pin12 (extender between)

Cranking at approx. 150 rpm

rpm signal in VemsTune jumps a lot

Fuelpump on

mis/backfiring!!


NewFile_02:

NewFile_02.jpg

Measurements at secondary trigger.

CH1 at LM1815 pin3

CH2 at LM1815 pin12 (extender between)

Cranking at approx. 120 rpm

rpm signal in VemsTune jumps to 170 rpm, at the exact time the noise pulse is seen at the scope.

Fuelpump off


NewFile_03 to NewFile_05: (Different zoom's at the same shot)

NewFile_03.jpg

NewFile_04.jpg

NewFile_05.jpg

Measurements at secondary trigger.

CH1 at LM1815 pin3

CH2 at LM1815 pin12 (extender between)

Cranking at approx. 150 rpm

rpm signal in VemsTune jumps time to time to 3000 rpm

Fuelpump on

pin5 is now tied to Vcc. This has resulted in no noise at pin12, but still misfiring..


NewFile_0A

NewFile_0A.jpg

Waveform 1.

Measurements at secondary trigger.

CH1 at LM1815 pin3

CH2 at LM1815 pin12 (extender between)

Cranking at approx. 150 rpm

rpm signal in VemsTune jumps time to time to 3000 rpm

Fuelpump on

pin5 tied to Vcc

10nF at C31, C34, C30, C33

Log 21.24.17


NewFile_0B

NewFile_0B.jpg

Waveform 2.

Measurements at secondary trigger.

CH1 at LM1815 pin3

CH2 at LM1815 pin12 (extender between)

Cranking at approx. 150 rpm

rpm signal in VemsTune jumps time to time to 3000 rpm

Fuelpump on

pin5 tied to Vcc

10nF at C31, C34, C30, C33

10k pulldown at both trigger inputs

Log 21.55.45


Log 22.01.02 Ignition lock 15_degrees


NewFile_0C & _0D

NewFile_0C.jpg

NewFile_0D.jpg

Waveform 3.

Measurements at secondary trigger.

CH1 at LM1815 pin3

CH2 at LM1815 pin12 (extender between)

Cranking at approx. 150 rpm

rpm signal in VemsTune jumps time to time to 3000 rpm

Fuelpump on

pin5 tied to Vcc

10nF at C31, C34, C30, C33

10k pulldown at both trigger inputs


NewFile_0E & _0F

NewFile_0E.jpg

NewFile_0F.jpg

Waveform 4.

Measurements at secondary trigger.

CH1 at LM1815 pin3

CH2 at LM1815 pin12 (extender between)

Cranking at approx. 150 rpm

rpm signal in VemsTune jumps time to time to 3000 rpm

Fuelpump on

pin5 tied to Vcc

10nF at C31, C34, C30, C33

10k pulldown at both trigger inputs

Ignition lock 15_degrees


NewFile_10 & 20 (_10 waveform at USB)

NewFile_20.jpg

To verify that there is correct signal from both LM1815.12.

Measurements at primary and secondary trigger.

CH1 at LM1815 pin12, primary

CH2 at LM1815 pin12, secondary

Fuelpump off


NewFile_30, 40, 50 & 60 (Same scope shot, different zoom's etc.)

NewFile_40.jpg

NewFile_50.jpg

NewFile_60.jpg

Subaru%20Trigger%20panorama%20%20_50%20_60.jpg

Waveform 5.

Measurements at primary and secondary trigger.

CH1 at LM1815 pin12, primary

CH2 at LM1815 pin12, secondary

Fuelpump on

Misfiring


After varming up the engine with old ECU, it's possible to start the engine

with VEMS ECU.

At this time the engine cranks at approx. 200 rpm. A short misfire at startup,

but the engine overcome this and starts anyway.

When the engine revs up, misfire apears above approx. 2500 rpm.


Trying to avoid this problem, i removed both pin5's from Vcc.

Logfile 18:00:10

Trigger log 18:00:52

Didn't chance anything


2 x 10k pulldown is then removed.

Didn't change anything


2 x 10nF at input's is then removed

Now the engine can't start at all. Misfires and rpm in Vemstune jums to > 50.000 rpm!!

You need to add capacitance

not remove. Remember the factory HW values (even with capacitor variations) must not prevent triggering from a 135 tooth audi at 10k RPM.

2 x 10nF is mounted again, and we are back to a working system when the engine is hot,

and the rpm is kept under 2500 rpm.....

Ole Blach 2010-05-30


Hint: please route the trigger signals and trigger GND in a separate cable, shielded on one side. There is no substitute for this test. If that works to prevent ign noise sneaking into trigger, it gives a huge help even if we must be able to use the factory harness in the end (likely with higher input capacitance values).


28/5-2010

Did some more test today.

Status car is not running.

All test results will be published Saturday

Scooped signals to the processor and did not find any thing wrong.

Stable rpm until it starts to fire then rpm spikes to 3000 rpm. Symptoms like the old trigger setup.

When the engine starts to run fast it looses sync.


What we have seen 2010-05-24

We have stable 160 rpm at cranking fuel pump off.

When we cranking the car it´s stable in beginning it fires up to 300-600 rpm then random fires and rpm is no longer stable.

Its like it runs only on two cylinders (firing correct) but then losing sync.

We see some correct firing´s but also ignition fires at different times than it should. Obviously there is noise in the signal, that must be filtered.

Question: Haw is this code tested and what signal is used?

We have big trouble scoping the output of LM1815 because of the short signal like 15 micro sec. It should be a bit higher (20-30 usec), but you can enlarge it very easily, see below.

I would suggests that we use the p259 led´s output. When the processor get signal from lm1815 Pre/sec trigger we set the output high for 0.5 sec. This will give us a chance to see and measure what goes in and out of lm1815.

Triggerlog also shows the time of the pulse (although currently for the primary trigger only).

Watching the input with analog scope is of primary importance. Even if the output is perfect, if the input is on the edge, it can break any time (eg. in cold).


Analog scopeshots ? do you have some ?

http://www.syvecs.com/forum/viewtopic.php?f=6&t=110&p=474&hilit=trigger+pattern+advisory+note#p474

If the input is biased properly, the LM1815 adaptive filtering should filter out small amplitude "phantom-tooth" pulses in the subaru. I didn't see your scope so only you can judge the offending amplitude. 10-30% should not trigg, and with lower R181 / R182 even higher amplitude offenders can be filtered out

Maybe the noise is capacitively injected by ignition ? It could save a LOT of time (even 1 week) to route the VR signals via properly shielded cable (with ground wire inside, and shield connected to ground only on ECU side). Than only try the factory harness when it works well with the separate shielded cable so you have a good starting point reference.


Ideas - setting up more agressive filtering for this low toothcount


Subaru_1.jpg

New Vems pcb installed

Subaru_2.jpg

Our technical engineer trying to hunt down the errors

Subaru_3.jpg

Test car 600 Hp HKS Subaru


Subaru / fiatstilo code

<pre>

if ( config_primary_trigger & _BV(ptrig_coil)) { // even (coil) type trigger

// LANCIA_COSWORTH does NOT need toothlen examination (only campulse "shaping" elsewhere)

if( FIATSTILO_SUBARU ){ // toothlen examination (and tooth skipping => c004 trigger)

uint16_t etime_atp;

etime.ptrig_capturedtime_prev = capturedtime;

etime_atp = etime.average_tooth_period;

p16 = (lsr16(period32) == 0) ? (uint16_t) period32 : 0xffff;

etime.average_tooth_period = p16; // store new period

if( (config.primary_trigger & _BV(trigger_multitooth_hairy)) == 0 ){ // no advanced missingtooth filter

if( p16 >= etime_atp ) return; // goto trigger_filter does not work well (as is) for SUBARU anyway....

} else {

// uint8_t tooth_cnt = etime.tooth_cnt;

// Looking for appr 30% relative toothlen (15..60% would be cool). Definitely skip any >= 100%

uint8_t toothlen = tooth_relative_length(p16, etime_atp);

if (toothlen != TOOTHREL_SINGLE) return;

}

// We are at the "trigger tooth".

// help initial sync a bit ? Maybe more sensitive than the simple coil type pattern.

// let's see if we had enough camsync pulses (eg. 3 needed in subaru)

if (engine.strig_count >= config.another_trigger_tooth) engine.status_trig |= cam_sync_mask;

// if > than fire some sectrig error flag ???

engine.strig_count = 0;

}

</pre>