ESP32 ADC Kullanımı

ESP32 ADC, analog sinyalleri işlerken sıklıkla kullanılan, Analogdan, dijitale çevirme işlemidir.

Bu yazıda, Arduino IDE kullanarak ESP32 ile analog girişlerin nasıl okunacağını gösterir. Analog okuma, potansiyometreler veya analog sensörler gibi değişken dirençlerden değerleri okumak için kullanışlıdır.

ESP32 ADC Kullanımı esp32 adc,esp32 adc resolution,esp32 adc pins,esp32 adc sample rate,esp32 adc accuracy

ESP32 ile analog girişleri okumak, okumak istediğiniz GPIO’yu fonksiyon olarak kabul eden analogRead(GPIO) işlevini kullanarak oldukça kolaydır.

Analog Girişler (ADC)

ESP32 ile analog bir değer okumak, 0 V ile 3,3 V arasında değişen voltaj seviyelerini ölçebileceğiniz anlamına gelir.

Ölçülen voltaj daha sonra 0 ile 4095 arasında bir değere atanır, burada 0 V 0’a ve 3,3 V 4095’e karşılık gelir. 0 V ile 3,3 V arasındaki herhangi bir voltaja aradaki karşılık gelen değer verilir.

ESP32 ADC Kullanımı esp32 adc,esp32 adc resolution,esp32 adc pins,esp32 adc sample rate,esp32 adc accuracy

ADC Doğrusal Değildir

İdeal olarak, ESP32 ADC pinlerini kullanırken doğrusal bir davranış beklersiniz. Ancak, bu olmaz. Alacağınız şey, aşağıdaki çizelgede gösterildiği gibi bir davranıştır:

ESP32 ADC Kullanımı esp32 adc,esp32 adc resolution,esp32 adc pins,esp32 adc sample rate,esp32 adc accuracy

Bunun sebebini buradaki GitHub tartışmasından inceleyebilirsiniz.

Bu davranış, ESP32’nizin 3,3 V ile 3,2 V’u ayırt edemediği anlamına gelir. Her iki voltaj için de aynı değeri alırsınız: 4095.

Aynısı çok düşük voltaj değerleri için de geçerlidir: 0 V ve 0,1 V için aynı değeri alırsınız: 0. ESP32 ADC pinlerini kullanırken bunu aklınızda bulundurmanız gerekir.

analogRead() Fonksiyonu

Arduino IDE kullanarak ESP32 ile bir analog girişi okumak, analogRead() işlevini kullanarak yapılabilir. Okumak istediğiniz GPIO’yu argüman olarak kabul eder:

analogRead(GPIO);

ESP32, 18 farklı kanalda ölçümleri destekler. DEVKIT V1 DOIT kartında (30 GPIO’lu versiyon) sadece 15 adet mevcuttur.

ESP32 kartınızın pin çıkışını alın ve ADC pinlerini bulun. Bunlar aşağıdaki şekilde kırmızı bir kenarlıkla vurgulanmıştır.

ESP32 ADC Kullanımı esp32 adc,esp32 adc resolution,esp32 adc pins,esp32 adc sample rate,esp32 adc accuracy

ESP32 GPIO’lar hakkında daha fazla bilgi almak için: ESP32 Pin Referansı Giriş ve Çıkış Pinleri

Bu analog giriş pinleri 12 bit çözünürlüğe sahiptir. Bu, bir analog girişi okuduğunuzda, aralığının 0 ila 4095 arasında değişebileceği anlamına gelir.

Not: Wi-Fi kullanıldığında ADC2 pinleri kullanılamaz. Bu nedenle, Wi-Fi kullanıyorsanız ve bir ADC2 GPIO’dan değer almakta sorun yaşıyorsanız, bunun yerine bir ADC1 GPIO kullanmayı düşünebilirsiniz, bu sorununuzu çözecektir.

Diğer Kullanışlı Fonksiyonlar

