Arduino a logování elektroměru

Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
milink
Příspěvky: 32
Registrován: sob zář 24, 2011 10:19 am
Reputace: 3

Re: Arduino a logování elektroměru

Příspěvek od milink »

.. a ještě nejlépe ukládat měření do fronty a tu postupně zapisovat, jak to dělají tady:
http://forum.arduino.cc/index.php?PHPSE ... msg1452953
solárník
Příspěvky: 1586
Registrován: pát bře 15, 2013 7:53 pm
Reputace: 70

Re: Arduino a logování elektroměru

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

Souhlas s adminem. Obzvlášť při více sledovaných vstupech se to stane zcela určitě. Přesně proto také přerušení existují, aby se tomu zabránilo.
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 a logování elektroměru

Příspěvek od kodl69 »

Další možnost je použít kousek hW - stačí dělit dvěma (1/2 4013 nebo tak podobně), a impuls už v tu chvíli nemá 80ms , ale pro 800Imp/kWh při 10kW zatížení je to cca 1 impuls za sekundu, a nic neztrácím, to už by musel být program, aby to nestihl i bez přerušení načíst. Sice je problém řešit okamžitý spotřeby, ale to neřeším, měření pro měření je k ničemu, mě spíš zajímá jak je to po hodinách v průběhu dne. Pokud by program byl skutečeně monstrum, dá se signál SO vydělit čtyřmi, a to při 10kW a 800Imp/kWh bude impuls za dvě sekundy. Spíš bych věnoval pozornost tvarování pulsů a ošetření proti rušení - pracovat s proudem aspoň 1mA, kroucená dvoulinka a nějaký RC člen na vstupu arduina nebo MKO, on měnič a regulátor dělá dost bordelu kolem sebe... Pokud to bude načítat přímo arduino, doporučuju po zpracování přerušení ještě cca za 30-50ms ověřit, že puls trvá, a není to jenom rušení.
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.
solárník
Příspěvky: 1586
Registrován: pát bře 15, 2013 7:53 pm
Reputace: 70

Re: Arduino a logování elektroměru

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

No já nevím, pokud to bude mít ethernet, tak stačí krátký výpadek sítě a než se Arduino vzpamatuje čekáním na odpověď sítě, to může jít i do jednotek vteřin, možná i víc. Takže radši to přerušení.
PavelR
Příspěvky: 3105
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 a logování elektroměru

Příspěvek od PavelR »

Mozna kecam nesmysly ale co pouzit citac ? trebas 4017. Mohlo by to dat arduinu dostatek casu na vyreseni sitovych problemu, pote si arduino precte citac a vyresetuje jej. Omezil by se tak pocet presruseni ne?
Netusim co je slozitejsi - oblsuha preruseni, nebo citace.

Opravte me :-)
rob.brno
Příspěvky: 957
Registrován: sob čer 09, 2012 9:14 am
Reputace: 20

Re: Arduino a logování elektroměru

Příspěvek od rob.brno »

Stručně řečeno: Dělat to jinak než přes interrupt je zdlouhavá cesta na jejímž konci je řešení právě s interruptem :-)
Obsluha přerušení není vůbec složitá pokud má programátor s touto finesou zkušenosti. Pokud nemá, doporučuju naštudovat a vyzkoušet až k úplnému pochopení jak funguje.


Jinak ceny na ebay opět rapidně klesly.
Ard. uno jsem kupoval v aukci dokonce už jen za 70kč, normální cena je kolem 100kč, snížení ceny je způsobeno nahrazením komunikačního čipu čínskou náhražkou.

Jinak interrupt, když se udělá rozumě - krátce skoro nemusí zatížit mcu. Obsluha může pak zabrat jen jednotky mikrosec.
Naposledy upravil(a) rob.brno dne čtv kvě 14, 2015 8:05 am, celkem upraveno 1 x.
solárník
Příspěvky: 1586
Registrován: pát bře 15, 2013 7:53 pm
Reputace: 70

Re: Arduino a logování elektroměru

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

PavelR:Ale jo, to by asi šlo.

Jen mám pocit, že tyhle postupy "od lesa" jen zesložití hardware a plynou z neznalosti "jak naprogramovat obsluhu přerušení", což je celkem banální záležitost na několik málo řádků programu. Aneb ono samozřejmě lze "šťourat se pravou rukou v levým uchu". Ale spíš by to asi chtělo nějaký jednoduchý návod "jak obsoužit jedno (dvě) přerušení", abyste si to vyzkoušeli a přestanete vymýšlet tyhle obchůzky ;).
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 a logování elektroměru

Příspěvek od kodl69 »

