23 Ekim 2026 Cuma

ADXL335 İvmeölçer(Accelerometer) Sensörü

İvmeölçer Nedir?

İvmeölçer, bir nesnenin ivmesini, yani birim zamanda hız değişimini ölçen bir sensördür. Başka bir deyişle, bir cismin ne kadar hızlandığını ya da yavaşladığını ölçer. Genellikle m/s² ya da g (yerçekimi ivmesi) cinsinden sonuç verir. İvmeölçerler sadece doğrusal hareketleri değil, aynı zamanda eğilme, sarsıntı ve titreşim gibi çeşitli hareketleri de tespit edebilir. İvmeölçer yerçekimi ivmesini (g = 9.81 m/s2) kullanarak cihazın yere göre hangi açıda durduğunu (eğimini) belirler. Bu özellikleri sayesinde;

  • Akıllı telefonunuzu çevirdiğinizde ekranın dönmesini,

  • Arabanızdaki hava yastığının çarpışma anında açılmasını,

  • Drone’un havadaki dengesini korumasını,

  • Spor saatinizin adımlarınızı saymasını,

  • Robotunuzun eğimi algılamasını,

  • Görüntü sabitlenmesini,

sağlayan temel bileşenlerden biridir. 


İvmeölçer Nasıl Çalışır?

İvmeölçerlerin nasıl çalıştığını anlamak için, yer çekimsiz ortamda bulunan küçük, şeffaf bir küp hayal edin. Küpün merkezinde duran bir top olsun. Ortam yer çekimsiz olduğu için top, merkezde hareketsizce yüzer. Top, ön, arka, sol, sağ, üst ve alt olmak üzere her bir iç taraftan duvarlara eşit mesafededir. Küp hareket etmediğinde, top mükemmel bir şekilde merkezde kalır. Bu durumda ivmeölçer üç eksende de (X, Y ve Z) 0 kuvvet algılar.




Ancak küp herhangi bir yönde hareket etmeye veya ivmelenmeye başlar başlamaz, top atalet(nesnelerin hareket değişikliklerine direnme eğilimi) nedeniyle biraz geride kalır. Top hareketin tersi yönündeki duvara kuvvet uygular. 




İvmeölçerler genellikle bu kuvvetin şiddetini g-kuvveti cinsinden ifade eder; örneğin 1g, 2g veya 3g gibi. Öyleyse önce, "1g"nin tam olarak ne anlama geldiğinden bahsedelim.


G Kuvveti Nedir?

"1g" dediğimizde, Dünya yüzeyindeki yerçekimi ivmesini kastediyoruz. 1g dünyada yaklaşık 9,8m/s² iken, Ayda 1/6’sı, Marsta 1/3’üdür. Telefonunuz masanın üzerinde hareketsiz dururken bile, yerçekimi nedeniyle doğrudan aşağı doğru 1g'lik bir kuvvet uygular. İvmeölçerlerin yerçekimi ivmesi ile gerçek hareketten kaynaklanan ivmeyi ayırt etmediğini, sadece tüm yönlerdeki toplam ivmeyi algıladığını bilmek önemlidir. Çünkü ivme statik ve dinamik ivme olmak üzere ikiye ayrılır. Dinamik İvme; Nesne hızlandığında veya yavaşladığında oluşan hız değişimiyken, Statik İvme: Nesne dururken bile ona etki eden yerçekimi ivmesidir (g). İvmeölçer ise toplam ivmeyi algılar.


Örneğimize dönecek olursak, küpü yer çekimi olan dünyaya yerleştirdiğimizde ne olacağını görelim: Küpü bir masanın üzerine koyarsak, yerçekimi topu aşağı doğru çeker. Hareket yoktur. Ancak yerçekimi kuvveti etkisiyle top Z eksenine -1g kuvvet uygular. X ve Y eksenlerinde ise kuvvet 0g okur. Çünkü bu yönlere herhangi bir kuvvet uygulanmaz.




Küpü 90⁰ sağa yatırdığımızda ise top bu sefer X eksenine 1g kuvvet uygular. Y ve Z eksenlerine uygulanan kuvvet 0g olur.




