Arduino + SD logger + web browser

Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
kodl69
Příspěvky: 7379
Registrován: sob črc 19, 2014 8:56 pm
Reputace: 866
Lokalita: severně od Brna
Systémové napětí: 48V
Výkon panelů [Wp]: 8kWp
Kapacita baterie [kWh]: 12kWh
Chci prodávat energii: NE
Chci/Mám dotaci: NE

Re: Arduino + SD logger + web browser

Příspěvek od kodl69 »

nejlepší je měřit přímo proud do baterie + je +soc a - je -soc. Problém je měření malých proudů po velkou dobu, takže 120mA co mi udává ACS758 někdy + a někdy - podle počasí, to zcela zlikviduje vypočtenou kapacitu za pár dní. Další problém je nastavení kapacity aku a reset pro 0 a 100procent. Podle čeho to určit? Midnite to má při přechodu z bulk do float - ale když napětí zvýším o pár desetin voltu, nacpu do baterek dalších x ah... Naopak při vybíjení už několikrát ukazoval 0 Ah , baterky držely napětí a měřák šel 15Ah do mínusu, než došla šťáva.. (potom trvalo, než se dostal zpátky na 0). Tohle řešila VATA, zkus jí napsat sz, třeba to pustí, a nebude to tutlat jako knowhow....
ostrov skoro 8kWp neustále ve stádiu zrodu: smartshunt(ex WBJR), MPPT150/45, MPPT 250/100(ex midnitesolar 150 clasic lite), 16S a různě P cca 340Ah Winston, MP II 5000,( ex Powerjack 8kW, ex samodomo cca 4kW). 48V DC rozvody a spotřebiče.
Uživatelský avatar
vata
Příspěvky: 1403
Registrován: pon zář 12, 2011 11:32 am
Reputace: 93

Re: Arduino + SD logger + web browser

Příspěvek od vata »

Já nic netutlám :) Ten princip výpočtu SOC je úplně jednoduchý, mám jej i v dokumentaci k VALCu. Základ je měřit veškerý provoz baterie a napsat si prom. akumulátoru ah. A pak je nutné implementovat detekci plného nabití, což já osobně přenechala regulátoru, resp. osbluze - můj program jednoduše číhá na pokles na float po absorpci, komplikované je to o absorpční čas. A dole se čeká na podkročení nějakého kritického napětí, a pak se vyhlásí 0 SOC. U lithia to funguje uspokojivě.
Problém kumulace nepřesností při měření malých proudů v delším časovém úseku, kdy nedošlo k události plného nabití / vybití, to není problém SW ale kalibrace. Dalo by se to zušlechtit nějakou periodickou rekalibrací SOC podle napětí ze statistických dat SOC/U, ale podle už dvouleté zkušenosti si myslím, že obsluha to zvládne jednodušeji a přesněji.
Další potíž při výpočtu SOC je znalost reálné kapacity baterie. Co provozuju VALC, ještě jsem nevybila, takže jediné co umím říct, že kapacita je víc než o 10% vyšší než ta papírová. U lithia to tedy není problém - stačí se odpíchnout od té nominální a výsledné chování bude pesimističtější než realita, což je dobře. U olova to může být jinak, tam asi neuškodí dělat občasně kapacitní zkoušky a přízpůsobit tomu i SW, aby nechal baterky úplně vybít.
Celý smysl výpočtu SOC spočívá v omezování hloubky cyklů a ve včasném odpojení baterie tak, aby v ní zůstala železná rezerva pro případ výpadku DS, a tohle mi můj SW splňuje na jedničku a kupodivu k tomu není potřeba mít SOC změřené úplně přesně.
Inteligentní ostrov - www.vati.cz
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Reputace: 285
Lokalita: SO, SK
Bydliště: SO, SK

Re: Arduino + SD logger + web browser

Příspěvek od rottenkiwi »

Viete mi niekto poradit ako vygenerovat nasledujuci graf pomocou Arduina
a nahrat ho na SD kartu, aby ho mohol potom server na Arduine zobrazit ?
Přílohy
graf.jpg
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Reputace: 285
Lokalita: SO, SK
Bydliště: SO, SK

