Arduino ile Akış Sensörünün Kullanılması

Arduino ile Akış Sensörünün Kullanılması

Bu eğitimde sıvı akışını ölçmek için bir Arduino Uno’ya bir Akış Sensörü takacağız. Bu tip bir akış sensörü, belirli bir noktadan geçen sıvı hacmini ölçmek için tasarlanmıştır, damla sulama sisteminizin ne kadar su kullandığını gösteren sekmeleri tutmak için harika bir yoldur veya diğer herhangi bir proje, izlenmesi gereken sıvı akışıdır. Göreceli olarak düşük maliyet ve kullanım kolaylığı nedeniyle bu temel akış sensörlerini seviyoruz.

Birkaç Dikkat Edilmesi Gereken Noktalar:
Bu sensörü takmaktan atlamak için bir projede kullanıldığında göz önünde bulundurulması gereken birkaç nokta var.

• Bunlar dakikada 1 litreden az veya dakikada 30 litreden fazla bir akışı izleyemez. 
• Sensör maksimum 2.0MPa (290 PSI) değerine sahiptir.

Nasıl Çalışır:
Sensörün kendisi çok basittir; Su aktığında akan küçük bir sineklik tekerleği vardır. Sineklik tekerleğindeki bir mıknatıs, her devirle çıkış telinden anlık bir nabız gönderen bir salon etki sensörünü tetikler. Litre başına 450 darbenin olduğunu bilerek, zaman içinde akış hızını veya geçen toplam hacmi veya her ikisini birden belirleyebiliriz!

Gerekli Parçalar:

Bu eğitici birkaç ortak kısım gerektirecektir:

Bu derste tam boyutlu Arduino Montaj Plakalarımızdan birini de kullandık . Montaj plakası Arduino’nuzu ve breadboard’unuzu yan yana düzgünce sabit tutar ve daha organize bir prototip oluşturulmasına izin verir!

Akış-2

Şematik

Bu kullanışlı küçük şema, her şeyi nasıl bağlayacağımızı gösteriyor. Biraz bunaltıcı görünüyorsa endişelenmeyin, bu adım adım ilerleyeceğiz!

Sketch1

Akış-4

Adım 1 – Breadboard’a Güç

Arduino Uno’yu ve breadboard’u hemen yan yana atlayıp, yan yana yerleştireceğiz. Sensör, 5-18VDC arasında herhangi bir yerde çalışıyor, ancak Arduino üzerinde 5VDC mantığı ile çalıştığımız için, Arduino’nun kendi 5V gücünü şu anda USB portu aracılığıyla kullanacağız.

Arduino üzerindeki 5V pininden bir jumper telini bağlayarak ve lehimsiz breadboard’un yan tarafındaki pozitif raya geçirerek başlayın. Ardından, Arduino’daki Topraklama piminden lehimsiz devre tahtasındaki negatif raya bir kablo çekin.

Artık breadboard üzerinde gücümüz var!

Adım 2 – Sensörün Kablo Demeti

Bu özel sensör, bir konnektör ile tamamlanmış güzel bir uzun kablo demetine sahiptir. Bağlayıcının etrafını döşememize rağmen, bu sensörü bağlayıcısına bağlamak için Erkek / Erkek Prototipleme Tellerimizi kullanabiliriz. Alternatif olarak, herhangi bir uzun 0.100 ″ pitch breadboard uyumlu başlık pimleri de kullanılabilir. Telleri görsel olarak takip etmek çok daha kolay olduğu için bu yöntemi seçtik.

Koşumun kendisi Kırmızı, Sarı ve Siyah tellere sahiptir. Ürün sayfasından kırmızı telin bir güç kablosu olduğunu, sarı telin sensörün çıkış teli olduğunu ve siyah telin bir toprak olduğunu biliyoruz .

Akış-5
Akış-6

Adım 3 – Çekme Direnci

