[Diy_efi] RE More ECU progress

Ian Molton spyro
Mon Feb 26 22:41:45 UTC 2007


James Holland wrote:

> The 'fast' A/D I'm curious about. Is this being fed directly to the ARM? I'm
> not familiar with them. IIRC You mentioned 400ksps before, that's a pretty
> fast data rate.

I'll take that one...

The fast A/D is for ion sensing.

Only one ADC is needed per bank of cylinders (bank = set of cylinders 
with non overlapping firing events)

I've designed a spec which will probably go onto an FPGA. I'll put it on 
the website shortly.

basically the FPGA is a 'timing controller'.

It will take CAS and cam angle inputs, and use them to compute the crank 
angle to better than one degree. how much better will depend on how good 
our interpolation algorithms work).

the same FPGA will also have a 256 entry table each entry of which will 
contain an angle between 0 and 720 degrees for any given event (four 
types are currently defined, including spark and fuel injection).

the FPGA will handle firing of spark and fuel based on this table and 
optionally fire an interrupt to the host CPU for any event.

there is also a fuel intection timing / regulation table (not a map - 
thats the host CPUs job to manage).

So with all the above, the engine should be able to run for a few 
seconds, even if the host CPU takes a reset.

the neat bit is that one of the 'event types' will be an 'ion sense 
trigger' which will start an ion sensing event. this will cause thew ADC 
to be sampled (up to 256 samples per ion event, event range from 0 to 63 
degrees), and the host CPU to be (optionally) interrupted on completion 
of sampling.

So basically, the host CPU has only to watch RPM (also provided by this 
timing controller) and reprogram the controllers fuel and event map to 
taste. offload is a Good Thing.

My calculations suggest that for a 16 cylinder engine, with 4 cylinder 
banks, at 20,000 RPM, we will be seeing 5.33 megabytes of ion sense data 
per second max (256 table entries, 4 bytes each)

Reprogramming the fuel / event map 16 times in one cycle requires 
~6MB/sec at 20kRPM on the same 16 cylinder engine.

The above assumes an engine with dual injectors per cylinder and twin 
spark plugs/events.

the controller would be capable of handling over 85,000 events per 
second max and controlling 96 IO lines.

A more erealistinc application (10k RPM redline, V8, twin injectors, one 
spark, per cylinder ion sensing) would be 4 events per cylinder per 
cycle = 10k / 2 * 4 = 20kevents/min * 8 cylinder = 160kevents/min = 2667 
events per second, only one of which requires a CPU interrupt = 600 
interrupts per second (plus 83 TDC interrutps) = 683 interrupts per 
second. ion sense data rate would be 8*10k *256*4 = 80k *1024 = 
81920kbytes per minute = 1.37MB/second.

pretty slick, no?






More information about the Diy_efi mailing list