Changeset 55 for trunk/fw_g473rct/SES/src/esr.c
- Timestamp:
- Apr 1, 2026, 9:33:58 AM (5 weeks ago)
- File:
-
- 1 edited
-
trunk/fw_g473rct/SES/src/esr.c (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/fw_g473rct/SES/src/esr.c
r38 r55 14 14 15 15 16 extern uint16_t adc12Data[SAMPLE_ARRAY_SIZE][2]; 16 extern uint16_t adc1Data[SAMPLE_ARRAY_SIZE]; 17 extern uint16_t adc2Data[SAMPLE_ARRAY_SIZE]; 18 extern uint16_t adc4Data[SAMPLE_ARRAY_SIZE]; 17 19 18 20 … … 109 111 for (x=0; x < SAMPLE_ARRAY_SIZE; x++) 110 112 { 111 sys_data.s.values.current_buffer[(SAMPLE_ARRAY_SIZE-1)-x] = adc1 2Data[x][0];112 sys_data.s.values.voltage_buffer[(SAMPLE_ARRAY_SIZE-1)-x] = adc 12Data[x][1];113 sys_data.s.values.current_buffer[(SAMPLE_ARRAY_SIZE-1)-x] = adc1Data[x]; 114 sys_data.s.values.voltage_buffer[(SAMPLE_ARRAY_SIZE-1)-x] = adc2Data[x]; 113 115 } 114 116 … … 134 136 135 137 //Suche Min und max werte im Array 136 int32_t minU=INT32_MAX; 137 int32_t maxU=0; 138 int32_t minUBatt=INT32_MAX; 139 int32_t maxUBatt=0; 140 int32_t minUOut=INT32_MAX; 141 int32_t maxUOut=0; 138 142 int32_t minI=INT32_MAX; 139 143 int32_t maxI=0; 140 144 int32_t minIPos = -1; 141 145 int32_t maxdIPos = -1; 142 int32_t minUPos = -1; 143 int32_t maxUPos = -1; 146 int32_t minUBattPos = -1; 147 int32_t maxUBattPos = -1; 148 int32_t minUOutPos = -1; 149 int32_t maxUOutPos = -1; 144 150 145 151 //Suche min und max werte 146 152 for (x=0; x < SAMPLE_ARRAY_SIZE; x++) 147 153 { 148 if (adc12Data[x][0] < minI) { minI = adc12Data[x][0]; minIPos = x; } 149 if (adc12Data[x][0] >= maxI) { maxI = adc12Data[x][0]; maxdIPos = x; } 150 if (adc12Data[x][1] < minU) { minU = adc12Data[x][1]; minUPos = x; } 151 if (adc12Data[x][1] > maxU) { maxU = adc12Data[x][1]; maxUPos = x; } 154 if (adc1Data[x] < minI) { minI = adc1Data[x]; minIPos = x; } 155 if (adc1Data[x] >= maxI) { maxI = adc2Data[x]; maxdIPos = x; } 156 if (adc2Data[x] < minUBatt) { minUBatt = adc2Data[x]; minUBattPos = x; } 157 if (adc2Data[x] > maxUBatt) { maxUBatt = adc2Data[x]; maxUBattPos = x; } 158 if (adc4Data[x] < minUOut) { minUOut = adc4Data[x]; minUOutPos = x; } 159 if (adc4Data[x] > maxUOut) { maxUOut = adc4Data[x]; maxUOutPos = x; } 152 160 } 153 161 … … 161 169 //Funktioniert nur bei Synchroner Messug von Strom und Spannung 162 170 //int32_t dU = maxU - minU; 163 int32_t dU = adc12Data[maxdIPos][1] - adc12Data[minIPos][1]; 171 int32_t dUBatt = adc2Data[maxdIPos] - adc2Data[minIPos]; 172 int32_t dUOut = adc4Data[maxdIPos] - adc4Data[minIPos]; 164 173 165 174 //Umrechnung in mV / mA … … 167 176 dI = dI * (sys_data.s.parameter.batteryCurrentGainCorrectionFaktor / 1000000.0); 168 177 169 dU = dU* (double )VREF * BATTERY_VOLTAGE_VOLTAGE_DIVIDER / BATTERY_VOLTAGE_ADC_RESOLUTION ;170 178 dUBatt = dUBatt * (double )VREF * BATTERY_VOLTAGE_VOLTAGE_DIVIDER / BATTERY_VOLTAGE_ADC_RESOLUTION ; 179 dUOut = dUOut * (double )VREF * BATTERY_VOLTAGE_VOLTAGE_DIVIDER / BATTERY_VOLTAGE_ADC_RESOLUTION ; 171 180 172 181 //Minimale Belastung Prüfen ob es genügent Änderungen gab … … 188 197 //printf("dI change!\r\n"); 189 198 190 if (abs(dU) < min_dU) {191 return -2;192 }199 //if (abs(dU) < min_dU) { 200 // return -2; 201 //} 193 202 194 203 //printf("dU change!\r\n"); … … 204 213 for (x=0; x < (SAMPLE_ARRAY_SIZE-1); x++) 205 214 { 206 dIx = adc1 2Data[x+1][0] - adc12Data[x][0];215 dIx = adc1Data[x+1] - adc1Data[x]; 207 216 if (dIx > dIMax) { dIMax = dIx; dIMaxPos = x; } 208 217 } 209 218 210 //if ((dIMaxPos < 5 ) || (dIMaxPos > (SAMPLE_ARRAY_SIZE-5) )) 211 //{ 212 // return -3; 213 // } 219 214 220 215 221 216 222 //ESR berechnen! 217 sys_data.s.values.esr_fast = ( (double)dU / (double) dI) * 10000; 223 sys_data.s.values.esr_fast = ( (double)dUBatt / (double) dI) * 10000; 224 sys_data.s.values.esr = ( (double)dUOut / (double) dI) * 10000; 218 225 last_refresh = sys_data.s.values.onTime; 219 226 … … 221 228 for (x=0; x < SAMPLE_ARRAY_SIZE; x++) 222 229 { 223 sys_data.s.values.current_buffer_fast[x] = (int32_t) adc1 2Data[x][0] - FAST_CURRENT_ADC_OFFSET ;224 sys_data.s.values.voltage_buffer_fast[x] = (int32_t) adc 12Data[x][1] - BATTERY_VOLTAGE_ADC_OFFSET ;230 sys_data.s.values.current_buffer_fast[x] = (int32_t) adc1Data[x] - FAST_CURRENT_ADC_OFFSET ; 231 sys_data.s.values.voltage_buffer_fast[x] = (int32_t) adc2Data[x] - BATTERY_VOLTAGE_ADC_OFFSET ; 225 232 } 226 233
Note:
See TracChangeset
for help on using the changeset viewer.