já teda vidím problém s rušením, což bez vícenásobného čtení pulsu půjde vyřešit jenom hardwarem a pokud při obsluze přerušení čekám třeba 30ms, už může být přetečený buffer na sériovém portu a nebo jiný průšvih... doporučuju si přečíst nekorektní blog Petra Kubáče - prostě všechno se sw vyřešit nedá, ty vstupy se kolikrát musí hw ošetřit...
Pokud přerušení bude odbaveno za jednotky mikrosekund, tak to taky dokáže za 1ms napočítat 1kWh z rušení... (asi extrém, ale co třeba překmity na vedení od elektroměru co má 20m?) Prostě asi jsem z analogově impulsní generace - přijde mi jednodušší kousek hw než několik večerů při programování s nejistým výsledkem.
Možná by stačilo to provést ala SDS, nemáte někdo schéma, jak mají ošetřený vstupy?
https://www.vutbr.cz/www_base/zav_prace ... le_id=9785 strana 17, to by asi mohlo být OK.
To PaveIR:
s čítačem mě to taky napadlo, akorát několik problémů: 1.) stejně musíš ošetřit vstup (RC člen, MKO..) 2.) potřebuješ víc drátů z arduina, třeba pro čítač do 16 čtyři + 1 pro reset. Možná bych to ani neresetoval, jenom načítat stav a přičíst 16 pokud je číslo menší než předchozí (přetečení) - jenom není ošetřeno přerušení napájení čítače na krátkou dobu a arduina na dobu delší než 16 pulsů. Prostě nic není dokonalý.
3.)a nebo se vlomit do elektroměru, ty švábi v elektroměru snad mají nějaký RX-TX, ale to už jsme jinde.
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.
rob.brno
Příspěvky: 957
Registrován: sob čer 09, 2012 9:14 am
Reputace: 20

Re: Arduino a logování elektroměru

Příspěvek od rob.brno »

kodl69 píše:já teda vidím problém s rušením, což bez vícenásobného čtení pulsu půjde vyřešit jenom hardwarem a pokud při obsluze přerušení čekám třeba 30ms, už může být přetečený buffer na sériovém portu a nebo jiný průšvih... doporučuju si přečíst nekorektní blog Petra Kubáče - prostě všechno se sw vyřešit nedá, ty vstupy se kolikrát musí hw ošetřit...
Pokud přerušení bude odbaveno za jednotky mikrosekund, tak to taky dokáže za 1ms napočítat 1kWh z rušení... (asi extrém, ale co třeba překmity na vedení od elektroměru co má 20m?) Prostě asi jsem z analogově impulsní generace - přijde mi jednodušší kousek hw než několik večerů při programování s nejistým výsledkem.
Troufnu si říct, že SW(krom přizpůsobení úrovní signálu) lze řešit vše, tedy krom případu, kdy je nutná extrémní rychlost nebo rychlá reakce. Rušení vyfiltrovat RCčlenem na vstupu - to je asi nejlepší řešení, Atmegy mají na vstupech Schmit.KO, takže "kulatá" hrana by neměla vadit. Pokud jde drát spolu s 230V, tak bych vstup ošetřil větším seriovým odporem, tak aby případné přepětí nepřekročilo proud ochrannou diodou vstupu nebo rovnou ošetřit transilem. Nebo místoRC řešit vicenásobnou verifikací pulzu, bylo by úplně proti principu čekat v obsluze int., natož celou věčnost jako je 30ms. V obsluze int.si spustíš volný čítač, tak aby za 30ms vygeneroval další int. a v jeho obsluze si verifikuješ vstup pulzu S0.
Dělám to tak, že generuju interupt každých 1milisec, kde podle nastaveného flagu(testuje se pokaždé) vykonám nějakou činnost. Nebo zde testuju časovou proměnnou zda již je čas nějaké akce. Tu časovou proměnnou si nastavím odjinud, takže si vlastně naplánuju nějakou činost za nějaký libovolný čas. S přerušením si takto lze kouzlit a lze na něm postavit i nějaký RtOS s multitaskingem :-)
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 a logování elektroměru

Příspěvek od rottenkiwi »

Neviem či to ešte niekoho zaujíma, ako vyčítať S0 výstup z elmera pomocou Arduina a prerušenia.
Ak áno, tu je sketch:
Na riadku 37 vypisujem výkon vo W-toch, ak je konštanta 1000 imp / kWh.
Dá sa s tým už robiť, čo človek uzná za vhodné, napr. poslať to cez AJAX do sveta alebo do LAN.
Přílohy
MY_interrupt_I.ino
(1.83 KiB) Staženo 340 x
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.
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 a logování elektroměru

Příspěvek od kodl69 »

