62 lines
2.1 KiB
C
62 lines
2.1 KiB
C
|
||
#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
|