Bu blogda, su akış sensörü hakkında bilmeniz gereken temel bilgileri sizlere aktaracağız. Bunlar arasında:
- Su akış sensörünün kısa bir tanımı.
- Hall su akış sensörünün çalışma prensibi.
- Su akış sensörünün nasıl kullanılacağı (Donanım ve Kod).
- Hesaplama formülü hakkında detaylar.
Su akış sensörü nedir?
Su akış sensörünü, su akış hızını ölçmek için kullanırız. Su akış hızı, birim zamanda geçen sıvı hacmidir. İnsanlar genellikle su akış sensörünü otomatik su ısıtıcı kontrolü, DIY kahve makineleri, su otomatları vb. için kullanır.
Farklı prensiplere sahip çeşitli akış sensörleri bulunmaktadır, ancak Arduino veya Raspberry Pi kullanan yapımcılar için en yaygın akış sensörü, bir Hall cihazına dayanmaktadır. Örneğin, en klasik su akış sensörü YF-S402 ve YF-S201 Hall sensörlerine dayanır.
Peki, Hall su akış sensörü nasıl çalışır?
Su akış sensörü nasıl çalışır?
Su akışının nasıl çalıştığını açıklamak için kapağı açalım ve bir göz atalım.


İçerisi oldukça basit. Ana bileşenler Hall Etkisi sensörü, turbine tekerleği ve mıknatıs‘tır. Su, girişten içeri akar ve çıkıştan dışarı çıkar. Su akışı tekerleği döndürür ve tekerlekteki mıknatıs da onunla birlikte döner. Mıknatıs alanının dönüşü, Hall sensörünü tetikler ve bu sensör yüksek ve düşük seviyeli kare dalgalar (pulse) üretir.

Tekerleğin her dönüşünde, geçen su hacmi belirli bir miktardır, aynı zamanda üretilen kare dalga sayısı da belirli bir miktardır. Bu nedenle, su akışını kare dalga sayısını sayarak hesaplayabiliriz.
Arduino ile su akış sensörü nasıl kullanılır?
Gerekli Malzemeler
Donanım Bağlantısı
YF serisi için 3 kablo bulunmaktadır:
- Kırmızı Vcc için
- Siyah GND için
- Sarı pulse çıkışı için.
Atmega 328 tabanlı kartlar için, örneğin Arduino UNO ve Seeeduino V4.2. İki dijital pin, kesme olarak kullanılabilir. Dijital pin 2 kesme 0 için ve dijital pin 3 kesme 1 için. Bu blogda, su akış sensörünün pulse çıkışını algılamak için D2 pini kullanıyoruz. Eğer Seeeduino + Grove temel kalkanı kullanıyorsanız, su akış sensörünü D2 konektörüne takmanız yeterlidir. Eğer başka bir Arduino kartı kullanıyorsanız, doğru pine bağlamak için jumper kabloları kullanın.

Yazılım Kodu
Elbette, su akış sensörünün çıkışını okumak için digitalread() fonksiyonunu LOOP fonksiyonunda kullanabilirsiniz. Yüksek seviye okunduğunda sayıyı bir artırın. Ancak, bu yaklaşım gerçek zamanlı değildir ve program her yürütme için belirli bir bekleme süresi gerektirir; bu süre zarfında yeni pulse’lar algılanmaz.
Bu tür gerçek zamanlı uygulamalar için genellikle kesme kullanırız. Pulse’ın yükselen kenarı algılandığında, bir kesme tetiklenir ve sayım bir artırılır.

