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
Yorum Gönder