[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