Lekce 26
Senzor hladiny vody

Úvod

Potenciometr nemusí být jediným čidlem, které nám poskytuje výstupní napětí úměrné nějaké měřené veličině. V této lekci si ukážeme, že zcela obdobně může fungovat snímač hladiny vody, který můžeme použít buď na měření hloubky vody, nebo při znalosti rozměrů nádoby jako měřič obejmu. Naměřený výsledek opět zobrazíme na LCD displeji.

Použité komponenty

  • modul Arduino
  • USB kabel
  • senzor hladiny vody
  • LCD displej s I²C převodníkem
  • nepájivé pole
  • vodiče pro nepájivé pole + vodiče typu „samec-samice“

Princip

Senzor hladiny vody je modul, který ve své podstatě může snímat výšku hladiny vody, je fyzikálně řešen jako odporové čidlo doplněné zesilovačem. Základní částí jsou vodivé kontakty hřebenového tvaru vytvoření přímo na desce DPS. Při umístění do vody budou tyto kontakty měnit svůj odpor (v závislosti na hloubce ponoření) a tím převádět „hloubkový“ signál na signál elektrický. Když si toto uvědomíme, vidíme, že v principu jde vlastně o úplně stejné zapojení, jako bylo zapojení s potenciometrem. I zpracování získaného elektrického signálu bude stejné. Na modulu Arduino převedeme analogový signál do digitální podoby, na které můžeme kupříkladu sledovat změny výšky hladiny nebo objemu vody apod.

Senzor hladiny vody


Postup experimentu

Krok 1: Sestavíme si obvod podle následujícího obrázku nebo schématu. Spojení mezi displejem I²C LCD1602 a modulem Arduino, stejně tak jako propojení modulu Arduino a čidla výšky hladiny znázorňují následující tabulky.

Blokové schéma

Blokove schema

Elektronické schéma

Elektronicke schema
I²C LCD1602 modul Arduino
UNO Mega
SDA A4 20
SCL A5 21
UCC 5V 5V
GND GND GND

Senzor hladiny modul Arduino
S A0
+ 5V
GND GND

Krok 2: V prostředí mBlock vytvoříme následující program. Při tvorbě programu je třeba znát adresu použitého I²C LCD displeje, neboť u každého příkazů pro LCD je třeba nastavit aktuální adresu. (viz rozbalovací pole „adr.“).


ikona vysvetleni Vysvětlení kódu

V počáteční části programu nastavíme parametry použitého LCD, jako jsou jeho rozměry (sloupce, řádky) a zapnutí podsvícení. Je třeba se zaměřit na správné nastavení adresy použitého I²C převodníku! Před spuštění hlavní nekonečné smyčky „opakuj stále“ je ještě na střed první řádky vypsán text „Objem vody“. Hlavní nekonečná smyčka pak již pracuje jen s druhou řádkou displeje, kam vypisuje získané hodnoty z analogového vstupu A0, které se načetly do proměnné waterValue. V tomto případě tato proměnné nabývá hodnot od 0 do 1023. Pro korektní prezentaci naměřené hodnoty, by bylo dobré tuto hodnotu ještě zpracovat – např. přepočítat na mililitry dle použité nádoby. Protože zde není jasné, jak bude zobrazený text dlouhý, nedochází zde k pouhému přepisování zobrazeného textu, jako bylo kupříkladu v předešlé lekci. Z důvodů smazání druhé řádky je tato řádka vždy přepsána textem složeným z šestnácti mezer.


Krok 3: Zkompilujeme kód a nahrajeme do modulu Arduino tlačítkem tlacitko nahrat.

Krok 4: Když se ponoří senzor hladiny do vody, můžeme na displeji vidět hodnotu objemu (odpovídá hloubce ponoření) zobrazenou v „neurčitých“ jednotkách na LCD displeji. Pokud bychom chtěli dát zobrazeným číslům nějaký smysl (jednotku), musíme provést kalibraci, při které nalijeme známé množství vody do nádoby a zapíšeme, jaká hodnota na LCD tomu odpovídá. Následně převedeme rozsah měřených jednotek na objem vody – podobně jako jsme v předešlé lekci spočítali hodnotu napětí.

Pohled na experiment