Arduino + SD logger + web browser

Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
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

Arduino + SD logger + web browser

Příspěvek od rottenkiwi »

Prečítal som si vlákna o meraní, pozrel nejaké programy, ale potreboval by som poradiť.

Na adrese: http://rottenkiwi.no-ip.biz/
mi beží server na arduine a zobrazuje nasledovné:

Current: MIN Avg MAX Act
2 = -8.79, 28.99, 54.40, 29.32
Voltage: MIN Avg MAX Act
5 = 11.10, 13.41, 15.05, 13.41
Voltage 6 = 7.61
Voltage 7 = 0.00
PV_Power: MIN Avg MAX Act
8 = -97.58, 388.73, 818.74, 393.10
Temperature = 15.31 Celsius

Problém je v tom, že tie hodnoty majú značný rozptyl.
Je to napájané z USB portu meniča CarClever 3000 W modif. sinus cez USB3 kábel do arduina.
Ak kúpim stabilizovaný zdroj 5 V zmenší sa rozptyl hodnot ?
Ak chcem pridať ešte ovládanie 8 relé, nezhorí mi to len s tým USB káblom ?

U beriem z napatového delica, A z 100 A sirokého Amplocu, teplotu s Dallas cidla.

Dáta logujem kazdých 10 sec. na SD kartu, ktorá je v shielde. Raz za čas pripojím NTP dáta.
Ako správne logovať hodnoty ? Akú frekvenciu zvolit ?

Ak tam pridám ešte ovládanie relé, ako sa potom rieši bezpečnosť, aby mi to nik cez web neprepínal ?
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.
PavelR
Příspěvky: 3104
Registrován: ned led 29, 2012 3:59 pm
Reputace: 220
Lokalita: Žabčice
Systémové napětí: 48V
Výkon panelů [Wp]: 29139
Kapacita baterie [kWh]: 12
Chci prodávat energii: ANO
Chci/Mám dotaci: NE

Re: Arduino + SD logger + web browser

Příspěvek od PavelR »

Nechtelo by ty hodnoty prumerovat trebas z 10 mereni?
Rele budou chtit asi externi napajeni dle napeti civky. Spinat se to musi pres nejakej tranzistor.
Uživatelský avatar
dracekvo
Příspěvky: 1938
Registrován: čtv zář 13, 2012 4:35 pm
Reputace: 155

Re: Arduino + SD logger + web browser

Příspěvek od dracekvo »

Pokud vím, tak arduino má 10bit převodník s referenčním napětím z napájení.
Nevím jestli má možnost externí reference. Pokud ano stačí použít nějaký přesný obvod pro referenční napětí. Pokud ne, poušít nějaký sériový 12bit ADC převodník.
Přesnost můžeš zvýšit také tak, že během 10s budeš vzorkovat a pak uděláš průměr.
Běžný USB port má odběr max 500mA. Tj 2,5W. Nevíme jaký máš momentálně odběr a jaké relé chceš napojit, takže těžko říct, jestli to táhne, nebo ne.
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 »

Dakujem za odpovede.

Relé mám tieto: http://www.amazon.com/dp/B00KTELP3I?psc=1
Takže mám použiť iné napájanie pre Arduino a iné pre tú dosku s relátkami ?

A ked spínať cez tranzistor, tak pre kazdé relé tranzistor, ten sa bude spínať cez výstupy z
arduina a tie tranzistory vyzadujú zvlášt napájanie ?

Na Arduine je external reference, ale kdesi som cital, ze tam musi
byt zmeneny stav pomocou premenej, lebo ak to nebude, tak mi to zhori.

Takze co ked to bude v nejakom DEBUG mode, potom to zabudnem prepnut
a sa mi to uvari ? Ci to nehrozi ? Co pouzit ako zdroj referencneho napatia ?

Ak je teraz GND = 0 V = USB GND = -12 V bat. pól, tak potom ako urobit gal. oddelenie,
ak by som to napojil na ine napatie +5 V zdroj pre Arduino, +x.y referencne na ext. ref. pin,
a este by som chcel merat dve 12 V baterie, resp. štyri 6 V baterie v 24 V stringu ?

