Měření výšky hladiny ve studni – “ghetto style”

Jeden z dlouholetých kolegů v práci za mnou před prázdninami přišel s prosbou o konstrukci měřiče výšky hladiny ve studni pro jeho švagra, přičemž byl velký tlak na cenu a poměrně jasná představa o měřícím principu. Původně jednoduchá konstrukce, která měla být hotová přes víkend a nainstalovaná během prázdnin se nakonec zvrtla v mnohem sofistikovanější systém (ovšem se stále zachovaným tlakem na cenu 🙂 )…

Švagr má studnu, ze které čerpá vodu darling a kterou následně využívá. Protože hladina vody značně kolísá, bylo třeba ji sledovat a čerpadlo včas vypnout, aby nedošlo k jeho poškození. Pro ověření výšky hladiny používal provázek, zatížený matičkou, ale komfort této měřící metody příliš velký nebyl – znamenalo to odstranit víko studny, spustit provázek, zatížený matičkou na dno a pak, dle zamokřené části provazu určit, kolik vody je ve studni a nezapomenout zase studnu zakrýt. Pánové se tedy rozhodli, že je třeba použít pokrokovější metody měření. Předpokládám, že udělali pečlivé rešerše ohledně dostupných technologií (a myslím, že tomu věnovali skutečně dost času), až za mnou přišli s odkazem na výrobek, kterým jsem se měl inspirovat při konstrukci. Hladinoměr z odkazu nesplňoval hned několik základních požadavků:

  • je to uzavřená konstrukce, která neumožní připojení stykače pro ovládání čerpadla
  • má příliš vysokou prodejní cenu na to, že umožní jen změření hladiny

Hned zpočátku jsme se dohodli, že schémata načrtnu jen od ruky a ideovým způsobem, komponenty, co půjdou, tak objednám z Číny, no a kód napíšu z čisté vody – z tohoto pohledu prostě úplná brnkačka… Kolega se rozhodl, že elektroniku odbastlí na univerzálních dekách a nedovolil mi udělat plošné spoje (proto je v nadpisu Ghetto style – osobně by se mi mnohem více líbila konstrukce s PCB, jenomže cena 🙁 ). Ve stejném stylu se neslo i zadání požadavků na funkčnost:

Po promyšlení koncepce konstrukce jsem sedl a objednal jednotlivé díly skládačky z Aliexpressu (v závěru článku najdete odkazy na jednotlivé komponenty, které jsem objednal – díly (mechanické), které sháněl kolega, byly zakoupeny v GME a odkazy na ně nemám).

Navrhl jsem měřící sadu, sestávající ze dvou jednotek – jednotky měřící, která obsahuje vážící trámec na který je připojená měřící sonda (zatížená plastová vodovodní trubka), měřící zesilovač s HX711, arduino Nano, ve kterém měl běžet výpočet Archimédova zákona a microLan/OneWire HUB (prostě proto, protože konstrukce pro inspiraci přece používá jen 3 dráty že…). Ideové schéma vypadalo takto:

Druhou jednotkou, pak měla být jednotka zobrazovací a řídící, která sestávala z Arduino UNO, Multifunction shieldu a desky s relé pro ovládání stykače a její ideové schéma se, bohužel, ztratilo někde ve víru bitvy ducha s hmotou (prostě jsme ho někde zašantročili při bastlení a neustálém zanášení změn). Otevřeně řečeno jste ale o moc nepřišli – “schéma” spočívalo v tom, že jsem popsal, na které vývody Arduina chci zapojit microLan a relé, veškeré další propojení pak bylo relizováno “nacvaknutím” Multifunction shieldu na Arduino UNO.

V této fázi vypadalo vše snadno a jednoduše, takže kolega začal s realizací…

Měřící jednotka:

Krabice s upevněným vážícím trámcem

Deska elektroniky

… a všechno pohromadě

Zobrazovací a řídící jednotka:

Arduino s Multifunction shieldem, deska s relé, pomocná deska s indikátory (tady už začaly problémy…)

Čelní strana s otvorem pro LED displej, indikátory a ovládací tlačítka (a tady jsme na ty problémy přišli…)

Low cost verze štítku s klávesnicí – jedná se o trošku lepší papír, potištěný někde v reklamním studiu a potažený průhlednou plastickou fólií

Potíž se ukázala v tom, že jsem nepočítal s tím, že kolega vyvede LED indikátory mimo Multifunction shield a dále – oproti původnímu zadání – vyvede indikátory 4, namísto tří.

Bylo tedy třeba vymyslet nové zadání a algoritmus pro indikaci na 4 LED diodách. K tomu se přidaly problémy se stabilitou uLan/OneWire komunikace, takže jsme nakonec přikročili k radikální změně koncepce. Komunikace je nyní tvořena linkou RS485, takže problémy s nespolehlivostí přenosu už neexistují, navíc RS485 umožňuje připojení na mnohem větší vzdálenost. Firmware do měřící jednotky jsem brutálně zjednodušil – vlastně jen snímá vážící element a měří přibližně teplotu pomocí vnitřního čidla procesoru (mělo sloužit pro případnou teplotní kompenzaci tenzometru – zatím se ukázalo jako zbytečné). Veškeré výpočty probíhají v zobrazovací jednotce, takže v případě chyby v programu není nutné lézt do studny a vytahovat měřící jednotku pro přeprogramování.

Přechod na RS485 komunikaci ukázal také ještě jednu možnost – modul výstupních relé už nemusí být součástí řídící jednotky, ale může být připojený na RS485 a umístěný ve sklepě hned vedle stykače darlingu.

Programové vybavení zobrazovací a řídící jednotky jsem napsal velmi jednoduše – obsahuje pouze zobrazování naměřené výšky hladiny, nebo naměřenou teplotu (dá se přepnout stiskem tlačítka), případně indikuje chybu komunikace s měřící jednotkou. Dále obsahuje jednoduché nastavovací menu, kterým se dá kalibrovat počáteční hmotnost sondy, aktuální měřená hladina (pro lineární aproximaci) a všechny tři hraniční body pro signalizace nedostatku/dostatku/normálu a přebytku vody (jako pozůstatek tam zůstalo testování obou relé, ale to ještě z doby, kdy byly relé uvnitř řídící jednotky).

Pro ilustraci jsem kolegu poprosil o pořizování fotografií z instalace, takže je s jeho svolením zveřejňuji:

Zobrazovací a řídící jednotka již s odstraněným modulem výkonových relé – povšimněte si krásně vyvázaných kabelových svazků ke konektoru LED a RS485 – to muselo dát Jirkovi neskutečnou práci.

Měřící jednotka, již namontovaná ve studni na nerezovém držáku.

Pohled do studny na měřící jednotku – dobře je vidět zavěšení měřící sondy pomocí lanka.

Přívod kabeláže k měřící jednotce v chráničce.

“Provizorní” umístění zobrazovací a řídící jednotky.

Zařízení je v provozu už několik týdnů v režimu 24/7 zatím bez jakýchkoliv výhrad.

No a předtím, než uveřejním odkazy ke stažení programového vybavení tradičně:

Lessons learned, aneb co bych příště udělal jinak

  1. Pro komunikaci bych určitě použil jiné piny, než hlavní sériový port (použil bych SoftwareSerial), protože nahrávání nového firmware do obou modulů znamená odpojení RS485 linky atd.
  2. Určitě!!! bych navrhl specializované PCB na obě jednotky – díky použitým (malým) krabicím znamená jakákoliv aktualizace rozborku/sborku celého zařízení, což – vzhledem k množství propojek – dle mého názoru snižuje spolehlivost celého kompletu
  3. V dnešní době IoT šílenství bych do zobrazovací jednotky dal ESP8266, což by umožnilo nejen přenosy informací někam na internet, ale zejména by to umožnilo třeba odesílání hlášení o nedostatku/přebytku vody na mobilní telefon.

