Ignore:
Timestamp:
Apr 1, 2026, 9:33:58 AM (5 weeks ago)
Author:
f.jahn
Message:

Fixing Projects.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/fw_g473rct/SES/src/esr.c

    r38 r55  
    1414
    1515
    16 extern uint16_t adc12Data[SAMPLE_ARRAY_SIZE][2];
     16extern uint16_t adc1Data[SAMPLE_ARRAY_SIZE];
     17extern uint16_t adc2Data[SAMPLE_ARRAY_SIZE];
     18extern uint16_t adc4Data[SAMPLE_ARRAY_SIZE];
    1719
    1820
     
    109111    for (x=0; x < SAMPLE_ARRAY_SIZE; x++)
    110112    {
    111       sys_data.s.values.current_buffer[(SAMPLE_ARRAY_SIZE-1)-x] = adc12Data[x][0];
    112       sys_data.s.values.voltage_buffer[(SAMPLE_ARRAY_SIZE-1)-x] = adc12Data[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];
    113115    }
    114116
     
    134136
    135137  //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;
    138142  int32_t minI=INT32_MAX;
    139143  int32_t maxI=0;
    140144  int32_t minIPos = -1;
    141145  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;
    144150
    145151  //Suche min und max werte
    146152  for (x=0; x < SAMPLE_ARRAY_SIZE; x++)
    147153  {
    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; }
    152160  }
    153161
     
    161169  //Funktioniert nur bei Synchroner Messug von Strom und Spannung
    162170  //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];
    164173
    165174  //Umrechnung in mV / mA
     
    167176  dI = dI * (sys_data.s.parameter.batteryCurrentGainCorrectionFaktor / 1000000.0);
    168177
    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 ;
    171180
    172181  //Minimale Belastung Prüfen ob es genügent Änderungen gab
     
    188197  //printf("dI change!\r\n");
    189198
    190   if (abs(dU) < min_dU) {
    191     return -2;
    192   }
     199  //if (abs(dU) < min_dU) {
     200  //  return -2;
     201  //}
    193202
    194203  //printf("dU change!\r\n");
     
    204213  for (x=0; x < (SAMPLE_ARRAY_SIZE-1); x++)
    205214  {
    206     dIx = adc12Data[x+1][0] - adc12Data[x][0];
     215    dIx = adc1Data[x+1] - adc1Data[x];
    207216    if (dIx > dIMax) { dIMax = dIx; dIMaxPos = x; }
    208217  }
    209218
    210   //if ((dIMaxPos < 5 ) || (dIMaxPos > (SAMPLE_ARRAY_SIZE-5) ))
    211   //{
    212 //      return -3;
    213  // }
     219 
    214220
    215221
    216222  //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;
    218225  last_refresh = sys_data.s.values.onTime;
    219226       
     
    221228  for (x=0; x < SAMPLE_ARRAY_SIZE; x++)
    222229  {
    223         sys_data.s.values.current_buffer_fast[x] = (int32_t) adc12Data[x][0] - FAST_CURRENT_ADC_OFFSET  ;
    224         sys_data.s.values.voltage_buffer_fast[x] = (int32_t) adc12Data[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 ;
    225232  }
    226233
Note: See TracChangeset for help on using the changeset viewer.