Alebo sa vykaslat na programovanie a kupit rovno SDS ?

Ked mna to programovanie bavi, a chcel by som si komplet veci urobit v C++ a Jave
pre Android + stranky v HTML / CSS / SVG / javascript.

Ano, to co je v premennej Amp_AVG a U_AVG je robene ako Average z hodnot 0 az 9,
ale aj tak to je kazde meranie +- 80 mV, a tam by mala byt presnost 5/1024*4 = 19,5 mV.

A este horsie je to s Amplockom, tam to ukazuje aj +- 10 A niekedy, ale vacsinou +- 0,75 A.

Lenze ked sa vynasobi s chybou 1,05 aj A aj U, tak W dostanem s chybou 1,1025 co uz je dost odveci.
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.
solárník
Příspěvky: 1586
Registrován: pát bře 15, 2013 7:53 pm
Reputace: 70

Re: Arduino + SD logger + web browser

Příspěvek od solárník »

Chybu u Amplocu způsobuje hystereze a/nebo zmagnetování jádra, většinou nejčastěji po rychlém a velkém proudovém peaku. (Ale stačí i pájet v okolí klasickou trafopájkou) S tím se nedá nic dělat, jedině použít jiný typ senzoru. Malý Amploc lítá většinou +-0,4 A, u 100A velkého to může být klidně tak, jak píšeš. Amplocy jsou spíš vhodné na AC, tam se to odmagnetuje samo.

Jaké tam máš maximální proudy?

Osobně taky doporučuji zprůměrovat několik měření po sobě. Třeba já to průměruju po celých minutách. To je průměr z tisíců hodnot každou minutu.

Pokud z U a I počítáš výkon, tak je lepší to rovnou v Arduinu násobit a pak počítat průměry z výkonů. Je to totiž přesnější lépe řečeno více odpovídající realitě. Průměr napětí krát průměr proudů totiž není to samé, jako průměr všech (napětí krát proud) i když by se na první pohled mohlo někomu zdát, že je to to samé. Obzvlášť u soláru tomu tak není.
Naposledy upravil(a) solárník dne úte bře 24, 2015 11:43 pm, celkem upraveno 1 x.
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 »

S tým Amplockom som chcel merat prud z/do bateriek, takze teraz tam je max. 42 A z regu do bat.
a max. 226 A z bat. do meniča, ale to je na troch kábloch.
Tak by som potreboval radu, že či sa to dá merať na jednom z nich a dopočítať ostatné,
alebo kúpiť na každý kábel iný senzor ? Ak, tak aký ?
Ešte do mesiaca robím rozšírenie z 2 x 250 na 4 x 250 W, takze do bat. z regu pojde pri Wpeak,
na paneloch pri nízkej teplote max. 2 x 42 A. To je na dvoch 25 mm2.
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.
solárník
Příspěvky: 1586
Registrován: pát bře 15, 2013 7:53 pm
Reputace: 70

Re: Arduino + SD logger + web browser

Příspěvek od solárník »

226A je slušnej proud. Kromě Amplocu a aby to bylo oboustranné - napadá mne jedině nějaký Pololu sensor s bočníkem. Muselo by se to spočítat. Ten bude mít hysterezi (a celkovou chybu měření) až 20x menší než Amploc.

Teoreticky - pokud jsou kabely přesně stejné (průměr i dlouhé) mělo by stačit měřit jen jeden. Ale jde o to, jak přesně stejné jsou. Nebo měřit před rozdělením na tři.

EDIT: třeba tohle s bočníkem
https://www.pololu.com/product/2453
tak, aby to sneslo +-300A
solárník
Příspěvky: 1586
Registrován: pát bře 15, 2013 7:53 pm
Reputace: 70

Re: Arduino + SD logger + web browser

Příspěvek od solárník »

Další věc je, pokud máte všechno měřené přes AD vstupy Arduina, je lepší mezi nimi dělat alespoň jedno "mezičtení", nebo amíci říkaji "blind read". Jinak se mohou vstupy ovlivňovat mezi sebou a měřené hodnoty nejsou stabilní. Většinou to závisí na výstupní impedanci senzorů nebo děliče.

Tedy pokud mám napětí z děliče na AD0 a napětí z Amplocu na AD1 je lepší místo

U = analogRead (0);
I = analogRead (1);

napsat

analogRead(0);
U = analogRead (0);
analogRead(1);
I = analogRead (1);

... a hned to měří o dost líp (= přesněji). Hlavně se musí vždy číst předem ten samý port.
rob.brno
Příspěvky: 957
Registrován: sob čer 09, 2012 9:14 am
Reputace: 20

Re: Arduino + SD logger + web browser

Příspěvek od rob.brno »

Pěkná připomínka. Jak to vypadá, tak se to po přepnutí MX na požadovaný kanál neumí rychle ustálit a tímto se nechá více času, aby si to sedlo.

Ještě by se to možná dalo urychlit tak, že se místo prázdného aReadu(hned za posledním funkčním aReadu) jen zapíše do registru pro výběr vstupu XXXXX číslo vstupu(takže se MX přepojí na jen na daný kanál bez zpouštění AD převodu). Mezitím se nechá udělat pár jinných věcí(nechá se ustálit vstup na AD) a pak udělat funkční aRead.
rob.brno
Příspěvky: 957
Registrován: sob čer 09, 2012 9:14 am
Reputace: 20

Re: Arduino + SD logger + web browser

Příspěvek od rob.brno »

dracekvo píše:Pokud vím, tak arduino má 10bit převodník s referenčním napětím z napájení.
Nevím jestli má možnost externí reference. Pokud ano stačí použít nějaký přesný obvod pro referenční napětí. Pokud ne, poušít nějaký sériový 12bit ADC převodník.
Arduino má krom reference z napájení(mimochodem to je ta nejhorší možnost, protože to může všelijak lítat) možnost vnitřní reference podle typu použitého MCU 1,1 nebo 2,5V. Má možnost použít i referenci externí, já používám k tomu TL431, která má tuším 4x lepší stabilitu než interní refernce MCU. Viz. třeba: http://forum.mcontrollers.com/viewtopic ... ight=tl431 (3. a poslední příspěvek)
rob.brno
Příspěvky: 957
Registrován: sob čer 09, 2012 9:14 am
Reputace: 20

Re: Arduino + SD logger + web browser

Příspěvek od rob.brno »

rottenkiwi píše:Takže mám použiť iné napájanie pre Arduino a iné pre tú dosku s relátkami ?

A ked spínať cez tranzistor, tak pre kazdé relé tranzistor, ten sa bude spínať cez výstupy z
arduina a tie tranzistory vyzadujú zvlášt napájanie ?

Na Arduine je external reference, ale kdesi som cital, ze tam musi
byt zmeneny stav pomocou premenej, lebo ak to nebude, tak mi to zhori.

Takze co ked to bude v nejakom DEBUG mode, potom to zabudnem prepnut
a sa mi to uvari ? Ci to nehrozi ? Co pouzit ako zdroj referencneho napatia ?

Ak je teraz GND = 0 V = USB GND = -12 V bat. pól, tak potom ako urobit gal. oddelenie,
ak by som to napojil na ine napatie +5 V zdroj pre Arduino, +x.y referencne na ext. ref. pin,
a este by som chcel merat dve 12 V baterie, resp. štyri 6 V baterie v 24 V stringu ?
Ke spínání relátek bych taky použil jinné/oddělené napájení(když už nic jinného, tak to napojit aspon přes tlumivku, aby se rázy při spínání nešířily do napájení k ADC převodníku po napajecí větvi). Ta deska z odkazu bude mít asi v buzení cívky relé tranzistor s optočlenem, takže bude asi možno napojit výstup z Arduina přímo na řídící vstup desky s relé(kdyžtak pro jistotu změřit proud jaký jde při sepnutí z výstupu Arduina).

U arduina se nesmí připojit na vstup reference "tvrdý" zdroj napětí a pak to programově nastavit na interní referenci. Hnedka na začátku po resetu je třeba dát a.Reference(EXTERNAL) a nepřepínat jinak, ono je to stejně po resetu MCU takto asi default nastaveno.
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 »