Použité prostředí:

OS: Linux UBUNTU 16.04 LTS

IDE: 1.6.9

Programové vybavení měřící jednotky

Sensor-170729a
Sensor-170729a
sensor-170729a.zip
23.7 KiB
62 Downloads
Details

Programové vybavení řídící a zobrazovací jednotky

St-170912a
St-170912a
st-170912a.zip
1.0 MiB
53 Downloads
Details

No a na závěr již slíbené odkazy na zakoupené moduly (nebo jejich ekvivalenty) na Aliexpress:

Řídící a zobrazovací jednotka

Arduino UNO R3 + USB kabel

Multifunction shield pro UNO R3

Deska výkonových relé

Měřící jednotka

Arduino Nano V3.0

Vážící trámec 5kg

Měřící zesilovač HX711

 

13 thoughts on “Měření výšky hladiny ve studni – “ghetto style””

  1. Zajímavá metoda měření – kdysi jsem zkoušel ultrazvuk, ale čidlo nešlo “zahermetizovat”
    a za půl roku byl konec. Tohle by mělo být bez problému, hlavně se nesnažit snížit odběr, spíš naopak, kvůli vlhkosti, co by ráda dovnitř.
    Ta trubka ve studni je na obou koncích utěsněná?
    Ještě mě napadla metoda měření rozdílu tlaku v hadiče, podobně jako v aut. pračce, to by mělo fungovat i ve vrtu, kde je na kus visící trubky málo místa.

  2. Tak tohle by mě nenapadlo, vážit vztlak.
    Používám ultrazvukový sensor z eBaye, už funguje tři roky bez jakékoliv údržby.

  3. Jenom drobná poznámka – tyto snímače nejsou určeny pro trvalou zátěž a díky “tečení” materiálu dochází k chybě měření. Zvláště pokud jsou z hliníku.

    1. Otázkou je, co je “trvalá zátěž” pro 5kg trámec, aby se projevilo tečení hliníku. Právě proto to je zatím v testovacím režimu, kdy majitel měření periodicky ověřuje tou matičkovou metodou. Pokud se objeví odchylky, není problém trámec vyměnit za ocelový, nebo s vyšší zátěží…

  4. zajímavé, inspirativní!
    zatím provozuji na měření ultrazvuk, tohle by byl zajímavý upgrade. Jsem totální záčatečník, proto možná blbý dotaz:
    proč není ve studni jenom to čidlo? signál by nedošel UTP kabelem těch ca 10m?
    Já mám takto čidlo hozené do studny ca 7m a frčí to.

    1. Signál z tenzometru se pohybuje v řádech mV, takže vedení kabelem nestálo za následné problémy. Dalším důvodem byla pak teplotní závislost tenzometru, která by měla být kompenzovaná (což by znamenalo teplotní čidlo). Zatím se ale ukazuje, že je ve studni celkem stálá teplota, takže teplotní kompenzaci nepočítám.

    1. Samotná trubka by plavala, takže se musí dovažovat vloženým roxorem. Tuším, že celková váha pak byla cca 200g/m 320g/m, ale přesně nevím – podstatné je, aby plovák visel svisle ve vodě, ale zbytečně nezatěžoval vážící trámec. O všechno ostatní se postará procesor.

    1. Není zač. O problému nevím – knihovna pro HX711 dělá matematický průměr ze série měření, takže vlastně funguje jako digitální filtr (získání jedné hodnoty trvá > než sekundu). Pokud by to nestačilo, je možné dopsat další filtry…

    1. Princip spočívá ve vážení svisle visícího plováku, který je částečně zanořený do vody. Jeho hmotnost se mění dle Archimédova zákona. Myslím, že tohle vysvětlení je dostačující i bez náčrtu.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *