1 /* fuelAndIgnitionCalcs.h
3 Copyright 2008 Fred Cooke
5 This file is part of the FreeEMS project.
7 FreeEMS software is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
12 FreeEMS software is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with any FreeEMS software. If not, see http://www.gnu.org/licenses/
20 We ask that if you make any changes to this file you email them upstream to
21 us at admin(at)diyefi(dot)org or, even better, fork the code on github.com!
23 Thank you for choosing FreeEMS to run your engine! */
26 /* Header file multiple inclusion protection courtesy eclipse Header Template */
27 /* and http://gcc.gnu.org/onlinedocs/gcc-3.1.1/cpp/ C pre processor manual */
28 #ifndef FILE_FUELANDIGNITIONCALCS_H_SEEN
29 #define FILE_FUELANDIGNITIONCALCS_H_SEEN
33 #warning "EXTERN already defined by another header, please sort it out!"
34 #undef EXTERN /* If fail on warning is off, remove the definition such that we can redefine correctly. */
38 #ifdef FUELANDIGNITIONCALCS_C
45 EXTERN
void calculateFuelAndIgnition(void) FPAGE_FE
;
48 /*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& Always show your working! &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/
50 /* At least, that is what my teachers used to say 15 years ago ;-) */
52 /******************** The full calculations in an unusable form ******************/
54 /* Full calcs on a single line */
55 // 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))));
57 /* stripped with only variables and divisors left.*/
58 // finalMasterPulseWidth = (((airPressure / airPressureDivisor) * (lookedUpVE / (lookedUpVEDivisor * VEpercentageDivisor))) / ((airInletTemp / airInletTempDivisor) * (desiredLambda / desiredLambdaDivisor) * (densityOfFuel / (densityOfFuelDivisor * densityOfFuelUnitDivisor))));
60 /* stripped with only divisors left.*/
61 // finalMasterPulseWidth = (airInletTempDivisor * oneLambdaDivisor * densityOfFuelTotalDivisor) / (airPressureDivisor * VETotalDivisor) ;
63 /* stripped with only divisors left.*/
66 /* totally stripped with no divisors */
67 // finalMasterPulseWidth = ((airPressure * lookedUpVE) / (airInletTemp * desiredLambda * densityOfFuel));
69 /**************************** The constant calculations **************************/
71 // unsigned short constant;
72 /* stripped with only constants and divisors left.*/
73 // constant = ((msToTicks * (molarMassOfAir/ molarMassOfAirDivisor) * (perCylinderVolume / perCylinderVolumeDivisor)) / ((universalGasConstant / universalGasConstantDivisor) * (stoichiometricAFR / stoichiometricAFRDivisor) * (injectorFlow / (injectorFlowUnitDivisor * injectorFlowDivisor))));
75 /* stripped with only divisors left. Top divisors go on bottom and bottom on top! */
76 // constDiv = (universalGasConstantDivisor * stoichiometricAFRDivisor * injectorFlowTotalDivisor) / (molarMassOfAirDivisor * perCylinderVolumeDivisor);
77 //1310720= (4096 * 1024 * 1024000 ) / (100 * 32768 );
79 /* stripped with only constants left.*/
80 // constant = ((msToTicks * molarMassOfAir * perCylinderVolume) / (universalGasConstant * stoichiometricAFR * injectorFlow));
81 //nstant = ((1250 * 2897 * 16384 ) / (34056 * 15053 * 4096 ));
83 /*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*/
90 /* let us know if we are being untidy with headers */
91 #warning "Header file FUELANDIGNITIONCALCS_H seen before, sort it out!"
92 /* end of the wrapper ifdef from the very top */