Bezkontaktní čidlo hladiny kapalin je vstupní modul pro Arduino. Toto čidlo umožňuje detekovat kapaliny v různých obalech, ať už plastových či skleněných. Jedná se o digitální detekci, tedy o informaci o úspěšné či neúspěšné detekci kapaliny.
Pro napájení tohoto čidla můžeme použít napětí v rozmezí 5 až 24 Voltů, přičemž odběr sepnutého čidla je maximálně 5 miliampér. Čidlo můžeme také používat na přímé spínání zátěže, ale zde je omezení proudu na maximálně 100 mA. Délka kabelu k čidlu je 50 centimetrů a pracovní teplota je 0-85° C.

Bezkontaktní čidlo hladiny kapalin XKC-Y25-V

Pro úspěšné propojení čidla hladiny kapalin a Arduino desky je nutné zapojit celkem 3 vodiče. Propojíme hnědý vodič s +5V Arduina, žlutý vodič s pinem D2 a modrý vodič se zemí Arduina. Senzor má také ještě čtvrtý černý vodič, ale ten nebudeme využívat.
Pro digitální vstup je nutné vybrat pin, který slouží jako přerušovací. Seznam těchto pinů pro jednotlivé desky si můžete prohlédnout zde, u Arduino UNO desky jsou to například piny D2 a D3.

Bezkontaktní čidlo hladiny kapalin XKC-Y25-V schéma

Ukázkový kód obsahuje na svém začátku nastavení čísla propojovacího pinu a vytvoření proměnné, do které budeme ukládat čas poslední aktivace čidla, tedy detekce hladiny.
V podprogramu setup provedeme nejprve inicializaci sériové linky s rychlostí 9600 baudů a poté nastavíme detekci přerušení na náš datový pin, kdy při nástupné hraně (RISING) bude vykonán podprogram prerus.
Nekonečná smyčka loop je v této ukázce jednoduchá, kdy vždy v prvním kroku vytiskneme informaci o času od poslední detekce hladiny. A poté už jen počkáme po nastavený čas před novým během smyčky.
V podprogramu prerus se provedou dvě jednoduché operace. Nejprve vytiskneme informaci o detekování hladiny kapaliny a následně uložíme do proměnné aktuální čas, abychom mohli s touto proměnnou pracovat ve smyčce loop.

// Bezkontaktní čidlo hladiny kapalin

// nastavení čísla propojovacího pinu
#define pinVstup 2
// proměnná pro uložení času aktivace
unsigned long casAktivace = 0;

void setup() {
  // inicializace komunikace po sériové lince
  // rychlostí 9600 baud
  Serial.begin(9600);
  // nastavení přerušení na pin 2 (int0)
  // při nástupné hraně (log0->log1) se vykoná program prerus
  attachInterrupt(digitalPinToInterrupt(pinVstup), prerus, RISING);
}

void loop() {
  // pravidelná informace o času od poslední detekce
  Serial.print("Cas od posledni detekce hladiny: ");
  Serial.print(millis() - casAktivace);
  Serial.println(" ms.");
  // pauza před novým během smyčky
  delay(1000);
}
void prerus() {
  // výpis informace při detekci
  Serial.println("Detekovana hladina!");
  // uložení času aktivace
  casAktivace = millis();
}

Po nahrání uvedeného ukázkového kódu do Arduino desky s připojeným bezdotykovým čidlem kapalin dostaneme například tento výsledek, kde si můžete všimnout, že jsem 2x sepnul čidlo přiblížením čidla k hladině vody ve sklenici.

Cas od posledni detekce hladiny: 0 ms.
Cas od posledni detekce hladiny: 1000 ms.
Detekovana hladina!
Cas od posledni detekce hladiny: 201 ms.
Cas od posledni detekce hladiny: 1202 ms.
Cas od posledni detekce hladiny: 2202 ms.
Detekovana hladina!

Bezkontaktní čidlo hladiny kapalin je malý kompaktní senzor, který nám umožňuje detekovat kapaliny skrze obaly. Tato vlastnost se nám může hodit například při zkoumání množství kapaliny v neprůhledném obalu či nádrži, přičemž s detekcí pak můžeme dále pracovat v programu. Senzor je vyroben z odolného ABS plastu a vydrží velké rozpětí teplot, takže ho lze použít i v náročnějším prostředí. A k odolnosti přispívá také výrobcem udávaný stupeň ochrany IP67.

Seznam použitých komponent:
https://dratek.cz/arduino/1258-klon-arduino-uno-r3-atmega328p-ch340g-usb-typ-b-kabel-1459967190.html
https://dratek.cz/arduino/5005-bezkontaktni-cidlo-hladiny-kapalin-xkc-y25-v.html

FB tw

Další podobné články