You are on page 1of 8

ISPARTA UYGULAMALI BİLİMLER ÜNİVERSİTESİ

ROBOTİK DERSİ LABORATUVAR UYGULAMASI


UYGULAMA 5 RASPBERY Pİ İLE SICAKLIK ÖLÇÜMÜ

1.AMAÇ
DS18B20 Sıcaklık Sensörü kullanılarak anlık olarak sıcaklık verisinin elde edilmesi.
2.GİRİŞ
DS18B20 Dijital Sıcaklık Sensörü 12 bitlik hassas bir ölçüm aralığında 1-tel olarak
kullanılabilen bir sıcaklık sensörüdür. DS18B20 sensörleri tek tel destekleyen
mikroişlemcilerle iletişim kurabilme özelliğine sahiptir. Bir pinde birden fazla sensör aynı
anda kullanılabilir. Her sensörün kendine özgü 64 bitlik bir seri numarası vardır. Bu sebeple
tüm sensörler birbirinden ayırt edilebilir. Enerji girişi olarak 3.3V ya da 5V tercih edilebilir.
DS18B20 Sıcaklık Sensörü - Genel Özellikler

 Hassas bir ölçüm aralığında 1-tel sıcaklık sensörü


 1-tel protokolü kullanır
 Dahili dijital analog çevirici
 Çok sayıda sensör tek hatta bağlanabilir
DS18B20 Dijital Sıcaklık Sensörü - Teknik Özellikler

 Sıcaklık Menzili: -55°C - 125°C


 Çözünürlük: Seçilebilir 9-12 bit
 Donanımsal eşsiz 64-bit ID
 -10°C - 85°C arasında ±0.5°C doğruluk
 750ms altında sorgu süresi
 3V – 5V besleme/veri voltaj

3.UYGULAMANIN YAPILIŞI
Kullanılacak Malzemeler

 Bread Board
 DS18B20 Sıcaklık Sensörü
 Raspberry Pi
 Jumper kablo(d-e, e-e)
 Direnç (4.7 Kohm)
Yukarıdaki devre bağlantılarını gerçekleştirdikten sonra aşağıdaki kodlar ile 1-Wire
haberleşme protokolünü açıyoruz. ( Raspberry Pi Cihazına HDMI kablo ile bağlanmanız
önerilir )
>> sudo nano /boot/config.txt # Config dosyasına erişim sağladık
>>dtoverlay=w1-gpio # alt satıra bu kodu ekliyoruz ve kaydediyoruz. Böylece 1-Wire
açıldı.
Kodlar
import os
import glob
import time

os.system('modprobe w1-gpio') # “system” Python içinden sistem komutlarını veya başka


# programları çalıştırabilmemizi sağlar

os.system('modprobe w1-therm')

base_dir = '/sys/bus/w1/devices/' # Kütüphane içerisindeki dosyaya bu komut ile


erişiyoruz
device_folder = glob.glob(base_dir + '28*')[0] # base_dir içindeki 28 ile biten tüm
dosyaları al

device_file = device_folder + '/w1_slave' # dosya isimlerinin sonun w1_slave ekle


def read_temp_raw():
f = open(device_file, 'r') # az önce değişiklik yapılan dosyaları okuma modunda
lines = f.readlines() # satır satır okuma yap
f.close() # doyaları kapat
return lines

def read_temp():
lines = read_temp_raw() # yukarıdaki fonksiyondan gelen satırları
lines değişkenine ekle
while lines[0].strip()[-3:] != 'YES': # wire kütüphanesinin protokollerinin açık
olup olmadığını kontrol eder (veri varmı
yokmu)
time.sleep(0.2) # yoksa tekrar okuma yapar
lines = read_temp_raw()
equals_pos = lines[1].find('t=') # lines değişkenindeki verilerin ikinci
indisi t= ise bir değişkene topla (64 bitlik
veri)
if equals_pos != -1: # equal_pos değişeni boş değilse
temp_string = lines[1][equals_pos+2:] # lines satırdındaki 2. İndis dizisinin +2 den
sonrası (
temp_c = float(temp_string) / 1000.0 # Formül
temp_f = temp_c * 9.0 / 5.0 + 32.0
return temp_c, temp_f

while True: # değerleri yaz


print(read_temp())
time.sleep(1)

Yukarıdaki kodları yazdıktan sonra “temp” adıyla kaydediyoruz. Ve console üzerinden kodu
çalıştırıyoruz.
Dosya içerikleri. Dosyalara doğrudan erişmeye çalışmamanız önerilir.
Şekil-13 Devre kurulumu

You might also like