ESP32 ADC – odczyt wartości analogowych za pomocą Arduino IDE

Esp32 Adc Odczyt Wartosci Analogowych Za Pomoca Arduino Ide



ADC (przetwornik analogowo-cyfrowy) to układ elektroniczny, który jest dostarczany z różnymi płytkami mikrokontrolera lub jest zintegrowany wewnątrz mikrokontrolera. ADC służy do konwersji napięcia analogowego z różnych czujników na postać cyfrową. Podobnie jak Arduino, ESP32 ma również ADC, który może odczytywać dane analogowe. Dowiedzmy się więcej o ADC ESP32.

Wprowadzenie do przetwornika ADC ESP32

Płytka ESP32 ma dwa zintegrowane 12-bitowe przetworniki ADC, znane również jako ADC (Successive Approximation Registers). Przetworniki ADC na płycie ESP32 obsługują 18 różnych analogowych kanałów wejściowych, co oznacza, że ​​możemy podłączyć 18 różnych czujników analogowych, aby pobierać z nich dane wejściowe.

Ale tak nie jest w tym przypadku; te kanały analogowe są podzielone na dwie kategorie kanał 1 i kanał 2, oba te kanały mają kilka pinów, które nie zawsze są dostępne dla wejścia ADC. Zobaczmy, jakie są te piny ADC wraz z innymi.







Szpilki ESP32 ADC

Jak wspomniano wcześniej, płyta ESP32 ma 18 kanałów ADC. Z 18 tylko 15 jest dostępnych na płycie DEVKIT V1 DOIT, która ma łącznie 30 GPIO.



Spójrz na swoją tablicę i zidentyfikuj piny ADC, jak zaznaczyliśmy je na poniższym obrazku:







Piny kanału 1 ADC

Poniżej znajduje się podane mapowanie pinów płyty ESP32 DEVKIT DOIT. ADC1 w ESP32 ma 8 kanałów, jednak płyta DOIT DEVKIT obsługuje tylko 6 kanałów. Ale gwarantuję, że to nadal więcej niż wystarczające.

ADC1 PIN GPIO ESP32
CH0 36
CH1 NA w wersji 30-pinowej ESP32 (Devkit MUSI)
CH2 ŻE
CH3 39
CH4 32
CH5 33
CH6 3. 4
CH7 35

Poniższy obraz pokazuje kanały ESP32 ADC1:



Piny kanału 2 ADC

Płyty DEVKIT DOIT mają 10 kanałów analogowych w ADC2. Chociaż ADC2 ma 10 kanałów analogowych do odczytu danych analogowych, kanały te nie zawsze są dostępne do użycia. ADC2 jest współdzielony z pokładowymi sterownikami Wi-Fi, co oznacza, że ​​w czasie, gdy płyta korzysta z WIFI, te ADC2 nie będą dostępne. Rozwiązaniem tego problemu jest używanie ADC2 tylko wtedy, gdy sterownik Wi-Fi jest wyłączony.

Poniższy obrazek pokazuje mapowanie pinów kanału ADC2.

Jak korzystać z przetwornika ESP32 ADC

ESP32 ADC działa podobnie jak Arduino, jedyną różnicą jest to, że ma 12-bitowy ADC. Tak więc płyta ESP32 odwzorowuje analogowe wartości napięcia w zakresie od 0 do 4095 w cyfrowych wartościach dyskretnych.

  • Jeśli napięcie podane do ESP32 ADC wynosi zero, to w kanale ADC wartość cyfrowa będzie wynosić zero.
  • Jeżeli napięcie podane na ADC jest maksymalne to 3,3V to wyjściowa wartość cyfrowa będzie równa 4095.
  • Do pomiaru wyższego napięcia możemy wykorzystać metodę dzielnika napięcia.

Notatka: ESP32 ADC jest domyślnie ustawiony na 12-bitowy, jednak można go skonfigurować na 0-bitowy, 10-bitowy i 11-bitowy. Domyślny 12-bitowy ADC może mierzyć wartość 2^12=4096 a napięcie analogowe waha się od 0V do 3,3V.

