Różne metody są wykorzystywane do monitorowania poziomu cieczy, a wybór technologii do wykorzystania opiera się na kilku czynnikach, takich jak:
- maksymalna i minimalna temperatura,
- maksymalne i minimalne ciśnienie,
- geometria zbiornika,
- rodzaj cieczy,
- materiał konstrukcyjny zbiornika.
Nie istnieją czujniki poziomu lub przełączniki, które mogą precyzyjnie określić dokładność lub niezawodność w konkretnym zastosowaniu. Jednym z najbardziej popularnych czujników poziomu jest ultradźwiękowy czujnik poziomu. Do zalet ultradźwiękowego czujnika poziomu należy jego bezkontaktowe zastosowanie i możliwość stosowania w różnych cieczach. Ultradźwiękowe czujniki poziomu działają poprzez generowanie impulsu ultradźwiękowego i pomiar czasu powrotu echa.
Jeśli czujnik jest zamontowany na górze zbiornika, impuls przemieszcza się w powietrzu z prędkością 331 m/s w temperaturze 0°C. Dlatego czas podróży jest wskaźnikiem głębokości pustej przestrzeni nad cieczą w zbiorniku. W przypadku wody o temperaturze 25°C impuls ultradźwiękowy przemieszcza się z prędkością 1505 m/s. Do testów zamontowano detektor na szczycie szklanego słoika, a cieczą użytą do badań była woda. Autorski prototyp pokazany jest na fotografii głównej.
Zrzut ekranu aplikacji na system Android do monitorowania poziomu wody w zbiorniku przedstawiono na rysunku 1. Schemat blokowy projektu został przedstawiony na rysunku 2.
Układ i działanie
Projekt składa się z dwóch części: Jednostki nadawczej zbudowanej wokół Arduino Uno, modułu Bluetooth HC-05 oraz modułu czujnika ultradźwiękowego (HC-SR04). Odbiornikiem jest smartfon z systemem Android i zainstalowaną aplikacją Android. Schemat ideowy projektu (nadajnik) jest pokazany na rysunku 4. Główne komponenty użyte w projekcie to:
Aplikacja Android. Wykorzystana tutaj aplikacja do monitorowania poziomu (levelmonitoring.apk) została zbudowana przy użyciu MIT App Inventor. Kiedy ta aplikacja jest uruchomiona, dane wysyłane przez moduł Bluetooth HC-05 są odbierane i wyświetlane na smartfonie z systemem Android. Aplikacja monitorująca poziom została przetestowana na smartfonie Micromax Q372 z systemem Android Lollipop v5.0.
Arduino Uno. Arduino Uno jest płytką rozwojową opartą o mikrokontroler AVR ATmega328P z sześcioma analogowymi pinami wejściowymi i czternastoma cyfrowymi pinami I/O. Mikrokontroler posiada 32 kB pamięci ISP flash, 2 kB RAM i 1 kB EEPROM. Płytka zapewnia możliwość komunikacji szeregowej poprzez UART, SPI oraz I2C. Mikrokontroler może pracować z częstotliwością taktowania 16 MHz. Moduł Bluetooth HC-05 oraz moduł czujnika ultradźwiękowego (HC-SR04) są sprzężone z Arduino Uno.
Moduł Bluetooth HC-05. Jest to łatwy w użyciu moduł Bluetooth SPP (serial port protocol) zaprojektowany do transparentnego zestawiania bezprzewodowych połączeń szeregowych. Moduł Bluetooth portu szeregowego jest w pełni kwalifikowanym modułem V2.0 Bluetooth 3 Mbps EDR (enhanced data rate) z kompletnym transceiverem radiowym 2,4 GHz i pasmem podstawowym. Wykorzystuje on jednochipowy system Bluetooth CSR Bluecore 04-External z technologią CMOS i AFH (adaptive frequency hopping feature). Widok z góry typowego 6-pinowego modułu Bluetooth HC-05 pokazano na fotografii 3. W projekcie wykorzystano tylko cztery piny: RXD, TXD, Vcc, oraz piny GND modułu HC-05. Tak więc, możesz użyć dowolnego podobnego 4-pinowego modułu Bluetooth do tego projektu.
Moduł czujnika ultradźwiękowego HC-SR04. Ultradźwiękowy moduł HC-SR04 zapewnia funkcję bezkontaktowego pomiaru od 2 cm do 400 cm z dokładnością do 3 mm. Moduł zawiera nadajnik ultradźwiękowy, odbiornik i obwód sterujący.
Posiada cztery piny -echo, trig, Vcc, i GND. Podstawowa zasada działania modułu jest jak wyjaśniono poniżej.
Trig (trigger) jest pinem wejściowym. Jest on przystosowany do podania wysokiego impulsu o czasie trwania co najmniej 10 µs, po otrzymaniu którego moduł automatycznie wysyła osiem impulsów dźwiękowych o częstotliwości 40 kHz (sygnały ultradźwiękowe). Sygnał ten, po odbiciu od obiektu/wody, odbierany jest przez pin echo.
Pin echo jest pinem wyjściowym. Przechodzi on w stan wysoki przez okres czasu, który jest równy czasowi powrotu fali ultradźwiękowej do czujnika. Na styku echo podawany jest czas przemieszczania się fali dźwiękowej w mikrosekundach.
Schemat połączenia modułu ultradźwiękowego z Arduino przedstawiono na rysunku 4.
Czujnik ultradźwiękowy mierzy odległość pomiędzy czujnikiem a obiektem/cieczą poprzez wysłanie fali ultradźwiękowej i obliczenie czasu potrzebnego na powrót echa. Jeśli czas pomiędzy wyzwoleniem fali a echem jest znany, odległość obiektu może być obliczona przez proste pomnożenie połowy czasu z prędkością dźwięku w powietrzu. Zasada ta została tutaj wykorzystana do wykrywania poziomu wody w zbiorniku. Działanie czujnika ilustrują rysunki 5 i 6.
Jak widać na rysunku 5, gdy zbiornik jest pusty, fala ultradźwiękowa uderza w dno zbiornika i ulega odbiciu. W wyniku tego wykrywa głębokość pustego zbiornika na wysokości "H".
Jeżeli zbiornik jest wypełniony wodą do wysokości 'h', fala ultradźwiękowa odbija się od powierzchni wody i wykrywa głębokość pustej przestrzeni 'y' nad wodą, jak pokazano na rysunku 6.
Gdy "H" i "y" są znane, poziom wody "h" może być obliczony przez odjęcie "y" od "H", czyli h=(H-y). Wartość H oblicza się tylko raz podczas wstępnej kalibracji, gdy zbiornik jest pusty. W konfiguracji opisywanego projektu wartość H wynosiła 17 cm. Można zmienić wartość H w kodzie na 30 cm, 50 cm, lub dowolną inną wartość w zależności od wysokości zbiornika.
Wartość poziomu wody jest przesyłana do modułu Bluetooth HC-05 za pomocą komunikacji szeregowej. Jak pokazano na rysunku 4, piny RXD i TXD modułu Bluetooth są połączone odpowiednio z pinami TX i RX płytki Arduino Uno. Moduł Bluetooth HC-05 wysyła te dane bezprzewodowo do smartfona poprzez Bluetooth. Dane otrzymane na smartfonie są wyświetlane w aplikacji. Aby połączyć moduł Bluetooth ze smartfonem, muszą one zostać sparowane.
Budowa i testowanie
Pobierz kod źródłowy 'smart_water_level.ino' na płytkę Arduino Uno. Aplikację 'Level Monitoring' trzeba zainstalować na smartfonie z systemem Android. Następnie należy włączyć Bluetooth w smartfonie.
Po włączeniu zasilania układu (po stronie nadajnika), moduł Bluetooth HC-05 zostanie sparowany z Bluetooth w smartfonie z systemem Android. Domyślnym kluczem dostępu jest '1234' lub '0000'.
Po udanym sparowaniu, otwórz aplikację 'Level Monitoring' na smartfonie i naciśnij na logo Bluetooth. Wyświetli się lista urządzeń Bluetooth wykrytych przez Twój smartfon. Z listy należy wybrać urządzenie HC-05.
Po udanym połączeniu, na głównym ekranie aplikacji pojawi się komunikat "Connected". Aplikacja Android zacznie teraz wyświetlać dane o poziomie wody otrzymane od strony nadajnika.
Zmontuj układ, jak pokazano na rysunku 4, i umieść czujnik ultradźwiękowy na górze naczynia/pojemnika, którego poziom cieczy chcesz mierzyć. Aby rozwiązać problem, można sprawdzić napięcia w różnych punktach testowych, jak pokazano w tabeli 1.
Zrzut ekranu smartfona wyświetlającego poziom wody=9 cm podczas testów jest pokazany na rysunku 7.