Merhaba arkadaşlar bugün Su Seviyesi Sensörü kullanımını öğreneceğiz ve yine daha önce kullanımını öğrendiğimiz 2×16 LCD Ekrana sensörden aldığımız veriyi yazdıracağız.

Su Seviyesi Sensörü Nedir?

Bu sensör, bir kabın veya kapalı bir nesnenin içerisindeki su seviyesini ölçmek için kullanılan bir sensördür. Üzerindeki dikey iletken sütunlar sayesinde su seviyesini kademe kademe ölçebiliriz. Analog çıkış veren bir sensördür.

Özellikler:

  • Çalışma voltajı: DC 3-5V
  • Akım tüketimi: 20mA’den az
  • Sensör tipi: Analog
  • Tespit yüzey alanı: 40mmx16mm
  • Devre plaketi: FR4 çift yüzeyli
  • Çalışma sıcaklığı:10-30
  • Çalışma Nemi: 10% -90% yoğuşmasız
  • Ürün boyutu: 62mmx20mmx8mm

Malzeme Listesi:

Test Aşaması:

Projeyi yapmaya başlamadan önce sensörümüzün sorunsuz çalıştığından emin olmamız gerekiyor. Bunun için 2×16 LCD Ekranı projeye dahil etmeden önce seri ekranda sensörümüzün verdiği değerleri test edelim. Böylece LCD Ekranımızı bağlamadan önce bir sorun olmadığından emin olabiliriz. Test yapmak için sensörümüzün + bacağını Arduino üzerinde +5V pinine, – bacağını Arduino üzerinde GND pinine ve son olarak sensörümüzün S pinini Arduino üzerinde Analog 0 pinine bağlayalım ve aşağıdaki test kodunu Arduino kartımıza yükleyelim.

int suSeviyesi = 0; //Arduino'nun sensörden gelecek su seviyesini okumaya başlayacağı değeri tanımlıyoruz
int sensorPin = A0; //Arduino'ya bağladığımız su seviyesi sensörünün hangi analog pine takıldığını tanımlıyoruz
void setup()
{
Serial.begin(9600); //Seri Ekranın 9600 baudrate değerinde başlangıcını yapıyoruz
}
void loop()
{
suSeviyesi = analogRead(sensorPin); //Sensörümüzden gelen değeri Arduino'ya okutuyoruz ve bu değere suSeviyesi ismini veriyoruz
if (suSeviyesi<=100) //Eğer sensörden gelen değer 100 değerinin altındaysa seri ekrana "boş" yazısını yazdırıyoruz
{
Serial.println("Bos");
}
else if (suSeviyesi>100 && suSeviyesi<=250) //Eğer sensörden gelen değer 100 ve 250 değerlerinin arasındaysa seri ekrana "Düşük" yazısını yazdırıyoruz
{
Serial.println("Dusuk");
}
else if (suSeviyesi>250 && suSeviyesi<=300) //Eğer sensörden gelen değer 250 ve 300 değerlerinin arasındaysa seri ekrana "Orta" yazısını yazdırıyoruz
{
Serial.println("Orta");
}
else if (suSeviyesi>300) //Eğer sensörden gelen değer 300 değerinden büyükse seri ekrana "Yüksek" yazısını yazdırıyoruz
{
Serial.println("Yuksek");
}
delay(300); //Sensörümüzün sağlıklı ölçümler yapabilmesi için ölçümler arasına 300 milisaniyelik bir bekleme süresi bırakıyoruz
}

Kodumuzu yükledikten sonra boş bir kaba veya bardağa sensörün üzerindeki pinler yukarı bakacak şekilde yerleştirelim. Seri ekranı açalım. Ekranda sensörün üzerinde su yoksa “Bos” yazması gerekiyor. Yavaş yavaş suyu dolduralım ve doldururken bir yandan seri ekranda yazan değerleri kontrol edelim. Suyu doldurdukça sırayla seri ekranda suyun seviyesini belirten şu yazıların yazması gerekiyor: Bos, Dusuk, Orta ve Yuksek. Eğer sensörünüzde bir sorun varsa ve seri ekranda belirttiğimiz yazılar yazmıyorsa lütfen yorumlar kısmında bizimle sorununuzu paylaşmaktan çekinmeyin. Size yardımcı olmayı çok isteriz 🙂 Eğer sensörümüzde bir sorun yoksa ve seri ekranda bütün ifadeler sırayla çıktıysa projemize 2×16 LCD Ekranımızı dahil edebiliriz.

Bağlantı Şeması:

2×16 LCD Ekranı I2C Modülü olmadan kullanmak isteyenler için bağlantı şeması:

2×16 LCD Ekranı I2C Modülü ile birlikte kullanmak isteyenler için bağlantı şeması:

Kod:

2×16 LCD Ekranı I2C Modülü olmadan kullanmak isteyenler için kod satırları:

