flow-sensor

Arduino ile Su veya Gaz litre hesabı nasıl yapılır?

Arduino ile gaz ve sıvı cisimlerin boyutlarının ölçülmesi çok zor birşey değildir. Bu projemizde dakikada yada saatteki  akan gaz ve su miktarının ölçülmesinigöreceksiniz.

 

Akışkan maddelerin ölçülmesi için gerekli olan sensöre FLOW sensörü denir ve bu sensörün Türkiyede bulunması zor bundan dolayı yurtdışından sipariş edilebilir(ben ebayden aldım).  Kullanılan bu sensörün içerisinde hareketli bir pervane vardır.Bu pervanenin bir kenerında manyetik alan sensörü vardır , dönen pervane her her döndüğünde bir değer üretir bu şekilde akışkanların ölçümü mümkündür.Bu projemizde ben direk olarak arduinonun analog girişine bağladım ve herhangi bir değer ölçümü yapmadım, Ama bu projemizde bu sensörün uçlarından su yada gaz geçirilerek geçen gazın veya akışkanın  toplam miktarının da ölçülmesi mümkündür.

flow-sensor

Flow(akışkan) sensörünün 3 bacağı vardır . Vcc, Gnd ve  analog çıkış ucu . Analog çıkış ucunu arduinonuza direk bağlayarak değer alabilirsiniz. Resimlerde ben üfleyerek bu değeri çıkarttım çalışmadığı zaman 0-10 arası değer gösteriyor değer aralığı 0-1023 dür .

Normal analog değer okuma programını kurarak bir değer alabilirsiniz

IMG 20140921 150419

IMG 20140921 150436

IMG 20140921 150441

IMG 20140921 150451

IMG 20140921 150459

IMG 20140921 150507

IMG 20140921 150517

Programımız aşağıdaki gibidir.


byte statusLed    = 13;
byte sensorInterrupt = 0;
byte sensorPin       = 2;

// 1litre akışkanın bir dakikada akması için saniyede 4,5 defa
float calibrationFactor = 4.5;
//www.arduinom.org tarafından yayınlanmıştır.
volatile byte pulseCount;

float flowRate;
unsigned int flowMilliLitres;
unsigned long totalMilliLitres;

unsigned long oldTime;

void setup()
{
Serial.begin(9600);

pinMode(statusLed, OUTPUT);
digitalWrite(statusLed, HIGH);

pinMode(sensorPin, INPUT);
digitalWrite(sensorPin, HIGH);

pulseCount        = 0;
flowRate          = 0.0;
flowMilliLitres   = 0;
totalMilliLitres  = 0;
oldTime           = 0;

attachInterrupt(sensorInterrupt, pulseCounter, FALLING);
}

/**
* ANA program döngüsü
*/
void loop()
{

if((millis() - oldTime) > 1000)    // saniyede bir defa gerçekleştir
{
detachInterrupt(sensorInterrupt);
flowRate = ((1000.0 / (millis() - oldTime)) * pulseCount) / calibrationFactor;

oldTime = millis();
flowMilliLitres = (flowRate / 60) * 1000;
totalMilliLitres += flowMilliLitres;

unsigned int frac;
Serial.print("AKIS HIZI: ");
Serial.print(int(flowRate));
Serial.print(".");
frac = (flowRate - int(flowRate)) * 10;
Serial.print(frac, DEC) ;
Serial.print("L/dk");
Serial.print("  Suanda akan deger : ");
Serial.print(flowMilliLitres);
Serial.print("mL/Sn");

// Basladığından itibaren toplam akan miktar
Serial.print("  Toplam akan miktar: ");
Serial.print(totalMilliLitres);
Serial.println("mL");
pulseCount = 0;
attachInterrupt(sensorInterrupt, pulseCounter, FALLING);
}
}

/*
*/
void pulseCounter()
{
pulseCount++;
}


                    		
  1. Mustafa 8 Mayıs 2017 21:30

    Devre semasini nasil projenin

    Cevapla
    • Arduinocu 9 Mayıs 2017 08:07

      Bu sensorde 3 cikis var bunlardan
      kirmizi olanini +5v
      siyah olanini GND
      Sari olanini D2 pinine baglamalisiniz .
      Kolay Gelsin

      Cevapla

Bir Cevap Yazın

Time limit is exhausted. Please reload CAPTCHA.