This commit is contained in:
rusefi 2018-01-21 16:11:39 -05:00
parent 0fe7598c7d
commit 575a608d55
4 changed files with 72 additions and 6 deletions

View File

@ -11,7 +11,27 @@
static const float rpmBins[ASIZE] = {500.0, 1000.0, 1500.0, 2000.0, 2500.0, 3000.0, 3500.0, 4000.0, 4500.0, 5000.0, 5500.0, 6000.0, 6500.0, 7000.0, 7500.0, 8000.0};
static const float voltageBins[ASIZE] = {0.200000, 0.490000, 0.770000, 1.060000, 1.350000, 1.630000, 1.920000, 2.210000, 2.490000, 2.780000, 3.070000, 3.350000, 3.640000, 3.930000, 4.210000, 4.500000};
static const float voltageBins[ASIZE] ={0.23, 0.3, 0.4, 0.5,
0.6, 0.7, 0.8, 1.0,
1.1, 1.2, 1.5, 2.0,
2.5, 3, 3.5, 4.5};
static const float maf2map16[ASIZE][ASIZE] = {
/*v=0.230000 kpa=*/ 225.400009, /*v=0.300000 kpa=*/ 225.400009, /*v=0.400000 kpa=*/ 225.400009, /*v=0.500000 kpa=*/ 204.539993, /*v=0.600000 kpa=*/ 178.471420, /*v=0.700000 kpa=*/ 159.033340, /*v=0.800000 kpa=*/ 143.249985, /*v=1.000000 kpa=*/ 128.350006, /*v=1.100000 kpa=*/ 123.383331, /*v=1.200000 kpa=*/ 117.149994, /*v=1.500000 kpa=*/ 94.725006, /*v=2.000000 kpa=*/ 66.687500, /*v=2.500000 kpa=*/ 46.200005, /*v=3.000000 kpa=*/ 39.381821, /*v=3.500000 kpa=*/ 32.563641, /*v=4.500000 kpa=*/ 1.400000,
/*v=0.230000 kpa=*/ 225.400009, /*v=0.300000 kpa=*/ 225.400009, /*v=0.400000 kpa=*/ 225.400009, /*v=0.500000 kpa=*/ 203.049988, /*v=0.600000 kpa=*/ 170.666656, /*v=0.700000 kpa=*/ 149.044449, /*v=0.800000 kpa=*/ 134.558334, /*v=1.000000 kpa=*/ 122.141670, /*v=1.100000 kpa=*/ 114.233337, /*v=1.200000 kpa=*/ 105.900002, /*v=1.500000 kpa=*/ 75.519356, /*v=2.000000 kpa=*/ 51.166656, /*v=2.500000 kpa=*/ 38.199997, /*v=3.000000 kpa=*/ 28.406252, /*v=3.500000 kpa=*/ 19.093754, /*v=4.500000 kpa=*/ 1.400000,
/*v=0.230000 kpa=*/ 225.400009, /*v=0.300000 kpa=*/ 225.400009, /*v=0.400000 kpa=*/ 225.400009, /*v=0.500000 kpa=*/ 195.600021, /*v=0.600000 kpa=*/ 165.700012, /*v=0.700000 kpa=*/ 144.314285, /*v=0.800000 kpa=*/ 130.833344, /*v=1.000000 kpa=*/ 111.669235, /*v=1.100000 kpa=*/ 100.933319, /*v=1.200000 kpa=*/ 91.000008, /*v=1.500000 kpa=*/ 61.099998, /*v=2.000000 kpa=*/ 36.654549, /*v=2.500000 kpa=*/ 26.494740, /*v=3.000000 kpa=*/ 18.652634, /*v=3.500000 kpa=*/ 10.810526, /*v=4.500000 kpa=*/ 1.400000,
/*v=0.230000 kpa=*/ 225.400009, /*v=0.300000 kpa=*/ 225.400009, /*v=0.400000 kpa=*/ 206.774979, /*v=0.500000 kpa=*/ 178.116669, /*v=0.600000 kpa=*/ 156.324982, /*v=0.700000 kpa=*/ 133.316666, /*v=0.800000 kpa=*/ 120.900002, /*v=1.000000 kpa=*/ 91.000000, /*v=1.100000 kpa=*/ 80.285713, /*v=1.200000 kpa=*/ 70.412491, /*v=1.500000 kpa=*/ 44.533340, /*v=2.000000 kpa=*/ 29.447060, /*v=2.500000 kpa=*/ 20.682354, /*v=3.000000 kpa=*/ 12.537375, /*v=3.500000 kpa=*/ 5.012123, /*v=4.500000 kpa=*/ 1.400000,
/*v=0.230000 kpa=*/ 225.400009, /*v=0.300000 kpa=*/ 225.400009, /*v=0.400000 kpa=*/ 193.100006, /*v=0.500000 kpa=*/ 168.183319, /*v=0.600000 kpa=*/ 148.216644, /*v=0.700000 kpa=*/ 126.487511, /*v=0.800000 kpa=*/ 110.400002, /*v=1.000000 kpa=*/ 77.500000, /*v=1.100000 kpa=*/ 68.111755, /*v=1.200000 kpa=*/ 59.113319, /*v=1.500000 kpa=*/ 36.755554, /*v=2.000000 kpa=*/ 25.240002, /*v=2.500000 kpa=*/ 17.790001, /*v=3.000000 kpa=*/ 7.905632, /*v=3.500000 kpa=*/ 1.400000, /*v=4.500000 kpa=*/ 1.400000,
/*v=0.230000 kpa=*/ 225.400009, /*v=0.300000 kpa=*/ 225.400009, /*v=0.400000 kpa=*/ 188.099991, /*v=0.500000 kpa=*/ 161.949997, /*v=0.600000 kpa=*/ 135.799988, /*v=0.700000 kpa=*/ 115.900009, /*v=0.800000 kpa=*/ 95.966652, /*v=1.000000 kpa=*/ 61.099998, /*v=1.100000 kpa=*/ 53.649998, /*v=1.200000 kpa=*/ 46.200001, /*v=1.500000 kpa=*/ 31.200003, /*v=2.000000 kpa=*/ 24.427275, /*v=2.500000 kpa=*/ 17.654547, /*v=3.000000 kpa=*/ 1.400000, /*v=3.500000 kpa=*/ 1.400000, /*v=4.500000 kpa=*/ 1.400000,
/*v=0.230000 kpa=*/ 225.400009, /*v=0.300000 kpa=*/ 225.400009, /*v=0.400000 kpa=*/ 184.349991, /*v=0.500000 kpa=*/ 157.128571, /*v=0.600000 kpa=*/ 127.285713, /*v=0.700000 kpa=*/ 105.900009, /*v=0.800000 kpa=*/ 86.499992, /*v=1.000000 kpa=*/ 59.444450, /*v=1.100000 kpa=*/ 51.166668, /*v=1.200000 kpa=*/ 44.381817, /*v=1.500000 kpa=*/ 31.044794, /*v=2.000000 kpa=*/ 23.284378, /*v=2.500000 kpa=*/ 3.883316, /*v=3.000000 kpa=*/ 1.400000, /*v=3.500000 kpa=*/ 1.400000, /*v=4.500000 kpa=*/ 1.400000,
/*v=0.230000 kpa=*/ 225.400009, /*v=0.300000 kpa=*/ 225.400024, /*v=0.400000 kpa=*/ 180.600006, /*v=0.500000 kpa=*/ 144.740005, /*v=0.600000 kpa=*/ 118.399994, /*v=0.700000 kpa=*/ 91.000000, /*v=0.800000 kpa=*/ 74.019073, /*v=1.000000 kpa=*/ 56.133339, /*v=1.100000 kpa=*/ 46.199997, /*v=1.200000 kpa=*/ 41.512497, /*v=1.500000 kpa=*/ 29.671795, /*v=2.000000 kpa=*/ 20.120514, /*v=2.500000 kpa=*/ 1.400000, /*v=3.000000 kpa=*/ 1.400000, /*v=3.500000 kpa=*/ 1.400000, /*v=4.500000 kpa=*/ 1.400000,
/*v=0.230000 kpa=*/ 225.400009, /*v=0.300000 kpa=*/ 220.433319, /*v=0.400000 kpa=*/ 175.633316, /*v=0.500000 kpa=*/ 129.414276, /*v=0.600000 kpa=*/ 103.964928, /*v=0.700000 kpa=*/ 84.219177, /*v=0.800000 kpa=*/ 70.771927, /*v=1.000000 kpa=*/ 52.544510, /*v=1.100000 kpa=*/ 44.465305, /*v=1.200000 kpa=*/ 39.363266, /*v=1.500000 kpa=*/ 27.188465, /*v=2.000000 kpa=*/ 11.333336, /*v=2.500000 kpa=*/ 1.400000, /*v=3.000000 kpa=*/ 1.400000, /*v=3.500000 kpa=*/ 1.400000, /*v=4.500000 kpa=*/ 1.400000,
/*v=0.230000 kpa=*/ 225.400009, /*v=0.300000 kpa=*/ 220.433319, /*v=0.400000 kpa=*/ 160.699997, /*v=0.500000 kpa=*/ 115.900002, /*v=0.600000 kpa=*/ 93.128578, /*v=0.700000 kpa=*/ 76.000000, /*v=0.800000 kpa=*/ 67.235291, /*v=1.000000 kpa=*/ 48.186661, /*v=1.100000 kpa=*/ 40.982609, /*v=1.200000 kpa=*/ 34.460869, /*v=1.500000 kpa=*/ 21.887497, /*v=2.000000 kpa=*/ 3.262497, /*v=2.500000 kpa=*/ 1.400000, /*v=3.000000 kpa=*/ 1.400000, /*v=3.500000 kpa=*/ 1.400000, /*v=4.500000 kpa=*/ 1.400000,
/*v=0.230000 kpa=*/ 225.400009, /*v=0.300000 kpa=*/ 215.466675, /*v=0.400000 kpa=*/ 150.699966, /*v=0.500000 kpa=*/ 103.771431, /*v=0.600000 kpa=*/ 80.999985, /*v=0.700000 kpa=*/ 66.830765, /*v=0.800000 kpa=*/ 57.713634, /*v=1.000000 kpa=*/ 43.831581, /*v=1.100000 kpa=*/ 35.936840, /*v=1.200000 kpa=*/ 29.671789, /*v=1.500000 kpa=*/ 18.210253, /*v=2.000000 kpa=*/ 1.400000, /*v=2.500000 kpa=*/ 1.400000, /*v=3.000000 kpa=*/ 1.400000, /*v=3.500000 kpa=*/ 1.400000, /*v=4.500000 kpa=*/ 1.400000,
/*v=0.230000 kpa=*/ 225.400009, /*v=0.300000 kpa=*/ 214.225006, /*v=0.400000 kpa=*/ 135.800003, /*v=0.500000 kpa=*/ 89.333328, /*v=0.600000 kpa=*/ 73.290901, /*v=0.700000 kpa=*/ 60.452179, /*v=0.800000 kpa=*/ 53.973915, /*v=1.000000 kpa=*/ 39.141182, /*v=1.100000 kpa=*/ 30.786114, /*v=1.200000 kpa=*/ 26.647224, /*v=1.500000 kpa=*/ 14.230555, /*v=2.000000 kpa=*/ 1.400000, /*v=2.500000 kpa=*/ 1.400000, /*v=3.000000 kpa=*/ 1.400000, /*v=3.500000 kpa=*/ 1.400000, /*v=4.500000 kpa=*/ 1.400000,
/*v=0.230000 kpa=*/ 225.400009, /*v=0.300000 kpa=*/ 180.600006, /*v=0.400000 kpa=*/ 128.350006, /*v=0.500000 kpa=*/ 86.000000, /*v=0.600000 kpa=*/ 70.581810, /*v=0.700000 kpa=*/ 59.068188, /*v=0.800000 kpa=*/ 52.295456, /*v=1.000000 kpa=*/ 35.199997, /*v=1.100000 kpa=*/ 28.316130, /*v=1.200000 kpa=*/ 23.509678, /*v=1.500000 kpa=*/ 9.090324, /*v=2.000000 kpa=*/ 1.400000, /*v=2.500000 kpa=*/ 1.400000, /*v=3.000000 kpa=*/ 1.400000, /*v=3.500000 kpa=*/ 1.400000, /*v=4.500000 kpa=*/ 1.400000,
/*v=0.230000 kpa=*/ 225.400009, /*v=0.300000 kpa=*/ 175.633331, /*v=0.400000 kpa=*/ 120.900017, /*v=0.500000 kpa=*/ 84.571426, /*v=0.600000 kpa=*/ 67.872726, /*v=0.700000 kpa=*/ 57.375000, /*v=0.800000 kpa=*/ 49.924999, /*v=1.000000 kpa=*/ 31.200005, /*v=1.100000 kpa=*/ 25.240004, /*v=1.200000 kpa=*/ 19.280003, /*v=1.500000 kpa=*/ 1.400000, /*v=2.000000 kpa=*/ 1.400000, /*v=2.500000 kpa=*/ 1.400000, /*v=3.000000 kpa=*/ 1.400000, /*v=3.500000 kpa=*/ 1.400000, /*v=4.500000 kpa=*/ 1.400000,
/*v=0.230000 kpa=*/ 225.399979, /*v=0.300000 kpa=*/ 173.149994, /*v=0.400000 kpa=*/ 113.399986, /*v=0.500000 kpa=*/ 80.999992, /*v=0.600000 kpa=*/ 65.163628, /*v=0.700000 kpa=*/ 54.964710, /*v=0.800000 kpa=*/ 46.199997, /*v=1.000000 kpa=*/ 27.474998, /*v=1.100000 kpa=*/ 20.024996, /*v=1.200000 kpa=*/ 12.574998, /*v=1.500000 kpa=*/ 1.400000, /*v=2.000000 kpa=*/ 1.400000, /*v=2.500000 kpa=*/ 1.400000, /*v=3.000000 kpa=*/ 1.400000, /*v=3.500000 kpa=*/ 1.400000, /*v=4.500000 kpa=*/ 1.400000,
/*v=0.230000 kpa=*/ 225.399979, /*v=0.300000 kpa=*/ 165.699997, /*v=0.400000 kpa=*/ 102.175003, /*v=0.500000 kpa=*/ 76.000000, /*v=0.600000 kpa=*/ 61.100002, /*v=0.700000 kpa=*/ 52.335297, /*v=0.800000 kpa=*/ 41.700005, /*v=1.000000 kpa=*/ 20.438889, /*v=1.100000 kpa=*/ 12.161111, /*v=1.200000 kpa=*/ 3.883333, /*v=1.500000 kpa=*/ 1.400000, /*v=2.000000 kpa=*/ 1.400000, /*v=2.500000 kpa=*/ 1.400000, /*v=3.000000 kpa=*/ 1.400000, /*v=3.500000 kpa=*/ 1.400000, /*v=4.500000 kpa=*/ 1.400000,
};

