2013-02-04 03:43:38 -08:00
/*
These are some utility functions and variables used through the main code
*/
2013-02-04 13:05:35 -08:00
# define MS_IN_MINUTE 60000
# define US_IN_MINUTE 60000000
2013-02-04 17:39:20 -08:00
/* The following functions help determine the required fuel constant. For more information about these calculations, please refer to http://www.megamanual.com/v22manual/mfuel.htm
Calc below are for metric inputs of temp ( degrees C ) and MAP ( kPa ) to produce kg / m3 .
*/
2013-02-04 03:43:38 -08:00
int AIRDEN ( int MAP , int temp )
{
2013-02-04 19:05:03 -08:00
return ( 1.2929 * 273.13 / ( temp + 273.13 ) * MAP / 101.325 ) ;
2013-02-04 03:43:38 -08:00
}
2013-02-04 19:05:03 -08:00
2013-02-04 03:43:38 -08:00
/*
This functino retuns a pulsewidth time ( in tenths of a ms ) given the following :
REQ_FUEL
VE : Lookup from the main MAP vs RPM fuel table
MAP : In KPa , read from the sensor
GammaE : Sum of Enrichment factors ( Cold start , acceleration ) . This is a multiplication factor ( Eg to add 10 % , this should be 110 )
injOpen : Injector open time . The time the injector take to open in tenths of a ms
*/
int PW ( int REQ_FUEL , int VE , int MAP , int GammaE , int injOpen )
{
return REQ_FUEL * ( VE / 100 ) * ( MAP / 100 ) * ( GammaE / 100 ) + injOpen ;
}
2013-02-04 19:05:03 -08:00
/* Determine the Gamma Enrichment number. Forumla borrowed from MS2 manual... may be skipped/simplified for arduino!
WARMUP : Warmup Correction
O2_CLOSED : Feedback from Closed Loop Operation
AIRTEMP : Air Temp correction < - - Skip ?
BARO : Barometric Correction < - - Skip ?
*/
int GammaE ( int WARMUP , int O2_CLOSED , int AIRTEMP , int BARO )
{
return = ( WARMUP / 100 ) * ( O2_CLOSED / 100 ) * ( AIRTEMP / 100 ) * ( BARO / 100 )
}