#include <LiquidCrystal.h> //LCD Ekranımızı kullanabilmek için kütüphane tanımlaması yapıyoruz
int suSeviyesi = 0; //Arduino'nun sensörden gelecek su seviyesini okumaya başlayacağı değeri tanımlıyoruz
int sensorPin = A0; //Arduino'ya bağladığımız su seviyesi sensörünün hangi analog pine takıldığını tanımlıyoruz
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup()
{
lcd.begin(16,2); //LCD Ekranımızın 2 satır ve 16 sütundan oluştuğunu tanımlıyoruz
Serial.begin(9600); //Seri Ekranın 9600 baudrate değerinde başlangıcını yapıyoruz
}
void loop()
{
suSeviyesi = analogRead(sensorPin); //Sensörümüzden gelen değeri Arduino'ya okutuyoruz ve bu değere suSeviyesi ismini veriyoruz
if (suSeviyesi<=100) //Eğer sensörden gelen değer 100 değerinin altındaysa ekrana "boş" yazısını yazdırıyoruz
{
lcd.clear();
lcd.print("Su Seviyesi: "); //LCD Ekranımızın ilk satırına su seviyesi yazısını yazdırıyoruz
lcd.setCursor(0, 1); //LCD Ekranımızda "Su Seviyesi: " yazısı ile su seviyesini belirten yazılar aynı satıra sığmayacağı için bir satır boşluk bırakıyoruz
lcd.print("Bos"); //LCD Ekranımızın alt satırına "Bos" yazısını yazdırıyoruz
Serial.println("Bos");
}
else if (suSeviyesi>100 && suSeviyesi<=250) //Eğer sensörden gelen değer 100 ve 250 değerlerinin arasındaysa ekrana "Düşük" yazısını yazdırıyoruz
{
lcd.clear();
lcd.print("Su Seviyesi: "); //LCD Ekranımızın ilk satırına su seviyesi yazısını yazdırıyoruz
lcd.setCursor(0, 1); //LCD Ekranımızda "Su Seviyesi: " yazısı ile su seviyesini belirten yazılar aynı satıra sığmayacağı için bir satır boşluk bırakıyoruz
lcd.print("Dusuk"); //LCD Ekranımızın alt satırına "Dusuk" yazısını yazdırıyoruz
Serial.println("Dusuk");
}
else if (suSeviyesi>250 && suSeviyesi<=300) //Eğer sensörden gelen değer 250 ve 300 değerlerinin arasındaysa ekrana "Orta" yazısını yazdırıyoruz
{
lcd.clear();
lcd.print("Su Seviyesi: "); //LCD Ekranımızın ilk satırına su seviyesi yazısını yazdırıyoruz
lcd.setCursor(0, 1); //LCD Ekranımızda "Su Seviyesi: " yazısı ile su seviyesini belirten yazılar aynı satıra sığmayacağı için bir satır boşluk bırakıyoruz
lcd.print("Orta"); //LCD Ekranımızın alt satırına "Orta" yazısını yazdırıyoruz
Serial.println("Orta");
}
else if (suSeviyesi>300) //Eğer sensörden gelen değer 300 değerinden büyükse ekrana "Yüksek" yazısını yazdırıyoruz
{
lcd.clear();
lcd.print("Su Seviyesi: "); //LCD Ekranımızın ilk satırına su seviyesi yazısını yazdırıyoruz
lcd.setCursor(0, 1); //LCD Ekranımızda "Su Seviyesi: " yazısı ile su seviyesini belirten yazılar aynı satıra sığmayacağı için bir satır boşluk bırakıyoruz
lcd.print("Yuksek");//LCD Ekranımızın alt satırına "Yuksek" yazısını yazdırıyoruz
Serial.println("Yuksek");
}
delay(300); //Sensörümüzün sağlıklı ölçümler yapabilmesi için ölçümler arasına 300 milisaniyelik bir bekleme süresi bırakıyoruz
}

2×16 LCD Ekranı I2C Modülü ile birlikte kullanmak isteyenler için kod satırları:

