ESP32 ADC-odczyt wartości analogowych z Arduino IDE

Ten artykuł pokazuje, jak odczytać wejścia analogowe z ESP32 za pomocą Arduino IDE. Odczyt analogowy jest przydatny do odczytu wartości ze zmiennych rezystorów, takich jak Potencjometry lub czujniki analogowe.

ESP32 ADC odczytuje wartości analogowe za pomocą Arduino IDE

odczyt wejść analogowych z ESP32 jest tak proste, jak za pomocą analogRead (GPIO) funkcja, który akceptuje jako argument, GPIO chcesz przeczytać.

mamy również inne samouczki na temat używania pinów analogowych z płytą ESP:

  • ESP8266 ADC-odczyt wartości analogowych z Arduino IDE, MicroPython i Lua
  • odczyty analogowe ESP32 z MicroPython

Obejrzyj film

możesz obejrzeć samouczek wideo lub przeczytać tę stronę, aby uzyskać pisemne instrukcje.

wejścia analogowe (ADC)

odczyt wartości analogowej za pomocą ESP32 oznacza możliwość pomiaru różnych poziomów napięcia od 0 V do 3,3 V.

zmierzone napięcie jest następnie przypisywane do wartości między 0 a 4095, w której 0 V odpowiada 0, a 3,3 V odpowiada 4095. Każde napięcie między 0 V A 3,3 V otrzyma odpowiednią wartość pomiędzy.

ESP32 ADC Analog Read Inputs range Value

ADC jest nieliniowy

idealnie byłoby oczekiwać liniowego zachowania podczas używania pinów ADC ESP32. Jednak tak się nie dzieje. To, co otrzymasz, to zachowanie pokazane na poniższym wykresie:

to zachowanie oznacza, że Twój ESP32 nie jest w stanie odróżnić 3.3 V od 3,2 V. dla obu napięć Otrzymasz taką samą wartość: 4095.

to samo dzieje się dla bardzo niskich wartości napięcia: dla 0 V i 0,1 V otrzymasz tę samą wartość: 0. Należy o tym pamiętać podczas używania pinów ADC ESP32.

jest dyskusja na Githubie na ten temat.

funkcja analogRead ()

odczyt wejścia analogowego z ESP32 przy użyciu Arduino IDE jest tak prosty, jak użycie funkcji analogRead (). Akceptuje jako argument, GPIO chcesz przeczytać:

analogRead(GPIO);

ESP32 obsługuje pomiary w 18 różnych kanałach. Tylko 15 jest dostępnych na płycie DEVKIT V1 DOIT (wersja z 30 GPIOs).

chwyć pinout płytki ESP32 i znajdź piny ADC. Są one podświetlone czerwoną obwódką na rysunku poniżej.

Szpilki ESP32 ADC GPIOs

dowiedz się więcej o GPIOs ESP32: ESP32 pinout Reference.

te analogowe piny wejściowe mają 12-bitową rozdzielczość. Oznacza to, że podczas odczytu wejścia analogowego jego zakres może się wahać od 0 do 4095.

Uwaga: piny ADC2 nie mogą być używane, gdy używana jest sieć Wi-Fi. Tak, jeśli używasz Wi-Fi i masz problemy z uzyskaniem wartości z ADC2 GPIO, można rozważyć użycie ADC1 GPIO zamiast, że powinien rozwiązać problem.

inne przydatne funkcje

istnieją inne bardziej zaawansowane funkcje do użycia z pinami ADC, które mogą być przydatne w innych projektach.

  • analogReadResolution(rozdzielczość): Ustaw bity próbki i rozdzielczość. Może to być wartość pomiędzy 9 (0 – 511) i 12 bitów (0-4095). Domyślnie jest to rozdzielczość 12-bitowa.
  • analogSetWidth( szerokość): Ustaw bity próbki i rozdzielczość. Może to być wartość pomiędzy 9 (0 – 511) i 12 bitów (0-4095). Domyślnie jest to rozdzielczość 12-bitowa.
  • analogSetCycles (cykle): Ustaw liczbę cykli na próbkę. Domyślnie jest to 8. Zakres: od 1 do 255.
  • analogsetsample( próbki): Ustaw liczbę próbek w zakresie. Domyślnie jest to 1 próbka. Ma wpływ na zwiększenie wrażliwości.
  • analogSetClockDiv( tłumienie): Ustaw dzielnik dla zegara ADC. Domyślna wartość to 1. Zakres: od 1 do 255.
  • analogSetAttenuation(tłumienie): ustawia tłumienie wejściowe dla wszystkich pinów ADC. Domyślnie jest to ADC_11db. Akceptowane wartości:
    • ADC_0db: ustawia brak tłumienia. ADC może mierzyć do około 800 mV (wejście 1V = odczyt ADC 1088).
    • ADC_2_5db: napięcie wejściowe ADC zostanie stłumione, rozszerzając zakres pomiaru do ok. 1100 mV. (Wejście 1V = odczyt ADC z 3722).
    • ADC_6db: napięcie wejściowe ADC zostanie stłumione, rozszerzając zakres pomiaru do ok. 1350 mV. (Wejście 1V = odczyt ADC 3033).
    • ADC_11db: napięcie wejściowe ADC zostanie stłumione, rozszerzając zakres pomiaru do ok. 2600 mV. (Wejście 1V = odczyt ADC 1575).
  • analogSetPinAttenuation( pin, tłumienie): ustawia tłumienie wejściowe dla określonego Pina. Domyślną wartością jest ADC_11db. Wartości tłumienia są takie same jak w poprzedniej funkcji.
  • adcAttachPin (pin): podłącz pin do ADC (również czyści dowolny inny tryb analogowy, który może być włączony). Zwraca wynik TRUE lub FALSE.
  • adcStart(pin), adcBusy(pin) i resultadcEnd(pin): rozpoczyna konwersję ADC na magistrali dołączonego Pina. Sprawdź, czy konwersja na magistrali ADC Pina jest aktualnie uruchomiona (zwraca TRUE lub FALSE). Uzyskaj wynik konwersji: zwraca 16-bitową liczbę całkowitą.

jest bardzo dobry film wyjaśniający te funkcje, które możesz obejrzeć tutaj.

Czytaj wartości analogowe z potencjometru z ESP32

aby zobaczyć, jak wszystko się ze sobą łączy, zrobimy prosty przykład, aby odczytać wartość analogową z potencjometru.

w tym przykładzie potrzebujesz następujących części:

  • ESP32 doit DEVKIT V1 Board (Czytaj najlepsze płyty rozwojowe ESP32)
  • potencjometr
  • Breadboard
  • Przewody Zworki

możesz użyć poprzednich linków lub przejść bezpośrednio do MakerAdvisor.com/tools aby znaleźć wszystkie części do swoich projektów w najlepszej cenie!

schemat

podłącz potencjometr do ESP32. Środkowy pin potencjometru należy podłączyć do GPIO 34. Możesz użyć poniższego schematu jako odniesienia.

odczytaj wartość z potencjometru ESP32 Arduino IDE

Kod

programujemy ESP32 za pomocą Arduino IDE, więc upewnij się, że masz zainstalowany dodatek ESP32 przed kontynuowaniem:

  • instrukcje systemu Windows-tablica ESP32 w Arduino IDE
  • instrukcje Mac i Linux-tablica ESP32 w Arduino IDE

Otwórz Arduino IDE i skopiuj następujący kod.

// Potentiometer is connected to GPIO 34 (Analog ADC1_CH6) const int potPin = 34;// variable for storing the potentiometer valueint potValue = 0;void setup() { Serial.begin(115200); delay(1000);}void loop() { // Reading potentiometer value potValue = analogRead(potPin); Serial.println(potValue); delay(500);}

Wyświetl kod raw

ten kod po prostu odczytuje wartości z potencjometru i drukuje te wartości na monitorze szeregowym.

w kodzie zaczynasz od zdefiniowania GPIO, do którego podłączony jest potencjometr. W tym przykładzie, GPIO 34.

const int potPin = 34;

w setup () zainicjuj komunikację szeregową z prędkością 115200.

Serial.begin(115200);

w funkcji loop () użyj funkcji analogRead (), aby odczytać wejście analogowe ze znacznika potPin.

potValue = analogRead(potPin);

na koniec wypisuje wartości odczytane z potencjometru w monitorze szeregowym.

Serial.println(potValue);

Prześlij podany kod do swojego ESP32. Upewnij się, że w menu Narzędzia wybrano właściwą płytę i port COM.

testowanie przykładu

po przesłaniu kodu i naciśnięciu przycisku reset ESP32 otwórz monitor szeregowy z prędkością 115200. Obróć potencjometr i zobacz, jak zmieniają się wartości.

potencjometr odczytu ESP32 analogRead

maksymalna wartość to 4095, a minimalna 0.

potencjometr odczytu ESP32 analogowy Monitor szeregowy Arduino IDE demonstracja

podsumowanie

w tym artykule nauczyłeś się odczytywać wejścia analogowe za pomocą ESP32 z Arduino IDE. W podsumowaniu:

  • Płyta ESP32 DEVKIT V1 DOIT (wersja z 30 pinami) ma 15 pinów ADC, za pomocą których można odczytać wejścia analogowe.
  • piny te mają rozdzielczość 12 bitów, co oznacza, że można uzyskać wartości od 0 do 4095.
  • aby odczytać wartość w Arduino IDE, wystarczy użyć funkcji analogRead ().
  • piny ADC ESP32 nie mają zachowania liniowego. Prawdopodobnie nie będziesz w stanie odróżnić od 0 do 0,1 V lub od 3,2 do 3,3 V. musisz o tym pamiętać podczas korzystania z pinów ADC.

mamy nadzieję, że ten krótki przewodnik okaże się przydatny. Jeśli chcesz dowiedzieć się więcej o ESP32, zapisz się na nasz kurs: Learn ESP32 with Arduino IDE.

Inne poradniki ESP32, które również mogą ci się spodobać:

  • wyświetlacz OLED ESP32 z Arduino IDE
  • ESP32 Z Czujnikiem Temperatury i wilgotności DHT za pomocą Arduino IDE
  • serwer sieciowy ESP32 z odczytami DHT
  • 20+ projektów i samouczków ESP32

Dziękujemy za przeczytanie.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Previous post jak Ian McKellen prawie nie zagrał Gandalfa
Next post Capital Orthopaedic Specialists – Lanham