Fórum | MyPower.CZ | Obnovitelné zdroje energie - energetická soběstačnost | Právě je čtv črc 19, 2018 10:51 am


Arduino a logování elektroměru

Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.
Předchozí

Re: Arduino a logování elektroměru

Příspěvekod milink » čtv úno 06, 2014 11:28 am

.. 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
milink
 
Příspěvky: 18
Registrován: sob zář 24, 2011 9:19 am
Reputation: 0

Re: Arduino a logování elektroměru

Příspěvekod solárník » čtv úno 06, 2014 12:34 pm

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.
solárník
 
Příspěvky: 1398
Registrován: pát bře 15, 2013 7:53 pm
Reputation: 51

Re: Arduino a logování elektroměru

Příspěvekod kodl69 » stř kvě 13, 2015 1:50 pm

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 3000Wp neustále ve stádiu zrodu: 6x noark CHSM6610P250, 6x250Wp z I4wifi, 4x auria 120Wp, midnite classic 150 lite+whizbang jr., 16S a různě P cca 300Ah Winston, Powerjack 8kW (reálně 6kW po úpravě). 48V DC rozvody a spotřebiče.
kodl69
 
Příspěvky: 2462
Registrován: sob črc 19, 2014 7:56 pm
Reputation: 169

Re: Arduino a logování elektroměru

Příspěvekod solárník » stř kvě 13, 2015 3:15 pm

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í.
solárník
 
Příspěvky: 1398
Registrován: pát bře 15, 2013 7:53 pm
Reputation: 51

Re: Arduino a logování elektroměru

Příspěvekod PavelR » čtv kvě 14, 2015 6:11 am

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 :-)
PavelR
 
Příspěvky: 1679
Registrován: ned led 29, 2012 3:59 pm
Reputation: 66

Re: Arduino a logování elektroměru

Příspěvekod rob.brno » čtv kvě 14, 2015 7:02 am

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 rob.brno dne čtv kvě 14, 2015 7:05 am, celkově upraveno 1
rob.brno
 
Příspěvky: 779
Registrován: sob čer 09, 2012 8:14 am
Reputation: 8

Re: Arduino a logování elektroměru

Příspěvekod solárník » čtv kvě 14, 2015 7:04 am

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 ;).
solárník
 
Příspěvky: 1398
Registrován: pát bře 15, 2013 7:53 pm
Reputation: 51

Re: Arduino a logování elektroměru

Příspěvekod kodl69 » čtv kvě 14, 2015 8:09 am

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_soubor_verejne.php?file_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 3000Wp neustále ve stádiu zrodu: 6x noark CHSM6610P250, 6x250Wp z I4wifi, 4x auria 120Wp, midnite classic 150 lite+whizbang jr., 16S a různě P cca 300Ah Winston, Powerjack 8kW (reálně 6kW po úpravě). 48V DC rozvody a spotřebiče.
kodl69
 
Příspěvky: 2462
Registrován: sob črc 19, 2014 7:56 pm
Reputation: 169

Re: Arduino a logování elektroměru

Příspěvekod rob.brno » čtv kvě 14, 2015 8:57 am

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 :-)
rob.brno
 
Příspěvky: 779
Registrován: sob čer 09, 2012 8:14 am
Reputation: 8

Re: Arduino a logování elektroměru

Příspěvekod rottenkiwi » stř pro 09, 2015 2:59 am

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) 189 krát
BTC: 1LWBcqUCX4UiTgzxTmsfyL83KG8DQiq2gd LTC: LX4UmmYHzT293zcJJ4BjTcPTRSHoLWLDn7
Vodík LiFePO charge BMS SEI formation Float IBM Quantum NREL eff. 787 Dreamliner Issue Rado Danilák Online-monitoring
Uživatelský avatar
rottenkiwi
 
Příspěvky: 1510
Registrován: pát úno 13, 2015 2:24 pm
Bydliště: SO, SK
Reputation: 57

Re: Arduino a logování elektroměru

Příspěvekod kodl69 » stř pro 09, 2015 6:41 pm

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 3000Wp neustále ve stádiu zrodu: 6x noark CHSM6610P250, 6x250Wp z I4wifi, 4x auria 120Wp, midnite classic 150 lite+whizbang jr., 16S a různě P cca 300Ah Winston, Powerjack 8kW (reálně 6kW po úpravě). 48V DC rozvody a spotřebiče.
kodl69
 
Příspěvky: 2462
Registrován: sob črc 19, 2014 7:56 pm
Reputation: 169

Re: Arduino a logování elektroměru

Příspěvekod solárník » stř pro 09, 2015 6:52 pm

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:
solárník
 
Příspěvky: 1398
Registrován: pát bře 15, 2013 7:53 pm
Reputation: 51

Re: Arduino a logování elektroměru

Příspěvekod rottenkiwi » stř pro 09, 2015 6:54 pm

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
BTC: 1LWBcqUCX4UiTgzxTmsfyL83KG8DQiq2gd LTC: LX4UmmYHzT293zcJJ4BjTcPTRSHoLWLDn7
Vodík LiFePO charge BMS SEI formation Float IBM Quantum NREL eff. 787 Dreamliner Issue Rado Danilák Online-monitoring
Uživatelský avatar
rottenkiwi
 
Příspěvky: 1510
Registrován: pát úno 13, 2015 2:24 pm
Bydliště: SO, SK
Reputation: 57

Re: Arduino a logování elektroměru

Příspěvekod kodl69 » stř pro 09, 2015 8:25 pm

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 3000Wp neustále ve stádiu zrodu: 6x noark CHSM6610P250, 6x250Wp z I4wifi, 4x auria 120Wp, midnite classic 150 lite+whizbang jr., 16S a různě P cca 300Ah Winston, Powerjack 8kW (reálně 6kW po úpravě). 48V DC rozvody a spotřebiče.
kodl69
 
Příspěvky: 2462
Registrován: sob črc 19, 2014 7:56 pm
Reputation: 169

Re: Arduino a logování elektroměru

Příspěvekod rob.brno » stř pro 09, 2015 9:33 pm

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.
rob.brno
 
Příspěvky: 779
Registrován: sob čer 09, 2012 8:14 am
Reputation: 8

Re: Arduino a logování elektroměru

Příspěvekod kodl69 » stř pro 09, 2015 11:22 pm

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 3000Wp neustále ve stádiu zrodu: 6x noark CHSM6610P250, 6x250Wp z I4wifi, 4x auria 120Wp, midnite classic 150 lite+whizbang jr., 16S a různě P cca 300Ah Winston, Powerjack 8kW (reálně 6kW po úpravě). 48V DC rozvody a spotřebiče.
kodl69
 
Příspěvky: 2462
Registrován: sob črc 19, 2014 7:56 pm
Reputation: 169

Re: Arduino a logování elektroměru

Příspěvekod rob.brno » čtv pro 10, 2015 6:03 am

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: 779
Registrován: sob čer 09, 2012 8:14 am
Reputation: 8

Re: Arduino a logování elektroměru

Příspěvekod rob.brno » čtv pro 10, 2015 6:06 am

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.
rob.brno
 
Příspěvky: 779
Registrován: sob čer 09, 2012 8:14 am
Reputation: 8

Předchozí

Zpět na Arduino

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník

Reputation System ©'