#include <Wire.h> //LCD Ekranımızı kullanabilmek için kütüphane tanımlaması yapıyoruz
#include <LiquidCrystal_I2C.h> //LCD Ekranımızı kullanabilmek için kütüphane tanımlaması yapıyoruz
int suSeviyesi = 0; //Arduino'nun sensörden gelecek su seviyesini okumaya başlayacağı değeri tanımlıyoruz
int sensorPin = A0; //Arduino'ya bağladığımız su seviyesi sensörünün hangi analog pine takıldığını tanımlıyoruz
LiquidCrystal_I2C lcd(0x27, 16, 2);//LCD Ekranımızın I2C adresinin "0x27" olduğunu ve 2 satır 16 sütundan oluştuğunu tanımlıyoruz
void setup()
{
lcd.begin(); //LCD Ekranımızın 2 satır ve 16 sütundan oluştuğunu tanımlıyoruz
Serial.begin(9600); //Seri Ekranın 9600 baudrate değerinde başlangıcını yapıyoruz
}
void loop()
{
suSeviyesi = analogRead(sensorPin); //Sensörümüzden gelen değeri Arduino'ya okutuyoruz ve bu değere suSeviyesi ismini veriyoruz
if (suSeviyesi<=100) //Eğer sensörden gelen değer 100 değerinin altındaysa ekrana "boş" yazısını yazdırıyoruz
{
lcd.clear();
lcd.print("Su Seviyesi: "); //LCD Ekranımızın ilk satırına su seviyesi yazısını yazdırıyoruz
lcd.setCursor(0, 1); //LCD Ekranımızda "Su Seviyesi: " yazısı ile su seviyesini belirten yazılar aynı satıra sığmayacağı için bir satır boşluk bırakıyoruz
lcd.print("Bos"); //LCD Ekranımızın alt satırına "Bos" yazısını yazdırıyoruz
Serial.println("Bos");
}
else if (suSeviyesi>100 && suSeviyesi<=250) //Eğer sensörden gelen değer 100 ve 250 değerlerinin arasındaysa ekrana "Düşük" yazısını yazdırıyoruz
{
lcd.clear();
lcd.print("Su Seviyesi: "); //LCD Ekranımızın ilk satırına su seviyesi yazısını yazdırıyoruz
lcd.setCursor(0, 1); //LCD Ekranımızda "Su Seviyesi: " yazısı ile su seviyesini belirten yazılar aynı satıra sığmayacağı için bir satır boşluk bırakıyoruz
lcd.print("Dusuk"); //LCD Ekranımızın alt satırına "Dusuk" yazısını yazdırıyoruz
Serial.println("Dusuk");
}
else if (suSeviyesi>250 && suSeviyesi<=300) //Eğer sensörden gelen değer 250 ve 300 değerlerinin arasındaysa ekrana "Orta" yazısını yazdırıyoruz
{
lcd.clear();
lcd.print("Su Seviyesi: "); //LCD Ekranımızın ilk satırına su seviyesi yazısını yazdırıyoruz
lcd.setCursor(0, 1); //LCD Ekranımızda "Su Seviyesi: " yazısı ile su seviyesini belirten yazılar aynı satıra sığmayacağı için bir satır boşluk bırakıyoruz
lcd.print("Orta"); //LCD Ekranımızın alt satırına "Orta" yazısını yazdırıyoruz
Serial.println("Orta");
}
else if (suSeviyesi>300) //Eğer sensörden gelen değer 300 değerinden büyükse ekrana "Yüksek" yazısını yazdırıyoruz
{
lcd.clear();
lcd.print("Su Seviyesi: "); //LCD Ekranımızın ilk satırına su seviyesi yazısını yazdırıyoruz
lcd.setCursor(0, 1); //LCD Ekranımızda "Su Seviyesi: " yazısı ile su seviyesini belirten yazılar aynı satıra sığmayacağı için bir satır boşluk bırakıyoruz
lcd.print("Yuksek");//LCD Ekranımızın alt satırına "Yuksek" yazısını yazdırıyoruz
Serial.println("Yuksek");
}
delay(300); //Sensörümüzün sağlıklı ölçümler yapabilmesi için ölçümler arasına 300 milisaniyelik bir bekleme süresi bırakıyoruz
}

Başlangıç:

Öncelikle projeyi düzgün bir şekilde çalıştırabilmemiz için test aşamasında suya soktuğumuz sensörümüzün yüzeyini tamamen kurulamamız gerekiyor. Kuruladıktan sonra Arduino’ya güç verelim ve sensörümüzü dik konumda tutarak yavaşça su dolu kabımıza veya bardağımıza daldıralım. Sensörü daldırdıkça 2×16 LCD Ekranımızda yazan yazıların sırasıyla: “Bos, Dusuk, Orta ve Yuksek” olması gerekiyor.


Eğer bu proje aşamasında bir sorunla karşılaştıysanız yorum yazmaktan çekinmeyin size yardımcı olmayı çok isteriz! Bu dersimiz işinize yaradıysa ve hoşunuza gittiyse diğer derslerimize göz atmayı unutmayın 🙂

4 YORUMLAR

  1. Aynı uygulamayı fotograftaki sensör yerine suya daldırmadan depo yanına yapıştırarak kullanılan temassız dijital su seviye sensörü ile
    kullanabilir miyiz ? kodlama değişir mi aynı mı ?

  2. merhaba bu kodları mblock programına nasıl dönüştürebilirim
    üzerinde çalıştığım bir yarışma var kaynak çok yararlı ama sadece mblock kullanıldığı için yukarıdaki kodlar işime yaramıyor
    geridönüş sağlarsanız çok sevinirim

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz