İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Bu, DS18B20 1 kablolu sıcaklık sensörlerinizin bireysel seri numaralarını nasıl alacağınıza ilişkin hızlı bir kılavuzdur.
Bu, birden fazla sensör gerektiren projeler için kullanışlıdır.
İhtiyacın olan şeyler:
- Arduino 5v (UNO, Mega, Pro Mini vb) - Arduino UNO R3 - AliExpress
- Sıcaklık Sensörü DS18B20 - AliExpress
- 4.7k - 1/4w Direnç THT - AliExpress
- Breadboard - AliExpress - eBay
- Jumper Telleri - Erkekten erkeğe - AliExpress - eBay
- Arduino IDE'nin kurulu olduğu bir bilgisayar
Adım 1: Gerekli Kütüphaneyi Arduino IDE'ye Ekleyin
- Arduino IDE'yi açın (1.8.1 kullanıyorum)
- "Çizim" -> "Kitaplığı Dahil Et" -> "Kütüphaneleri Yönet…" seçeneğini tıklayın.
- Arama çubuğunu seçin ve "dallas" yazın
- "DallasSıcaklık" ı tıklayın ve "Yükle" yi tıklayın
Alternatif olarak Kütüphaneyi buradan indirebilirsiniz:
Bu Kitaplık OnWire Kitaplığını içerir.
Adım 2: DS18B20'yi Kablolayın
Bir breadboard kullanarak +5V, GND ve Digital Pin 2'yi (Pin 2 örnek çizimde zaten ayarlanmıştır) Arduino'dan Male to Male breadboard jumper'larını kullanarak bağlayın.
DS18B20'yi devre tahtasındaki 3x terminal şeritlerine paralel olarak bağlayın.
- Pin 1 (GND) -> GND (Toprak 0V)
- Pin 2 (DATA) -> Dijital Pin 2
- Pin 3 (Vdd) -> +5V
Normal Güç Modu için +5V'den 4.7K'lık bir Direnci breadboard üzerindeki Dijital Pin 2 kablosuna bağlayın.
Aşağıdaki bağlantı, DS18B20 1 kablolu sıcaklık sensörü için harika bir kaynaktır.
www.tweaking4all.com/hardware/arduino/ardu…
Adım 3: Örnek Çizimi "Tek" yükleyin
Kabloyu bağladıktan sonra Dallas Sıcaklığını yüklemeye hazırsınız "Tek" SketchOpen Arduino IDE (1.8.1 kullanıyorum) "Dosya" -> "Örnekler" -> "Dallas Sıcaklığı" -> "Tek" ekledim gecikmede(5000); bana seri numarasını kopyalamam için zaman vermek için 103. satırda Uygun pano formunu seçin "Araçlar" -> "Pano" Uygun bağlantı noktanızı seçin "Araçlar" -> "Bağlantı Noktası" Şimdi Çizimi "Yükle" "Çizim" -> "Yükle" "Araçlar" -> "Seri Monitör"e tıklayın, baud hızlarının benimkiyle eşleştiğinden emin olun 9600 Eğer çizim yapmadıysanız Anakartınızı, Bağlantı Noktanızı, USB sürücülerinizi vb. kontrol edin.
4. Adım: Seri Numarasını Kopyalayın
"Seri Monitör"den 4. satırın "Aygıt 0 Adresi: xxxxxxxxxxxxxxxx" olduğunu göreceksiniz.
Bu, DS18B20'nin Seri Numarasıdır
"0000000000000000" ise, DS18B20'nizi okurken bir sorun var demektir.
Farenizle vurgulayın ve klavyenizde CTRL+C tuşlarına basın ve ardından Not Defteri'ne geçin
Diğer projelerim için kodum bu sayıların bir dizisini kullanıyor. HEX dizesini aşağıdaki biçimde yeniden biçimlendirdim.
DeviceAddress tempSensorSerial[9]= {
{0x28, 0xFF, 0x07, 0xA6, 0x70, 0x17, 0x04, 0xB5}, {0x28, 0xFF, 0xB2, 0xA6, 0x70, 0x17, 0x04, 0x28}, {0x28, 0xFF, 0x42, 0x98, 0x70, 0x17,, 0xD3}, {0x28, 0xFF, 0x86, 0xA8, 0x70, 0x17, 0x04, 0xA6}, {0x28, 0xFF, 0x2B, 0x65, 0x71, 0x17, 0x04, 0x76}, {0x28, 0xFF, 0x66, 0x62,, 0x17, 0x04, 0xF5}, {0x28, 0xFF, 0xD9, 0x9B, 0x70, 0x17, 0x04, 0x9C}, {0x28, 0xFF, 0x98, 0x6A, 0x71, 0x17, 0x04, 0xED99}, {0x28, 0xFF,, 0x42, 0x71, 0x17, 0x04, 0x4C} };
Adım 5: Tamamlandı
Artık kodunuzdaki her bir DS18B20 1 kablolu sıcaklık sensörünü tanımlayabilir ve aşağıdaki gibi bir işlev kullanabilirsiniz:
float getTemperature(byte j){
sensor.requestTemperaturesByAddress(tempSensorSerial[j]);
float tempC = sensor.getTempC(tempSensorSerial[j]);
dönüş sıcaklığıC;
}