Daha fazla detay için kesme hakkında lütfen attachinterrupt() adresini kontrol edin.
Sonra Arduino IDE’nizi açın ve aşağıdaki kodu kopyalayın. Kodu Arduino’ya yükleyin.
Not:
Buradaki kod, en klasik YF – S201 Su Akış Sensörü içindir. Ancak yukarıdaki resim YF – S402’dir. Çünkü elimizde YF – S201 yok. Her ikisi için kullanılan kod neredeyse aynıdır, sadece bir faktör değiştirilmelidir.
/*
YF‐ S201 Su Akış Sensörü
Su Akış Sensörü çıkışı litre/saat olarak okunmak üzere işlenmiştir
Uyarlama: www.hobbytronics.co.uk
*/
volatile int flow_frequency; // Akış sensörü pulse'larını ölçer
int l_hour; // Hesaplanan litre/saat
unsigned char flowsensor = 2; // Sensör Girişi
unsigned long currentTime;
unsigned long cloopTime;
void flow () // Kesme fonksiyonu
{
flow_frequency++;
}
void setup()
{
pinMode(flowsensor, INPUT);
digitalWrite(flowsensor, HIGH); // Opsiyonel Dahili Pull-Up
Serial.begin(9600);
attachInterrupt(0, flow, RISING); // Kesme Ayarı
sei(); // Kesmeleri etkinleştir
currentTime = millis();
cloopTime = currentTime;
}
void loop ()
{
currentTime = millis();
// Her saniye, litre/saat hesapla ve yazdır
if(currentTime >= (cloopTime + 1000))
{
cloopTime = currentTime; // cloopTime'ı güncelle
// Pulse frekansı (Hz) = 7.5Q, Q litre/dakika akış hızıdır.
l_hour = (flow_frequency * 60 / 7.5); // (Pulse frekansı x 60 dk) / 7.5Q = litre/saat akış hızı
flow_frequency = 0; // Sayacı sıfırla
Serial.print(l_hour, DEC); // Litre/saat yazdır
Serial.println(" L/saat");
}
}
Seri monitör aracını açın ve baud hızını 9600 olarak ayarlayın. Su akarken, akış değeri uygun pencerede yazdırılacaktır.
Su akış sensörünün hesaplama formülü
Kod bölümünde, aşağıdaki formülü kullandık, peki bu formül nasıl ortaya çıktı?
l_hour = (flow_frequency * 60 / 7.5)
Daha önce, tekerleğin her dönüşünde geçen sıvı hacminin belirli olduğunu belirtmiştik. Aynı zamanda, tekerleğin her dönüşünde üretilen pulse sayısı da belirli bir miktardır. Böylece, pulse sayısı ile su akışı arasında bir denklem kurabiliriz.
Aslında, YF serisi altı alternatif kutuplu bir halka mıknatıs kullanır, böylece her dönüşte üç düşük seviye ve üç yüksek seviye, yani üç pulse üretilir.
YF-S201 için, her litre su geçtiğinde, Hall Sensörü 450 pulse üretir. Şimdi burada biraz matematik yapalım.
1 litre için 450 pulse, bu nedenle her pulse 1/450 litre su akışı anlamına gelir.
Belirli bir zamanda su akış sensöründen geçen toplam sıvı hacmini t(birim s) olarak alalım ve tespit edilen toplam pulse sayısını N olarak alalım. O zaman şunu elde ederiz:
V_total(L) = N* 1/450(L)
Ayrıca, su akış sensöründen geçen toplam sıvı hacmi, su akış hızı water flow rate(Q - birim L/s) ile zaman t(birim s) çarpımına eşittir.
V_total(L) = Q(L/s)*t(s)
O zaman şunu elde ederiz:
N* 1/450 = Q(L/s)*t(s)
N/t = 450 * Q(L/s)
N/t tamamen frekans f‘dir, bu nedenle:
f = 450*Q(L/s);
Q(L/s) = f/450;
Q(L/dk) = f*60/450 = f/7.5
Q(L/saat) = f*60*60/450 = f*60 /7.5
YF – S402 için, akan her litre su için Hall Sensörü 4380 puls üretir. Yani, formül şöyle olmalıdır:
f = 4380*Q(L/s);
Q(L/s) = f/4380;
Q(L/dk) = f*60/4380 = f/73
Q(L/saat) = f*60*60/4380 = f*60 /73
Bu blog hakkında söyleyeceklerim bu kadar.
Ayrıca Projeniz için en iyi su akış sensörünü nasıl seçeceğinizi kontrol edebilirsiniz, bu size doğru olanı bulmanıza yardımcı olacaktır.
