FVE s podporou z DS

Porada před realizací, doporučení, rady, nápady týkající se plánovaných ostrovních nebo poloostrovních systémů, projektování, zkušenosti, schémata, vhodné komponenty
Valdano
Příspěvky: 617
Registrován: čtv črc 21, 2022 5:39 pm
Lokalita: Česká Lípa
Chci prodávat energii: NE
Chci/Mám dotaci: NE

Re: FVE s podporou z DS

Nový příspěvek od Valdano »

rva píše: pon led 06, 2025 6:29 pm
Jak měřit, kolik energie je v baterii?...
To o co se snažíte je tzv. Coulombova technika počítání a trpí kumulativními chybami. Zvažte spíš použití Kalmanovy filtrace, která poskytuje přesnější odhady SoC, ale není tak jednoduchá na realizaci.

Coulombova technika počítání
Coulombovo počítání je populární metoda, která odhaduje SoC integrací proudu tekoucího do a z baterie v průběhu času. Tato metoda však vyžaduje přesné vybavení pro měření proudu a může v průběhu času trpět kumulativními chybami. Podrobnější popis odhadu stavu nabití s ​​Coulombovou technikou počítání.

Kalmanova filtrace
Kalmanova filtrace je pokročilá technika, která kombinuje měření napětí a proudu a poskytuje přesnější odhady SoC. Je to užitečné zejména pro LiFePO4 baterie, které mají stabilní napěťové profily. Kalmanovo filtrování minimalizuje dopad šumu a poskytuje konzistentní výsledky. Podrobnější popis metody odhadu stavu nabití s ​​Kalmanovým filtrem. Příklad odhadu SOC pomocí Kalmanova filtru.
Uživatelský avatar
TomHC
Příspěvky: 1994
Registrován: pát lis 11, 2022 8:14 am
Lokalita: Hlohovec, SR
Systémové napětí: 48V
Výkon panelů [Wp]: 5520
Kapacita baterie [kWh]: 14
Chci prodávat energii: NE
Chci/Mám dotaci: NE
Bydliště: Hlohovec, SR

Re: FVE s podporou z DS

Nový příspěvek od TomHC »

Už si to v diskusiách napísal aspoň 5x, je to pekná teória. Nás to skôr zaujíma reálna implementácia napríklad pre esphome. To už GPT neponúka?
2x MUST PH1800 5.5kW, 8.85kWp 3x 2S3P, V+J+Z, 16x 280 Ah LiFePO4 (14.3 kWh), BMS JBD 200A, SW: Home Assistant na Synology DS923+ ku tomu ESPHome, Tasmota, MariaDB, InfluxDB, Telegraf, Grafana, Zigbee2MQTT..., HW: ESPlan (ESP32 + LAN 8720 + RS485 + UART). Nejaké moje projekty: MUST-ESPhome, ELTEK Flatpack2 ESPhome, ESP32-EMON, PZEM-017@WiFi, diyBMS-CurrentShunt-ESPhome 01/2023 -> 11/2024 = 8.7 MWh AC
Valdano
Příspěvky: 617
Registrován: čtv črc 21, 2022 5:39 pm
Lokalita: Česká Lípa
Chci prodávat energii: NE
Chci/Mám dotaci: NE

Re: FVE s podporou z DS

Nový příspěvek od Valdano »

Já s GPT nic neřeším. Ty základní informace k tomu jsem našel sám a bez pomocí GPT už v minulosti. Kdo chce tak ať si zkusí zrealizovat metodu odhadu stavu nabití s ​​Kalmanovým filtrem pro svoje konkrétní použití. Nebude to jednoduché. Na GitHubu je několik projektů, které používají Kalmanovu filtraci pro výpočet SOC. Možná něco z toho bude vhodné k inspiraci, ale hotové řešení tam asi nenajdete.
rva
Příspěvky: 4043
Registrován: úte dub 23, 2013 10:21 am
Lokalita: Kousek od Lysé nad Labem
Systémové napětí: 48V
Výkon panelů [Wp]: 46000
Kapacita baterie [kWh]: 40
Chci prodávat energii: NE
Chci/Mám dotaci: NE
Bydliště: Kousek od Lysé nad Labem

Re: FVE s podporou z DS

Nový příspěvek od rva »

