First work on coolant and IAT reads and corrections

This commit is contained in:
Josh Stewart 2014-05-12 13:43:33 +10:00
parent 41e5d6441f
commit 8f2094e20a
2 changed files with 15 additions and 5 deletions

View File

@ -42,7 +42,7 @@ struct statuses {
byte VE;
byte O2;
byte coolant;
byte coolantADC;
byte cltADC;
byte IAT;
byte iatADC;
byte advance;

View File

@ -56,6 +56,9 @@ struct table3D fuelTable; //8x8 fuel map
struct table3D ignitionTable; //8x8 ignition map
struct table2D taeTable; //4 bin TPS Acceleration Enrichment map (2D)
struct table2D WUETable; //10 bin Warm Up Enrichment map (2D)
struct table2D cltCalibrationTable;
struct table2D iatCalibrationTable;
struct table2D o2CalibrationTable;
unsigned long counter;
unsigned long currentLoopTime; //The time the current loop started (uS)
@ -220,20 +223,27 @@ void loop()
}
//Uncomment the following for testing
/*
currentStatus.hasSync = true;
currentStatus.RPM = 5500;
*/
//***SET STATUSES***
//-----------------------------------------------------------------------------------------------------
currentStatus.TPSlast = currentStatus.TPS;
currentStatus.MAP = fastMap(analogRead(pinMAP), 0, 1023, 0, 100); //Get the current MAP value
currentStatus.coolant = fastMap(analogRead(pinCLT), 0, 1023, 0, 255); //Get the current raw CLT value
currentStatus.iatADC = fastMap(analogRead(pinIAT), 0, 1023, 0, 255); //Get the current raw IAT value
currentStatus.tpsADC = fastMap(analogRead(pinTPS), 0, 1023, 0, 255); //Get the current raw TPS ADC value and map it into a byte
currentStatus.TPS = fastMap(currentStatus.tpsADC, configPage1.tpsMin, configPage1.tpsMax, 0, 100); //Take the raw TPS ADC value and convert it into a TPS% based on the calibrated values
currentStatus.O2 = fastMap(analogRead(pinO2), 0, 1023, 117, 358); //Get the current O2 value. Calibration is from AFR values 7.35 to 22.4, then multiplied by 16 (<< 4). This is the correct calibration for an Innovate Wideband 0v - 5V unit
//The IAT and CLT readings can be done less frequently. This still runs about 10 times per second
if ((mainLoopCount & 127) == 1)
{
currentStatus.cltADC = fastMap(analogRead(pinCLT), 0, 1023, 0, 255); //Get the current raw CLT value
currentStatus.iatADC = fastMap(analogRead(pinIAT), 0, 1023, 0, 255); //Get the current raw IAT value
currentStatus.coolant = table2D_getValue(cltCalibrationTable, currentStatus.cltADC);
currentStatus.IAT = table2D_getValue(iatCalibrationTable, currentStatus.iatADC);
}
//Always check for sync
//Main loop runs within this clause