// // Created by cfif on 04.12.2025. // #ifndef MDF_ADC_TEMP_KST45_14_2_H #define MDF_ADC_TEMP_KST45_14_2_H #include // Константы #define ADC_MAX 4095.0f // 12-битный АЦП // Типы термисторов typedef enum { NTC_TYPE_1 = 0, // Первая таблица (100950 Ом при -40°C) NTC_TYPE_2 = 1 // Вторая таблица (101000 Ом при -40°C) } eNTC_Type; // Параметры Steinhart-Hart для термисторов typedef struct { float A; float B; float C; } SteinhartParams; // Структура для хранения табличных данных typedef struct { int temp_c; // Температура (°C) float r_nom; // Номинальное сопротивление (Ω) } ntc_table_entry; typedef enum { ALG_STEINHART = 0, ALG_STEINHART_FULL = 1, ALG_LINEAR = 2 } eAlg; // Предварительно вычисленная таблица для быстрого доступа typedef struct { uint16_t adc_value; // Значение АЦП int16_t temp_c; // Температура в °C * 10 (для фиксированной точки) } adc_temp_lookup; // Функции инициализации void init_ntc(eNTC_Type ntc_type); void set_r1(float r1_value); // Функция для установки сопротивления делителя void init_fast_lookup_table(eAlg use_alg); // Основные функции float get_temperature_from_adc(uint16_t adc_value, eAlg alg); int16_t get_temperature_fast(uint16_t adc_value); // Функция для получения информации о текущем термисторе const char* get_ntc_name(void); uint16_t get_table_size(void); float get_r1_value(void); // Функция для получения текущего R1 #endif //MDF_ADC_TEMP_KST45_14_2_H