Küpü yine sağa 45⁰ yatırdığımızda ise top X ve Z eksenlerine kuvvet uygular. Bu sefer uygulanan kuvvetler X ve Z eksenleri arasında bölünür. X ve Z eksenlerine uygulanan kuvvet 1g’nin cos(45) ve sin(45) ile çarpımıyla 0.71g gibi bir değer bulunur. 




Bu küp ve top modeli, gerçek ivmeölçerlerin tam olarak nasıl yapıldığını göstermese de, ivmeölçerlerin kuvvetleri neden g cinsinden ölçtüğünü, hareketsiz dururken neden Z yönünde 1g okuduğunu ve cihaz farklı açılarda tutulduğunda hangi değerleri görebileceğimizi anlamamıza yardımcı olur. İvmeölçerler farklı çalışma prensiplerine ve kullanım alanlarına göre çeşitli tiplere ayrılır. En yaygın türler şunlardır:

1. Piezoelektrik İvmeölçerler

2. Piezo-resistif İvmeölçerler

3. Kapasitif İvmeölçerler

4. MEMS (Micro-Electro-Mechanical Systems) İvmeölçerler


ADXL335 ivmeölçer MEMS (Micro-Electro-Mechanical Systems) İvmeölçeri olduğu için bu konuyu inceleyeceğiz.

MEMS (Micro-Electro-Mechanical Systems) İvmeölçerler

MEMS ivmeölçer, doğrusal ivmeyi ölçmek için tasarlanmış bir mikro elektromekanik sensördür. İçyapısında küçük bir test kütlesi hareket ederken, kapasitanstaki değişiklikleri izleyerek hareketi algılar. Hem statik kuvvetleri(yerçekimi gibi) hem de dinamik kuvvetleri (titreşim, şok veya hareket gibi) yakalayabilir. Geleneksel mekanik veya piezoelektrik tiplere kıyasla, MEMS tabanlı ivmeölçerler daha küçük, daha hafif ve enerji açısından daha verimlidir. MEMS ivmeölçerler, ataletsel navigasyon sistemlerinde (INS) , uçuş kontrol cihazlarında, robotik platformlarda ve savunma sınıfı silah sistemlerinde kullanılır.


MEMS İvmeölçerlerin Yapısı ve Çalışması

MEMS (Mikro-Elektro-Mekanik Sistem) ivmeölçer, özünde doğrudan silikon levha üzerine inşa edilmiş mikroskobik bir mekanik sistemdir. Mekanik ve elektrikli bileşenlerden oluşan sadece birkaç mikron büyüklüğündeki yapılardır. Merkezinde, genellikle "test kütlesi ya da kanıt kütlesi" olarak adlandırılan küçük bir kütle bulunur. Bu kütle, esnek kirişler veya yaylar vasıtasıyla sabit plakalar arasında asılı durur. Hem test kütlesi hem de sabit plakalar, bir kondansatörün parçaları olarak birlikte çalışacak şekilde tasarlanmıştır.





İvmeölçer belirli bir yönde hareket ettiğinde veya ivmeye maruz kaldığında, atalet nedeniyle test kütlesi/kanıt kütlesi yerinde kalmaya çalışırken, cihazın geri kalanı onun etrafında hareket eder. Bu hareket, test kütlesi ile sabit plakalar arasındaki mesafeyi değiştirir. Kapasitans doğrudan plakalar arasındaki mesafeye bağlı olduğundan, diferansiyel kondansatörün kapasitans değeri de buna göre değişir. Çip üzerindeki devre, kapasitanstaki bu değişikliği algılar ve elektriksel bir sinyale dönüştürür. Ardından devre, bu değişikliğe dayanarak tam olarak ne kadar ivme oluştuğunu hesaplar. 

Tek bir diferansiyel kondansatörün, hareketi tespit etmesi zor olduğundan birden fazla sabit plaka kullanılarak, test kütlesi ile sabit plakalar arasındaki diferansiyel kondansatör sayısı artırılmıştır. Bu durum sistemin daha doğru olmasını sağlar ve değişikliklere karşı daha duyarlıdır. 