Daha sonra bir çekme direnci olarak 10K Ohm direncini (Kahverengi, Siyah, Turuncu) kullanacağız. Çekme direnci, Arduino dijital giriş piminin yüzer biçimde bittiği bir durumu önler (bu, girişin kesin olarak açık veya kapalı olmayışı olarak düşünün). Bir giriş yüzdüğü zaman, son değeri tutabilir, kapalı ve açık, oldukça rastgele olabilir – genellikle açık ya da kapalı olup olmadığını anlamaya çalışırken iyi bir şey değil!

Dirençin bacaklarını bükün ve bunu breadboard üzerindeki pozitif 5V rayı ile bir sıra pim arasına yerleştirin. Ayrıca, jumper kablolarını konektöre takarak sensörün kablo demetini de devam ettireceğiz.

Adım 4 – Sensörü Breadboard’a Bağlama

Son adımda sensörün kablo demetini uzattık – şimdi bu jumper kablolarını breadboard’a bağlayabiliriz. Siyah kablo, sensör zemini ve devre tahtasındaki negatif (şasi) raya bağlanmalıdır. Kırmızı kablo, sensör gücünü sağlamak için pozitif 5V raya bağlanmalıdır. Sarı kablo, son adımı eklediğimiz çekme direnciyle aynı sıraya takılmalıdır – bu sensörden gelen çıkıştır.

Biz hemen oradayız!

Akış 7
akış 8

Adım 5 – Son Bağlantı

Eklemek için son bir telimiz var – bu, çekme direncini ve sensör çıkışını Arduino’nun dijital girişine bağlar. Bu örnekte bir kesme pimi kullanacağız, bu yüzden Arduino Uno’da iğne 2’yi kullanmamız gerekecek. Farklı bir Arduino kullanıyorsanız lütfen hangi iğnelerin mevcut olduğunu görmek için bu tabloya bakın!

Adım 6 – Double Check Ve Takın!

Arduino gücünü vermeden önce, yanlış yerde hiçbir tel olmadığından emin olmak için tüm bağlantıların üzerinden geçilmesi iyi bir fikirdir – bazen bu çok pahalı bir hata yapabilir!

Bu sorunu önlemenin bir yolu iyi bir tel rengi disiplini. Diğer bir deyişle, telin her rengi için bir amaç üzerinde karar verin ve onlara tutun! Bu örnekte, tüm 5V güç kırmızı kablolar, tüm topraklar siyah kablolar ve sarı sinyal kablolarıdır. Bu şekilde, bir siyah kabloya giden bir kırmızı kablo görürseniz, hemen bir şeylerin doğru olmadığını bilirsiniz!

Akış-2

void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}

Adım 7 – Kodun Başlatılması

Şimdi bağlantıyı bitirdik, bazı kodları yazmaya başlamamız gerekiyor. Arduino IDE kullanıyor olacağız, bu https://www.arduino.cc/en/Main/Software adresinden edinilebilir.

“Dosya” ya tıklayarak ve “Örnekler / Temel / BareMinimum” ı seçerek bulunan “BareMinimum” çizimiyle başlayacağız. Bu taslak, Kurulum ve Döngü fonksiyonlarını içerdiği için harika bir başlangıç ​​noktasıdır – gerisini biz yazacağız!

Adım 8 – Sensör Nasıl Okunmalı?

Bu algılayıcının, her defledir ve her dönüşün, 2.25mL akışkanın sensörü geçmesi için Arduino pimine (2) bir nabız çıkışı vereceğini biliyoruz, böylece debiyi hesaplamak, sadece devir / dakika olarak saymakla ilgilidir. 2.25mL ile çarpılıyor.

Yani, bir Arduino ile RPM saymanın en iyi yolu nedir? Bu durumda kesme pimi çok faydalı olacaktır. Kesmeler çok uygun bir isme sahiptir – bir sinyalin alındığı anda bir görev gerçekleştirmenize (bir kod parçası çalıştırmanıza) izin verir, yani bir sensörden nabız saymaya çalıştığınızda harikadırlar.

Kesmeleri kullanmak çok kolay – buna izin verelim!

Adım 9 – Kodu Yazma

IDE’de bulunan BareMinimum Sketch ile başlıyoruz, şöyle bir şeye benzemeliyiz:

void setup () {
  // kurulum kodunu buraya bir kez çalıştırmak için buraya yerleştirin:
}
void loop () {
  // Ana kodunuzu tekrar tekrar çalıştırmak için buraya koyun:  
}

Yani önce değerleri tutmak için bazı değişkenlere ihtiyacımız olacak:

int flowPin = 2; // Bu Arduino'nun giriş pini
çift ​​akışlı; // Bu, hesaplamayı amaçladığımız değerdir.
uçucu int sayımı; // Bu tamsayı, kesme işlemi sırasında doğru şekilde güncellendiğinden emin olmak için uçucu olarak ayarlanmalıdır.  

void setup () {
  // kurulum kodunu buraya bir kez çalıştırmak için buraya yerleştirin:
}
void loop () {
  // Ana kodunuzu tekrar tekrar çalıştırmak için buraya koyun:  
}

Uçucu tamsayı “saymak”, test ettiğimiz her saniyede nabız sayısını sakladığımız yer kadar önemlidir. Uçucu kısım, birçoğunuz için yeni olabilir ve Değişim Servisleri Rutininde değişken güncellemelerin doğru bir şekilde yapılmasını sağlar. Bunun yanı sıra, başka bir tamsayı gibi davranır. Bir darbe alındığında her bir zaman artmasını isteyeceğiz, bu da, bir darbe alındığında kesintinin çalışacağı yeni bir fonksiyon yaratmamız gerektiği anlamına gelir:

int flowPin = 2; // Bu Arduino'nun giriş pini
çift ​​akışlı; // Bu, hesaplamayı amaçladığımız değerdir.
uçucu int sayımı; // Bu tamsayı, kesme işlemi sırasında doğru şekilde güncellendiğinden emin olmak için uçucu olarak ayarlanmalıdır.  

void setup () {
  // kurulum kodunu buraya bir kez çalıştırmak için buraya yerleştirin:
}
void loop () {
  // Ana kodunuzu tekrar tekrar çalıştırmak için buraya koyun:  
}

boşluk Akışı ()
{
   ++ saymak; // Bu fonksiyon her çağrıldığında, "say" değerini 1 artır
}

Değişkeni takip eden “++”, program her zaman bu satırı çalıştığında, o değişkene 1 ekleyecektir – saymak için harika!

Interrupt işlevi “Flow” fonksiyonunu çağırıyor, bu yüzden devam edelim ve interrupt’ı kodun kurulum bölümüne ekleyelim:

int flowPin = 2; // Bu Arduino'nun giriş pini
çift ​​akışlı; // Bu, hesaplamayı amaçladığımız değerdir.
uçucu int sayımı; // Bu tamsayı, kesme işlemi sırasında doğru şekilde güncellendiğinden emin olmak için uçucu olarak ayarlanmalıdır.  

void setup () {
  // kurulum kodunu buraya bir kez çalıştırmak için buraya yerleştirin:
  pinMode (flowPin, INPUT); // Pimi bir giriş olarak ayarlar
  attachInterrupt (0, Akış, RISING); // "Flow" işlevini çalıştırmak için Interrupt 0'ı (Arduino Uno'daki pin 2) yapılandırır  

}
void loop () {
  // Ana kodunuzu tekrar tekrar çalıştırmak için buraya koyun:  
}

boşluk Akışı ()
{
   ++ saymak; // Bu fonksiyon her çağrıldığında, "say" değerini 1 artır
}

Bu yüzden son ufaklık biraz daha fazla açıklama gerektirebilir: Açık olması gereken ilk şey Arduino Uno pin 2’de Interrupt 0’dır, bu yüzden eklediğimiz her iki kod satırı Arduino’daki aynı fiziksel pime atıfta bulunmaktadır. Temel olarak, iğnenin kesme işlemini başlatmadan önce bir giriş olarak ayarlanması gerekir.

