UKSI_TEST/Core/UKSI/uksi_calc_res.h

62 lines
2.1 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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