Ograniczenie ADC w ESP32

Oto niektóre ograniczenia ESP32 ADC:

  • ESP32 ADC nie może bezpośrednio mierzyć napięcia większego niż 3,3V.
  • Gdy sterowniki Wi-Fi są włączone, ADC2 nie może być używany. Można używać tylko 8 kanałów ADC1.
  • ESP32 ADC nie jest bardzo liniowy; to pokazuje nieliniowość zachowanie i nie może odróżnić 3.2V i 3.3V. Możliwa jest jednak kalibracja ESP32 ADC. Tutaj to artykuł, który poprowadzi Cię do kalibracji zachowania nieliniowości ESP32 ADC.

Nieliniowe zachowanie ESP32 można zaobserwować na monitorze szeregowym Arduino IDE.

Zaprogramuj ADC ESP32 za pomocą Arduino IDE

Najlepszym sposobem zrozumienia działania ESP32 ADC jest wzięcie potencjometru i odczytanie wartości przy zerowej rezystancji do maksimum. Poniżej przedstawiony obraz układu ESP32 z potencjometrem.

Połącz środkowy pin potencjometru z cyfrowym pinem 25 ESP32 i 2 pinami terminala odpowiednio z pinem 3.3V i GND.

Sprzęt komputerowy

Poniższy obraz przedstawia sprzęt ESP32 z potencjometrem. Poniżej znajduje się lista potrzebnych komponentów:

  • ESP32 DEVKIT DOIT pokładzie
  • Potencjometr
  • Deska do krojenia chleba
  • Przewody połączeniowe

Kod

Otwórz Arduino IDE i wgraj poniższy kod na płytkę ESP32. Aby sprawdzić, jak zainstalować i skonfigurować ESP32 z Arduino IDE, kliknij tutaj .

stały int Pin_Potencjometr = 25 ; /*Potencjometr podłączony do GPIO 25 (analogowy ADC2_CH8)*/
int Val_Potencjometr = 0 ; /*W tym miejscu będzie przechowywana wartość odczytana z potencjometru*/
próżnia organizować coś ( ) {
Seryjny. zaczynać ( 115200 ) ; /*Rozpoczyna się komunikacja szeregowa*/
}
próżnia pętla ( ) {
Val_Potencjometr = analogowyCzytaj ( Pin_Potencjometr ) ; /*Odczyt wartości potencjometru*/
Seryjny. drukuj ( Val_Potencjometr ) ; /*Drukuje wartość potencjometru*/
opóźnienie ( 2000 ) ; /*opóźnienie 2sek*/
}

Tutaj w powyższym kodzie inicjujemy cyfrowy pin 25 dla potencjometru na płycie ESP32. Następnie inicjowana jest zmienna Val_Potentiometer, która pobiera dane wejściowe. Dalej Komunikacja szeregowa jest inicjowana poprzez określenie szybkości transmisji.

w pętla część kodu za pomocą funkcji analogRead() wartości ADC zostaną odczytane na pinie 25 ESP32. Następnie za pomocą Serial.print() wszystkie wartości są drukowane na monitorze szeregowym.

Wyjście

Wyjście wyświetla wartości analogowe zmapowane z cyfrowymi wartościami dyskretnymi. Gdy odczytane napięcie jest maksymalne, czyli 3,3 V, wyjście cyfrowe jest równe 4095, a gdy odczytane napięcie wynosi 0 V, wyjście cyfrowe staje się 0.

Wniosek

Przetworniki analogowo-cyfrowe są używane wszędzie, zwłaszcza gdy musimy połączyć płytki mikrokontrolera z analogowymi czujnikami i sprzętem. ESP32 ma dwa kanały dla ADC, które są ADC1 i ADC2. Te dwa kanały łączą się, aby zapewnić 18 pinów do podłączenia czujników analogowych. Jednak 3 z nich nie są dostępne w wersji 30-pinowej ESP32. Aby dowiedzieć się więcej o odczytywaniu wartości analogowych, przeczytaj artykuł.