Bir sonraki satırda, “attachInterrupt” kullanarak kesmeyi konfigüre ediyoruz. Bu çizginin nasıl çalıştığını daha iyi göstermek için şunu düşünün:

attachInterrupt (interrupt numarası, tetiklendiğinde çalıştırmak istediğiniz işlev, tetikleyici olarak ne koymak istediğiniz).

Bu yüzden, pim düşükten yükseğe doğru (sensörden bir darbe geldiğinde) geçiş yaparken “Flow” u tetiklemek için interrupt 0 kullanıyoruz. Tetikleyicilerin tam listesi Arduino Öğrenim Merkezi’nde mevcuttur.

Döngüde sürekli olarak çalışacak ana kodu yazmaya başlama zamanı:

int flowPin = 2; // Bu Arduino'nun giriş pini
çift ​​akışlı; // Bu, hesaplamayı amaçladığımız değerdir.
uçucu int sayımı; // Bu tamsayı, kesme işlemi sırasında doğru şekilde güncellendiğinden emin olmak için uçucu olarak ayarlanmalıdır.  

void setup () {
  // kurulum kodunu buraya bir kez çalıştırmak için buraya yerleştirin:
  pinMode (flowPin, INPUT); // Pimi bir giriş olarak ayarlar
  attachInterrupt (0, Akış, RISING); // "Flow" işlevini çalıştırmak için Interrupt 0'ı (Arduino Uno'daki pin 2) yapılandırır  

}
void loop () {
  // Ana kodunuzu tekrar tekrar çalıştırmak için buraya koyun:  
  sayısı = 0; // Sayacı sıfırlayın, tekrar 0'dan saymaya başlarız
  kesmeler (); // Arduino üzerinde kesintileri etkinleştirir
  gecikme (1000); // 1 saniye bekleyin
  noInterrupts (); // Arduino'daki kesintileri devre dışı bırak
}

boşluk Akışı ()
{
   ++ saymak; // Bu fonksiyon her çağrıldığında, "say" değerini 1 artır
}

Tamam, oraya yarım yol. Döngü tekrar tekrar çalıştığı için başlangıçta “sayım” değişkenimizi 0’a sıfırlamalıyız, son döngüden gelen darbelerin sayısını ileriye taşımak istemiyoruz. Bir sonraki satır kesintileri mümkün kılar, yani şimdi sensörün kaç tane puls gönderdiğine karar vermeye başlıyoruz. Aşağıdaki satırda, darbelerin sayılmasına zaman vermek için 1000 ms (1 Saniye) kodunu geciktiririz ve son satırda sayımın kesilmesi için kesintileri devre dışı bırakırız. Kesme işleminden önce sensörden gelen darbeler yok sayılır ve devre dışı bırakıldıktan sonra bu kodla 1 saniyelik bir süre boyunca çok hassas bir şekilde puls sayılır.

Saniyedeki bakliyat sayısını daha yararlı bir ölçü birimine dönüştürmek için biraz matematik yapalım:

int flowPin = 2; // Bu Arduino'nun giriş pini
çift ​​akışlı; // Bu, hesaplamayı amaçladığımız değerdir.
uçucu int sayımı; // Bu tamsayı, kesme işlemi sırasında doğru şekilde güncellendiğinden emin olmak için uçucu olarak ayarlanmalıdır.  

