ESP32 ADC – Arduino IDE ile Analog Değerleri Okuyun

Esp32 Adc Arduino Ide Ile Analog Degerleri Okuyun



ADC (analogdan dijitale dönüştürücü), farklı mikrodenetleyici kartlarıyla birlikte gelen veya mikrodenetleyicinin içine entegre edilmiş bir elektronik devredir. ADC, farklı sensörlerden gelen analog voltajı dijital forma dönüştürmek için kullanılır. Arduino gibi, ESP32 de analog verileri okuyabilen bir ADC'ye sahiptir. ESP32 ADC hakkında daha fazlasını öğrenelim.

ESP32 ADC Giriş

ESP32 kartında, SAR (Successive Approximation Registers) ADC'leri olarak da bilinen iki adet entegre 12 bit ADC bulunur. ESP32 kartı ADC'leri 18 farklı analog giriş kanalını destekler, bu da onlardan giriş almak için 18 farklı analog sensör bağlayabileceğimiz anlamına gelir.

Ama burada durum böyle değil; bu analog kanallar kanal 1 ve kanal 2 olarak iki kategoriye ayrılır, bu kanalların her ikisinde de ADC girişi için her zaman mevcut olmayan bazı pinler bulunur. Bakalım bu ADC pinleri diğerleri ile birlikte nelermiş.







ESP32 ADC Pinleri

Daha önce de belirtildiği gibi ESP32 kartında 18 ADC kanalı vardır. Toplam 30 GPIO'ya sahip DEVKIT V1 DOIT panosunda 18'den sadece 15'i mevcuttur.



Kartınıza bakın ve aşağıdaki resimde vurguladığımız ADC pinlerini tanımlayın:







Kanal 1 ADC Pinleri

ESP32 DEVKIT DOIT kartının verilen pin eşleştirmesi aşağıdadır. ESP32'deki ADC1'in 8 kanalı vardır, ancak DOIT DEVKIT kartı yalnızca 6 kanalı destekler. Ama garanti ederim ki bunlar hala fazlasıyla yeterli.

ADC1 GPIO PIN ESP32
CH0 36
CH1 30 Pinli Sürüm ESP32'de NA (Devkit ZORUNLU)
CH2 O
CH3 39
CH4 32
CH5 33
CH6 3. 4
CH7 35

Aşağıdaki resim ESP32 ADC1 kanallarını göstermektedir:



Kanal 2 ADC Pinleri

DEVKIT DOIT kartlarının ADC2'de 10 analog kanalı vardır. ADC2'nin analog verileri okumak için 10 analog kanalı olmasına rağmen, bu kanallar her zaman kullanıma uygun değildir. ADC2, yerleşik WiFi sürücüleriyle paylaşılır; bu, anakartın WIFI kullandığı sırada bu ADC2'nin kullanılamayacağı anlamına gelir. Bu sorunun çözümü, ADC2'yi yalnızca Wi-Fi sürücüsü kapalıyken kullanmaktır.

Aşağıdaki resim, ADC2 kanalının pin eşleştirmesini göstermektedir.

ESP32 ADC Nasıl Kullanılır

ESP32 ADC, Arduino'ya benzer şekilde çalışır, buradaki tek fark, 12 bit ADC'ye sahip olmasıdır. Böylece, ESP32 kartı, dijital ayrık değerlerde 0 ile 4095 arasında değişen analog voltaj değerlerini eşler.

  • ESP32 ADC'ye verilen voltaj sıfır ise bir ADC kanalı dijital değeri sıfır olacaktır.
  • ADC'ye verilen voltaj maksimum ise 3,3V ise çıkış dijital değeri 4095'e eşit olacaktır.
  • Daha yüksek voltajı ölçmek için voltaj bölücü yöntemini kullanabiliriz.

Not: ESP32 ADC varsayılan olarak 12 bit olarak ayarlanmıştır, ancak 0 bit, 10 bit ve 11 bit olarak yapılandırmak mümkündür. 12 bitlik varsayılan ADC değeri ölçebilir 2^12=4096 ve analog voltaj 0V ila 3.3V arasındadır.

