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

Bu projede Sensirion Firması tarafından üretilen SHT11 benzeri bir sensor olan Çin Sensled firması tarafından FOST02A koduyla üretilen ve Asal Mühendislik tarafından RHTS02A koduyla satılan sensorle nem ve sıcaklık ölçer yaptık. SHT11'e oldukça benzemesine veri kitabında 12bit çözünürlükte Nem(RH) ile 14bit çözünürlükte Sıcaklık (T) ölçtüğü yazmasına rağmen, sensor sadece 8bit çözünürlükte RH ve 12bit çözünürlükte Sıcaklık ölçüyor. Sensorun veri kitabında yazdığı şekilde Status Register'in ilk bitini 1 ya da 0 yapmak sonucu değiştirmiyor. Ancak bu çözünürlük bizim için fazlasıyla yeterli ve sensor oldukça hassas, şiparişimiz firmadan sorunsuz ve iyi ambalajlı bir şekilde geldi. Yine aynı firmadan aldığımız basınç sensoru ile yapacağımız projemiz yakında bu sayfalarda yer alacak.

Bir başka elektronik malzeme satan İstanbul firması web sitesinde orijinal SHT11 satıyor ancak fiyatı RHTS02A'nın iki katı. Bu arada bu firma sattığı sensorle yapılmış devrenin programını paylaşmadığı için isimlerini burada verip reklâmlarını yapmaktan özellikle kaçındım, yazdıkları kodu paylaşmayan firmaları protesto ediyorum. SHT11 tabanlı tüm sensorlar ile kullanabileceğiniz kodu proje dosyasında bulabilir, dilediğiniz değişiklikleri yapabilirsiniz.

İnternette SHT11 tipi sensorlar ile ilgili pek çok kod buldum ancak bunların çoğu demode, yavaş, bozuk ya da eksikti, sensorla ilgili fonksiyonların %90'ını yeniden yazdım. Sensorun özelliklerini anlamak için ithalatçı firmanın sağladığı veri kitabı ile orijinal SHT11 sensorun veri kitabına birlikte bakın (Bu iki veri kitabını download kısmında bulabilirsiniz). 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 görebileceğiniz gibi sıcaklık ve bağıl nem hesaplanırken bir çok sabit kullanılarak yapılan bir kaç hesaplama var: Sensorun Çin versiyonunun veri kitabında bu konu biraz karışmış, o yüzden siz humid.c dosyasında tanımlanan sabitleri kullanın. Buradaki c1 sabiti veri kitaplarında -4 idi; ancak başka bir nem ölçerle yaptığım karşılaştırmaya istinaden bu sabiti -24 olarak belirledim (offset değerini 20 birim azalttım), bu şekilde nem ölçümleri daha gerçekçi oldu.

Sensorun orijinal veri kitabında çiğ noktasının nasıl hesaplanacağına dair hesaplamalar var, bunları kullanıp ç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 yazdım (myprintf). Belli bir projenin sadece bir kaç yerinde böyle maliyetli 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.

Projemizde sensorun Data bacağı işlemcinin PC4 bacağına; Clock ise PC5 bacağınabağlanmıştır. Eğer sensoru 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ı