Add TS80 lookup
This commit is contained in:
@@ -48,6 +48,7 @@ uint32_t TipThermoModel::convertTipRawADCTouV(uint16_t rawADC) {
|
|||||||
else
|
else
|
||||||
valueuV = 0;
|
valueuV = 0;
|
||||||
}
|
}
|
||||||
|
#ifndef TEMP_uV_LOOKUP_TS80
|
||||||
// Bias removal (Compensating for a temperature related non-linearity
|
// Bias removal (Compensating for a temperature related non-linearity
|
||||||
// This uses the target temperature for the tip to calculate a compensation value for temperature related bias
|
// This uses the target temperature for the tip to calculate a compensation value for temperature related bias
|
||||||
// This is not entirely ideal as this means we will be wrong on heat up, but will settle to the correct value
|
// This is not entirely ideal as this means we will be wrong on heat up, but will settle to the correct value
|
||||||
@@ -61,6 +62,7 @@ uint32_t TipThermoModel::convertTipRawADCTouV(uint16_t rawADC) {
|
|||||||
valueuV -= compensation;
|
valueuV -= compensation;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
return valueuV;
|
return valueuV;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,7 +85,7 @@ uint32_t TipThermoModel::convertTipRawADCToDegF(uint16_t rawADC) {
|
|||||||
int32_t LinearInterpolate(int32_t x1, int32_t y1, int32_t x2, int32_t y2, int32_t x) {
|
int32_t LinearInterpolate(int32_t x1, int32_t y1, int32_t x2, int32_t y2, int32_t x) {
|
||||||
return y1 + (((((x - x1) * 1000) / (x2 - x1)) * (y2 - y1))) / 1000;
|
return y1 + (((((x - x1) * 1000) / (x2 - x1)) * (y2 - y1))) / 1000;
|
||||||
}
|
}
|
||||||
|
#ifdef TEMP_uV_LOOKUP_HAKKO
|
||||||
const uint16_t uVtoDegC[] = { //
|
const uint16_t uVtoDegC[] = { //
|
||||||
//
|
//
|
||||||
0, 0, //
|
0, 0, //
|
||||||
@@ -139,11 +141,71 @@ const uint16_t uVtoDegC[] = { //
|
|||||||
10649, 500, //
|
10649, 500, //
|
||||||
|
|
||||||
};
|
};
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef TEMP_uV_LOOKUP_TS80
|
||||||
|
|
||||||
|
const uint16_t uVtoDegC[] = { //
|
||||||
|
//
|
||||||
|
|
||||||
|
2337 , 0, //
|
||||||
|
3008 , 10, //
|
||||||
|
3693 , 20, //
|
||||||
|
4390 , 30, //
|
||||||
|
5101 , 40, //
|
||||||
|
5825 , 50, //
|
||||||
|
6562 , 60, //
|
||||||
|
7312 , 70, //
|
||||||
|
8076 , 80, //
|
||||||
|
8852 , 90, //
|
||||||
|
9642 , 100, //
|
||||||
|
10445 , 110, //
|
||||||
|
11261 , 120, //
|
||||||
|
12090 , 130, //
|
||||||
|
12932 , 140, //
|
||||||
|
13787 , 150, //
|
||||||
|
14656 , 160, //
|
||||||
|
15537 , 170, //
|
||||||
|
16432 , 180, //
|
||||||
|
17340 , 190, //
|
||||||
|
18261 , 200, //
|
||||||
|
19195 , 210, //
|
||||||
|
20143 , 220, //
|
||||||
|
21103 , 230, //
|
||||||
|
22077 , 240, //
|
||||||
|
23063 , 250, //
|
||||||
|
24063 , 260, //
|
||||||
|
25076 , 270, //
|
||||||
|
26102 , 280, //
|
||||||
|
27142 , 290, //
|
||||||
|
28194 , 300, //
|
||||||
|
29260 , 310, //
|
||||||
|
30339 , 320, //
|
||||||
|
31430 , 330, //
|
||||||
|
32535 , 340, //
|
||||||
|
33654 , 350, //
|
||||||
|
34785 , 360, //
|
||||||
|
35929 , 370, //
|
||||||
|
37087 , 380, //
|
||||||
|
38258 , 390, //
|
||||||
|
39441 , 400, //
|
||||||
|
40638 , 410, //
|
||||||
|
41849 , 420, //
|
||||||
|
43072 , 430, //
|
||||||
|
44308 , 440, //
|
||||||
|
45558 , 450, //
|
||||||
|
46820 , 460, //
|
||||||
|
48096 , 470, //
|
||||||
|
49385 , 480, //
|
||||||
|
50687 , 490, //
|
||||||
|
52003 , 500, //
|
||||||
|
};
|
||||||
|
#endif
|
||||||
uint32_t TipThermoModel::convertuVToDegC(uint32_t tipuVDelta) {
|
uint32_t TipThermoModel::convertuVToDegC(uint32_t tipuVDelta) {
|
||||||
if (tipuVDelta) {
|
if (tipuVDelta) {
|
||||||
int noItems = sizeof(uVtoDegC) / (2 * sizeof(uint16_t));
|
int noItems = sizeof(uVtoDegC) / (2 * sizeof(uint16_t));
|
||||||
for (int i = 1; i < (noItems - 1); i++) {
|
for (int i = 1; i < (noItems - 1); i++) {
|
||||||
//If current tip temp is less than current lookup, then this current loopup is the higher point to interpolate
|
//If current tip temp is less than current lookup, then this current lookup is the higher point to interpolate
|
||||||
if (tipuVDelta < uVtoDegC[i * 2]) {
|
if (tipuVDelta < uVtoDegC[i * 2]) {
|
||||||
return LinearInterpolate(uVtoDegC[(i - 1) * 2], uVtoDegC[((i - 1) * 2) + 1], uVtoDegC[i * 2], uVtoDegC[(i * 2) + 1], tipuVDelta);
|
return LinearInterpolate(uVtoDegC[(i - 1) * 2], uVtoDegC[((i - 1) * 2) + 1], uVtoDegC[i * 2], uVtoDegC[(i * 2) + 1], tipuVDelta);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,20 +100,22 @@
|
|||||||
#define OP_AMP_Rf_TS80 180 * 1000 // 180 Kilo-ohms -> From schematic, R6
|
#define OP_AMP_Rf_TS80 180 * 1000 // 180 Kilo-ohms -> From schematic, R6
|
||||||
#define OP_AMP_Rin_TS80 2000 // 2.0 Kilo-ohms -> From schematic, R3
|
#define OP_AMP_Rin_TS80 2000 // 2.0 Kilo-ohms -> From schematic, R3
|
||||||
|
|
||||||
#define OP_AMP_GAIN_STAGE_TS80 (1 + (OP_AMP_Rf_TS80 / OP_AMP_Rin_TS80))*3
|
#define OP_AMP_GAIN_STAGE_TS80 (1 + (OP_AMP_Rf_TS80 / OP_AMP_Rin_TS80))
|
||||||
//The *3 here is a fudge factor that I dont like, but havent tracked down root cause _yet_
|
|
||||||
|
|
||||||
//Deriving the Voltage div:
|
//Deriving the Voltage div:
|
||||||
// Vin_max = (3.3*(r1+r2))/(r2)
|
// Vin_max = (3.3*(r1+r2))/(r2)
|
||||||
//vdiv = (32768*4)/(vin_max*10)
|
//vdiv = (32768*4)/(vin_max*10)
|
||||||
|
|
||||||
#ifdef MODEL_TS100
|
#ifdef MODEL_TS100
|
||||||
#define VOLTAGE_DIV 467 // 467 - Default divider from schematic
|
#define VOLTAGE_DIV 467 // 467 - Default divider from schematic
|
||||||
#define CALIBRATION_OFFSET 1200 // 900 - Default adc offset in uV
|
#define CALIBRATION_OFFSET 900 // 900 - Default adc offset in uV
|
||||||
#define PID_POWER_LIMIT 70 // Sets the max pwm power limit
|
#define PID_POWER_LIMIT 70 // Sets the max pwm power limit
|
||||||
#define POWER_LIMIT 0 // 0 watts default limit
|
#define POWER_LIMIT 0 // 0 watts default limit
|
||||||
#define MAX_POWER_LIMIT 65 //
|
#define MAX_POWER_LIMIT 65 //
|
||||||
#define POWER_LIMIT_STEPS 5 //
|
#define POWER_LIMIT_STEPS 5 //
|
||||||
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS100
|
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS100
|
||||||
|
#define TEMP_uV_LOOKUP_HAKKO
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MODEL_Pinecil
|
#ifdef MODEL_Pinecil
|
||||||
@@ -124,6 +126,7 @@
|
|||||||
#define MAX_POWER_LIMIT 65 //
|
#define MAX_POWER_LIMIT 65 //
|
||||||
#define POWER_LIMIT_STEPS 5 //
|
#define POWER_LIMIT_STEPS 5 //
|
||||||
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS100
|
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS100
|
||||||
|
#define TEMP_uV_LOOKUP_HAKKO
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MODEL_TS80
|
#ifdef MODEL_TS80
|
||||||
@@ -134,16 +137,18 @@
|
|||||||
#define MAX_POWER_LIMIT 30 //
|
#define MAX_POWER_LIMIT 30 //
|
||||||
#define POWER_LIMIT_STEPS 2
|
#define POWER_LIMIT_STEPS 2
|
||||||
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS80
|
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS80
|
||||||
|
#define TEMP_uV_LOOKUP_TS80
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MODEL_TS80P
|
#ifdef MODEL_TS80P
|
||||||
#define VOLTAGE_DIV 650 // Default for TS80P with slightly different resistors
|
#define VOLTAGE_DIV 650 // Default for TS80P with slightly different resistors
|
||||||
#define PID_POWER_LIMIT 35 // Sets the max pwm power limit
|
#define PID_POWER_LIMIT 35 // Sets the max pwm power limit
|
||||||
#define CALIBRATION_OFFSET 900 // the adc offset in uV
|
#define CALIBRATION_OFFSET 0 // the adc offset in uV
|
||||||
#define POWER_LIMIT 30 // 30 watts default power limit
|
#define POWER_LIMIT 30 // 30 watts default power limit
|
||||||
#define MAX_POWER_LIMIT 35 //
|
#define MAX_POWER_LIMIT 35 //
|
||||||
#define POWER_LIMIT_STEPS 2
|
#define POWER_LIMIT_STEPS 2
|
||||||
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS80
|
#define OP_AMP_GAIN_STAGE OP_AMP_GAIN_STAGE_TS80
|
||||||
|
#define TEMP_uV_LOOKUP_TS80
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef MODEL_TS100
|
#ifdef MODEL_TS100
|
||||||
|
|||||||
Reference in New Issue
Block a user