Arduino ve DS18B20 ile Sıcaklık Ölçme

Arduino & DS18B20 Sıcaklık Sensörü ile sıcaklığın I2C modüllü LCD'de gösterilmesi.
DEVRE ŞEMASI:





Çoklu DS18B20 bağlantısı :


DS18B20:




I2C Modülü:


VİDEO:


Arduino Ide Kodları:

/*
 * Kodla Gitsin
 * Arduino ve DS18B20 ile Sıcaklık Ölçme
 */
//İlk önce kütüphaneleri dahil ediyoruz
//i2c lcd kütüphaneleri
#include <LCD.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C  lcd(0x27,2,1,0,4,5,6,7);

// ısı sensörü kütüphaneleri 
#include <OneWire.h> 
#include <DallasTemperature.h>
/********************************************************************/
// Veri kablosu Arduino'daki pin 2'ye takılı
#define ONE_WIRE_BUS 2 
/********************************************************************/
// Herhangi bir OneWire cihazıyla iletişim kurmak için bir oneWire örneği kurulumu  
// (sadece Maxim / Dallas sıcaklık IC'leri değil) 
OneWire oneWire(ONE_WIRE_BUS); 
/********************************************************************/
// OneWire referansımızı Dallas Temperature'ye iletiyoruz. 
DallasTemperature sensors(&oneWire);
/********************************************************************/ 
void setup(void) 
{ //lcd başlatılıyor
  lcd.begin (16,2);
  lcd.setBacklightPin(3,POSITIVE);
  lcd.setBacklight(HIGH);
  
 // seri port başlatılıyor
    Serial.begin(9600); 
 // Kütüphaneyi başlat 
 sensors.begin(); 
void loop(void) 
/********************************************************************/
//Serial.print(" Sıcaklık talebi..."); 
 sensors.requestTemperatures(); // Sıcaklık değerleri almak için hattaki cihazlara sıcaklık talep komutu gönderiliyor
/********************************************************************/
 Serial.print("Sicaklik: "); 
 Serial.print(sensors.getTempCByIndex(0)+27); // dikkat! "byIndex"?  
 Serial.println(" C derece"); 
/*******************************************************************/
   // Aynı veriyolunda birden fazla DS18B20 bulunabilir..  
   // ByIndex(0), hattaki ilk IC'yi ifade eder...ByIndex(1)...ByIndex(2)...
  lcd.setCursor(0, 0);
  lcd.print("Sicaklik:");
  lcd.setCursor(0, 1);
  /*
   * elimdeki ds18B20 hasarlı, yanlış ölçüyor, dengelemek için 27-28 le topladım
   * 3v-5v beslemeye göre de 0,5-1 santigrat derece hassasiyet değişiyor.
   * kalibrasyon denemelerini yaptım, sonuçlar tatminkar.
   * siz kendi uygulamalarınızda alt satırdaki +27 değerini eklemeyin
   */
  lcd.print(sensors.getTempCByIndex(0)+27); // <== 27 değeri normalde yok. <==
  lcd.print((char)2230);//derece işareti
  lcd.print("C");
   
 delay(1000); 
}


Kullanılan Programlar    : Arduino Ide 1.8.8
Kullanılan Programlayıcı: Arduino Uno (Klon)



Yorumlar