Şu ana kadar anlattığımız MEMS ivmeölçer konfigürasyonu sadece tek yöndeki(X ekseni boyunca) hareketi algılar. Birden fazla yöndeki-eksendeki hareketleri algılamak için bu konfigürasyonun birbirlerine 90⁰’lik açılarla yerleştirilmesi gerekir. Böylece ivmeölçerimiz X, Y, Z eksenlerindeki hareketleri algılayabilir. Zaten MEMS ivmeölçerlerin tasarımı da bu şekildedir. 





ADXL335 MEMS İvmeölçer Yapısı ve Çalışması


Bu modül, üzerinde Analog Devices tarafından üretilen küçük, düşük güç tüketimli ve düşük gürültülü 3 eksenli MEMS ivmeölçer olan ADXL335 çipinin yer aldığı bir modüldür. ADXL335 ivmeölçer, hem statik ivmeyi (sensör hareketsizken yerçekiminden kaynaklanan) hem de dinamik ivmeyi (hareket, sarsıntı veya ani darbelerden kaynaklanan) algılayabilir. Modül, X, Y ve Z eksenlerinde +3g ile -3g aralığındaki ivmeyi ölçebilir. Çıkış sinyalleri ivmeyle orantılı analog voltajlardır.

İvmeölçerin üzerinde 6 adet pin bulunur. Bu pinler arasında X, Y ve Z eksenleri boyunca ivmeyi ölçmek için 3 analog çıkış pini, 2 güç kaynağı pini ve 1 tane de kendi kendini test pini(Self Test Pin) bulunur.

ADXL335, 1,8V ile 3,6V DC arasındaki voltajlarla çalışır ve tipik çalışma voltajı 3,3V'tur. Modül üzerinde dâhili bir 3,3V voltaj regülatörü vardır. Bu da Arduino gibi 5V mikrodenetleyicilerle kullanımını kolaylaştırır. Sensörün enerji tasarrufu yüksek olup normal çalışma sırasında yaklaşık 350 μA akım tüketir. Bu, küçük bir LED'den çok daha az güç demektir. 

ADXL335, ±3g aralığında ivme ölçümü yapabilir. Bu, herhangi bir yönde yerçekimi kuvvetinin 3 katına kadar olan ivmeyi algılayabileceği anlamına gelir. Sensör 3g'den fazla bir ivmeye maruz kalırsa bozulmaz, ancak okuma maksimum 3g'de kalır. Sensör şaşırtıcı derecede dayanıklıdır ve 10.000 g'ye kadar aşırı ivmelenmeye dayanabilir. Ancak, bundan daha yüksek bir ivmelenmeye maruz kalması sensöre kalıcı hasar verebilir.

ADXL335'in çıkışı "oransal"dır. Yani ürettiği voltaj, algıladığı ivmeyle doğru orantılı olarak değişir:

  • İvme olmadığında (0g), çıkış voltajı tipik olarak 3,3V besleme voltajının yaklaşık yarısı (~1,65V) civarındadır.

  • -3g algılarsa, voltaj 0V'a düşer.

  • +3g algılarsa, voltaj 3,3V'a yükselir.





Gerilim, ivme miktarına bağlı olarak bu değerler arasında kademeli olarak değişir. X_OUT, Y_OUT ve Z_OUT, 0V - 3.3V arasında analog olarak değiştiği için, mikrodenetleyicideki referans voltajı da 3.3V olarak seçilmelidir. ADXL335 Arduino ile kullanılacaksa Arduino'nun AREF pinine 3.3V bağlanarak kullanılır.

Kullanıcı, ivmeölçerin bant genişliğini X_OUT, Y_OUT ve Z_OUT pinlerine CX, CY ve CZ kapasitörleri ekleyerek sınırlayabilir. Bant genişlikleri, uygulamaya uygun olarak seçilebilir; X ve Y eksenleri için 0,5 Hz ile 1600 Hz arasında ve Z ekseni için 0,5 Hz ile 550 Hz arasında bir aralık mevcuttur. Her durum için CX, CY ve CZ için minimum 0,0047 μF kapasitans önerilir.



