dominoFiber     domiRobot     Forum


Projeler: DS18B20 Termometre 2

DS18B20 Termometre Yapımı
Bu yazımızda DS18B20 sıcaklık sensörü ile çoklu ölçüm yapabilen lcd termometreyi inceleyeceğiz. Devrede 2 adet DS18B20 sıcaklık sensörü kullanılmıştır. Her iki sensörden gelen veri aynı anda 16x2 LCD ekranda görüntülenmektedir. DS18B20  ile  -10 °C ‘den +85 °C ‘ye kadar olan sıcaklıklar ±0.5°C  hassasiyetle ölçülebilir. Maksimum -55 °C ‘den +125 °C arasındaki sıcaklıklar ölçülebilir.

Amaç
Arduino ve DS18B20 kullanarak çoklu sıcaklık ölçümü yapıp,  ölçülen değeri LCD göstergede gösterme becerisi kazanmak.

Seviye
Temel seviye

<a href="http://www.youtube.com/watch?v=daSSrUffrb4" target="_blank">http://www.youtube.com/watch?v=daSSrUffrb4</a>
Video 1: Projeye ait video

Fotoğraf 1: Projeye ait fotoğraf

Şema 1 : Arduino Bağlantı Şeması

Şema 2 : ISIS Bağlantı Şeması

Malzeme listesi
Tüm malzemeleri malzeme isimlerine tıklayarak temin edebilirsiniz.

DS18B20 termometre arduino kodu
Kod: [Seç]
/*
www.domirobot.com
DS18B20 Coklu Termometre
Aralık 2016
@2016, All Rights Reserved
@2016 Tüm Hakları Saklıdır. */
#include <OneWire.h>
int DS18S20_ic_Pin = 2;
int DS18S20_dis_Pin = 3;
OneWire ds1(DS18S20_ic_Pin);
OneWire ds2(DS18S20_dis_Pin);
#include <LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
void setup()
{
Serial.begin(9600);
lcd.begin(16, 2);
}
void loop()
{
float domiRobot_dis_sicaklik = getTemp(ds1);
float domiRobot_ic_sicaklik = getTemp(ds2);
Serial.print("DIS SICAKLIK: ");
Serial.print(domiRobot_dis_sicaklik);
Serial.print(" | ");
Serial.print("iC SICAKLIK: ");
Serial.print(domiRobot_ic_sicaklik);
Serial.println(" | ");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("DIS ISI: ");
lcd.print(domiRobot_dis_sicaklik);
lcd.print((char)223);
lcd.print("C");
lcd.setCursor(0,1);
lcd.print("iC ISI: ");
lcd.print(domiRobot_ic_sicaklik);
lcd.print((char)223);
lcd.print("C");
delay(1000);
}
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 is not valid!");
return -1000;
}

if ( addr[0] != 0x10 && addr[0] != 0x28)
{
Serial.print("Device is not recognized");
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;
}

Download
İhtiyaç duyulması halinde projeye ait dosyaları buraya tıklayıp indirebilirsiniz.

DS18B20 satın al

  • DS18B20 satın alDS18B20 satın alDS18B20 satın al