Dijital termometre; Arduino Uno, DS18B20 sıcaklık sensörü, 4,7 kΩ direnç ve I2C arayüzlü 16x2 LCD ekranla yaklaşık bir saatte yapılır. Sensör sıcaklığı ölçer, Arduino değeri okur ve ekrana yazar. Termometreyi buzlu suya batırıp 0 °C'den farkını bularak kalibre eder, bu farkı kodda düzeltirsiniz.
Okulda sıcaklık ölçen bir proje yapmak istiyorsanız dijital termometre iyi bir başlangıçtır. Bu yazıda Arduino Uno, DS18B20 sensörü ve 16x2 LCD ekranla bir termometreyi adım adım kuruyoruz. Sensör seçimini, bağlantıyı, kodu ve buzlu suyla kalibrasyonu anlatıyoruz. Sonda ödevinizi bir ölçüm deneyiyle nasıl sunacağınızı bulacaksınız.
Dijital termometre nedir?
Dijital termometre, sıcaklığı bir sensörle ölçüp sonucu sayı olarak ekranda gösteren bir ölçü aletidir. Alkollü termometrede sıvının yükselmesine bakarsınız; dijital termometrede ise ölçümü bir elektronik devre yapar. Bizim termometremizde üç ana parça vardır: sensör, mikrodenetleyici ve ekran.
Sensör, sıcaklığı elektrik sinyaline çeviren parçadır. Mikrodenetleyici, bu sinyali okuyup santigrat dereceye (°C) çeviren küçük bir bilgisayar çipidir. Ekran ise sonucu gösterir. Sensörlerin çalışma ilkelerini sıcaklık sensörü nasıl çalışır yazısında anlattık.
Hangi sıcaklık sensörü seçilmeli?
Öğrenci termometresi için en uygun sensör DS18B20'dir, çünkü dijital çıkış verir, su geçirmez kılıflı modeli vardır ve 0 °C'yi rahatça ölçer. LM35 ve DHT11 de kullanılabilir, ama her birinin bir sınırı vardır. Aşağıdaki tablo farkları özetliyor.
| Sensör | Ölçüm aralığı | Doğruluk | Çıkış | Not |
|---|---|---|---|---|
| DS18B20 | −55 ile +125 °C | ±0,5 °C (−10 ile +85 °C arası) | Dijital (1-Wire) | Su geçirmez modeli sıvıda kullanılır |
| LM35 | Basit bağlantıda +2 ile +150 °C | 25 °C'de yaklaşık ±0,5-1 °C | Analog, 10 mV/°C | Basit bağlantıda 0 °C'yi ölçemez |
| DHT11 | 0 ile 50 °C | ±2 °C | Dijital | Nemi de ölçer; suya sokulmaz |
LM35 her 1 °C için 10 mV verir; 25 °C'de çıkışı 250 mV olur. Arduino'nun analog girişi 5 V'u 1024 adıma böler. Bir adım yaklaşık 4,9 mV, yani yaklaşık 0,5 °C eder. DS18B20 ise sıcaklığı kendi içinde sayıya çevirir ve 0,0625 °C adımla gönderir. Ayrıntılar DS18B20 sıcaklık sensörü yazısında.
Hangi malzemeler gerekir?
Dijital termometre için bir Arduino Uno, su geçirmez DS18B20 sensörü, 4,7 kΩ direnç, I2C arayüzlü 16x2 LCD ekran, breadboard ve jumper kablo yeterlidir. Hepsi 5 V ile, bilgisayarın USB çıkışından beslenir.
Malzeme listesi
| Malzeme | Adet | Ne işe yarar? |
|---|---|---|
| Arduino UNO R3 klon kart | 1 | Sensörü okur, sonucu hesaplar ve ekrana yazar |
| DS18B20 su geçirmez sıcaklık sensörü | 1 | Sıcaklığı ölçüp dijital olarak gönderir |
| 4,7 kΩ direnç | 1 | Veri hattını 5 V'ta tutar (pull-up) |
| 16x2 LCD ve I2C arayüz modülü | 1 | Sıcaklığı iki satırlık ekranda gösterir |
| 830 pin breadboard | 1 | Lehimsiz bağlantı yapılır |
| Erkek-dişi jumper kablo | 6-8 | Ekranı ve sensörü karta bağlar |
Pull-up direnç, veri hattı boştayken onu 5 V seviyesinde tutan dirençtir. I2C ise ekranın yalnızca iki veri kablosuyla (SDA ve SCL) bağlanmasını sağlayan bir haberleşme yöntemidir.
Dijital termometre adım adım nasıl yapılır?
Dijital termometre, önce sensör sonra ekran bağlanıp kütüphaneler kurularak ve kod yüklenerek yapılır. Bağlantıyı yaparken USB kablosu takılı olmasın.
- DS18B20'nin kırmızı kablosunu breadboard'daki 5V hattına, siyah kablosunu GND hattına bağlayın.
- Sarı veri kablosunu Arduino'nun D2 pinine bağlayın.
- 4,7 kΩ direnci sarı veri kablosu ile 5V hattı arasına takın.
- LCD modülünün GND ucunu GND'ye, VCC ucunu 5V'a, SDA ucunu A4'e, SCL ucunu A5'e bağlayın.
- Arduino IDE'de Kütüphane Yöneticisi'nden OneWire, DallasTemperature ve LiquidCrystal I2C kütüphanelerini kurun.
- Aşağıdaki kodu yükleyin. Ekranda birkaç saniye içinde sıcaklık görünmelidir.
#include <OneWire.h>
#include <DallasTemperature.h>
#include <LiquidCrystal_I2C.h>
OneWire hat(2); // veri kablosu D2
DallasTemperature sensor(&hat);
LiquidCrystal_I2C lcd(0x27, 16, 2); // adres 0x27 ya da 0x3F
float duzeltme = 0.0; // kalibrasyondan sonra yazın
void setup() {
Serial.begin(9600);
sensor.begin();
lcd.init();
lcd.backlight();
}
void loop() {
sensor.requestTemperatures();
float c = sensor.getTempCByIndex(0) + duzeltme;
lcd.setCursor(0, 0);
lcd.print("Sicaklik:");
lcd.setCursor(0, 1);
lcd.print(c, 1);
lcd.print(" C ");
Serial.println(c, 1);
delay(1000);
}
Kod her saniye sensörden sıcaklığı ister, düzeltme değerini ekler ve sonucu hem ekrana hem Seri Monitör'e yazar. Bazı sensörlerde kablo renkleri farklıdır; ürün sayfasını kontrol edin. Ekran bağlantısının ayrıntıları 16x2 LCD ekran Arduino bağlantısı yazısında.
Termometre nasıl kalibre edilir?
Termometre, buzlu su karışımına batırılıp gösterdiği değerin 0 °C'den farkı bulunarak kalibre edilir. Kalibrasyon, bir ölçü aletinin hatasını bilinen bir sıcaklıkla karşılaştırıp düzeltmektir. Buz ile suyun birlikte bulunduğu karışım, normal hava basıncında yaklaşık 0 °C'de kalır.
- Bir bardağı kırılmış buzla doldurun, buzların arasını dolduracak kadar soğuk su ekleyin.
- Karıştırıp 2-3 dakika bekleyin.
- Sensörün metal ucunu bardağın ortasına batırın; dibe ve kenara değmesin.
- Değer sabitlenince okuyun. Örneğin 0,4 °C görüyorsanız sensörünüz 0,4 °C fazla gösteriyordur.
- Koddaki düzeltme değerini
-0.4yapın ve kodu yeniden yükleyin.
Bu yönteme tek noktalı kalibrasyon denir; sabit bir kaymayı düzeltir. Oda sıcaklığında da doğruluğu görmek için termometrenizi bir mutfak termometresiyle aynı suda karşılaştırın.
Hangi güvenlik kurallarına dikkat edilmeli?
Bu proje 5 V ile çalıştığı için güvenlidir; yine de şu kurallara uyun:
- Devreyi yalnızca bilgisayarın USB çıkışından ya da USB powerbank'tan besleyin. 220V şebeke elektriğiyle hiçbir bağlantı yapmayın.
- Sıcak su gereken deneyleri bir yetişkinin gözetiminde yapın. Kaynar su kullanmayın; 50 °C civarında ılık su yeterlidir.
- Suya yalnızca sensörün su geçirmez metal ucunu sokun. Arduino, breadboard ve ekran sudan uzak dursun.
- Pil kullanırsanız kutuplarını ters bağlamayın, kısa devre etmeyin ve ısınan pili hemen çıkarın.
- Termometreniz tıbbi bir cihaz değildir; ateş ölçmek için kullanmayın.
Ödevinizi nasıl sunarsınız?
Ödevinizi, termometrenizle bir soğuma deneyi yapıp sıcaklık-zaman grafiği çizerek sunabilirsiniz. Böylece yalnızca bir cihaz değil, onunla yapılmış bir araştırma göstermiş olursunuz.
- Kalibrasyon: Buzlu suda okunan değeri ve yaptığınız düzeltmeyi yazın.
- Soğuma deneyi: 50 °C civarındaki suyu bir cam bardağa ve bir köpük bardağa koyun. 20 dakika boyunca her dakika sıcaklığı kaydedin.
- Karşılaştırma: Kendi termometrenizi bir mutfak termometresiyle aynı suda ölçün ve farkı yazın.
Örnek hipotez: "Köpük bardaktaki su, cam bardaktakinden daha yavaş soğur." Değerleri tabloya aktarıp iki çizgili bir grafik çizin. Su ile oda arasındaki fark büyükken soğumanın hızlı, fark azaldıkça yavaş olduğunu göreceksiniz; buna Newton'un soğuma yasası denir. Başka sensörlere sıcaklık ve nem sensörleri kategorisinden bakabilirsiniz.
Sık sorulan sorular
DS18B20 neden 4,7 kΩ direnç ister?
DS18B20 tek bir veri kablosuyla haberleşir ve bu hattı yalnızca sıfıra çekerek bilgi gönderir. 4,7 kΩ direnç, hat boştayken onu 5 V seviyesinde tutar. Direnç takılmazsa Arduino sensörü bulamaz ya da yanlış değer okur. Kısa kablolarda biraz farklı değerler de çalışabilir, ama 4,7 kΩ en yaygın kullanılan ve önerilen değerdir.
Ekranda −127 °C görünüyorsa ne yapmalıyım?
−127 °C, DallasTemperature kütüphanesinin sensörü bulamadığında verdiği hata değeridir. Önce sarı veri kablosunun D2 pinine takılı olduğunu ve 4,7 kΩ direncin veri ile 5V arasında durduğunu kontrol edin. Sonra kırmızı ve siyah kabloların yerini doğrulayın. Ekranda sürekli 85 °C görürseniz bu da sensörün açılış değeridir ve genellikle besleme sorununu gösterir.
LCD ekranda yazı görünmüyorsa ne yapmalıyım?
Ekran yanıyor ama yazı yoksa önce I2C modülünün arkasındaki kontrast ayar vidasını küçük bir tornavidayla yavaşça çevirin. Yine görünmüyorsa modülün adresi farklı olabilir; koddaki 0x27 yerine 0x3F deneyin. SDA'nın A4'e, SCL'nin A5'e bağlı olduğunu kontrol edin. "I2C scanner" adlı kısa bir örnek kodla modülün gerçek adresini Seri Monitör'de görebilirsiniz.
Termometre bilgisayar olmadan çalışır mı?
Evet, kod Arduino'ya bir kez yüklendikten sonra bilgisayar gerekmez. Kartı bir USB powerbank'a bağlayarak termometreyi taşınabilir yapabilirsiniz. Bu yöntem, pil kutusu ve regülatörle uğraşmaktan daha kolay ve güvenlidir. Yalnızca Seri Monitör'den veri kaydetmek istediğinizde bilgisayarın bağlı kalması gerekir. Bazı powerbank'ler çok düşük akımda kendini kapatır; böyle olursa başka bir model deneyin.
Bu termometreyle vücut sıcaklığı ölçülür mü?
Hayır, bu termometre tıbbi ölçüm için uygun değildir. DS18B20'nin doğruluğu ±0,5 °C'dir ve ateş ölçümünde bu fark önemlidir. Ayrıca sensörün vücutla teması ve bekleme süresi tıbbi termometrelerdeki gibi denetlenmez. Sağlıkla ilgili ölçümler için onaylı bir tıbbi termometre kullanın; projenizde su, hava ve toprak sıcaklığına odaklanın.
Özet
- Dijital termometre; sensör, mikrodenetleyici ve ekrandan oluşur.
- DS18B20, dijital çıkışı ve su geçirmez modeliyle öğrenci projeleri için en uygun sensördür.
- Sensörün veri kablosu D2'ye, 4,7 kΩ direnç veri ile 5V arasına, LCD'nin SDA ve SCL uçları A4 ve A5'e bağlanır.
- Buzlu su karışımı yaklaşık 0 °C'dir; okunan farkı koddaki düzeltme değerine yazın.
- Devreyi USB ile besleyin, sıcak suyla yetişkin gözetiminde çalışın.
- Ödev için soğuma deneyi yapıp sıcaklık-zaman grafiği çizin.