ADXL335 İvmeölçerin Teknik Özellikleri


Çalışma Gerilimi: 1,8V – 3,6V

Çalışma Akımı : 350 μA (tipik)

Algılama Aralığı : ±3g (Tam Ölçek)

Sıcaklık Aralığı : -40 ila +85°C

Algılama ekseni : 3 eksen

Hassasiyet : 270 ila 330 mV/g (Oransal)

Şok Direnci : 10.000g’ye kadar

Boyut : 4 mm x 4 mm x 1,45 mm







Ölçekleme İle İlgili Anlaşılamayan Durum

0g = 1,65V ve 3g = 3,3V olduğuna göre 1g = 2,2V ve 2g = 2,75V oluyor. Yani g başına artış 0,55V oluyor. Fakat sensörün hassasiyet değeri 330 mV/g yani 0,330V/g. Yani g başına artış 0,33V olması gerekiyor. Bu farklılığın sebebi net olarak anlaşılamamıştır. Uygulamada ise bu durum map komutu kullanılarak map(x_deger, 0, 1023, -3000, 3000); olarak yapılmış g değeri miliG bulunup sonra g değerine çevrilmiş. Sensörün bilgilerinde de 0V’un -3g’ye ve 3,3V’un +3g’ye denk geldiği belirtilmiş. Bu durumda map komutu ile yapılan uygulama doğru gözüküyor ama bu sefer de hassasiyet değeri olan 330 mV/g’nin hesaplamada nasıl kullanılacağı muallakta kalıyor.



ADXL335 İvmeölçerin Pin Çıkışları


VCC: Modülün besleme pinidir. Bunu Arduino kartınızdaki 5V çıkış pinine bağlamanız gerekir.

X-Out: X ekseni boyunca ivmeye orantılı bir analog voltaj üretir.

Y-Out: Y ekseni boyunca ivmeye orantılı bir analog voltaj üretir.

Z-Out: Z ekseni boyunca ivmeye orantılı analog voltaj üretir.

GND: Topraklama pinidir.

ST (Kendi Kendini Test Etme): Bu pin, sensörün projenizde düzgün çalışıp çalışmadığını kontrol etmek için kullanılır. Test sırasında bu pin 3.3V’a bağlanır. Bu pine kesinlikle 3.6V gerilim uygulanmamalıdır. Bu özelliği nasıl kullanacağımız hakkında daha fazla bilgiyi eğitimin sonunda ele alacağız. 



ADXL335 İvmeölçerin Arduino İle Kullanımı





X_OUT, Y_OUT ve Z_OUT, 0V - 3.3V arasında analog olarak değiştiği için Arduino referans voltajını 3.3V belirlememiz gerekir. Bunun için Arduino’ya harici referans voltajı vermemizi sağlayan AREF pinine, yine Arduino 3.3V çıkışından referans voltajını verdik. 3.3V ile AREF pinini kısa devre yaptığımız için analogReference(EXTERNAL); komutunu mutlaka kullanmalıyız. Aksi takdirde dâhili olarak üretilen aktif referans voltajı ile AREF pinini kısa devre yaparak Arduino'nuza hasar verebilirsiniz.



ADXL335 İvmeölçerin Kendi Kendini Test Etme Özelliği


ADXL335 ivmeölçer, sensörün düzgün çalışıp çalışmadığını kontrol etmenizi sağlayan kendi kendine test özelliğine sahiptir. Bu Özellik, modül üzerinde bulunan ST (kendi kendine test) pini adı verilen özel bir pin aracılığıyla çalışır. İvmeölçeri test etmek istediğinizde, ST pinini 3.3V'a bağlamanız yeterlidir. Bu bağlantı, çip içinde küçük bir elektrostatik kuvvet oluşturur ve bu kuvvet, ivmeölçerin içindeki küçük mekanik kirişi hareket ettirir. Bu hareket, sensörün gerçek ivmelenme yaşadığında olanları simüle ederek, sensörün doğru çalışıp çalışmadığını doğrulamanıza olanak tanır. Başarılı bir kendi kendine test sırasında, sensörün çıkış değerlerinde aşağıdaki değişikliklerin olması gerekmektedir:

  • X ekseninde −1,08 g (−325 mV)

  • Y ekseninde +1,08 g (+325 mV)

  • Z ekseninde +1,83 g (+550 mV)

