[Diy_efi] RE: 60-2 Toothwheel - Kalman Filter or ( EKF )

James Holland j_holland
Sat Apr 7 17:46:42 UTC 2007

> On Saturday 07 April 2007 00:54, James Holland wrote:
> > > >I only have a Camshaft Position Sensor giving 2 pulses per
> > > >revolution (TBI).
> > > >It sounds like this could be a very good implementation for me.
> > > >However if I'm accelerating wouldn't this be reflected in the
> > > >MAP value and therefore any ignition retardation would be at
> > > >least partly accounted for within the timing look up table
> > > >anyway?
> > > <cough> 2 ppr  !
> Probably 4 "edges".
> > Well that's the stock set up, Suzuki Vitara 1.6 8V with TBI. The
> > distributor has a hall effect sensor with four cut outs on the
> > vane. The 16V engine had the same distributor set up but with a
> > Crank Sensor(1ppr) to enable the injection to be synchronized.
> If the distributor is "static", i.e. no mechanical or other
> "advance" built in, then you have 8 edges to use for timing in one
> engine cycle (2 crank revs). Backlash and flexibility in the
> distributor drive can cause some "interesting" errors.
> I gather that the 16V had a camshaft sensor as that would allow the
> injection to be sequential. A single pulse off the crank doesn't
> make a lot of sense as the distributor is already providing 4 edges
> per crank revolution. Maybe the distributor drive became too
> flexible for reliable timing; perhaps by driving a DOHC?.
> > Well its not a performance engine, however your current debate
> > raised a few interesting points and got me wondering whether there
> > was any noticeable improvement that could be effected.
> This is the key question. And it applies to a performance engines.
> How quickly could an engine accelerate under control and how quickly
> would you want it to?
> If you went from 900 to 6000 rpm in 2 seconds (it makes the numbers
> easier), then that represents 15 revs/sec to 100 revs/sec in 2
> seconds; or an average acceleration of 42.5 revs/sec/sec.
> The "mis-timing", the error in not detecting a speed change is worst
> at low speeds, so resolution is important to detect the actual speed
> as soon as possible. But the engine's speed cannot change
> instantaneously without some operating parameter also changing;
> load, air, ignition or injection.
> The change in speed is detected by comparing the expected
> time to the detected time and then anticipating the next event
> correspondingly earlier/later than for constant speed. (I will
> avoid diverging into how the _expected_ times for constant speed may
> be calculated.)
> If there is again an error in the same direction when the next event
> actually happens, then there is continued acceleration. Which may be
> nice to know... the angular acceleration can be detected from just
> one "mis-anticipated" event; though it requires at least half a rev
> with so few marks (*) and minimal ECU resources to get a useful
> average, taking into account compression, etc -based angular
> velocity changes.
> (*) In theory one full cycle; but you get one full cycle in half a
> rev of a 4-cylinder, 4-stroke.
> Going back to the numbers, the average acceleration of 42.5
> revs/sec/sec is equivalent to an average of 170 edges/sec/sec if the
> edges were evenly-spaced. (*) With the engine turning at 15 rev/sec,
> or 120 edges/sec, the initial timing error would be from edges are
> expected to appear about every 8.333 ms on average, but the first
> accelerated edge could be detected sooner. At 8.265 ms on average
> (if I've solved the quadratic equation correctly).
> (*) Edges are typically at 78 and 6 degrees BTDC, giving 72 and
> 108-degree crank intervals.
> That appears to be somewhat detectable, being an error of about 68
> microseconds (us). In the previous draft design, the timer
> resolution was 8 us, so it would be detected 7 (or 8) ticks before
> anticipated. Any subsequent event can be anticipated and outputs
> scheduled to occur that much earlier (as) if the engine were at a
> constant speed.
> At higher (max) engine speeds, the acceleration becomes
> "undetectable" (@ ~2 us) because of the 8 us timer resolution.
> So one "cheats" by sampling/detecting on fewer edges. :-)
> Strictly speaking, that cheat is "not correct" but keep in mind that
> the things being controlled have comparatively slow responses; e.g.
> spark ignition takes of the order of a millisecond and varies by
> about +/- 200 microseconds.
> So how much of a difference do and can the "esoterics" like Kalman
> filtering make to the operation of the engine in the real world?

First off I hope I'm not thread hi-jacking but this does seem to be on
The early 8V EFI used a VR sensor that had a very short pulse width. Using
the later dizzy and using both edges will give 4 timing points. That's a
good point and an easy way to improve accuracy, maybe that's why Suzuki/DSM
made the change.
The crank sensor on the 16V tells the ECU where the crank is. It has no way
of telling which pulse is which from the cam sensor.
While it isn't a performance engine it is an off road vehicle and therefore
has a transfer case effectively giving 4 very low ratio gears. The engine
can spin up very quickly in the low ratios.
I have designed a dsPIC based ignition that I shall be trying out in a
Suzuki SJ413 that I'm currently transplanting a Vitara engine into. I'm
convinced now that I should add in some correction for acceleration to my
ignition. I'm using one of the Output Double Compare channels with a
resolution IIRC of 0.5uS.

More information about the Diy_efi mailing list