Už to mám staženo, použiju to jako kousek zařízení pro řízení spotřeby. Ještě by se měla doplnit ochrana přetečení registru millis, pak najednou vypadne zápornej čas, tím pádem zápornej výkon...
Má to ten problém co jsem psal výše, procesor jenom čeká a čeká, na jeden impuls je to 160ms, a to je fakt hodně. Ten druhej čas je tam proč tak dlouhej? pokud má impuls elektroměru 80ms, tak ten druhej čas stačí 21ms(teoreticky) protože 30ms se čeká na začátku, jestli je implus pravej, pak by bylo 21ms po zpracování a v duhém průchodu po 30ms už není na vstupu low.... Pak na takovýhle časování doporučuju používat třeba tohle: http://www.xpablo.cz/?p=421
na začátku se definuje objekt časovače: interval impulstrva, mezipulsy, .....
ve chvíli začátku časování v loop se zadá: ipmpulstrva.set(30) a do místa kde se má za nastavený čas něco provést se dá
If (impulstrva.expired) {..příkazy..... }
tímhle se dosáhne toho, že program danou část přeskočí, dokud neuplyne těch 30ms a dělá něco jinýho (je jasný, že když to něco jinýho bude trvat dýl a nebo v tom budou delay, tak to nebude provedeno za 30ms ale pozděj, ale mám s tímto dobrou zkušenost, pokud třeba jednou za 5 minut potřebuju zapsat na sd kartu, jednou za 5s změřit analogový hodnoty a třeba 10s načíst teplotu z ds18b20 (tam používám taky tenhle časovač, aby procesor 1s nestál, než budou připravený data v ds18b20) Delay sem si zakázal, to je špatná věc.
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.
solárník
Příspěvky: 1586
Registrován: pát bře 15, 2013 7:53 pm
Reputace: 70

Re: Arduino a logování elektroměru

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

kodl69 píše:Ještě by se měla doplnit ochrana přetečení registru millis.
Jaaj to jsem tenkrát nad jedním programem taky hodně dlouho kroutil hlavou, co mi sakra dělá za nesmysly a ono to bylo tohle :lol:
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 a logování elektroměru

Příspěvek od rottenkiwi »

K tomu som sa ešte nedokopal, ešte chcem pripojiť Watchdog timer, a prepinať
procesor do sleep modu, keď tam je delay();
To skusim urobiť dnes. Inšpirácia:
https://www.youtube.com/watch?v=7DsV3hG ... e&index=68
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.
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 a logování elektroměru

Příspěvek od kodl69 »

Jestli to chceš udělalt s klasickým arduinem UNO (mega), tak je to zbytečný, jenom 3,3V stabilizátor na desce bere 5-10mA, kus od kusu. Pokud to napájíš zdrojem 7-10V, tak klidová spotřeba desky s uspaným procesorem je 20-30mA, ¨s procesorem co jede ve smyčce v které nic není se spotřeba zvýší tak o 5-6 mA, změř si to (jak kterej číňan co osadil). tzn: 2x stabilizátor po 5-10mA klid. odběr., led signalizace zapnutí, OZ pro přepínání napájení, převodník USB/ttl. Vypnout BOD je trochu risk, ale proč ne. Tohle má význam u zařízení, kde je jenom samotnej procesor napájenej CR2032 nebo tak nějak podobně.
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.
rob.brno
Příspěvky: 957
Registrován: sob čer 09, 2012 9:14 am
Reputace: 20

Re: Arduino a logování elektroměru

Příspěvek od rob.brno »

U Atmegy se dají ještě vypínat jednotlivé periferie. Ale ani u A.Nano to nemá smysl. Největší žrout proudu je stejně FTDI čip(i přes 30mA), z tohoto hlediska jsou lepší klony co mají ten čínský CHxxx.
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 a logování elektroměru

Příspěvek od kodl69 »

já sem nikdy ani arduino s ftdi neměl.... mám jenom jedno mega originál, ale já ty usb funkce stejně nikdy nevyužiju, takže raděj čínský kopie za kratší prachy. Ten CH340 usb/ttl převodník samostatnej používám na čtení dat z balancerů už nějakej pátek, a za 0,9USD to funguje dost dobře, bez rozdílu proti origo FTDI za 400Kč (ale u ftdi byl i metr kabelu)
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.
rob.brno
Příspěvky: 957
Registrován: sob čer 09, 2012 9:14 am
Reputace: 20

Re: Arduino a logování elektroměru

Příspěvek od rob.brno »

To rušení(a ochrana) pulzů při souběhu se silovinou se fakt nesmí podcenovat. Narazil jsem na to, když jsem řešil na ekolu měření rychlosti od hall z motoru. Při jízdě setrvačností to šlo bez rušení, ale stačilo aby motor trochu zabral a už tam lítaly nesmysly. Každopádně tomu pomohl RC-článek(10k a asi 40pF), který to rušení na desítkách kHz vyčistil(kmitočet od silových PWM pulzů do motoru). Zároven ten ser.odpor umožnil fungovat spolu s schotky v mcu jako ochrana vstupu před přepětím.
Je teda otázka zda se to rušení nasbíralo na 1m souběhu se silovýma káblama(80V, až 25A) nebo jako správná reakce hall na točivé mag.pole v motoru.
rob.brno
Příspěvky: 957
Registrován: sob čer 09, 2012 9:14 am
Reputace: 20

Re: Arduino a logování elektroměru

Příspěvek od rob.brno »

kodl69 píše:.. Ten CH340 usb/ttl převodník samostatnej používám na čtení dat z balancerů už nějakej pátek, a za 0,9USD to funguje dost dobře, bez rozdílu proti origo FTDI za 400Kč (ale u ftdi byl i metr kabelu)
A navíc není ten CH šváb(co dávají do těch Arduin) tak SMD nanicovatej(větší rozteče) jak to FTDI.

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