ESP32'de ADC Sınırlaması

İşte ESP32 ADC'nin bazı sınırlamaları:

  • ESP32 ADC, 3,3V'den büyük voltajı doğrudan ölçemez.
  • Wi-Fi sürücüleri etkinleştirildiğinde ADC2 kullanılamaz. Sadece 8 kanal ADC1 kullanılabilir.
  • ESP32 ADC çok doğrusal değildir; gösteriyor doğrusal olmama davranışı gösterir ve 3.2V ile 3.3V arasında ayrım yapamaz. Ancak, ESP32 ADC'yi kalibre etmek mümkündür. Burada ESP32 ADC doğrusal olmama davranışını kalibre etmenize rehberlik edecek bir makaledir.

ESP32'nin doğrusal olmayan davranışı Arduino IDE'nin seri monitöründe görülebilir.

Arduino IDE Kullanarak ESP32 ADC'yi Programlayın

ESP32 ADC'nin çalışmasını anlamanın en iyi yolu, bir potansiyometre almak ve sıfır dirence karşı değerleri maksimuma okumaktır. Potansiyometreli ESP32'nin verilen devre görüntüsü aşağıdadır.

Potansiyometrenin orta pimini ESP32'nin dijital pimi 25'e ve sırasıyla 3.3V ve GND pimine sahip 2 terminal pimine bağlayın.

Donanım

Aşağıdaki resim potansiyometre ile ESP32'nin donanımını göstermektedir. Gerekli bileşenlerin listesi aşağıdadır:

  • ESP32 DEVKIT DOIT kurulu
  • Potansiyometre
  • ekmek tahtası
  • Atlama telleri

kod

Arduino IDE'yi açın ve aşağıdaki kodu ESP32 kartına yükleyin. Arduino IDE ile ESP32'nin nasıl kurulacağını ve yapılandırılacağını kontrol etmek için tıklayın burada .

const int Pin_Potansiyometre = 25 ; /*GPIO 25'e bağlı potansiyometre (Analog ADC2_CH8)*/
int Val_Potansiyometre = 0 ; /*Potansiyometre okuma değeri burada saklanacak*/
geçersiz kurmak ( ) {
Seri. başlamak ( 115200 ) ; /*Seri iletişim başlar*/
}
geçersiz döngü ( ) {
Val_Potansiyometre = analogOkuma ( Pin_Potansiyometre ) ; /*Potansiyometre değeri okuma*/
Seri. println ( Val_Potansiyometre ) ; /*Potansiyometre değerini yazdırır*/
gecikme ( 2000 ) ; /*2 saniyelik gecikme*/
}

İşte yukarıdaki kodda, ESP32 kartındaki potansiyometre için dijital pin 25'i başlatıyoruz. Girdiyi almanın yanında bir değişken Val_Potantiometer başlatılır. Sonraki Baud hızı tanımlanarak seri iletişim başlatılır.

İçinde döngü analogRead() işlevini kullanan kodun bir kısmı ADC değerleri, ESP32'nin 25 numaralı pininde okunacaktır. Daha sonra Serial.print() kullanılarak tüm değerler seri monitörde yazdırılır.

Çıktı

Çıkış, dijital ayrık değerlerle eşlenen analog değerleri görüntüler. Okuma voltajı maksimum olduğunda, yani 3.3V dijital çıkış 4095'e eşittir ve okuma voltajı 0V olduğunda dijital çıkış 0 olur.

Çözüm

Analogdan dijitale dönüştürücüler, özellikle mikrodenetleyici kartlarını analog sensörler ve donanımla arayüzlememiz gerektiğinde her yerde kullanılır. ESP32, ADC için ADC1 ve ADC2 olmak üzere iki kanala sahiptir. Bu iki kanal, analog sensörlerin arayüzlenmesi için 18 pim sağlamak üzere birleşir. Ancak 3 tanesi ESP32 30 pinli versiyonda mevcut değil. Analog değerleri okuma hakkında daha fazla bilgi için makaleyi okuyun.