9 Haziran 2017 Cuma

ESP8266 İLE ANALOG ÖLÇÜMLER YAPALIM :)

             Herkese yeniden merhabalar. :) ESP8266 modülleri her ne kadar Arduino killer olarak adlandırılarak onun yerini almaya çalışsada, En meşhur Arduino modeli olan Arduino Uno'ya göre (Yani Atmega328 entegresi) daha çok eksiklikleri olduğunu söylemek lazım.Digital pin sayısı 16'ya kadar çıkmış modüller olsada benim projelerde en zorlandığım şey Analog Pin'in sadece ve sadece 1 adet olması.Oysa bu UNO'da 6 tane.Hem her Arduino UNO modelinde 6 adet Analog Pin bulunmasına rağmen ESP modüllerinde ise ESP07 ve üzerinde ADC pini mevcut.Eeeee madem 1 tane var o zaman iyi kullanalım dimi :)

           ADC pini bütün microdenetleyicilerde nasıl çalışıyor ise ESP modüllerindede aynı çalışıyor.Yani ilgili ADC pininde ölçülen voltajın değeri 0-1024 arasında bir değere çevriliyor.Aşağıda resimde anlatıldığı üzere bizler yani maker'lar analog pinde 1.06 volt gördüğümüzde bu 1024'e denk geliyorki bu bizim için max değer demek.Bazı sensörler her ne kadar Digital çıkış verselerde (bunlar TRUE veya FALSE) hassas ölçüm yapan birçok sensör Analog çıkış vermekte.Peki bunu nasıl ölçücez. :)


               Mesala Hava sıcaklığını hassas bir biçimde ölçmek istiyoruz ve bunu internet üzerinden gözlemlemek istiyoruz.LM35 ısı sensörü veya Analog ölçüm yapan  herhangi bir sönsörün Vcc pinine 3.3V, Gnd pinine Toprak verip ADC pininide ESP8266 modülünüzün A0 pinine bağlarsak ölçüm işlemi gerçekleşir.Ölçüm işlemi hemen başlar.Bunu hemen seri porttta görüntüleyebilir veya daha önceki yazıda anlattığım gibi BLYNK yazılımı ile ADC pini ölçümü yaptırarak dünyanın her yerinden ölçebilirsiniz.Bu ölçüm işlemi 0-1024 değerinde olacağından bir değişkene tanımlanmalı ve çevrilmek istenilen değere çevrilmelidir.Şimdi bir örnek verelim :)
Değişken tanımla kısmına float tipinde bir değişken tanımlıyoruz.Ve tempPin'in 17 numaralı ADC pinini ölçmesini istiyoruz.

float temp; int tempPin = 17; // ADC pin


Şimdi gelelim VOiD LOOP kısmına temp değerine Analog Pinden ölçtüğümüz tempPin (yani ADC pini) değerini atıyoruz.Daha sonra ölçtüğümüz değeri sıcaklığa çevirmek için 1/1024 çarpı 100 ile çarpıyoruz.Artık ADC pinini temp değeri olarak ölçmüş olduk.Eğer bunu yapmasaydık.ESP8266 modülümüz ölçtüğü değeri 0-1024 arasında bir değer olarak göndericekti.
  
   temp = analogRead(tempPin);
   temp = temp * 0.09765625; // formül (1/1024*100)
Yada map komutunu kullanarak ölçüm yaptığımız 0-1024 arasındaki değeri 1-100 arasındaki bir değere çevirerek % olarak ölçüm yapabiliriz.Mesala nem oranı kaç.?
Örnek Kullanım:
şimdi nem isminde bir değişken tanımlayalım.ve sonra bunu çevirelim.
int nem;
nem  = analogRead (17) // analog Pin
void loop kısmına ise 
map nem(nem,0 ,1023, 0, 100);
artık nem değerimiz 0-100 arasında ölçülmekte :)
İlker YILDIZHAN Mİ elektronik



Hiç yorum yok:

Yorum Gönder