RE: Vodoměr

Miroslav Draxal evik na volny.cz
Úterý Srpen 9 22:43:34 CEST 2016


Neumím posoudit, ale tohle řešení s Kadenem je hodně cenově dostupné. Co se
přečte na mechanické stupnici, to načte procesor. Když jsem zkoušel to
měření, tak litr při průtoku 0,5l/s bylo +-2ml, ale je to měřeno v domácích
podmínkách, a ten průtok 0,5l/s je asi zrovna optimální. Směrem dolů to
začínalo kecat a nahoru taky. Ale tyhle vodoměry jsou certifikátovány s
plombou normálně pro měření spotřeby domácností. Jinak ten průtok, při
kterém se ještě točí jsou skutečně kapky. 
míra 

-----Original Message-----
From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Tomas Urbanek
Sent: Tuesday, August 09, 2016 8:26 PM
To: HW-news
Subject: Re: Vodoměr

Kdyz to tak sleduju, neni lepsi merit prutok ultrazvukem kdyz jde i o male
prutoky? 

TU

9. 8. 2016 v 18:39, Miroslav Mraz <mrazik na volny.cz>:

> Počítat průtok tím, že dělíte časem který uplyne mezi dvěma impulsy je
sice poměrně přesné, ale jen v době příchodu impulsu. Ad absurdum nulový
průtok získáte přesně až po nekonečně dlouhé době. Co s tím ?
> Zvolit konstantní dobu měření, tj. měření opakovat s konstantní vzorkovací
frekvencí a počítat vždy v této periodě počet pulsů. No a pak to
zprůměrovat. To, že budete mít v periodě obvykle jen 0 nebo 1, vůbec nevadí
- nakonec sigma-delta převodníky fungují podobně. Klíčová je v tomto případě
filtrace. Není nutné používat FIR typu sinc, stačí obyčejný klouzavý průměr
s exponenciálním zapomínáním, což se dá napsat jako IIR filtr 1. řádu. To se
dá počítat v aritmetice s pevnou řádovou čárkou (tedy v celých číslech) a
není to žádná velká věda ani to není tak náročné na prostředky
(nepotřebujete dělení).
> Násobení kalibrační konstantou zatím nebudeme řešit.
> Jinak si to můžete představit analogově - pokud jste někdy stavěl
analogový otáčkoměr, pak vstupní pulsy zkrátíte (prodloužíte) na konstantní
délku - to jsou ty 0 a 1 na vstupu - a za to připojíte integrační RC článek
- to je ten IIR filtr - klouzavý průměr s exponenciálním zapomínáním. A na
konci už můžete mít analogový budík. On sice neměří úplně přesně, ale dává v
reálném čase údaje se kterými se už dá něco dělat. Přesně v každém čase to
stejně mít nemůžete, protože co se děje mezi impulsy, to se nemáte jak
nedozvědět.
> 
> Mrazík
> 
> Dne 9.8.2016 v 17:35 Miroslav Draxal napsal(a):
>> Mam (zjednodušeně) vodoměr Kaden, dvě teplotní čidla ds18b20, pic 
>> 18f2620,
>> XC8 PRO (koupený). Vodoměr jsem rozebral, tvoří ho dvě části spojené 
>> s magnetickou spojkou. Do suché části, hned vedle druhé poloviny 
>> magnetické spojky jsem umístil jazýčkové relé (v současné době je tam 
>> už hal.sonda, protože na jeden litr to má moc impulzu, tudíž nevěřím 
>> v dlouhou životnost jazýčkového relé). Nejprve potřebuji změřit 
>> průtok kapaliny a pak z rozdílů teplot vypočítat množství předaného 
>> tepla. Přesnost? Aby to co se odečetlo na vodoměru, aby sedělo s tím, 
>> co se spočítalo v proc.  Ten průtokoměr s indikací úniku vody 
>> (samozřejmě, záleží na definování, co je únik a co ne), to je jen
vedlejší, rychlý produkt pro souseda.
>> 
>> A teď původní otázka?
>> "Potřebuji do jednočipu nacpat přepočet průtoku, mám vodoměr, z 
>> kterého leze
>> 60.75 impulzu na 1l průtoku. Nenapadá vás nějaká zkratka 
>> (optimalizace), jak to přepočítat?
>> 
>> Měřím dobu, dvou po sobě náběžných hran, ale pak jsem nějak v 
>> koncích. Mám volno cca 0,5 paměti, a žádné složité výpočty se mi tam
nevejdou."
>> 
>> Ptal jsem se, jestli někoho nenapadá nějaká zkratka či optimalizace.
>> Zkratka, ne hrubá matematika. V dalších příspěvcích se probíralo cca. 
>> dva, jak přepočítat impulzy na litry.
>> 
>> Byly odpovědi ve stylu
>> Ale pokud umí word, tedy 0 až 65535, pak třeba tak, že za každý 
>> impuls připočtete do nějaké proměnné round(65536/60.75), t.j. 1079. 
>> Jakmile nastane přetečení, přičtete 1 do počitadla litrů. Jednodušeji to
snad už nejde.
>> 
>> Jde to tak. Ale já se ptal na zkratky či optimalizace. 
>> "Optzimalizaci" na výpočet litru jsem poslal. Stačí si uvědomit, že 
>> každý čtvrtý litr je celé číslo počet impulzů z vodoměru, které se 
>> vejde do charu a korigovat.... Ale to už jsem sem do konve poslal i s
popisem.
>> 
>> char VodomerImpulz;
>> char VodomerImpulz243;
>> int Litru;
>> // přišel impulz z vodoměru
>> if (++VodomerImpulz == 60){
>>    Litru++;
>>    VodomerImpulz = 0;
>> }
>> if (++VodomerImpulz243 == 243) {
>>    VodomerImpulz = 0;
>>    VodomerImpulz243 = 0;
>> }
>> S wordem dobrý, tohle lepší.
>> 
>> Tak nějak jsem doufal v to, že někoho napadne zjednodušení i pro 
>> výpočet průtoku. Pak tady padla poznámka od pana Zdeňka, že jsem 
>> napsal zásadní informaci , že mám volno 0,5k paměti. Pokud nepracuji 
>> přímo v asm, ale v nějakém vyšším jazyce, tak mi přijde, že je to 
>> dost málo. Čili, když píši, že mám pouze 0,5k, tak to znamená, že jí 
>> mám málo. Takže mám Free: 576 jak to píše překladač. A zatím jsem 
>> dělení long int a vyšších nepoužíval, čili překladač si zatím 
>> nezavedl podprogramy (knihovny) pro dělení či násobení těchto čísel. A ty
se do zbylé paměti nevejdou.
>> 
>> Tímto děkuji Jančurovy, který mi soukromě zaslal stručný popis jak na to.
>> Jak píše, inspirace z amára 7/2016. Bohužel amáro už neodebírám, 
>> takže jsem to zatím nečetl, ale podle jeho popisu, jsem zjistil, že 
>> tak nějak podobně jsem to nakonec napsal.
>> 
>> Takže mě osobně připadá, ale je to můj názor, nikomu ho nevnucuji, že 
>> o jaký procesor, či co je to za aplikaci či jaká přesnost ( i když 
>> tady by se dalo diskutovat), je nad rámec dotazu. Šlo mi pouze o 
>> nápad, třeba jako je to načítání litrů. Jednoduché, rychlé, krátké,
přesné na každém čtvrtém litru.
>> Ještě jsem ho zpřesnil korekcí na třetím litru.
>> 
>> Fakt mi nejde o přestřelku.
>> Mira
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz 
> http://list.hw.cz/mailman/listinfo/hw-list
_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list