Test işlemlerini tamamladıktan sonra, projenizin normal çalışması sırasında ST pininin ya boşta bırakılması ya da toprak (GND) pinine bağlanması gerektiğini unutmayın. 

NOT: ST pinini asla 3,6V'tan daha yüksek bir voltaja bağlamamaya dikkat edin. Bunu yapmak ivmeölçerinizde kalıcı hasara neden olabilir.



Uygulamalarla İlgili Notlar

Uygulamada kullandığımız ADXL335 ivmeölçerde Z ekseni, yukarıdaki konu anlatımında kullandığımız resimlerdeki ivmeölçere göre ters konumdadır. Bu yüzden okunan değerlerin buna göre yorumlanması gerekmektedir.







22 Ekim 2026 Perşembe


Programlama Kodları

#include <dht.h>
#define dataPin 8
dht DHT;

void setup() 
{
  Serial.begin(9600);
}
void loop() 
{
  int readData = DHT.read22(dataPin);
  float sicaklik = DHT.temperature;
  float nem = DHT.humidity;

  Serial.print("Sıcaklık = ");
  Serial.print(sicaklik);
  Serial.println(" °C");
  Serial.print("Nem = ");
  Serial.print(nem);
  Serial.println(" % ");

  Serial.println(" ");

  delay(2000);
}



Devre Şeması




DHT11/DHT22 Sıcaklık ve Nem Sensörü


DHT11 ve DHT22, DHTxx ailesinin en popüler iki sensörüdür. Ortam sıcaklığını ve nemini ölçmek için yaygın olarak kullanılan bu sensörler, hobilerden profesyonel uygulamalara kadar geniş bir yelpazede kullanılmaktadır. DHT11 ve DHT22 sıcaklık ve nem sensörleri, dijital çıkışlı ve kalibrasyonludur. Tek bir pakette bir nem sensörü ve bir NTC sıcaklık sensörünü bir araya getirirler ve Arduino ile kullanımı kolay bir dijital ara yüz sunarlar. DHT22’nin kablolu olan versiyonu AM2302 olarak isimlendirilir.

Bu 2 sensör birbirlerine çok benzeseler ve aynı pin dizilimini paylaşsalar da teknik özellikler açısından bazı önemli farklılıklar vardır: 

Sıcaklık ölçümünde; DHT22, -40°C ile +125°C arasındaki sıcaklıkları ölçebilir ve yarım derece (±0,5°C) hassasiyetle ölçüm yapar. DHT11 ise, yalnızca 0°C ile 50°C arasındaki sıcaklıkları ölçebilir ve 2 derece (±2°C) hassasiyetle ölçüm yapar. 

Nem ölçümünde ise; DHT22 %0 ile %100 arasındaki nemi %2-5 doğrulukla tespit edebilirken, DHT11 yalnızca %20 ile %80 arasındaki nemi ölçer ve %5 doğrulukla tespit edebilir.

DHT22 daha doğru ve daha zorlu koşullarda çalışsa da daha pahalıdır. DHT11 ise daha ucuz, daha küçük boyutlu ve daha sık ölçüm yapabilir. DHT11 her 1 saniyede bir örnekleme yaparak ölçüm sonucu verirken, DHT22 her 2 saniyede bir örnekleme yapar. Bu farklılıklara rağmen, her iki sensör de aynı voltajla (3 ila 5 volt) çalışır ve ölçüm yaparken en fazla 2,5 mA elektrik tüketir. 



DHT11 ve DHT22 Teknik Özellikleri








DHT11

DHT22

Çalışma Voltajı

