#ifndef _UKSI_CALC_RES_H #define _UKSI_CALC_RES_H #include "main.h" #include "foster_student.h" /* Добавить этот include */ #define FOSTER_ST /** * @brief Коэфициенты канала АЦП для пересчета в единицы измерения */ typedef struct { uint16_t lZero; ///< Нулевой уровень (в квантах АЦП) float vMax; ///< Максимальный уровень Единиц Измерения (в Вольтах/Амперах) uint16_t lMax; ///< Максимальный уровень АЦП (в квантах АЦП) uint16_t lOffset; ///< Максимальный уровень АЦП (в квантах АЦП) }ADC_Coefs_t; typedef struct { ADC_HandleTypeDef *hadc; uint16_t Raw; float Voltage; ADC_Coefs_t Coefs; FilterMedianInt_t mdn; FilterAverageInt_t avg; FosterStudent foster; /* Для проверки стабильности */ uint8_t is_stable; /* 0-стабильно, 1-нестабильно, 0xFF-ошибка */ }ADC_t; HAL_StatusTypeDef ADC_ConfigCoef(ADC_t *adc, uint16_t levelZero, float valueMax, uint16_t levelMax, uint16_t lOffset); HAL_StatusTypeDef ADC_ConfigFilter(ADC_t *adc, uint8_t median_size, uint32_t average_size); float ADC_Calc(ADC_t *adc); typedef struct { ADC_t adc; // АЦП float Voltage[100]; float RMeasOhm; // Сопротивление резистора с которого снимается напряжение float RLimitOhm; // Сопротивление токоограничивающего резистора float DCVoltage; // Нарпяжение подаваемое в изоляцию float IsoOhm; // Измеренное сопротивление изоляции в МОм float IsoMOhm; // Измеренное сопротивление изоляции Ом float IsoCurrentuA; // Ток утечки изоляции в мкА }UKSI_Calc_t; HAL_StatusTypeDef UKSI_Calc_Init(UKSI_Calc_t *calc, ADC_HandleTypeDef *hadc); float UKSI_Calc_Isolation(UKSI_Calc_t *calc); #endif //_UKSI_CALC_RES_H