SHT 11 (Nem ve Sıcaklık Ölçer)

Bu projede Sensirion Firması tarafından üretilen SHT11 sensörle nem ve sıcaklık ölçer yaptık. SHT11 12bit çözünürlükte Nem(RH) ile 14bit çözünürlükte Sıcaklık (T) ölçebilen, ayrıca kalibrasyon gerektirmeyen başarılı bir sensördür. Güç tüketimi çok düşük olduğundan pilli projeler için uygundur. Sensör iki kablo (data, clock) ilemciye bağlanmakta olup, basit bir protokole sahiptir. Projede sensör mikrokontrolöre Resim 2'deki gibi bağlanmıştır.


Sensör SMD kılıfta satıldığından (Resim 1) lehimlemesi oldukça zordur. Exp Kits web sitesinde özel PCB'si ile birlikte satılmaktadır. Elinde sensör bulunanlar sadece PCB de satın alabilirler.

İnternette SHT11 tipi sensorlar ile ilgili pek çok kod buldum ancak bunların çoğu demode, yavaş, bozuk ya da eksikti, sensörle ilgili fonksiyonların %90'ını yeniden yazdım.

Sensorun Status Register'ın ikinci bitini 1 yaptığınızda sensorun içindeki ısıtıcı devreye giriyor: Bu ısıtıcıyı açıp kapayarak sensorun düzgün çalışıp çalışmadığını test edebilirsiniz. Bir başka kullanımı ise sera gibi açık alanlarda sensorun çiğ tutması halinde bu dahili ısıtıcıyı kısa bir süre çalıştırarak sensoru kurutabilirsiniz.

Sensorun veri kitabında çiğ noktasının nasıl hesaplanacağına dair hesaplamalar bulunmaktadır, bunları kullanarak çiğ noktasını hesaplayıp ekranda gösterebilirsiniz. Son olarak, printf fonksiyonu program hafızasını bolca kullandığından, nem ve sıcaklık değerlerini ##.# formatında ekrana yazan basit bir fonksiyon yazarak kodu azaltabilirsiniz. Belirli bir projenin sadece bir kaç yerinde böyle hafıza canavarı hazır fonksiyonlar kullanmak yerine kendi basit fonksiyonlarınızı yazarak pratik çözümler bulmanız programcılık tekniği açısından önemlidir.

Projede sensörün Data bacağı işlemcinin PC4 bacağına; Clock ise PC5 bacağına bağlanmıştır. Eğer sensörü başka bir porta bağlamak isterseniz, humid.h başlık dosyasındaki ilgili alanda değişiklik yapmanız yeterli olacaktır. Örneğin sensoru PortB'nin 0 ve 1 nolu bacaklarına bağlayacaksanız (0 Data; 1 Clock diyelim) humid.h dosyasında şu değişiklikleri yapmanız yeterli olacaktır:

//port,pin degisiklikler burada yapilir
#define SENSOR_DDR DDRB
#define SENSOR_PORT PORTB
#define SENSOR_PIN PINB
#define DATA_PIN 0
#define SCK_PIN 1

Proje Dosyaları

Proje Dosyaları