Diğer projelerde faydalı olabilecek ADC pinleriyle kullanılabilecek daha gelişmiş fonksiyonlar vardır.

  • analogReadResolution(çözünürlük): Örnek bitleri ve çözünürlüğü ayarlar. 9 (0 – 511) ile 12 bit (0 – 4095) arasında bir değer olabilir. Varsayılan 12 bit çözünürlüktür.
  • analogSetWidth(width): Örnek bitleri ve çözünürlüğü ayarlar. 9 (0 – 511) ile 12 bit (0 – 4095) arasında bir değer olabilir. Varsayılan 12 bit çözünürlüktür.
  • analogSetCycles(döngü): Örnek başına döngü sayısını ayarlar. Varsayılan 8’dir. Aralık: 1 ila 255 arasında olabilir.
  • analogSetSamples(örneksayisi): Aralıktaki örnek sayısını ayarlar. Varsayılan 1 örnektir. Duyarlılığı artırıcı etkisi vardır.
  • analogSetClockDiv(zayıflama): ADC saati için ayırıcıyı ayarlar. Varsayılan 1’dir. Aralık: 1 ila 255.
  • analogSetAttenuation(zayıflama): tüm ADC pinleri için giriş zayıflamasını ayarlar. Varsayılan ADC_11db’dir. Kabul edilen değerler:
  • ADC_0db: zayıflama ayarlamaz. ADC yaklaşık 800 mV’a kadar ölçüm yapabilir (1V giriş = 1088 ADC okuması).
  • ADC_2_5db: ADC’nin giriş voltajı azaltılarak ölçüm aralığı yakl. 1100 mV. (1V giriş = 3722’nin ADC okuması).
  • ADC_6db: ADC’nin giriş voltajı azaltılarak ölçüm aralığı yakl. 1350 mV. (1V giriş = 3033’ün ADC okuması).
  • ADC_11db: ADC’nin giriş voltajı azaltılarak ölçüm aralığı yakl. 2600 mV. (1V giriş = 1575 ADC okuması).
  • analogSetPinAttenuation(pin, zayıflama): belirtilen pin için giriş zayıflamasını ayarlar. Varsayılan ADC_11db‘dir. Zayıflama değerleri önceki fonksiyonla aynıdır.
  • adcAttachPin(pin): ADC’ye bir pin takın (açık olabilecek diğer analog modları da siler). DOĞRU veya YANLIŞ sonuç döndürür.
  • adcStart(pin), adcBusy(pin) ve resultadcEnd(pin): bağlı pinin bus’ında bir ADC dönüşümü başlatır. Pin’in ADC veri yolundaki dönüşümün şu anda çalışıp çalışmadığını kontrol eder (DOĞRU veya YANLIŞ döndürür). Dönüştürmenin sonucunu alır: 16 bit tamsayı döndürür.

ESP32 ile Potansiyometreden Analog Değerleri Okumak

Her şeyin nasıl birbirine bağlı olduğunu görmek için, bir potansiyometreden analog bir değer okumak için basit bir örnek yapacağız.

Gerekli Malzemeler

  • ESP32 Geliştirme Kartı(ESP32 DOIT DEVKIT V1)
  • Potansiyometre
  • Breadboard(devre tahtası)
  • Bağlantı kabloları

Devre Şeması

ESP32 ADC Kullanımı esp32 adc,esp32 adc resolution,esp32 adc pins,esp32 adc sample rate,esp32 adc accuracy

Arduino Kodu

ESP32’yi Arduino IDE kullanarak programlayacağız, bu yüzden devam etmeden önce ESP32 kütüphanesinin kurulu olduğundan emin olun:

Arduino IDE’ye ESP32 Desteği Kurmak (Windows, Linux, MacOS)

// potansiyometre GPIO 34'e bağlı (Analog ADC1_CH6) 
const int potPin = 34;

// potansiyometre değerini saklamak için değişken
int potValue = 0;

void setup() {
  Serial.begin(115200);
  delay(1000);
}

void loop() {
  // potansiyometre değeri okuma
  potValue = analogRead(potPin);
  Serial.println(potValue);
  delay(500);
}

Bu kod basitçe potansiyometreden değerleri okur ve bu değerleri Seri Monitörde yazdırır.

ESP32 ADC Kullanımı esp32 adc,esp32 adc resolution,esp32 adc pins,esp32 adc sample rate,esp32 adc accuracy
ESP32 ADC Kullanımı esp32 adc,esp32 adc resolution,esp32 adc pins,esp32 adc sample rate,esp32 adc accuracy

Yorum yapma özelliği, forum tarafından gelen istek sebebiyle kapatılmıştır. Lütfen tartışmalar ve sorularınız için topluluk forumumuza katılın.