BAĞLAN

LabVIEW Üzerinden SHT15 Sensör ile Sıcaklık Nem Kontrolü

  • Görüntülenme 1199
  • PAYLAŞ
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  

    Bu projemizde labview arayüz programında kontrol blokları oluşturup SHT15 sıcaklık ve nem ölçer sensörden verileri bilgisayara aktaracağız.

    Malzemeler:

    1. Arduino (model fark etmez)
    2. Sht15 sıcaklık nem ölçer sensör

    Elektronik Kısım:

    Devre Şeması:

     

    Şekildeki gibi bağlantılarımızı yapıyoruz.

    Yazılım Kısmı:

    Arduino Kodu:

    int Sicaklik_pin = 3; // sıcaklık değer okuma pini
    int Nem_pin = 5; // nem değer okuma pini
     
    int clockPin = 2; // saat pin
    int dataPin = 3; // data pin
    int ack; // hataları izlemek için karakter
    int val; 
    float temperature; 
    float humidity;
     
    void setup() {
     Serial.begin(9600); 
    }
     
    void loop() {
     // sıcaklık okuma
     sendCommandSHT(Sicaklik_pin, dataPin, clockPin);
     waitForResultSHT(dataPin);
     val = getData16SHT(dataPin, clockPin);
     skipCrcSHT(dataPin, clockPin);
     temperature = (float)val * 0.01 - 40;
     temperature = (float)temperature*9/5 + 32; //fahrenheit olarak çevirme
     
     // nerm okuma
     sendCommandSHT(Nem_pin, dataPin, clockPin);
     waitForResultSHT(dataPin);
     val = getData16SHT(dataPin, clockPin);
     skipCrcSHT(dataPin, clockPin);
     humidity = -4.0 + 0.0405 * val + -0.0000028 * val * val;
     
     // seriale yazdırma
     Serial.println(String((int)(temperature*100)) + String((int)(humidity*100)));
     delay(100);
    }
     
     
    // sensör verilerini okuyup gönderme
    int shiftIn(int dataPin, int clockPin, int numBits) {
     int ret = 0;
     
     for (int i=0; i<numBits; ++i) {
     digitalWrite(clockPin, HIGH);
     ret = ret*2 + digitalRead(dataPin);
     digitalWrite(clockPin, LOW);
     }
     return(ret);
    }
     
    // sensör verisini gönderme
    void sendCommandSHT(int command, int dataPin, int clockPin) {
     int ack;
     
     // transmission start
     pinMode(dataPin, OUTPUT);
     pinMode(clockPin, OUTPUT);
     digitalWrite(dataPin, HIGH);
     digitalWrite(clockPin, HIGH);
     digitalWrite(dataPin, LOW);
     digitalWrite(clockPin, LOW);
     digitalWrite(clockPin, HIGH);
     digitalWrite(dataPin, HIGH);
     digitalWrite(clockPin, LOW);
     
     
     shiftOut(dataPin, clockPin, MSBFIRST, command);
     
     // ACK değerini doğrulama
     digitalWrite(clockPin, HIGH);
     pinMode(dataPin, INPUT);
     ack = digitalRead(dataPin);
     if (ack != LOW)
     Serial.println("ACK error 0");
     digitalWrite(clockPin, LOW);
     ack = digitalRead(dataPin);
     if (ack != HIGH)
     Serial.println("ACK error 1");
    }
     
    // sensörden cevap bekleme
    void waitForResultSHT(int dataPin) {
     int ack;
     
     pinMode(dataPin, INPUT);
     for(int i=0; i<100; ++i) {
     delay(10);
     ack = digitalRead(dataPin);
     if (ack == LOW)
     break;
     }
     if (ack == HIGH)
     Serial.println("ACK error 2");
    }
     
    // sensörden veri alma
    int getData16SHT(int dataPin, int clockPin) {
     int val;
     
     // get the MSB (most significant bits)
     pinMode(dataPin, INPUT);
     pinMode(clockPin, OUTPUT);
     val = shiftIn(dataPin, clockPin, 8);
     val *= 256; // this is equivalent to val << 8;
     
     // gerekli ACK gönder
     pinMode(dataPin, OUTPUT);
     digitalWrite(dataPin, HIGH);
     digitalWrite(dataPin, LOW);
     digitalWrite(clockPin, HIGH);
     digitalWrite(clockPin, LOW);
     
     
     pinMode(dataPin, INPUT);
     val |= shiftIn(dataPin, clockPin, 8);
     return val;
    }
     
     
    void skipCrcSHT(int dataPin, int clockPin) {
     pinMode(dataPin, OUTPUT);
     pinMode(clockPin, OUTPUT);
     digitalWrite(dataPin, HIGH);
     digitalWrite(clockPin, HIGH);
     digitalWrite(clockPin, LOW);
    }

    Labview Kontrol Kısmı:

     

    Kontrol arayüz yukarıdaki gibidir.

    Labview dosyasını buradan indirin >> LabVIEW_SHT15

    Aşağıdaki şekildeki gibi play butonuna tıklayıp çalıştırın.

     

    Aşağıdaki gibi window menüsünden show block diagrama tıklayın. Buradan blok diyagram penceresi açılacaktır.

     

    Buradaki sabit değerleri değiştirebilirsiniz.

     

    Sensörden gelen değerler buradaki değerlerden büyük ise led yanacaktır.

     

     


    PAYLAŞ
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    •  
    Sezgin GÜL

    Sezgin GÜL

    Makine Mühendisi, Girişimci, Maker

    Kimler Neler Demiş?

    İlk Yorum Hakkı Senin!

    avatar
    wpDiscuz

    Yeni Projeler More

    • 16 Şubat 2017
      1 hafta ÖNCE 2 Yorum

      Öğrenme Fonksiyonuna Sahip Hareket Kopyalayan Robot Kol Yapımı

      Bu projede öğrenme yoluyla hareket kopyalayan robot kol yapımından bahsedeceğim. Endüstride kullanılan robot kollar, her zaman aynı hareketleri yapmaya odaklıdır. Örneğin ürün bandından bir nesneyi alıp başka bir banda aktarımını yapan robot kollar sürekli aynı hareketi yapmaktadır. Bu hareketler önceden öğretilerek robot kola aktarılır. Burada da aynı mantıkla robot ...

    • 11 Şubat 2017
      2 hafta ÖNCE 10 Yorum

      Arduino İle Labirent Çözen Robot Yapımı

      Kendi robotunu yap projelerimizin bu bölümünde arduino ile labirent çözen robot yapacağız. Labirent çözen robot özellikle robot yarışmalarında yer almaktadır. Bir labirentin çözüm yolunu bulmak aslında tek bir etkene bağlıdır. Bu etken sağ veya sol taraftaki herhangi bir duvarı takip ettirmektir. Bu etkenden yola çıkarak robot sol veya sağ ...

    • 07 Şubat 2017
      3 hafta ÖNCE Yorum Yok

      Arduino ile MLX90614 Kızılötesi Sıcaklık Sensörü Kullanımı

      Cisme temas etmeden, cismin sıcaklığını ölçen MLX90614 kızılötesi sıcaklık sensöründen bahsedeceğim. Dahili bir 17-bit ADC ve güçlü bir DSP, MLX90614'ün ölçümlerinde yüksek doğruluk ve çözünürlük verir. Vücut sıcaklığı ölçmek için uygundur. Ayrıca hareket algılamada da kullanabilirsiniz. MLX90614 Özellikler: Ortam sıcaklığı ölçme aralığı -40 ile + 125 ° C Nesne ...

    • 05 Şubat 2017
      3 hafta ÖNCE Yorum Yok

      Arduino ile Yazıyı Sese Dönüştüren Emic 2 Modülü Kullanımı

      Robotunuzu konuşturmak ve neler olup bittiğini söyletmek ister misiniz ? Emic 2 yazıyı sese çeviren modülle kolaylıkla projeleriniz konuşabilir. Emic-2, Parallax tarafından, ses sentezini tamamen zahmetsiz kılmak için Grand Idea Studio ile birlikte tasarlanmıştır.

    • 31 Ocak 2017
      4 hafta ÖNCE 7 Yorum

      Arduino ile DHT22 Sıcaklık Nem Sensörü Kullanımı

      DHT sensörleri, kapasitif nem sensörü ve bir termistör olmak üzere iki parçadan oluşur. DHT11 ve DHT22 olan iki DHT modelini ele alalım. Görünüm ve pin yapısı olarak benzer görünmelerine rağmen farklı ölçüm hassasiyetlerine sahiptirler. Aşağıda iki modelin karşılaştırmasına bakalım.

    Bizi Takip Et

    Son Yorumlar

    Sezgin GÜL
    Sezgin GÜL 2017-02-25 23:01:46
    merhaba batuhan, hatanın sebebi AFMotor.h kütüphanesini yüklemediğinden kaynaklanmış. Kütüphaneyi buradan indirebilirsin http://www.robimek.com/wp-content/uploads/AFMOTOR-master.rar
    batuhan 2017-02-25 21:52:21
    sezgin bey öncelikle çok teşekkür ediyorum proje için ; Arduino ya kodu derlediğimde şöyle bir sorun ile karşılaşıyorum Arduino:1.8.1 (Windows.....
    Emin ERKMEN 2017-02-25 19:55:34
    Bu robotun üstüne ekleme yapabilir misiniz? 1 hafta içinde? Bu bizim için çok önemli.
    Sezgin GÜL
    Sezgin GÜL 2017-02-25 19:48:46
    Çizgili olan labirenti çözen robotlarda o özellik mevcut. İlerleyen günlerde o tarz proje paylaşacağım.
    Emin ERKMEN 2017-02-25 19:34:28
    Peki bu robot. En kısa yolu nasıl bulabilir. İkinci kez aynı labirentten geçtiği zaman en kısa yoldan gitmesi için ne.....
    Sezgin GÜL
    Sezgin GÜL 2017-02-25 18:10:10
    Kodlarda sorun yok videodaki robotta kullanılan kodlardır. Motor yönlerini doğru taktınız mı. Yön komutlarında doğru yönde dönüyorlar mı bunları da.....
    Emin ERKMEN 2017-02-25 18:03:27
    kodlarda sıkıntı yok yani?
    Sezgin GÜL
    Sezgin GÜL 2017-02-25 17:17:46
    Bağlantılarınız doğru ve sensörlerin konumları uygun ise enerji yetersizliğinden kaynaklanabilir