[Diy_efi] Re: Diy_efi Digest, Vol 7, Issue 11
Bruce Bowling
bbowling at earthlink.net
Mon Jul 7 23:41:08 GMT 2003
At 12:00 PM 7/7/2003 -0700, you wrote:
>Matthew Richard Friesen wrote:
> > This is exactly the idea that i am going for. Have "stupid" modules
> that each
> > do their little part, and have the pc telling them when they need to
> change. I
> > must admit though that i am beginning think maybe it would be easier to
> start
> > with the megasquirt, (probably the AVR, i'm not too fond of assembly,
> and i do
> > have some experience in c ) and "adjust" it to my needs(wants). (Ahh.. the
> > burdens of facing hard reality). Can the megasquirt handle sequetial
> > injection?
For the current implementation of MS, it does not handle sequential.
Can MS be modified to handle sequential firing? Yes, - but - there is a
correct way to implement this and a half-assed method which is reality is
no better than sequential.
Method 1: just pulse the injectors in a sequence after receiving a cam sync
pulse - inject always at the same instant based on a spark fire pulse input.
Method 2: Monitor the crankshaft position (using a crankwheel or similar
crankshaft-positiong device with sufficient accuracy) and fire the injector
at a precise crankshaft position - i.e. phase is independent of ignition
event. Most importantly, this crankshaft angle value must be a
user-adjusted variable, and it may also be a function of RPM and/or load.
Not widely known (or not well advertised) is that Al Grippo's code
implemeted on the EFI332 handle direct sequential injection, and he has
been running this for about three years now, and many tens of thousands of
miles. The code implements the TPU in the '332 to fire based on crankshaft
angle. The injector firing phase is a user-adjusted input.
Also not widely known is the large amount of time Al has spent on making
the sequential mode, and more importantly the transition from batch to
sequential and back (during a lost cam sync) if needed.
A while back, after we were doing some warmup enrichment tuning on his
EFI332 setup, we started playing with the injection phase value at idle as
an experiment. With the engine at idle, we incremented the phase value in
one degree increments totally around the entire 720 degree crankshaft
injection range, while monitoring values like MAP and RPM. What we observed
is that the RPM and MAP was pretty much unchanged, except for a very small
angle range, where the RPM increased slightly. We were able to reproduce
this again and again. I do not remember the exact phase value off of my
head, but I do recall that the degree range of this "sweet spot" was very
small - something like 10-15 degrees crank or so. Now, Al's cam setup in
his engine produces a lot of valve overlap, so the idle is not silky-smooth
(even with EFI), but this sweet spot was noticeable via. the RPM increase -
but, the engine ran pretty much the same.
We only tested this at idle, but a further experiment would be to try to
determine this spot at different RPM and under load, to see if this phase
angle is indeed a constant value or does it move around. Also, AFR
measurements need to be done as well.
But, the point I am making here is that, in my mind, to implement
sequential *correctly* you need to have accurate crankshaft position.
Getting a pulse every 90 or 180 degrees (i.e. ignition fire events) may not
be enough resolution, especially if the target "sweet spot" lies within a
few degrees of a given crankshaft angle. I do not know what the acceptance
range of crankshaft degrees for optimum sequential. But, if one has an EFI
setup which maintains accurate instantaneous crankshaft position
information *and* the ability for the user to vary the firing phase - and -
the user takes the time to map out his engine to find the sweet spot as a
function of RPM, load, etc, then sequential is worth it. Otherwise, what
you really have is a system that is no better than a batch injection setup.
And you will never know the difference, because a batch-injected engine
will run very well, as will a non-synchronized sequential injection setup.
So, to answer the question, if you want "cruddy" sequential injection, then
simply run a cam sync signal into one of the unused I/O lines, and then use
the other I/O lines to drive the injectors. In the software, it would take
about an hour to write the code for "cruddy" sequential - simply fire the
outputs in a sequential order. Right now, MS fires two channels, so the
logic is already there - simply extend this to fire more outputs. Its that
simple. Next, wire up the injectors to what you think is the best
sequential timing relative to the cam sync pulse. Fire up the engine and
run it - it will run well. Sit back and bask in the "sequential" afterglow.
But realize that this may or may not be the best injection timing. And, the
fact that the MS triggers off of an ignition tach pulse source, which has
advance/retard, the injection point will move around. In my mind, this is
crummy.
Now, to implement this correctly, a crank wheel should be used. And to
digest the input from the crank wheel you can add software to the MS to
keep track of the crankshaft position in real-time. This is not impossible
- in fact, the Tomtek ignition does exactly this. And, contrary to what has
been posted in the past, the processor in the MS is quite underloaded - in
fact the value is somewhere around 22 - 23% CPU utilization - the other 75%
is just wasted. The real question would be at what crankshaft RPM point
does the processor fall behind simply due to the teeth input rate.
Now, if I was going to implement something like this, I would take
advantage of programmable logic (CPLD or FPGA) to maintain the crankshaft
position in real-time and to perform the output compares to fire the
injectors at the desired points in time. Time functions can be handled very
nicely in a FPGA, including ignition output and PWM. The processor on the
MS would run the same code as it does right now for the fuel calculations,
and the FPGA would handle the time-related events.
Or, you could just get Al's EFI332 code and run it on an EFI332 board -:)
But, his code is hard-wired for his application (SBC) so you would have to
change the number of cylinders, etc in the code. And, he has over 600
adjustable variables, so if you want things to tweak here you go.
- Bruce
_______________________________________________
Diy_efi mailing list
Diy_efi at diy-efi.org
http://www.diy-efi.org/mailman/listinfo/diy_efi
More information about the Diy_efi
mailing list