BAĞLAN

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

  • Görüntüleme 1113
  • 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

    Makine Mühendisi, Maker, Robotik Sistemler Uzmanı

    Bir yorum yaz

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

    Projeler Devamı

    Bizi Takip Et

    izmir escort- izmir escort- izmir escort- izmir escort- izmir escort