Re: Arduino + SD logger + web browser

Příspěvek od rottenkiwi »

Tak uz sa mi to podarilo, generuje mi to aj mesacny aj hodinovy graf.
Hodinovy takto:

Kód: Vybrat vše

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Temp demo</title>
  <h1>Arduino Page 2</h1>

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
  google.load("visualization", "1", {packages:["line"]});
  google.setOnLoadCallback(drawChart);

 function drawChart() {
    var data = google.visualization.arrayToDataTable([
      ['Minute', 'U_bat','A_in'],
	['0',0.00,0.00],
-------- sem zadat celu tabulku, napr. vygenerovat ----------
]);

  	var options = {
          width: 3600,
          chart: {
            title: 'Battery Voltage',
            subtitle: 'U_Batt (V) + A_in'
          },
          series: {
            0: { axis: 'volts' }, // Bind series 0 to an axis named 'distance'.
            1: { axis: 'amperes' } // Bind series 1 to an axis named 'brightness'.
          },
          axes: {
            y: {
              distance: {label: 'V'}, // Left y-axis.
              brightness: {side: 'right', label: 'A'} // Right y-axis.
            }
          }
        };
    var chart = new google.charts.Line(document.getElementById('chart_div'));

    chart.draw(data, options);
  }
</script>
</head>
<body>
<div id="chart_div" style="width: 3600px; height: 900px;"></div>
<p>Go back to <a href="index.htm">main page</a>.</p>
</body>
</html>
A mesačný takto:

Kód: Vybrat vše

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Temp demo</title>
  <h1>Arduino Page 2</h1>

<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
  google.load("visualization", "1", {packages:["corechart"]});
  google.setOnLoadCallback(drawChart);

 function drawChart() {
    var data = google.visualization.arrayToDataTable([
      ['Date', 'PV','Dist. Net'],
-------- sem zadat celu tabulku, napr. vygenerovat ----------
    ]);

    var options = {
      title: 'PV DC Gen. + DN usage (kWh)',
  	legend: { position: 'bottom' },
	bar: { groupWidth: '65%' },
	isStacked: true
    };
    var chart = new google.visualization.BarChart(document.getElementById('chart_div'));
    chart.draw(data, options);
  }
</script>
</head>
<body>
<div id="chart_div" style="width: 1000px; height: 2700px;"></div>
<p>Go back to <a href="index.htm">main page</a>.</p>
</body>
</html>
A ešte som sa 2 hod. trápil, lebo mi Arduino nechcelo načítať súbory
a potom mi zaplo, že tie subory mozu mat max. 8 znakov meno + 3 znaky priponu
inak to nenacita subor.
napr. datalog_p.txt alebo page2_begin.htm to uplne odignoruje a neotvori ho.
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.
Uživatelský avatar
rottenkiwi
Příspěvky: 5451
Registrován: pát úno 13, 2015 2:24 pm
Reputace: 285
Lokalita: SO, SK
Bydliště: SO, SK

Re: Arduino + SD logger + web browser

Příspěvek od rottenkiwi »

Doplnil som do svojho merania stavu FVE, meranie SOC.
Su to dva riadky kodu pre Arduino.

Ale neviem prepocitať SOC v Ah na kWh,
pretoze, baterka sa vybíja ako je na obr., ale to je jedna z desiatich a ostatne sa vybijaju inou krivkou.

Tiez ako tam zapocitat nameranu kapacitu z kapacitnej skusky na tych grafoch, aka
je kapacita tychto baterii ?

Ako zahrnúť do SOC starnutie batérií, pri roznych teplotách, úrovniach a dĺžke absorbcie
pri danom prúde a equalizáciu ?
Přílohy
banner_shd_all.jpg
trojan_R_discharge_s.jpg
DC-AC inverter REC Lion DC-AC ESP32 DIY inv. 15 GB za sekundu DIY MPPT Holder
Zjedz vsetko, co si kupil, v obchode a netreba ti tasku, auto ci chladnicku.

Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek