From 1725058dc62f16dd21c1894ae98f38392e4fd1be Mon Sep 17 00:00:00 2001 From: andreika-git Date: Fri, 26 Jan 2018 17:50:12 +0200 Subject: [PATCH] Add a new MAP sensor type (MPX4250A) (#554) --- firmware/controllers/algo/rusefi_enums.h | 8 ++++++++ firmware/controllers/sensors/map.cpp | 5 +++++ firmware/integration/rusefi_config.txt | 2 +- firmware/tunerstudio/rusefi.ini | 2 +- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/firmware/controllers/algo/rusefi_enums.h b/firmware/controllers/algo/rusefi_enums.h index eeff757a7e..f8923d5c56 100644 --- a/firmware/controllers/algo/rusefi_enums.h +++ b/firmware/controllers/algo/rusefi_enums.h @@ -775,6 +775,14 @@ typedef enum { */ MT_TOYOTA_89420_02010 = 8, + /** + * 20 to 250 kPa (2.9 to 36.3 psi) 0.25 to 4.875 OUTPUT + * More precise calibration data for new NXP sensor revisions MPX4250A and MPXA4250A. + * For an old Freescale MPX4250D use "MT_MPX4250". + * See https://www.nxp.com/docs/en/data-sheet/MPX4250A.pdf + */ + MT_MPX4250A = 9, + Force_4b_cranking_map_type = ENUM_32_BITS, } air_pressure_sensor_type_e; diff --git a/firmware/controllers/sensors/map.cpp b/firmware/controllers/sensors/map.cpp index af506425fe..cc30e64ad4 100644 --- a/firmware/controllers/sensors/map.cpp +++ b/firmware/controllers/sensors/map.cpp @@ -56,6 +56,8 @@ static FastInterpolation gm3bar(0.631, 40, 4.914, 304); static FastInterpolation mpx4250(0, 8, 5, 260); +static FastInterpolation mpx4250A(0.25, 20, 4.875, 250); + static FastInterpolation mpx4100(0.3, 20, 4.9, 105); /** @@ -85,6 +87,7 @@ float decodePressure(float voltage, air_pressure_sensor_config_s * mapConfig DEC engineConfiguration->mapHighValueVoltage, mapConfig->highValue, voltage); case MT_DENSO183: case MT_MPX4250: + case MT_MPX4250A: case MT_HONDA3BAR: case MT_DODGE_NEON_2003: case MT_SUBY_DENSO: @@ -178,6 +181,8 @@ static FastInterpolation *getDecoder(air_pressure_sensor_type_e type) { return &denso183; case MT_MPX4250: return &mpx4250; + case MT_MPX4250A: + return &mpx4250A; case MT_HONDA3BAR: return &honda3bar; case MT_DODGE_NEON_2003: diff --git a/firmware/integration/rusefi_config.txt b/firmware/integration/rusefi_config.txt index f8027584d0..b71a5ea4c5 100644 --- a/firmware/integration/rusefi_config.txt +++ b/firmware/integration/rusefi_config.txt @@ -173,7 +173,7 @@ custom brain_pin_e 4 bits, U32, @OFFSET@, [0:6], @@brain_pin_e_enum@@ #define pin_output_mode_e_enum "default", "default inverted", "open collector", "open collector inverted" custom pin_output_mode_e 4 bits, U32, @OFFSET@, [0:1], @@pin_output_mode_e_enum@@ -custom air_pressure_sensor_type_e 4 bits, U32, @OFFSET@, [0:2] "Custom", "DENSO183", "MPX4250", "HONDA3BAR", "NEON_2003", "22012AA090", "3 Bar", "INVALID" +custom air_pressure_sensor_type_e 4 bits, U32, @OFFSET@, [0:2] "Custom", "DENSO183", "MPX4250", "HONDA3BAR", "NEON_2003", "22012AA090", "3 Bar", "MPX4100", "Toyota 89420-02010", "MPX4250A", "INVALID" #define adc_channel_e_enum "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PB0", "PB1", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "Disabled", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" custom adc_channel_e 4 bits, U32, @OFFSET@, [0:4] @@adc_channel_e_enum@@ diff --git a/firmware/tunerstudio/rusefi.ini b/firmware/tunerstudio/rusefi.ini index bffe84aace..4fb90b7fcf 100644 --- a/firmware/tunerstudio/rusefi.ini +++ b/firmware/tunerstudio/rusefi.ini @@ -117,7 +117,7 @@ page = 1 map_samplingWindow = array, F32, 204, [8], "deg", 1, 0, -720, 720, 2 map_sensor_lowValue = scalar, F32, 236, "kpa", 1, 0, -400, 800, 2 map_sensor_highValue = scalar, F32, 240, "kpa", 1, 0, -400, 800, 2 - map_sensor_type = bits, U32, 244, [0:2] "Custom", "DENSO183", "MPX4250", "HONDA3BAR", "NEON_2003", "22012AA090", "3 Bar", "INVALID" + map_sensor_type = bits, U32, 244, [0:2] "Custom", "DENSO183", "MPX4250", "HONDA3BAR", "NEON_2003", "22012AA090", "3 Bar", "MPX4100", "Toyota 89420-02010", "MPX4250A", "INVALID" map_sensor_hwChannel = bits, U32, 248, [0:4] "PA0", "PA1", "PA2", "PA3", "PA4", "PA5", "PA6", "PA7", "PB0", "PB1", "PC0", "PC1", "PC2", "PC3", "PC4", "PC5", "Disabled", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID", "INVALID" clt_tempC_1 = scalar, F32, 252, "*C", 1, 0, -40, 200, 1 clt_tempC_2 = scalar, F32, 256, "*C", 1, 0, -40, 200, 1