Arduino Arduino ile DS18B20 Sıcaklık Sensörü Kullanımı By Konuk Yazar Posted on 29 Mayıs 2015 4 min read 1 0 7,390 Paylaş ! Facebook Paylaş ! Twitter Paylaş ! Google+ Paylaş ! Reddit Paylaş ! Pinterest Paylaş ! Linkedin Paylaş ! Tumblr Merhaba arkadaşlar, Bu çalışmada,Arduino ile sıcaklık sensörü uygulaması yapılmıştır.Sıcaklık kontrolü bir çok uygulamada karşımıza çıkabilir.Sıcaklık sensörü ile fan kontrolü vb. uygulamalar geliştirebiliriz.Önce kullandığımız malzemelerden sizlere bahsedelim. Arduino Uno 4K7 Direnç Dallas DS18B120 Sensörü Jumper Kablolar Biraz sensörümüzden bahsedelim. *9-12 bit çözünürlük *55 °Cile +125°C arasındaki değerler okunabilir. *3 volt ve 5.5 volt arasında güç verilebilir. *10°C ile +85°C arasında 0.5°C hassasiyetli Sensör hakkında detaylı bilgiye buradan ulaşabilirsiniz. Program yazmaya başlamadan önce 2 tane kütüphane indirmemiz gerekmektedir.Buradan indirebilirsiniz. İndirdikten sonra,OneWire ve DallasTemperature kütüphanelerini Arduino kütüphanelerine dahil etmelisiniz. Kodlar #include <OneWire.h> // OneWire kütüphanesini ekliyoruz. // Sıcaklık sensörünü bağladığımız dijital pini 2 olarak belirliyoruz. int DS18S20_1_Pin = 2; // Sıcaklık Sensörleri Giriş-Çıkışları OneWire ds1(DS18S20_1_Pin); // sensör 2. Dijital pinde. void setup(void) { Serial.begin(9600); // Seri iletişimi başlatıyoruz. } void loop(void) { float temperature1 = getTemp(ds1); // sensörden gelen sıcaklık değeri // Sensörden gelen sıcaklık değerlerini serial monitörde yazdırıyoruz. Serial.print("Sicaklik:"); Serial.print(temperature1); Serial.print(" | "); // 1 saniye bekliyoruz. Monitörde saniyede 1 sıcaklık değerleri yazmaya devam edecek. delay(1000); } // Aşağıdaki fonksiyon DS18B20 sıcaklık sensörümüzden gelen verileri // Celcius cinsinden sıcaklık değerlerine çevirmek için kullanılıyor. // Herhangi bir değişiklik yapmamız gerekmiyor. float getTemp(OneWire sensor){ / byte data[12]; byte addr[8]; if ( !sensor.search(addr)) { sensor.reset_search(); return -1000; } if ( OneWire::crc8( addr, 7) != addr[7]) { Serial.println("CRC gecerli degil!"); return -1000; } if ( addr[0] != 0x10 && addr[0] != 0x28) { Serial.print("Aygit taninmadi"); return -1000; } sensor.reset(); sensor.select(addr); sensor.write(0x44,1); byte present = sensor.reset(); sensor.select(addr); sensor.write(0xBE); for (int i = 0; i < 9; i++) { data[i] = sensor.read(); } sensor.reset_search(); byte MSB = data[1]; byte LSB = data[0]; float tempRead = ((MSB << 8) | LSB); float TemperatureSum = tempRead / 16; return TemperatureSum; } Video’dan projenin çalışmasını inceleyebilirsiniz.