8051 Code

mike mager mikemager at hotmail.com
Fri Mar 31 07:46:35 GMT 2000


Greetings!

I searched around for Al Grippo code and for Al Lipper code, with no result; 
  how could I find it?  Circuit Cellar I have, and that's what starterd my 
interest in a DIY system.

Thanks,
Mike


>From: "John Dammeyer" <johnd at autoartisans.com>
>Reply-To: diy_efi at diy-efi.org
>To: <diy_efi at diy-efi.org>
>Subject: Re: 8051 Code
>Date: Wed, 29 Mar 2000 07:51:20 -0800
>
>
> > Date: Wed, 29 Mar 2000 12:33:12 +0100
> > From: Corner Paul <Paul.Corner at icl.com>
> > Subject: 8051 EFI code
> >
> > Hi John
> >
> > Any chance you would like to share the algorithms or some of the source 
>code
> > ?
> > I've looked at Al Lipper's work - the core routines aren't that 
>different to
> > what I had allready coded.
> >
> > Regards, Paul.
>
>
>Hi Paul,
>
>Can't distribute code as I'm bound by NDA but I can talk about it a bit.  I 
>based my code
>on Al Grippo's paper along with the series of articles in Circuit Cellar 
>Ink.
>
>In other words,  I used a Volumetric Efficiency table approach rather than 
>the MAP-RPM 2-D
>table.   I have parameters like Displacement, number of cylinders and 
>injector size along
>with Fuel/air ratio to determine the baseline 100% VE fuel required on a 
>per stroke basis.
>I guess at Vapour pressure because I don't measure RH.
>
>Given X amount of air in the cylinder at atmospheric pressure I then have 
>the amount of
>fuel (F) the engine requires.  The MAP divided by the Barometer forms a 
>ratio less than
>1.0 and the VE table is in percent so the basic equation is simply (X+F) * 
>MAP/Barometer *
>VE[RPM].
>
>I have a mainline loop that continuously calculates these values along with 
>acceleration
>and temperature enrichments and updates a global pulse width variable.  The 
>main loop just
>reports status out the CAN bus and recalculates PW based on the A/D values 
>which are
>triggered to also update via interrupts.
>
>We have two HALL sensors underneath the CAM timing pulley which are 
>switched by 4 magnets
>set at 90 degrees to each other to create a Grey Code encoder.  This tells 
>me from the bit
>pattern:  00, 01, 11, 10 which cylinder is at TDC and creates an interrupt 
>on each single
>bit change.  Notice the Grey Code only has one bit that ever changes so an 
>interrupt is
>fairly easy to decode into a quadrant.  The down side is the CAM has to 
>make one complete
>revolution after power up before the sensors report the correct values as 
>they are
>latching sensors where a North magnetic pole  turns them on and South turns 
>them off and
>they come up in an unknown state.  It means at worst case the engine cranks 
>two
>revolutions before starting.
>
>I chose the 80C592 because it has enough compare registers to assign one 
>per injector and
>coil pair and of course comes with CAN bus.  The rest of the code is just 
>house-keeping to
>make the injectors and coils fire at the right time.  I've done empirical 
>tests and found
>that up to about 4000RPM I'm updating the PW once per injector squirt after 
>that I start
>to lag behind but we haven't found that to be a hindrance as an unloaded 
>engine winds up
>to redline far faster than I can pull the throttle back and a fully loaded 
>engine doesn't
>change load on a per stroke basis.
>
>To tune the engine we've determined the best way is to set the dyno, (or 
>propeller) to
>load the engine enough so that the throttle is wide open at a number of 
>different RPM
>settings.  (1500, 2000, 2500, 3000 ...).  During this time we tweak the VE 
>table values
>till the O2 sensor starts dancing around 0.5V.  With a bit of extrapolating 
>we end up
>filling in the VE table between those values (100RPM steps)  and end up 
>with values from
>about 45% up to 95%.  For values less than WOT the MAP/Barometer ratio 
>seems to keep the
>mixture fairly even.  This beats filling in a
>
>Lookup[RPM,MAP] table with hundreds of values.
>
>Enrichments are done by monitoring engine temp, air temp and the TPS.
>
>What is really cool is that when we put in bigger injectors the only thing 
>we change is
>the size of the injector and the engine runs with shorter pulse widths but 
>the mixture is
>just about spot on.  One other parameter that affects the low end idle and 
>overall mixture
>is the open/close time of the injector.  We guess that 66% of the rated 
>fuel is delivered
>during this time so if we need 4ms fuel and the open/close time is 3ms then 
>we need a 5ms
>pulse.
>
>i.e.: PW = Desired rate - (OpenTime*.66666) + OpenTime.
>
>or  PW = 4ms - (3ms * 0.66666) + 3ms ==> 4ms - 2ms + 3ms ==> 5ms.
>
>Change to Lucas Disk Injectors from Pintle Injectors and that formula 
>changes because the
>Lucas open faster.
>
>I'd like to say .. simple eh? .... but it wasn't and we still have little 
>glitches that
>are unsolved but I suspect are mechanical or electrical rather than 
>software.
>
>Cheers,
>
>John
>
>
>
>
>
>
>----------------------------------------------------------------------------
>To unsubscribe from diy_efi, send "unsubscribe diy_efi" (without the 
>quotes)
>in the body of a message (not the subject) to majordomo at lists.diy-efi.org
>

______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com

----------------------------------------------------------------------------
To unsubscribe from diy_efi, send "unsubscribe diy_efi" (without the quotes)
in the body of a message (not the subject) to majordomo at lists.diy-efi.org




More information about the Diy_efi mailing list