3,3 – 5,5V

3,3v – 5V

Maksimum Akım Tüketimi

2,5mA

2,5mA

Sıcaklık Aralığı

0 – 50°C

-40 ila 80°C

Sıcaklık Doğruluğu

± 2°C

± 0,5°C

Nem Aralığı

%20 – %80

%0 – 100%

Nem Doğruluğu

± %5

± %2-5

Örnekleme Süresi

1Hz (her 1 saniyede bir okuma)

0,5 Hz (her 2 saniyede bir okuma)

Çözünürlük

8 bit

16 bit

Boyutu

15,5 mm x 12 mm x 5,5 mm

15,1 mm x 25 mm x 7,7 mm

Fiyat

Çok Düşük

Daha pahalı

Avantajları

Düşük maliyet yüksek örnekleme

İyi ölçüm aralıkları yüksek doğruluk



DHT11 ve DHT22‘in Yapısı ve Çalışma Prensibi

DHT11 veya DHT22 sensörünün içini açtığınızda, kartın ön tarafında NTC termistörü ve kapasitif nem algılama bileşeni bulunur. Kartın arka tarafında ise; verileri toplayan, işleyen ve dijital olarak iletimini gerçekleştiren küçük bir entegre bulunur. 





Nem Ölçümü

Nem ölçümü için, iki elektrot arasında, genellikle polimer veya seramikten oluşan özel bir nem emici malzeme(Moisture Holding Substrage) bulunur. Hava nemlendikçe, bu nem emici malzeme havadan su buharı emer. Suyu emerken, iyon adı verilen küçük yüklü parçacıklar salar. Bu iyonlar, malzemenin dielektrik sabitini değiştirir ve bu da elektrotlar arasındaki kapasitansı değiştirir. Ortam ne kadar nemliyse, kapasitans o kadar fazla değişir. Sensörün dahili entegresi, neme duyarlı kapasitörü şarj edip boşaltır ve şarj/deşarj süresini ölçerek kapasitansını belirler. Bu kapasitans değişimi dijital nem değerine dönüştürülür. Böylece havadaki bağıl nem hesaplanabilir. 

Nem Sensörü, çevredeki ortamın bağıl nemini (%RH) ölçer ve çıktı olarak verir. Bağıl Nem, belirli bir sıcaklıkta, havadaki su buharı miktarının, havanın tutabileceği maksimum su buharı miktarına oranıdır. Hava doygunluk noktasına ulaştığında, yani tutabileceği kadar su buharı içerdiğinde, yoğuşma meydana gelmeye başlar ve bu da yüzeylerde çiğ (nem) oluşumuna neden olur. Ek olarak sıcak hava, soğuk havaya göre daha fazla nem tutar.


Sıcaklık Ölçümü

Sıcaklık ölçümü için sensör bir NTC termistörü kullanır. NTC (Negative Temperature Coefficient); Negatif Sıcaklık Katsayısı demektir. Bu, sıcaklık arttıkça direncin azaldığı anlamına gelir. Termistör, temelde sıcaklık değiştiğinde direncini önemli ölçüde değiştiren özel bir direnç türüdür. Sıradan dirençler de sıcaklıkla birlikte dirençlerini biraz değiştirse de, bu değişimler kullanışlı olamayacak kadar küçüktür. Termistörler ise, özellikle sıcaklıkla birlikte büyük direnç değişimleri gösterecek şekilde tasarlanmıştır. 





DHT11 veya DHT22 sensörünün içerisinde entegre olduğunu söylemiştik. Bu entegre hem nem hem de sıcaklık bileşenlerinden gelen sinyalleri ölçer, kalibrasyon ayarlarını uygular. Kalibrasyon ayarları okumaların doğru olmasına yardımcı olur. Bu entegre analog elektrik sinyallerini dijital verilere dönüştürür ve son olarak mikrodenetleyicinizin anlayabileceği bir dijital sinyal üretir.


DHT11 ve DHT22’nin Veri İletim Protokolü




