Akvaryumdaki suyun sıcaklığını veya dışarıdaki hava durumunu ölçmek istiyorsanız DHT11 yetersiz kalır. Bize su geçirmeyen, kablosu metrelerce uzasa bile hata yapmayan bir "Tank" lazım. İşte karşınızda DS18B20.
1. Tek Hat (OneWire) Mucizesi
Bu sensörün en büyük özelliği, her birinin fabrikasyon olarak kendine ait benzersiz bir 64-bit Kimlik Numarasına (Adres) sahip olmasıdır.
Bu ne demek? Arduino'nun tek bir dijital pinine, paralel olarak 10 tane DS18B20 bağlayabilirsiniz. Arduino hepsine ismiyle (adresiyle) hitap eder: "Hey 28FF4A... sen sıcaklığı söyle!"
2. Direnç Unutulursa Çalışmaz!
DS18B20 kullanırken en sık yapılan hata Pull-Up Direncini unutmaktır. Veri hattı (Sarı kablo) ile 5V (Kırmızı kablo) arasına 4.7kΩ direnç takmalısınız.
Su Geçirmez Model (Kablolu)
- 🔴 Kırmızı: 5V
- ⚫ Siyah: GND
- 🟡 Sarı (veya Beyaz): Sinyal (Pin 2)
PCB Modül (Kartlı)
Eğer sensör bir PCB üzerine lehimlenmişse (KY-001 gibi), üzerinde minik bir direnç (genelde R1 yazar) zaten vardır. Ekstra direnç takmanıza gerek yoktur. Direkt bağlayın.
3. Yazılım (Kütüphane Şart!)
🛠️ Gerekli Kütüphaneler
Arduino IDE'de şu iki kütüphaneyi kurmalısınız:
OneWire(İletişim protokolü için)DallasTemperature(Sensörü anlamak için)
DS18B20_Basic.ino
C++
#include <OneWire.h> #include <DallasTemperature.h> // Sensörün bağlı olduğu pin #define ONE_WIRE_BUS 2 // OneWire hattını kur OneWire oneWire(ONE_WIRE_BUS); // Sensör kütüphanesini başlat DallasTemperature sensors(&oneWire); void setup() { Serial.begin(9600); Serial.println("DS18B20 Testi Basliyor..."); sensors.begin(); } void loop() { // Hattaki tüm sensörlere "Ölçüm Yap!" emri ver sensors.requestTemperatures(); // 0. İndeksteki (İlk sensör) sıcaklığı al float sicaklik = sensors.getTempCByIndex(0); Serial.print("Sicaklik: "); Serial.print(sicaklik); Serial.println(" °C"); delay(1000); }
4. -127 Derece Hatası Nedir?
Bu hata kodu "Sensörü Bulamıyorum" demektir.
1. 4.7kΩ Direnci taktınız mı? (Sinyal ile 5V arasına).
2. Kablolar doğru mu? (Su geçirmez modellerde renkler bazen farklı olabilir, kontrol edin).
1. 4.7kΩ Direnci taktınız mı? (Sinyal ile 5V arasına).
2. Kablolar doğru mu? (Su geçirmez modellerde renkler bazen farklı olabilir, kontrol edin).
85°C, sensörün "Reset" değeridir. Eğer sürekli 85 okuyorsanız, sensör ölçüm yapmaya fırsat bulamadan veriyi okuyorsunuz demektir.
requestTemperatures() komutunu kullandığınızdan emin olun veya bağlantıda temassızlık arayın.