00001 /* fuelAndIgnitionCalcs.h 00002 00003 Copyright 2008 Fred Cooke 00004 00005 This file is part of the FreeEMS project. 00006 00007 FreeEMS software is free software: you can redistribute it and/or modify 00008 it under the terms of the GNU General Public License as published by 00009 the Free Software Foundation, either version 3 of the License, or 00010 (at your option) any later version. 00011 00012 FreeEMS software is distributed in the hope that it will be useful, 00013 but WITHOUT ANY WARRANTY; without even the implied warranty of 00014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00015 GNU General Public License for more details. 00016 00017 You should have received a copy of the GNU General Public License 00018 along with any FreeEMS software. If not, see <http://www.gnu.org/licenses/>. 00019 00020 We ask that if you make any changes to this file you send them upstream to us at admin@diyefi.org 00021 00022 Thank you for choosing FreeEMS to run your engine! */ 00023 00024 /* Header file multiple inclusion protection courtesy eclipse Header Template */ 00025 /* and http://gcc.gnu.org/onlinedocs/gcc-3.1.1/cpp/ C pre processor manual */ 00026 #ifndef FILE_FUELANDIGNITIONCALCS_H_SEEN 00027 #define FILE_FUELANDIGNITIONCALCS_H_SEEN 00028 00029 #ifdef FUELANDIGNITIONCALCS_C 00030 #define EXTERN 00031 #else 00032 #define EXTERN extern 00033 #endif 00034 00035 EXTERN void calculateFuelAndIgnition(void); 00036 00037 /*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Always show your working! &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/ 00038 00039 /* At least, that is what my teachers used to say 15 years ago ;-) */ 00040 00041 /******************** The full calculations in an unusable form ******************/ 00042 00043 /* Full calcs on a single line */ 00044 // final master PW = ((msToTicks * (molarMassOfAir/ molarMassOfAirDivisor) * (airPressure / airPressureDivisor) * (lookedUpVE / (lookedUpVEDivisor * VEpercentageDivisor)) * (perCylinderVolume / perCylinderVolumeDivisor)) / ((universalGasConstant / universalGasConstantDivisor) * (airInletTemp / airInletTempDivisor) * (stoichiometricAFR / stoichiometricAFRDivisor) * (desiredLambda / desiredLambdaDivisor) * (densityOfFuel / (densityOfFuelDivisor * densityOfFuelUnitDivisor)) * (injectorFlow / (injectorFlowUnitDivisor * injectorFlowDivisor)))); 00045 00046 /* stripped with only variables and divisors left.*/ 00047 // finalMasterPulseWidth = (((airPressure / airPressureDivisor) * (lookedUpVE / (lookedUpVEDivisor * VEpercentageDivisor))) / ((airInletTemp / airInletTempDivisor) * (desiredLambda / desiredLambdaDivisor) * (densityOfFuel / (densityOfFuelDivisor * densityOfFuelUnitDivisor)))); 00048 00049 /* stripped with only divisors left.*/ 00050 // finalMasterPulseWidth = (airInletTempDivisor * oneLambdaDivisor * densityOfFuelTotalDivisor) / (airPressureDivisor * VETotalDivisor) ; 00051 00052 /* stripped with only divisors left.*/ 00053 // divisors = 1; 00054 00055 /* totally stripped with no divisors */ 00056 // finalMasterPulseWidth = ((airPressure * lookedUpVE) / (airInletTemp * desiredLambda * densityOfFuel)); 00057 00058 /**************************** The constant calculations **************************/ 00059 00060 // unsigned short constant; 00061 /* stripped with only constants and divisors left.*/ 00062 // constant = ((msToTicks * (molarMassOfAir/ molarMassOfAirDivisor) * (perCylinderVolume / perCylinderVolumeDivisor)) / ((universalGasConstant / universalGasConstantDivisor) * (stoichiometricAFR / stoichiometricAFRDivisor) * (injectorFlow / (injectorFlowUnitDivisor * injectorFlowDivisor)))); 00063 00064 /* stripped with only divisors left. Top divisors go on bottom and bottom on top! */ 00065 // constDiv = (universalGasConstantDivisor * stoichiometricAFRDivisor * injectorFlowTotalDivisor) / (molarMassOfAirDivisor * perCylinderVolumeDivisor); 00066 //1310720= (4096 * 1024 * 1024000 ) / (100 * 32768 ); 00067 00068 /* stripped with only constants left.*/ 00069 // constant = ((msToTicks * molarMassOfAir * perCylinderVolume) / (universalGasConstant * stoichiometricAFR * injectorFlow)); 00070 //nstant = ((1250 * 2897 * 16384 ) / (34056 * 15053 * 4096 )); 00071 00072 /*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/ 00073 00074 #undef EXTERN 00075 00076 #else 00077 /* let us know if we are being untidy with headers */ 00078 #warning "Header file FUELANDIGNITIONCALCS_H seen before, sort it out!" 00079 /* end of the wrapper ifdef from the very top */ 00080 #endif