diff --git a/source/Core/BSP/MHP30/ThermoModel.cpp b/source/Core/BSP/MHP30/ThermoModel.cpp new file mode 100644 index 00000000..887f32c9 --- /dev/null +++ b/source/Core/BSP/MHP30/ThermoModel.cpp @@ -0,0 +1,51 @@ +/* + * ThermoModel.cpp + * + * Created on: 1 May 2021 + * Author: Ralim + */ +#include "TipThermoModel.h" +#include "configuration.h" +#include "Utils.h" + +#ifdef TEMP_uV_LOOKUP_MHP30 +const uint16_t uVtoDegC[] = { + // + // + 0, 0, // + 397, 10, // + 798, 20, /// + 1203, 30, // + 1612, 40, // + 2023, 50, // + 2436, 60, // + 3225, 79, // + 4013, 98, // + 4756, 116, // + 5491, 134, // + 5694, 139, // + 6339, 155, // + 7021, 172, // + 7859, 193, // + 8619, 212, // + 9383, 231, // + 10153, 250, // + 10930, 269, // + 11712, 288, // + 12499, 307, // + 13290, 326, // + 14084, 345, // + 14881, 364, // + 15680, 383, // + 16482, 402, // + 17285, 421, // + 18091, 440, // + 18898, 459, // + +}; +#endif + +const int uVtoDegCItems = sizeof(uVtoDegC) / (2 * sizeof(uint16_t)); + + +uint32_t TipThermoModel::convertuVToDegC(uint32_t tipuVDelta) { return Utils::InterpolateLookupTable(uVtoDegC, uVtoDegCItems, tipuVDelta); } diff --git a/source/Core/BSP/Miniware/ThermoModel.cpp b/source/Core/BSP/Miniware/ThermoModel.cpp new file mode 100644 index 00000000..ea54927f --- /dev/null +++ b/source/Core/BSP/Miniware/ThermoModel.cpp @@ -0,0 +1,132 @@ +/* + * ThermoModel.cpp + * + * Created on: 1 May 2021 + * Author: Ralim + */ +#include "TipThermoModel.h" +#include "configuration.h" +#include "Utils.h" + + + +#ifdef TEMP_uV_LOOKUP_HAKKO +const uint16_t uVtoDegC[] = { + // + // + 0, 0, // + 266, 10, // + 522, 20, // + 770, 30, // + 1010, 40, // + 1244, 50, // + 1473, 60, // + 1697, 70, // + 1917, 80, // + 2135, 90, // + 2351, 100, // + 2566, 110, // + 2780, 120, // + 2994, 130, // + 3209, 140, // + 3426, 150, // + 3644, 160, // + 3865, 170, // + 4088, 180, // + 4314, 190, // + 4544, 200, // + 4777, 210, // + 5014, 220, // + 5255, 230, // + 5500, 240, // + 5750, 250, // + 6003, 260, // + 6261, 270, // + 6523, 280, // + 6789, 290, // + 7059, 300, // + 7332, 310, // + 7609, 320, // + 7889, 330, // + 8171, 340, // + 8456, 350, // + 8742, 360, // + 9030, 370, // + 9319, 380, // + 9607, 390, // + 9896, 400, // + 10183, 410, // + 10468, 420, // + 10750, 430, // + 11029, 440, // + 11304, 450, // + 11573, 460, // + 11835, 470, // + 12091, 480, // + 12337, 490, // + 12575, 500, // + +}; +#endif + +#ifdef TEMP_uV_LOOKUP_TS80 + +const uint16_t uVtoDegC[] = { + // + // + 530, 0, // + 1282, 10, // + 2034, 20, // + 2786, 30, // + 3538, 40, // + 4290, 50, // + 5043, 60, // + 5795, 70, // + 6547, 80, // + 7299, 90, // + 8051, 100, // + 8803, 110, // + 9555, 120, // + 10308, 130, // + 11060, 140, // + 11812, 150, // + 12564, 160, // + 13316, 170, // + 14068, 180, // + 14820, 190, // + 15573, 200, // + 16325, 210, // + 17077, 220, // + 17829, 230, // + 18581, 240, // + 19333, 250, // + 20085, 260, // + 20838, 270, // + 21590, 280, // + 22342, 290, // + 23094, 300, // + 23846, 310, // + 24598, 320, // + 25350, 330, // + 26103, 340, // + 26855, 350, // + 27607, 360, // + 28359, 370, // + 29111, 380, // + 29863, 390, // + 30615, 400, // + 31368, 410, // + 32120, 420, // + 32872, 430, // + 33624, 440, // + 34376, 450, // + 35128, 460, // + 35880, 470, // + 36632, 480, // + 37385, 490, // + 38137, 500, // +}; +#endif +const int uVtoDegCItems = sizeof(uVtoDegC) / (2 * sizeof(uint16_t)); + +uint32_t TipThermoModel::convertuVToDegC(uint32_t tipuVDelta) { return Utils::InterpolateLookupTable(uVtoDegC, uVtoDegCItems, tipuVDelta); } diff --git a/source/Core/BSP/Pine64/ThermoModel.cpp b/source/Core/BSP/Pine64/ThermoModel.cpp new file mode 100644 index 00000000..efdfc207 --- /dev/null +++ b/source/Core/BSP/Pine64/ThermoModel.cpp @@ -0,0 +1,74 @@ +/* + * ThermoModel.cpp + * + * Created on: 1 May 2021 + * Author: Ralim + */ +#include "TipThermoModel.h" +#include "configuration.h" +#include "Utils.h" + + +#ifdef TEMP_uV_LOOKUP_HAKKO +const uint16_t uVtoDegC[] = { + // + // + 0, 0, // + 266, 10, // + 522, 20, // + 770, 30, // + 1010, 40, // + 1244, 50, // + 1473, 60, // + 1697, 70, // + 1917, 80, // + 2135, 90, // + 2351, 100, // + 2566, 110, // + 2780, 120, // + 2994, 130, // + 3209, 140, // + 3426, 150, // + 3644, 160, // + 3865, 170, // + 4088, 180, // + 4314, 190, // + 4544, 200, // + 4777, 210, // + 5014, 220, // + 5255, 230, // + 5500, 240, // + 5750, 250, // + 6003, 260, // + 6261, 270, // + 6523, 280, // + 6789, 290, // + 7059, 300, // + 7332, 310, // + 7609, 320, // + 7889, 330, // + 8171, 340, // + 8456, 350, // + 8742, 360, // + 9030, 370, // + 9319, 380, // + 9607, 390, // + 9896, 400, // + 10183, 410, // + 10468, 420, // + 10750, 430, // + 11029, 440, // + 11304, 450, // + 11573, 460, // + 11835, 470, // + 12091, 480, // + 12337, 490, // + 12575, 500, // + +}; +#endif + +const int uVtoDegCItems = sizeof(uVtoDegC) / (2 * sizeof(uint16_t)); + + +uint32_t TipThermoModel::convertuVToDegC(uint32_t tipuVDelta) { return Utils::InterpolateLookupTable(uVtoDegC, uVtoDegCItems, tipuVDelta); } diff --git a/source/Core/Drivers/TipThermoModel.cpp b/source/Core/Drivers/TipThermoModel.cpp index 794a3b37..eab52333 100644 --- a/source/Core/Drivers/TipThermoModel.cpp +++ b/source/Core/Drivers/TipThermoModel.cpp @@ -9,7 +9,6 @@ #include "BSP.h" #include "Settings.h" #include "Utils.h" -#include "configuration.h" #include "main.hpp" #include "power.hpp" /* @@ -56,169 +55,7 @@ uint32_t TipThermoModel::convertTipRawADCTouV(uint16_t rawADC, bool ski uint32_t TipThermoModel::convertTipRawADCToDegC(uint16_t rawADC) { return convertuVToDegC(convertTipRawADCTouV(rawADC)); } uint32_t TipThermoModel::convertTipRawADCToDegF(uint16_t rawADC) { return convertuVToDegF(convertTipRawADCTouV(rawADC)); } -// Table that is designed to be walked to find the best sample for the lookup -// Extrapolate between two points -// [x1, y1] = point 1 -// [x2, y2] = point 2 -// x = input value -// output is x's interpolated y value -#ifdef TEMP_uV_LOOKUP_HAKKO -const uint16_t uVtoDegC[] = { - // - // - 0, 0, // - 266, 10, // - 522, 20, // - 770, 30, // - 1010, 40, // - 1244, 50, // - 1473, 60, // - 1697, 70, // - 1917, 80, // - 2135, 90, // - 2351, 100, // - 2566, 110, // - 2780, 120, // - 2994, 130, // - 3209, 140, // - 3426, 150, // - 3644, 160, // - 3865, 170, // - 4088, 180, // - 4314, 190, // - 4544, 200, // - 4777, 210, // - 5014, 220, // - 5255, 230, // - 5500, 240, // - 5750, 250, // - 6003, 260, // - 6261, 270, // - 6523, 280, // - 6789, 290, // - 7059, 300, // - 7332, 310, // - 7609, 320, // - 7889, 330, // - 8171, 340, // - 8456, 350, // - 8742, 360, // - 9030, 370, // - 9319, 380, // - 9607, 390, // - 9896, 400, // - 10183, 410, // - 10468, 420, // - 10750, 430, // - 11029, 440, // - 11304, 450, // - 11573, 460, // - 11835, 470, // - 12091, 480, // - 12337, 490, // - 12575, 500, // - -}; -#endif -#ifdef TEMP_uV_LOOKUP_MHP30 -const uint16_t uVtoDegC[] = { - // - // - 0, 0, // - 397, 10, // - 798, 20, /// - 1203, 30, // - 1612, 40, // - 2023, 50, // - 2436, 60, // - 3225, 79, // - 4013, 98, // - 4756, 116, // - 5491, 134, // - 5694, 139, // - 6339, 155, // - 7021, 172, // - 7859, 193, // - 8619, 212, // - 9383, 231, // - 10153, 250, // - 10930, 269, // - 11712, 288, // - 12499, 307, // - 13290, 326, // - 14084, 345, // - 14881, 364, // - 15680, 383, // - 16482, 402, // - 17285, 421, // - 18091, 440, // - 18898, 459, // - -}; -#endif - -#ifdef TEMP_uV_LOOKUP_TS80 - -const uint16_t uVtoDegC[] = { - // - // - 530, 0, // - 1282, 10, // - 2034, 20, // - 2786, 30, // - 3538, 40, // - 4290, 50, // - 5043, 60, // - 5795, 70, // - 6547, 80, // - 7299, 90, // - 8051, 100, // - 8803, 110, // - 9555, 120, // - 10308, 130, // - 11060, 140, // - 11812, 150, // - 12564, 160, // - 13316, 170, // - 14068, 180, // - 14820, 190, // - 15573, 200, // - 16325, 210, // - 17077, 220, // - 17829, 230, // - 18581, 240, // - 19333, 250, // - 20085, 260, // - 20838, 270, // - 21590, 280, // - 22342, 290, // - 23094, 300, // - 23846, 310, // - 24598, 320, // - 25350, 330, // - 26103, 340, // - 26855, 350, // - 27607, 360, // - 28359, 370, // - 29111, 380, // - 29863, 390, // - 30615, 400, // - 31368, 410, // - 32120, 420, // - 32872, 430, // - 33624, 440, // - 34376, 450, // - 35128, 460, // - 35880, 470, // - 36632, 480, // - 37385, 490, // - 38137, 500, // -}; -#endif -const int uVtoDegCItems = sizeof(uVtoDegC) / (2 * sizeof(uint16_t)); - -uint32_t TipThermoModel::convertuVToDegC(uint32_t tipuVDelta) { return Utils::InterpolateLookupTable(uVtoDegC, uVtoDegCItems, tipuVDelta); } uint32_t TipThermoModel::convertuVToDegF(uint32_t tipuVDelta) { return convertCtoF(convertuVToDegC(tipuVDelta)); }