From 949462d982187aca3b69ab37da7c95c6444c5dad Mon Sep 17 00:00:00 2001 From: cfif Date: Tue, 2 Dec 2025 16:29:49 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ADC_Temp_AAS-920-141A.c | 110 ++++++++++++++++++++-------------------- ADC_Temp_KST45-14-2.c | 80 ++++++++++++++--------------- 2 files changed, 93 insertions(+), 97 deletions(-) diff --git a/ADC_Temp_AAS-920-141A.c b/ADC_Temp_AAS-920-141A.c index ae6b09c..f2dfc65 100644 --- a/ADC_Temp_AAS-920-141A.c +++ b/ADC_Temp_AAS-920-141A.c @@ -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); -} \ No newline at end of file +//void zz_AAS_920() { +// NTC_compute_AAS_920(0, R25, B, 25, (uint32_t)R25, 12); +//} \ No newline at end of file diff --git a/ADC_Temp_KST45-14-2.c b/ADC_Temp_KST45-14-2.c index 9e8327b..b6dfd12 100644 --- a/ADC_Temp_KST45-14-2.c +++ b/ADC_Temp_KST45-14-2.c @@ -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); -} \ No newline at end of file +//void zz_AAS_KST45() { +// NTC_compute_KST45(0, R25, B, 25, (uint32_t)R25, 12); +//} \ No newline at end of file