Dakujem za pripomienky.
Tak som to upravil nasledovne:


int sensor = analogRead(analogPin); // double read for accuracy
sensor = analogRead(analogPin);
dataString += String(sensor);
switch ( analogPin )
{
case Amp_1_pin : {
Amp_a [Amp_i] = sensor;
Amp_i = ( Amp_i + 1 ) % Amp_i_max;
if ( sensor > Amp_max )
Amp_max = sensor;
if ( sensor < Amp_min )
Amp_min = sensor;
Amp_avg = 0;
for ( int i = 0; i < Amp_i_max; i++ )
Amp_avg = Amp_avg + Amp_a ;
Amp_avg = Amp_avg / Amp_i_max;
}
break;


Výsledky su oveľa lepšie, ako to bolo predtým. Rozptyl je menší.
Current: MIN Avg MAX Act
2 = 1.95, 13.68, 22.15, 14.33
Voltage: MIN Avg MAX Act
5 = 12.44, 12.94, 13.26, 12.54
Voltage 6 = 8.04
Voltage 7 = 0.00
PV_Power: MIN Avg MAX Act
8 = 24.31, 176.98, 293.70, 179.70
Temperature = 16.00 Celsius

Možno by bolo lepšie počítať medián:
http://en.wikipedia.org/wiki/Median

Len neviem ako na to, a vylúčiť tie náhodné hodnoty o x-sigma vedľa gausovského rozdelenia pravdep.

Tiež neviem zrealizovať toto:
aReadu(hned za posledním funkčním aReadu) jen zapíše do registru pro výběr vstupu XXXXX číslo vstupu(takže se MX přepojí na jen na daný kanál bez zpouštění AD převodu).
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.
solárník
Příspěvky: 1586
Registrován: pát bře 15, 2013 7:53 pm
Reputace: 70

Re: Arduino + SD logger + web browser

Příspěvek od solárník »

if ( sensor > Amp_max )
Amp_max = sensor;
if ( sensor < Amp_min )
Amp_min = sensor;
Pro výpočet maxima a minima existuje přehledný a jednoduchý příkaz ;)

Amp_max=max (sensor,Amp_max);
Amp_min=min (sensor,Amp_min);

Já jsem ten blind read samozřejmě popsal klasickými příkazy, aby tomu každý rozuměl.
aReadu(hned za posledním funkčním aReadu) jen zapíše do registru pro výběr vstupu XXXXX číslo vstupu(takže se MX přepojí na jen na daný kanál bez zpouštění AD převodu).
Toto je hardwarově závislé a může se lišit při Arduino Uno a Arduino Mega (například). Takže nevím, jestli to tu rozvádět. Jestli tu nejde kriticky o rychlost měření, tak bych to nechal tak, jak jsem to popsal a nepletl bych tu lidem hlavu ;)
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 »

Ok, tak som to opravil. A ešte som to napojil na externý zdroj napájania ( to arduino );

No ale neviem prepojiť GND zdrojov a meraných napatí, a tak sa mi presnosť prúdu
výrazne zlepšila, ale zmizlo mi meranie napatia.

Current: MIN Avg MAX Act
2 = 12.38, 24.43, 35.83, 19.87
Voltage: MIN Avg MAX Act
5 = 0.00, 0.00, 4.78, 0.00
Voltage 6 = 0.00
Voltage 7 = 0.00
PV_Power: MIN Avg MAX Act
8 = 0.00, 0.00, 171.15, 0.00
Temperature = 16.62 Celsius

GND napájania do arduina / + 5 V / mám spojiť s -12 V batérie a to na GND pin arduina ?
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.
rob.brno
Příspěvky: 957
Registrován: sob čer 09, 2012 9:14 am
Reputace: 20

Re: Arduino + SD logger + web browser

Příspěvek od rob.brno »

