Bar Logo 4kW dsPIC33C PSFB DC-DC DA (Part-No. )
 
Content
     
Loading...
Searching...
No Matches
dev_adc_sensor_offsets.c
2
3dev_Offsets_t primary_CT_offset;
4dev_Offsets_t secondary_shunt_offset;
5
6
7// Private Function Call Prototypes
8
10void dev_AverageSamples(dev_Offsets_t * dev_off);
11static uint16_t dev_CalculateAverage(uint16_t * buffer, uint16_t length);
12
13
20
21
27 dev_AverageSamples(&primary_CT_offset);
28 return(primary_CT_offset.Offset);
29}
30
31
37 dev_AverageSamples(&secondary_shunt_offset);
38 return(secondary_shunt_offset.Offset);
39}
40
41
47 return ((primary_CT_offset.BufferFull) & (secondary_shunt_offset.BufferFull));
48}
49
50
55 primary_CT_offset.BufferFull = 0;
56 primary_CT_offset.BufferIndex = 0;
57 primary_CT_offset.Offset = 0;
58
59 secondary_shunt_offset.BufferFull = 0;
60 secondary_shunt_offset.BufferIndex = 0;
61 secondary_shunt_offset.Offset = 0;
62}
63
64
69 if (primary_CT_offset.BufferIndex >= (MAX_NUM_SAMPLES_OFFSET_BUFFER)) {
70 primary_CT_offset.BufferFull = 1;
71 primary_CT_offset.BufferIndex = 0;
72 } else {
73 primary_CT_offset.Buffer[primary_CT_offset.BufferIndex++] = PwrCtrl_GetAdc_Ipri_ct();
74 }
75
76 if (secondary_shunt_offset.BufferIndex >= (MAX_NUM_SAMPLES_OFFSET_BUFFER )) {
77 secondary_shunt_offset.BufferFull = 1;
78 secondary_shunt_offset.BufferIndex = 0;
79 } else {
80 secondary_shunt_offset.Buffer[secondary_shunt_offset.BufferIndex++] = PwrCtrl_GetAdc_Isec_shunt();
81 }
82}
83
84
89 if (dev_off->BufferFull){
91 }
92}
93
94
101static uint16_t dev_CalculateAverage(uint16_t * buffer, uint16_t length) {
102 uint16_t index = 0;
103 uint32_t sum = 0;
104 for (index = 0; index <length; index++)
105 sum +=buffer[index];
107}
108
measure current sensor offsets
#define MAX_NUM_SAMPLES_OFFSET_BUFFER_AS_EXP_OF_TWO
for bit shifting
#define MAX_NUM_SAMPLES_OFFSET_BUFFER
defines the secerature threshold raw
void dev_AverageSamples(dev_Offsets_t *dev_off)
uint8_t dev_AreOffsetsCalculated(void)
uint16_t dev_Get_PrimaryCTOffset(void)
static uint16_t dev_CalculateAverage(uint16_t *buffer, uint16_t length)
Averages the ADC samples.
void dev_MeasureOffsets_Initialize(void)
void dev_ReadADCSample()
void dev_MeasureOffsets(void)
uint16_t dev_Get_SecondaryShuntOffset(void)
uint16_t PwrCtrl_GetAdc_Ipri_ct(void)
API function to get the raw ADC value for primary current transformer current.
uint16_t PwrCtrl_GetAdc_Isec_shunt(void)
API function to get the raw ADC value for secondary current transformer current.
A custom data type for offset measurement.
uint16_t BufferIndex
buffer index
uint16_t Buffer[MAX_NUM_SAMPLES_OFFSET_BUFFER]
buffer for calcualting average.
uint8_t BufferFull
flag to monitor if full then allow averaging.
uint16_t Offset
temperature