DHT11/DHT22 sensörü, mikrodenetleyicilerle iletişim kurmak, sıcaklık ve nem verilerini göndermek için tek hatlı, iki yönlü özel bir seri iletişim protokolü kullanır. Bu protokol standart bir protokol olmasa da, Dallas 1-Wire protokolüne benzer ve doğru çalışması için son derece hassas zamanlamaya ihtiyacı vardır. İletişim iki yönlüdür. Çünkü DHT11/DHT22 mikrodenetleyiciden komutlar alır ve ardından bu komutlara yanıt verir. DHT11/DHT22 sensörünün gönderdiği veriler 40 bittir ve önce en anlamlı bitten(MSB) başlayarak gönderir. 40 bitlik veri 5 bayta bölünür. DHT11 sensörü için 2. ve 4. baytlar her zaman Sıfır'dır. Veriler, sıcaklık ve bağıl nemin hem İntegral hem de ondalık değerlerini içerir; sağlama toplamı ile de sonlandırılır. Sensör bağıl nem ve sıcaklık bilgilerini yansıtan 40 bitlik bir yanıt sinyalini şu şekilde gönderir: 

1. Bayt: Bağıl Nem İntegral Verileri % (Tam Sayı Kısmı).

2. Bayt: Bağıl Nem Ondalık Verileri % (Kesirli Kısım) – DHT11 için Sıfır.

3. Bayt: Sıcaklık İntegrali Verileri ⁰С(Tam Sayı Kısmı).

4. Bayt: Sıcaklık Ondalık Verileri %(Kesirli Kısım) – DHT11 için Sıfır.

5. Bayt: Kontrol/Sağlama Toplamı.






Mikrodenetleyici ile DHT11/DHT22 arasındaki iletişim için kullanılan DATA kablosu, 4.7kΩ veya 10kΩ çekme direnci kullanılarak HIGH’a çekilir. Bu, iletişim olmadığında veri yolunu BOŞTA durumuna getirmek içindir. Hat üzerinde sürekli bir HIGH değeri BOŞTA durumunu belirtir. Mikrodenetleyici, veri yolu ana bilgisayarı olarak görev yapar ve bu nedenle iletişimi başlatmaktan sorumludur. DHT11/DHT22 Nem ve Sıcaklık sensörü her zaman bağımlıdır ve mikrodenetleyici istediğinde veriyle yanıt verir. İletişim için kullanılan protokol aşağıdaki gibidir: 





İletişim Süreci:

  • Normal şartlarda DHT11/DHT22’nin veri pini 4.7kΩ veya 10kΩ çekme direnci ile Vdd’ye bağlandığı için pin HIGH seviyesindedir. Buna hat BOŞTA durumu denir. Bu durumdayken sensör düşük güç tüketimi modundadır.

  • Mikrodenetleyici DHT11/DHT22’den veri alabilmek için hat BOŞTA iken, hattı ~18ms boyunca LOW yapar.

  • DHT11/DHT22, LOW sinyalini algıladığında durumunu düşük güç tüketimi modundan çalışma moduna değiştirir ve hattın HIGH olmasını bekler.

  • Bundan sonra mikrodenetleyici hattı serbest bırakmak için yaklaşık ~20 µs ile ~40µs kadar hattı tekrar HIGH yapar.

  • DHT11/DHT22,  bunu mikrodenetleyiciden bir BAŞLAT olarak algılayacak ve ~80µs boyunca hattı LOW yaparak yanıt verecektir.

  • Daha sonra DHT11/DHT22 hattı serbest bırakmak için ~80 µs boyunca hattı HIGH yapacaktır. Bu da veri göndermeye hazır olduğunu gösterir.

  • Ardından DHT11/DHT22 40 bit veri gönderecektir. Her bit, ~50 µs LOW ile başlayıp, "0" için ~26-28 µs HIGH ve "1" için ~70 µs HIGH ile devam edecektir.

  • İletişim sona erdiğinde hat HIGH konuma getirilerek BOŞTA olması sağlanır. Bundan sonra DHT11/DHT22 mikrodenetleyiciden gelecek bir sonraki komutu bekler. 