View File

@ -1,4 +1,5 @@
/**
* @file map.cpp
*
* See also map_averaging.cpp
*

View File

@ -1,4 +1,6 @@
/**
* @file map.h
*
* @author Andrey Belomutskiy, (c) 2012-2017
*/
#ifndef MAP_H_
@ -25,7 +27,12 @@ float getMapByVoltage(float voltage DECLARE_ENGINE_PARAMETER_SUFFIX);
float decodePressure(float voltage, air_pressure_sensor_config_s * mapConfig DECLARE_ENGINE_PARAMETER_SUFFIX);
float validateMap(float mapKPa DECLARE_ENGINE_PARAMETER_SUFFIX);
#define INHG2KPA(inhg) ((inhg * 3.386375))
#define KPA_PER_PSI 6.89475728
// PSI (relative to atmosphere) to kPa (relative to vacuum)
#define PSI2KPA(psi) (101.32500411216164 + KPA_PER_PSI * (psi))
#define INHG2KPA(inhg) ((inhg) * 3.386375)
#define KPA2INHG(kpa) ((kpa) / 3.386375)
#endif

View File

@ -10,6 +10,8 @@
#include <stdlib.h>
#include "afm2mapConverter.h"
#include "table_helper.h"
#include "interpolation.h"
#include "map.h"
#define ASIZE 16
@ -37,24 +39,60 @@ static const float afr2map[ASIZE][ASIZE]= {
};
float PSI_BINS[ASIZE];
float V_BINS[ASIZE];
/**
* see maf2map.cpp#voltageBins
*/
const float V_BINS[ASIZE] = {0.23, 0.3, 0.4, 0.5,
0.6, 0.7, 0.8, 1.0,
1.1, 1.2, 1.5, 2.0,
2.5, 3, 3.5, 4.5};
void printConvertedTable() {
printf("printConvertedTable for miata 1.6\n");
setLinearCurve(V_BINS, ASIZE, 0.2, 4.5 , 0.01);
// setLinearCurve(V_BINS, ASIZE, 0.2, 4.5 , 0.01);
for (int i = 0; i< ASIZE;i++) {
printf("%f, ", V_BINS[i]);
}
printf("\n");
setLinearCurve(PSI_BINS, ASIZE, -14.5, 18 ,0.1);
setLinearCurve(PSI_BINS, ASIZE, PSI2KPA(18), PSI2KPA(-14.5), 0.1); // we invert PSI scale since voltage is inverted below
for (int i = 0; i< ASIZE;i++) {
printf("%f, ", PSI_BINS[i]);
}
printf("\n");
for (int rpmIndex = 0; rpmIndex< ASIZE;rpmIndex++) {
float rpmValue = rpmBins[rpmIndex];
float vValues[ASIZE];
for (int vIndex = 0; vIndex< ASIZE;vIndex++) {
// fliping indexes to get proper ascending sorting
vValues[ASIZE - 1 - vIndex] = afr2map[vIndex][rpmIndex];
}
// printf("vArray for %f\n", rpmValue);
// for (int i = 0; i< ASIZE;i++) {
// printf("/*psi=%f v=*/ %f, ", PSI_BINS[i], vValues[i]);
// }
// printf("\n");
// float psiValues[ASIZE];
for (int vIndex = 0; vIndex< ASIZE;vIndex++) {
float volts = V_BINS[vIndex];
float psiValue = interpolate2d("conv", volts, vValues, PSI_BINS, ASIZE);
// psiValues[vIndex] = psiValue;
printf("/*v=%f kpa=*/ %f, ", volts, psiValue);
}
printf("\n");
}
}