Ignore:
Timestamp:
Sep 8, 2025, 6:57:30 PM (7 weeks ago)
Author:
f.jahn
Message:
  • Bug in ADC Kalibrierung (STM32 ADC Strom) behoben
  • DMA Buffer für ADC 1 und ADC wird vor Überschreibung während bearbeitung geschützt, indem Datenübertragung nur einmalig erfolgt und erst nach Auswertung wieder gestartet wird
  • RS485Modbus: Timeout Zeit wird für Baudraten >19200 korrekt berechnet
  • Hardware ID geändert
  • Separates Register für "Batterie Empty detection mode" auf Adresse 92 angelegt
File:
1 edited

Legend:

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

    r25 r26  
    104104  {
    105105    //ESR berechnen!
    106     sys_data.s.values.esr = ( (double)dU / (double) dI) * 1000;
     106    sys_data.s.values.esr = ( (double)dU / (double) dI) * 10000;
    107107    last_refresh = sys_data.s.values.onTime;
    108108
     
    129129
    130130  //Anzeige vor wieviel Sekunden zuletzt aktualisiert wurd.
    131   sys_data.s.values.esrCalcTime = sys_data.s.values.onTime - last_refresh;
     131  //Aktuell erfolgt nur die Anze der low speed Methode
     132  //sys_data.s.values.esrCalcTime = sys_data.s.values.onTime - last_refresh;
    132133
    133134
     
    153154
    154155 
    155   //Suche Zeitpunkt der größten Änderung in I
     156
    156157
    157158  //Delta berechnen
    158159  int32_t dI = maxI - minI;
    159   int32_t dU = maxU - minU;
     160 
     161  //Nehme nicht mehr die gesamte maximale Differenz der Spannungen, sondern nehme das delt U wo auch das Delta I gemessen wurde
     162  //Funktioniert nur bei Synchroner Messug von Strom und Spannung
     163  //int32_t dU = maxU - minU;
     164  int32_t dU = adc12Data[maxdIPos][1]  - adc12Data[minIPos][1];
    160165
    161166  //Umrechnung in mV / mA
    162   dI = dI * ((int64_t) VREF / FAST_CURRENT_SHUNT_RESISTOR /  FAST_CURRENT_I_SENSE_GAIN /  FAST_CURRENT_ADC_RESOLUTION);
     167  dI = dI * ((double) VREF / FAST_CURRENT_SHUNT_RESISTOR /  FAST_CURRENT_I_SENSE_GAIN /  FAST_CURRENT_ADC_RESOLUTION);
    163168  dI = dI * (sys_data.s.parameter.batteryCurrentGainCorrectionFaktor / 1000000.0);
    164169
    165   dU = dU  * VREF * BATTERY_VOLTAGE_VOLTAGE_DIVIDER / BATTERY_VOLTAGE_ADC_RESOLUTION ;
     170  dU = dU  * (double )VREF * BATTERY_VOLTAGE_VOLTAGE_DIVIDER / BATTERY_VOLTAGE_ADC_RESOLUTION ;
    166171 
    167172
     
    204209  }
    205210
    206   if ((dIMaxPos < 5 ) || (dIMaxPos > (SAMPLE_ARRAY_SIZE-5) ))
    207   {
    208         return -3;
    209   }
     211  //if ((dIMaxPos < 5 ) || (dIMaxPos > (SAMPLE_ARRAY_SIZE-5) ))
     212  //{
     213//      return -3;
     214 // }
    210215
    211216
    212217  //ESR berechnen!
    213   sys_data.s.values.esr_fast = ( (double)dU / (double) dI) * 1000;
     218  sys_data.s.values.esr_fast = ( (double)dU / (double) dI) * 10000;
    214219  last_refresh = sys_data.s.values.onTime;
    215220       
Note: See TracChangeset for help on using the changeset viewer.