DHT11 ve DHT22’nin Pin Çıkışları

Piyasada 3 pinli ve 4 pinli DHT11 ve DHT22 sıcaklık-nem sensörleri bulunmaktadır. 4 pinli olanlarda 3. pin kullanılmaz.




VCC: Sensörün güç girişidir. Bu pine 3.3V ile 5.5V arasında herhangi bir giriş voltajı uygulanabilse de 5V kullanmak en iyisidir. 5V'luk bir güç kaynağıyla, sensörü mikrodenetleyiciden 20 metreye uzağa yerleştirebilirsiniz. Eğer 3.3V’luk güç kaynağı kullanırsanız, sensörü mikrodenetleyiciden 1 metre uzağa yerleştirebilirsiniz. Uzun kablolar voltaj düşüşlerine neden olabilir ve bu da sıcaklık ve nem ölçümlerinde hatalara sebep olabilmektedir.

GND: Toprak pinidir.

Data: Sıcaklık ve nem bilgilerinin dijital olarak gönderildiği pindir. İletişimin düzgün çalıştığından emin olmak için, bu pin ile VCC pini arasına 4.7 kΩ’luk veya 10kΩ'luk bir çekme direnci eklemeniz gerekir. Bu direnç, sinyal seviyelerinin doğru olmasını sağlar. Eğer sensör PCB karta montajlı geldiyse çekme direnci kullanmanıza gerek yoktur. Çünkü bu direnç zaten kart üzerinde montajlıdır. 

NC: Not Connected anlamına gelir. Bu pin hiçbir şeye bağlanmaz.



DHT11/DHT22 Sıcaklık ve Nem Sensörünün Arduino İle Kullanımı


DHT22 Bağlantı Şeması





DHT11 Bağlantı Şeması




Kütüphane ve Komutlar

DHT11 ve DHT22 sensörlerini kullanmak için farklı kütüphaneler yer almaktadır. Biz uygulamalarımızda “Rob Tillaart” tarafından geliştirilen “DHTlib” kütüphanesini kullanacağız. Bu kütüphaneyi #include <dht.h> yaparak programa eklemeliyiz.

Kütüphane Adresi: https://github.com/RobTillaart/DHTlib


1. dht DHT;

Sensörü temsil eden bir DHT nesnesi oluşturur.


2. int readData = DHT.read22(dataPin);

DHT22 sensörünün Arduino’ya bağlı olduğu data pininden veri okur ve “readData” değişkenine kaydeder. 


3. int readData = DHT.read11(dataPin);

DHT11 sensörünün Arduino’ya bağlı olduğu data pininden veri okur ve “readData” değişkenine kaydeder. 


4. float sicaklik = DHT.temperature;

Sensörden okunan sıcaklık değeri(⁰С) float olarak tanımlanan “sicaklik” değişkenine atanır.


5. float nem = DHT.humidity;

Sensörden okunan nem değeri(%) float olarak tanımlanan “nem” değişkenine atanır.


NOT: DHT22 sensörünün örnekleme hızı 0,5 Hz yani 2 sn, DHT11 sensörünün örnekleme hızı 1 Hz yani 1 sn’dir. Bu, DHT22’nin nem ve sıcaklık değerlerini her 2 saniyede bir güncellediği,  DHT11’in ise nem ve sıcaklık değerlerini her 1 saniyede bir güncellediği anlamına gelir. Bu nedenle bu süreler altında sensörlerden veri istemenin bir anlamı yoktur. Çünkü aynı veriyi verir. Örneğin; DHT22 her 2 sn’de bir kendini günceller, veri üretir. DHT22’den her 1 saniyede bir veri istemek anlamsızdır. Loop döngüsünde programın sonuna bu sürelere göre delay() eklemek doğru olur.





Arduino Eğitimi Konu - 7

Toplam Sayfa Görüntüleme Sayısı

Sensörler ve Aygıtların Arduino İle Kullanımı

Popular Posts

Yararlanılan Kaynaklar

İletişim

gokdag17@gmail.com

Blog Archive