Обновление
This commit is contained in:
parent
14c8bbddd9
commit
949462d982
|
|
@ -15,54 +15,52 @@
|
|||
typedef struct {
|
||||
int temp_c; // Температура (°C)
|
||||
float r_nom; // Номинальное сопротивление (Ω)
|
||||
float r_min; // Минимальное сопротивление (Ω)
|
||||
float r_max; // Максимальное сопротивление (Ω)
|
||||
} ntc_table_entry;
|
||||
|
||||
// Таблица из документа
|
||||
static const ntc_table_entry ntc_table[] = {
|
||||
{-40, 101.0f, 95.63f, 106.3f},
|
||||
{-35, 72.60f, 68.95f, 76.26f},
|
||||
{-30, 52.72f, 50.20f, 55.25f},
|
||||
{-25, 38.66f, 36.91f, 40.42f},
|
||||
{-20, 28.62f, 27.39f, 29.85f},
|
||||
{-15, 21.39f, 20.51f, 22.26f},
|
||||
{-10, 16.12f, 15.50f, 16.74f},
|
||||
{-5, 12.26f, 11.81f, 12.71f},
|
||||
{-4, 11.62f, 11.20f, 12.04f},
|
||||
{-3, 11.01f, 10.62f, 11.41f},
|
||||
{-2, 10.44f, 10.08f, 10.81f},
|
||||
{-1, 9.907f, 9.563f, 10.25f},
|
||||
{0, 9.399f, 9.077f, 9.722f},
|
||||
{1, 8.924f, 8.621f, 9.227f},
|
||||
{2, 8.473f, 8.189f, 8.757f},
|
||||
{3, 8.048f, 7.781f, 8.315f},
|
||||
{4, 7.646f, 7.396f, 7.897f},
|
||||
{5, 7.267f, 7.032f, 7.502f},
|
||||
{6, 6.909f, 6.688f, 7.130f},
|
||||
{7, 6.570f, 6.363f, 6.778f},
|
||||
{8, 6.250f, 6.055f, 6.445f},
|
||||
{9, 5.947f, 5.764f, 6.131f},
|
||||
{10, 5.661f, 5.489f, 5.833f},
|
||||
{15, 4.441f, 4.315f, 4.568f},
|
||||
{20, 3.512f, 3.418f, 3.606f},
|
||||
{25, 2.795f, 2.726f, 2.865f},
|
||||
{30, 2.239f, 2.179f, 2.299f},
|
||||
{35, 1.806f, 1.754f, 1.858f},
|
||||
{40, 1.464f, 1.420f, 1.509f},
|
||||
{45, 1.195f, 1.157f, 1.233f},
|
||||
{50, 0.980f, 0.947f, 1.014f},
|
||||
{55, 0.809f, 0.780f, 0.837f},
|
||||
{60, 0.670f, 0.646f, 0.695f},
|
||||
{65, 0.559f, 0.538f, 0.581f},
|
||||
{70, 0.468f, 0.450f, 0.487f},
|
||||
{75, 0.394f, 0.378f, 0.410f},
|
||||
{80, 0.333f, 0.319f, 0.347f},
|
||||
{85, 0.283f, 0.271f, 0.296f},
|
||||
{90, 0.241f, 0.230f, 0.252f},
|
||||
{95, 0.207f, 0.197f, 0.216f},
|
||||
{100, 0.178f, 0.169f, 0.186f},
|
||||
{105, 0.153f, 0.146f, 0.161f}
|
||||
{-40, 101000.0f},
|
||||
{-35, 72600.0f},
|
||||
{-30, 52720.0f},
|
||||
{-25, 38660.0f},
|
||||
{-20, 28620.0f},
|
||||
{-15, 21390.0f},
|
||||
{-10, 16120.0f},
|
||||
{-5, 12260.0f},
|
||||
{-4, 11620.0f},
|
||||
{-3, 11010.0f},
|
||||
{-2, 10440.0f},
|
||||
{-1, 9907.0f},
|
||||
{0, 9399.0f},
|
||||
{1, 8924.0f},
|
||||
{2, 8473.0f},
|
||||
{3, 8048.0f},
|
||||
{4, 7646.0f},
|
||||
{5, 7267.0f},
|
||||
{6, 6909.0f},
|
||||
{7, 6570.0f},
|
||||
{8, 6250.0f},
|
||||
{9, 5947.0f},
|
||||
{10, 5661.0f},
|
||||
{15, 4441.0f},
|
||||
{20, 3512.0f},
|
||||
{25, 2795.0f},
|
||||
{30, 2239.0f},
|
||||
{35, 1806.0f},
|
||||
{40, 1464.0f},
|
||||
{45, 1195.0f},
|
||||
{50, 980.0f},
|
||||
{55, 809.0f},
|
||||
{60, 670.0f},
|
||||
{65, 559.0f},
|
||||
{70, 468.0f},
|
||||
{75, 394.0f},
|
||||
{80, 333.0f},
|
||||
{85, 283.0f},
|
||||
{90, 241.0f},
|
||||
{95, 207.0f},
|
||||
{100, 178.0f},
|
||||
{105, 153.0f}
|
||||
};
|
||||
|
||||
// Функция расчёта сопротивления NTC из значения АЦП
|
||||
|
|
@ -220,18 +218,18 @@ float calculate_temperature_direct_AAS_920(uint16_t adc_value) {
|
|||
}
|
||||
|
||||
// сигнал АЦП, (R резистора / R термистора), B термистора, t термистора, разрешение АЦП
|
||||
static float NTC_computeRR(float analog, float baseDiv, uint16_t BB, uint8_t t, uint8_t res) {
|
||||
if (analog <= 0 || isnan(analog)) return INFINITY;
|
||||
analog = baseDiv / ((float) ((1 << res) - 1) / analog - 1.0f);
|
||||
analog = (logf(analog) / (float)BB) + 1.0f / ((float)t + 273.15f);
|
||||
return (1.0f / analog - 273.15f);
|
||||
}
|
||||
//static float NTC_computeRR(float analog, float baseDiv, uint16_t BB, uint8_t t, uint8_t res) {
|
||||
// if (analog <= 0 || isnan(analog)) return INFINITY;
|
||||
// analog = baseDiv / ((float) ((1 << res) - 1) / analog - 1.0f);
|
||||
// analog = (logf(analog) / (float)BB) + 1.0f / ((float)t + 273.15f);
|
||||
// return (1.0f / analog - 273.15f);
|
||||
//}
|
||||
|
||||
// сигнал АЦП, R резистора, B термистора, t термистора, R термистора, разрешение АЦП
|
||||
float NTC_compute_AAS_920(float analog, uint32_t R, uint16_t BB, uint8_t t, uint32_t Rt, uint8_t res) {
|
||||
return NTC_computeRR(analog, (float) R / (float)Rt, BB, t, res);
|
||||
}
|
||||
//float NTC_compute_AAS_920(float analog, uint32_t R, uint16_t BB, uint8_t t, uint32_t Rt, uint8_t res) {
|
||||
// return NTC_computeRR(analog, (float) R / (float)Rt, BB, t, res);
|
||||
//}
|
||||
|
||||
void zz_AAS_920() {
|
||||
NTC_compute_AAS_920(0, R25, B, 25, (uint32_t)R25, 12);
|
||||
}
|
||||
//void zz_AAS_920() {
|
||||
// NTC_compute_AAS_920(0, R25, B, 25, (uint32_t)R25, 12);
|
||||
//}
|
||||
|
|
@ -15,38 +15,36 @@
|
|||
typedef struct {
|
||||
int temp_c; // Температура (°C)
|
||||
float r_nom; // Номинальное сопротивление (Ω)
|
||||
float r_min; // Минимальное сопротивление (Ω)
|
||||
float r_max; // Максимальное сопротивление (Ω)
|
||||
} ntc_table_entry;
|
||||
|
||||
// Таблица из документа
|
||||
static const ntc_table_entry ntc_table[] = {
|
||||
{-40, 100950.0f, 98626.0f, 103274.0f},
|
||||
{-35, 72777.0f, 71232.0f, 74322.0f},
|
||||
{-30, 53100.0f, 52064.0f, 54136.0f},
|
||||
{-25, 39111.0f, 38413.0f, 39809.0f},
|
||||
{-20, 29121.0f, 28647.0f, 29595.0f},
|
||||
{-15, 21879.0f, 21556.0f, 22201.0f},
|
||||
{-10, 16599.0f, 16379.0f, 16819.0f},
|
||||
{-5, 12695.0f, 12544.0f, 12845.0f},
|
||||
{0, 9795.0f, 9697.0f, 9893.0f},
|
||||
{5, 7616.0f, 7526.0f, 7706.0f},
|
||||
{10, 5970.0f, 5892.0f, 6048.0f},
|
||||
{15, 4712.0f, 4645.0f, 4780.0f},
|
||||
{20, 3747.0f, 3689.0f, 3805.0f},
|
||||
{25, 3000.0f, 2950.0f, 3050.0f},
|
||||
{30, 2417.0f, 2374.0f, 2460.0f},
|
||||
{35, 1959.0f, 1923.0f, 1996.0f},
|
||||
{40, 1598.0f, 1566.0f, 1630.0f},
|
||||
{45, 1311.0f, 1283.0f, 1338.0f},
|
||||
{50, 1081.0f, 1057.0f, 1104.0f},
|
||||
{55, 895.9f, 875.5f, 916.2f},
|
||||
{60, 746.4f, 728.7f, 764.1f},
|
||||
{65, 624.9f, 609.6f, 640.2f},
|
||||
{70, 525.6f, 512.3f, 538.9f},
|
||||
{75, 444.4f, 432.8f, 456.1f},
|
||||
{80, 377.4f, 367.2f, 387.6f},
|
||||
{85, 321.7f, 312.8f, 330.7f}
|
||||
{-40, 100950.0f},
|
||||
{-35, 72777.0f},
|
||||
{-30, 53100.0f},
|
||||
{-25, 39111.0f},
|
||||
{-20, 29121.0f},
|
||||
{-15, 21879.0f},
|
||||
{-10, 16599.0f},
|
||||
{-5, 12695.0f},
|
||||
{0, 9795.0f},
|
||||
{5, 7616.0f},
|
||||
{10, 5970.0f},
|
||||
{15, 4712.0f},
|
||||
{20, 3747.0f},
|
||||
{25, 3000.0f},
|
||||
{30, 2417.0f},
|
||||
{35, 1959.0f},
|
||||
{40, 1598.0f},
|
||||
{45, 1311.0f},
|
||||
{50, 1081.0f},
|
||||
{55, 895.9f},
|
||||
{60, 746.4f},
|
||||
{65, 624.9f},
|
||||
{70, 525.6f},
|
||||
{75, 444.4f},
|
||||
{80, 377.4f},
|
||||
{85, 321.7f}
|
||||
};
|
||||
|
||||
// Функция расчёта сопротивления NTC из значения АЦП
|
||||
|
|
@ -183,7 +181,7 @@ int16_t get_temperature_fast_KST45(uint16_t adc_value) {
|
|||
|
||||
// Константы для датчика
|
||||
#define R25 3000.0f // Сопротивление при 25°C
|
||||
#define B 3930.0f // Коэффициент B25/50
|
||||
#define B 3917.0f // Коэффициент B25/50
|
||||
#define T25 298.15f // 25°C в Кельвинах
|
||||
|
||||
// Функция расчёта температуры из сопротивления
|
||||
|
|
@ -204,18 +202,18 @@ float calculate_temperature_direct_KST45(uint16_t adc_value) {
|
|||
}
|
||||
|
||||
// сигнал АЦП, (R резистора / R термистора), B термистора, t термистора, разрешение АЦП
|
||||
static float NTC_computeRR(float analog, float baseDiv, uint16_t BB, uint8_t t, uint8_t res) {
|
||||
if (analog <= 0 || isnan(analog)) return INFINITY;
|
||||
analog = baseDiv / ((float) ((1 << res) - 1) / analog - 1.0f);
|
||||
analog = (logf(analog) / (float)BB) + 1.0f / ((float)t + 273.15f);
|
||||
return (1.0f / analog - 273.15f);
|
||||
}
|
||||
//static float NTC_computeRR(float analog, float baseDiv, uint16_t BB, uint8_t t, uint8_t res) {
|
||||
// if (analog <= 0 || isnan(analog)) return INFINITY;
|
||||
// analog = baseDiv / ((float) ((1 << res) - 1) / analog - 1.0f);
|
||||
// analog = (logf(analog) / (float)BB) + 1.0f / ((float)t + 273.15f);
|
||||
// return (1.0f / analog - 273.15f);
|
||||
//}
|
||||
|
||||
// сигнал АЦП, R резистора, B термистора, t термистора, R термистора, разрешение АЦП
|
||||
float NTC_compute_KST45(float analog, uint32_t R, uint16_t BB, uint8_t t, uint32_t Rt, uint8_t res) {
|
||||
return NTC_computeRR(analog, (float) R / (float)Rt, BB, t, res);
|
||||
}
|
||||
//float NTC_compute_KST45(float analog, uint32_t R, uint16_t BB, uint8_t t, uint32_t Rt, uint8_t res) {
|
||||
// return NTC_computeRR(analog, (float) R / (float)Rt, BB, t, res);
|
||||
//}
|
||||
|
||||
void zz_AAS_KST45() {
|
||||
NTC_compute_KST45(0, R25, B, 25, (uint32_t)R25, 12);
|
||||
}
|
||||
//void zz_AAS_KST45() {
|
||||
// NTC_compute_KST45(0, R25, B, 25, (uint32_t)R25, 12);
|
||||
//}
|
||||
Loading…
Reference in New Issue