rottenkiwi píše: Tiež neviem zrealizovať toto:
aReadu(hned za posledním funkčním aReadu) jen zapíše do registru pro výběr vstupu XXXXX číslo vstupu(takže se MX přepojí na jen na daný kanál bez zpouštění AD převodu).
Tohleto je jen námět jak urychlit ten double a.Read od solárníka(funkčně je to to stejné), ale má to smysl jen v časově náročných případech. Je to konkrétně registr ADMUX, pro externí referenci se zarovnáním výsledku doprava je jeho hodnota 0-7, odpovídá číslu analog. portu.

Pokud nejde o čas je solárníkův double read jednodušší.
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 som tam ešte pridal vyhľadanie mediánu:

const int Amp_1_pin = 2;

int Amp_a [Amp_i_max] = {492,492,492,492,492,492,492,492,492,492};
int Amp_i = 0;
int Amp_max = 0;
int Amp_min = 1023;
int Amp_avg = 0;
int Amp_med = 0;

isort ( Amp_a, Amp_i_max );
Amp_med = Amp_a [Amp_i_max / 2];

isort usporiada pole Amp_a
Je výpočet mediánu pre pole o velkosti Amp_i_max správny ?
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
dracekvo
Příspěvky: 1938
Registrován: čtv zář 13, 2012 4:35 pm
Reputace: 155

Re: Arduino + SD logger + web browser

Příspěvek od dracekvo »

Tady píšete o tom, že se nesmí potkat zroj ref napětí, když je zrovna port nastavený jako výstup.
Proto u PIC vždy veškeré vstupy nepřipojuju napřímo ale přes ochranný odpor 330 ohmů.
rob.brno
Příspěvky: 957
Registrován: sob čer 09, 2012 9:14 am
Reputace: 20

Re: Arduino + SD logger + web browser

Příspěvek od rob.brno »

dracekvo píše:Tady píšete o tom, že se nesmí potkat zroj ref napětí, když je zrovna port nastavený jako výstup.
Proto u PIC vždy veškeré vstupy nepřipojuju napřímo ale přes ochranný odpor 330 ohmů.
Ten referenční vstup u Atmegy není klasickým I/O pinem, u klasických pinů může být seriový odpor jako ochrana dobrý. On totiž tento ref.vstup je k AD uvnitř připojen přes nějaký odpor, asi jako ochrana proti výše zmíněnému. Když jsem připojil ext.referenční zdroj na tento vstup přes odpor 560R, tak vznikl "odporový dělič" a na pinu za odporem bylo jinné napětí než na zdroji referenci před odporem.
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 »

Dakujem za rady všetkým.
Meranie napatia vyriešené +- 10 mV.
Meranie prúdu vyriešené
Meranie výkonu poľa vyriešené +-5 W
Pripojenie n bateriek o napatí Un nevyriešené

Chcel by som urobiť meranie napatia a prúdu na n baterkách
v sérii, baterky/články by mali od 0.5 do 15 V, aby sa z nich dalo poskladať
redundantné pole n+x bateriek a urobiť matrixový BMS systém.
Ide o to, že je tam n bateriek a potom su tam dalšie 1 až x, ktoré
slúžia ako záloha, v prípade že sú vysoké požiadavky na odber,
tak sa po určitom čase x bateriek obíde baypasom a nechajú sa odpočinúť,
a podobne pri nabíjaní, ak sú už nejaké nabité na max., tak sa presmeruje
prúd do tých pomocných, z tých max. nabitých, a tiež sa cykluje, takže
nabíjať sa može vačším prúdom, lebo x bateriek y sekúnd odpočíva,
tým by sa dalo nastaviť softom všetko, pre rozne typy bateriek.

Je to reálne sa do toho púštať s arduinom ?
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 »

Včera som vytvoril pár budíkov:
http://rottenkiwi.no-ip.biz/

Dá sa pomocou týchto údajov, ktoré sa zobrazujú, doplniť do merania ešte SOC ?
Meraný je prúd z regulátorov do batérie, napatie batérie.
Treba ešte kúpiť prúdový senzor na vetvu batéria - menič ?

Ako potom spočitať SOC, aby to ukazovalo presne, aj pri nenulovom prúde
idúcom do / z batérie ?
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