Mám to jako ukázku jednoduchého řešení a třeba i s tím, že hodnoty utility meter se dají překalibrovat. Nepřesností je celá řada, hlavně nízká frekvence vyčítání proudu. Ina226 je 16 bit, jsou i 20 bit verze, ale tady to je zbytečné.
_______________________________________________________________________
43 kWp, LiFePO4 62 kWh,
EPSolar 60 A/150 V ET6415N + 3x Isolar SM II (5 kW, 450 V, 80 A) + Axpert PIP 5048MS
Uživatelský avatar
TomHC
Příspěvky: 1994
Registrován: pát lis 11, 2022 8:14 am
Lokalita: Hlohovec, SR
Systémové napětí: 48V
Výkon panelů [Wp]: 5520
Kapacita baterie [kWh]: 14
Chci prodávat energii: NE
Chci/Mám dotaci: NE
Bydliště: Hlohovec, SR

Re: FVE s podporou z DS

Nový příspěvek od TomHC »

INA228 driftuje tiež, plné nabitie raz za 3-4 týždne to rieši. Myslím že väčšine z nás bohato stačí SoC +/- 5% a spodný limit batérie. No offense.
2x MUST PH1800 5.5kW, 8.85kWp 3x 2S3P, V+J+Z, 16x 280 Ah LiFePO4 (14.3 kWh), BMS JBD 200A, SW: Home Assistant na Synology DS923+ ku tomu ESPHome, Tasmota, MariaDB, InfluxDB, Telegraf, Grafana, Zigbee2MQTT..., HW: ESPlan (ESP32 + LAN 8720 + RS485 + UART). Nejaké moje projekty: MUST-ESPhome, ELTEK Flatpack2 ESPhome, ESP32-EMON, PZEM-017@WiFi, diyBMS-CurrentShunt-ESPhome 01/2023 -> 11/2024 = 8.7 MWh AC
Valdano
Příspěvky: 617
Registrován: čtv črc 21, 2022 5:39 pm
Lokalita: Česká Lípa
Chci prodávat energii: NE
Chci/Mám dotaci: NE

Re: FVE s podporou z DS

Nový příspěvek od Valdano »

Udělal jsem výjimku a oslovil GPT pro základní příklad v jazyce C jen pro začátek viz níže.

Požadavek na GPT:
Můžete prosím navrhnout konkrétní řešení v podobě zdrojového kódu v programovacím jazyce C pro vývojové prostředí Arduino IDE a hardwarovou platformu ESP32 k odhadu stavu nabití (SOC) u LiFePo4 akumulátoru s využitím Kalmanova filtru?

Odpověď GPT:
GPT píše:
Odhad stavu nabití (SOC) LiFePo4 akumulátoru pomocí Kalmanova filtru na platformě ESP32 vyžaduje několik komponentů: měření napětí, měření proudu a implementaci Kalmanova filtru. V následujícím kódu je zjednodušená verze, která demonstruje základní principy.

Než začnete, ujistěte se, že máte nainstalovanou knihovnu pro Kalmanův filtr. Můžete použít knihovnu SimpleKalmanFilter, kterou lze najít v Arduino Library Manager.

Kód pro Arduino IDE

Kód: Vybrat vše

#include <SimpleKalmanFilter.h>

const int voltagePin = 34;  // Analog pin for voltage measurement
const int currentPin = 35;   // Analog pin for current measurement
const float voltageDividerRatio = 5.0; // Adjust based on your voltage divider
const float currentSensorSensitivity = 0.1; // Sensitivity of current sensor (V/A)

SimpleKalmanFilter kalmanVoltage(2.0, 2.0, 0.01); // Q, R, and initial guess
SimpleKalmanFilter kalmanCurrent(2.0, 2.0, 0.01);

float getVoltage() 
{
  int rawValue = analogRead(voltagePin);
  float voltage = (rawValue / 4095.0) * 3.3 * voltageDividerRatio; // Convert to voltage
  return kalmanVoltage.updateEstimate(voltage);
}

float getCurrent()
{
  int rawValue = analogRead(currentPin);
  float current = (rawValue / 4095.0) * 3.3 / currentSensorSensitivity; // Convert to current
  return kalmanCurrent.updateEstimate(current);
}

float calculateSOC(float voltage, float current, float capacityAh, float elapsedTime)
{
  static float SOC = 100.0; // Initial state of charge in percentage
  // Simple model: SOC = SOC - (current * elapsedTime / capacityAh)
  SOC -= (current * elapsedTime / capacityAh) * 100; // Convert to percentage
  if (SOC < 0) {
    SOC = 0; 
  }
  return SOC;
}

void setup()
{
  Serial.begin(115200);
  pinMode(voltagePin, INPUT);
  pinMode(currentPin, INPUT);
}