void setup () {
  // kurulum kodunu buraya bir kez çalıştırmak için buraya yerleştirin:
  pinMode (flowPin, INPUT); // Pimi bir giriş olarak ayarlar
  attachInterrupt (0, Akış, RISING); // "Flow" işlevini çalıştırmak için Interrupt 0'ı (Arduino Uno'daki pin 2) yapılandırır  

}
void loop () {
  // Ana kodunuzu tekrar tekrar çalıştırmak için buraya koyun:  
  sayısı = 0; // Sayacı sıfırlayın, tekrar 0'dan saymaya başlarız
  kesmeler (); // Arduino üzerinde kesintileri etkinleştirir
  gecikme (1000); // 1 saniye bekleyin
  noInterrupts (); // Arduino'daki kesintileri devre dışı bırak
  
  // Matematiği başlat
  flowRate = (sayı * 2.25); // Son saniyedeki sayımları sayın ve 2.25mL ile çarpın
  flowRate = flowRate * 60; // Dakikaları dakikalara dönüştürerek size mL / Minute verir
  flowRate = flowRate / 1000; // Litre / Dakika dönüştürür, size Litre / Dakika verir
}

boşluk Akışı ()
{
   ++ saymak; // Bu fonksiyon her çağrıldığında, "say" değerini 1 artır
}

Son 3 satır sadece bir birim dönüştü. 

Saniyedeki palslar * Darbeli başına 2.25 mililitre = mililitre / İkinci 
mL / Saniye * 60 Saniye = mL / Dakika 
mL / Dakika / 1000 = Litre / Dakika

Yani flowRate = Litre / Dakika… Mükemmel! Şimdi sadece Seri’ye yazmamız gerekiyor, böylece verileri görebiliyoruz:

int flowPin = 2; // Bu Arduino'nun giriş pini
çift ​​akışlı; // Bu, hesaplamayı amaçladığımız değerdir.
uçucu int sayımı; // Bu tamsayı, kesme işlemi sırasında doğru şekilde güncellendiğinden emin olmak için uçucu olarak ayarlanmalıdır.  

void setup () {
  // kurulum kodunu buraya bir kez çalıştırmak için buraya yerleştirin:
  pinMode (flowPin, INPUT); // Pimi bir giriş olarak ayarlar
  attachInterrupt (0, Akış, RISING); // "Flow" işlevini çalıştırmak için Interrupt 0'ı (Arduino Uno'daki pin 2) yapılandırır  
  Serial.begin (9600); // Seriyi Başlat
}
void loop () {
  // Ana kodunuzu tekrar tekrar çalıştırmak için buraya koyun:  
  sayısı = 0; // Sayacı sıfırlayın, tekrar 0'dan saymaya başlarız
  kesmeler (); // Arduino üzerinde kesintileri etkinleştirir
  gecikme (1000); // 1 saniye bekleyin
  noInterrupts (); // Arduino'daki kesintileri devre dışı bırak
  
  // Matematiği başlat
  flowRate = (sayı * 2.25); // Son saniyedeki sayımları sayın ve 2.25mL ile çarpın
  flowRate = flowRate * 60; // Dakikaları dakikalara dönüştürerek size mL / Minute verir
  flowRate = flowRate / 1000; // Litre / Dakika dönüştürür, size Litre / Dakika verir

  Serial.println (akış hızı); // Değişken flowRate'i Seriye yazdır
}

boşluk Akışı ()
{
   ++ saymak; // Bu fonksiyon her çağrıldığında, "say" değerini 1 artır
}

Kurulumda, Seri bağlantıyı, varsayılan hız olan 9600 Baud hızında başlatıyoruz. Döngünün alt kısmında, matematikimizin sonucunu içeren Seri bağlantıda bir satır yazdırıyoruz. Hepsi tamam!

Adım 10 – Kod Yükle ve Test Et

Artık tüm kod yazıldığı için Arduino’nuza yüklenebilir! Arduino IDE’nin sol üst köşesindeki “Yükle” düğmesine tıklayın ve herhangi bir sorun olmadan yükleme yapmalısınız. Ardından, sağ üst köşedeki “Seri Monitör” düğmesine tıklayın (büyüteç gibi görünüyor). Birkaç saniye sonra, pencerede bir veri akışı görmeye başlamalısınız – bu, Litre / Dakika’daki akışınızdır.

finalcode1

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir