W tym artykule zajmę się czujnikiem służącym do oceny poziomu wody. Czujnik można wykorzystać do główny element systemu alarmowego sprawdzającego poziom wody w zbiorniku. Przedstawię prosty przykład i opiszę jak można go wykonać samemu.
Spis treści
- Krótki opis
- Specyfikacja
- Przykład
- Pliki do pobrania
Krótki opis
Jak już wspominałem czujnik można wykorzystać do kontroli poziomu wody. Zasada jego działania jest oparta na magnesie znajdującym się w środku pływaka. Podnosząc się tworzy on powstaje zwarcie na stykach kontaktronu.
Specyfikacja
- Maksymalne napięcie przełączania: 100V
- Maksymalny prąd chwilowy: 0,5A
- Napięcie ciągłej pracy: 50V
- Prąd ciągłej pracy: 30W
- Otwór montażowy: 7,5mm
- Długość przewodów: 35 cm
- Mocowanie: pionowe
- Temperatura pracy: – 20 do +80°C
- Wymiary czujnika: 19 x 36 mm
Przykład
Elementy
- Pływak czujnik poziomu cieczy wody ZP5210
- Arduino Mega lub Uno
- *Płytka stykowa i 2x kable stykowe (Nie są konieczne do wykonania przykładu ale dla wygody podczas korzystania)
Prawidłowe podłączenie
Mając 2 kable wychodzące od czujnika jeden podłączamy do wejścia GND na płytce Arduino a drugi do A0.
(Uwaga jeżeli po wykonaniu przykładu czujnik nie podaje odczytów. Upewnij się że kable nie są luźno wpięte do płytki, a jeżeli to nie pomaga zamień miejscami 2 kable.)
Program
Na początku musimy zdefiniować nasze wejście A0. Do wykonania przykładu nie będziemy korzystali z bibliotek wiec kolejne kroki będą dotyczyły już tylko funkcji.
#define WATER_LEVEL_SWITCH A0
W pierwszej funkcji void setup() uaktywniamy monitor portu szeregowego i ustawiamy
void setup() { // put your setup code here, to run once: Serial.begin(9600); }
Na koniec w funkcji void loop() definiujemy zmienną o wartości równaj odczytanej na wejściu analogowym A0 oraz ustawiamy zakres poziomów wody w zależności od wysokości napięcia. Ja wydzieliłem 3 poziomy: Wysoki, Średni i Niski. Które znajdują się w przedziale od 0 do 1023 bo taki jest przedział napięcia na wejściach analogowych. Dodaję jeszcze odstęp i opóźnienie dla lepszej przejrzystości dla osoby odczytującej i jakości odczytu.
void loop() { // put your main code here, to run repeatedly: int resistance = analogRead(WATER_LEVEL_SWITCH); Serial.print("Poziom Wody:"); if(resistance >= 1023 && resistance >= 450) { Serial.print("Wysoki"); } if(resistance < 450 && resistance > 100){ Serial.print("Średni"); } if(resistance <= 100 && resistance >= 0) { Serial.print("Niski"); } Serial.print("\n\n"); delay(2000); }