void loop()
{
  float voltage = getVoltage();
  float current = getCurrent();
  float capacityAh = 100.0; // Capacity of the battery in Ah
  float elapsedTime = 1.0; // Time in hours, adjust based on your sampling frequency

  float SOC = calculateSOC(voltage, current, capacityAh, elapsedTime);

  Serial.print("Voltage: ");
  Serial.print(voltage);
  Serial.print(" V, Current: ");
  Serial.print(current);
  Serial.print(" A, SOC: ");
  Serial.print(SOC);
  Serial.println(" %");

  delay(1000); // Sample every second
}
Vysvětlení kódu
1. Měření napětí a proudu: Napětí a proud se měří pomocí analogových pinů ESP32. Je třeba přizpůsobit napěťový dělič a senzory proudu podle vašeho hardwaru.

2. Kalmanův filtr: Používá se pro hladký odhad měření. SimpleKalmanFilter je inicializován s parametry pro procesní a měřicí šum.

3. Výpočet SOC: Jednoduchý model, který odhaduje SOC na základě aktuálního proudu a kapacity baterie. Můžete ho rozšířit o další faktory, jako například napětí, které může ovlivnit SOC.

4. Smyčka: V hlavní smyčce se měří napětí a proud, vypočítá se SOC a výsledky se zobrazí na sériovém portu.

Poznámky
Tento kód je zjednodušený a slouží jako výchozí bod. V reálné aplikaci byste měli zahrnout další faktory, jako je teplota, kalibrace senzorů a používání historických dat pro přesnější odhad SOC. Ujistěte se, že kalibrace napěťového děliče a senzoru proudu je správná, abyste získali přesné hodnoty. Kalmanův filtr může být také vylepšen dalšími parametry a laděním pro vaše specifické aplikace.

Doufám, že vám tento příklad pomůže!
Já k tomu dodám následující:
1. Knihovna SimpleKalmanFilter použitá v příkladu je ke stažení zde.
2. Namísto hodnot získaných z nepřesných analogových vstupů dosadit hodnoty čtené z přesnějších externích senzorů.
Uživatelský avatar
TomHC
Příspěvky: 1994
Registrován: pát lis 11, 2022 8:14 am
Lokalita: Hlohovec, SR
Systémové napětí: 48V
Výkon panelů [Wp]: 5520
Kapacita baterie [kWh]: 14
Chci prodávat energii: NE
Chci/Mám dotaci: NE
Bydliště: Hlohovec, SR

Re: FVE s podporou z DS

Nový příspěvek od TomHC »

Bol tu svojho času jeden akademik, ktorý by sa toho chytil a skúšal to a všetkých presviedčal o absolútnej nutnosti používať to vždy a všade :) Ak to tak nerobí ani Victron ani Pylontech, nebudem to robiť ani ja. Ale dík za osvetu :write:
2x MUST PH1800 5.5kW, 8.85kWp 3x 2S3P, V+J+Z, 16x 280 Ah LiFePO4 (14.3 kWh), BMS JBD 200A, SW: Home Assistant na Synology DS923+ ku tomu ESPHome, Tasmota, MariaDB, InfluxDB, Telegraf, Grafana, Zigbee2MQTT..., HW: ESPlan (ESP32 + LAN 8720 + RS485 + UART). Nejaké moje projekty: MUST-ESPhome, ELTEK Flatpack2 ESPhome, ESP32-EMON, PZEM-017@WiFi, diyBMS-CurrentShunt-ESPhome 01/2023 -> 11/2024 = 8.7 MWh AC
cipis
Moderátor
Příspěvky: 5370
Registrován: pon srp 16, 2021 9:31 pm
Lokalita: blízko Brna
Systémové napětí: 24V
Výkon panelů [Wp]: 13+ kWp
Kapacita baterie [kWh]: 30+7
Chci prodávat energii: NE
Chci/Mám dotaci: NE
Bydliště: blízko Brna

Re: FVE s podporou z DS

Nový příspěvek od cipis »

Na co by se pak mohli vymlouvat? :D
13,38 kWp: 9850 Wp Jih, 2040 Wp Východ, 1490 Wp Západ
Regulátory Epever a Victron
Phoenix 5 kVA + MP 24/5000 (můj byt + wifi/kamery/atd. + máti byt)
MP2 24/5000 vytěžování do akumulačních kamen
Epever 3kW vytěžování do bojlerů + žebříky
1 kW "nabíječka" 24 V
31 080 Wh staré olovo 7 488 Wh Li-Ion
záloha čerpadla ve sklepě MP12/3000/120-16 + 100Ah 12V monbat
Modře píši jako moderátor, černě jako člen.