ESP32 ADC – Čtení Analogových Hodnot s Arduino IDE

Tento článek ukazuje, jak číst analogové vstupy s ESP32 pomocí Arduino IDE. Analogové čtení je užitečné pro čtení hodnot z proměnných rezistorů, jako jsou potenciometry nebo analogové senzory.

ESP32 ADC Čtení Analogové Hodnoty s Arduino IDE

Čtení analogových vstupů s ESP32 je stejně snadné jako používání analogRead(GPIO) funkce, která přijímá jako argument, GPIO, kterou chcete číst.

Máme také další návody, jak používat analogové piny s ESP rady:

  • ESP8266 ADC – Čtení Analogových Hodnot s Arduino IDE, MicroPython a Lua
  • ESP32 Analogové Hodnoty s MicroPython

podívejte se na Video

můžete se dívat na video tutorial nebo čtení této stránce pro písemné pokyny.

Analogové Vstupy (ADC)

Čtení analogové hodnoty s ESP32 znamená, že můžete měřit různé úrovně napětí mezi 0 V a 3.3 V.

měřené napětí je pak přiřazeno hodnotě mezi 0 a 4095, ve které 0 v odpovídá 0 a 3,3 V odpovídá 4095. Každé napětí mezi 0 V a 3,3 V bude mít odpovídající hodnotu mezi nimi.

ESP32 ADC Čtení Vstupů Hodnota Rozsahu

ADC je Non-lineární

v Ideálním případě, měli byste očekávat, že lineární chování při použití ESP32 ADC piny. To se však nestane. To, co získáte, je chování, jak je znázorněno na následujícím grafu:

toto chování znamená, že váš ESP32 není schopen rozlišit 3.3 v od 3.2 V. získáte stejnou hodnotu pro obě napětí: 4095.

totéž platí pro velmi nízké hodnoty napětí: pro 0 V a 0,1 v získáte stejnou hodnotu: 0. Při používání pinů ADC ESP32 to musíte mít na paměti.

na Githubu se o tomto tématu diskutuje.

analogRead() Funkce

Čtení analogového vstupu s ESP32 pomocí Arduino IDE je jednoduché jako pomocí analogRead() funkce. Přijímá jako argument GPIO, které chcete číst:

analogRead(GPIO);

ESP32 podporuje měření v 18 různých kanálech. Na desce DEVKIT V1 doit je k dispozici pouze 15 (verze s 30 GPIO).

uchopte pinout desky ESP32 a vyhledejte kolíky ADC. Ty jsou zvýrazněny červeným okrajem na obrázku níže.

ESP32 ADC GPIO piny

další informace o ESP32 GPIO: ESP32 Pinout Reference.

tyto analogové vstupní piny mají 12bitové rozlišení. To znamená, že když čtete analogový vstup, jeho rozsah se může lišit od 0 do 4095.

Poznámka: Při použití Wi-Fi nelze použít piny ADC2. Pokud tedy používáte Wi-Fi a máte potíže se získáním hodnoty z ADC2 GPIO, můžete místo toho zvážit použití ADC1 GPIO, které by mělo vyřešit váš problém.

další užitečné funkce

existují další pokročilejší funkce pro použití s piny ADC, které mohou být užitečné v jiných projektech.

  • analogReadResolution (rozlišení): nastavte ukázkové bity a rozlišení. Může to být hodnota mezi 9 (0 – 511) a 12 bity (0-4095). Výchozí je 12bitové rozlišení.
  • analogSetWidth(width): nastavte ukázkové bity a rozlišení. Může to být hodnota mezi 9 (0 – 511) a 12 bity (0-4095). Výchozí je 12bitové rozlišení.
  • analogSetCycles (cykly): nastavte počet cyklů na vzorek. Výchozí hodnota je 8. Rozsah: 1 až 255.
  • analogovévzorky (vzorky): nastavte počet vzorků v rozsahu. Výchozí hodnota je 1 vzorek. Má za následek zvýšení citlivosti.
  • analogSetClockDiv (útlum): nastavte dělič pro hodiny ADC. Výchozí hodnota je 1. Rozsah: 1 až 255.
  • analogSetAttenuation( útlum): nastaví vstupní útlum pro všechny ADC piny. Výchozí hodnota je ADC_11db. Přijaté hodnoty:
    • ADC_0db: nastaví Žádný útlum. ADC může měřit až přibližně 800 mV (1V vstup = ADC čtení 1088).
    • ADC_2_5db: vstupní napětí ADC bude oslabené, rozšiřuje rozsah měření až na přibl. 1100 mV. (1V vstup = ADC čtení 3722).
    • ADC_6db: vstupní napětí ADC bude oslabené, rozšiřuje rozsah měření až na přibl. 1350 mV. (1V vstup = ADC čtení 3033).
    • ADC_11db: vstupní napětí ADC bude oslabené, rozšiřuje rozsah měření až na přibl. 2600 mV. (1V vstup = ADC čtení z 1575).
  • analogSetPinAttenuation (pin, útlum): nastaví vstupní útlum pro zadaný pin. Výchozí hodnota je ADC_11db. Hodnoty útlumu jsou stejné jako u předchozí funkce.
  • adcAttachPin (pin): Připojte pin k ADC (vymaže také jakýkoli jiný analogový režim, který by mohl být zapnutý). Vrátí pravdivý nebo nepravdivý výsledek.
  • adcStart(pin), adcBusy(pin) a resultadcEnd(pin): spustí ADC konverze na přiložený pin je autobus. Zkontrolujte, zda je aktuálně spuštěna konverze na sběrnici ADC pin (vrací TRUE nebo FALSE). Získejte výsledek převodu: vrátí 16bitové celé číslo.

existuje velmi dobré video vysvětlující tyto funkce, které můžete sledovat zde.

Přečtěte si Analogové hodnoty z potenciometru s ESP32

abychom viděli, jak se vše spojuje, uděláme jednoduchý příklad pro čtení analogové hodnoty z potenciometru.

pro tento příklad potřebujete následující části:

  • ESP32 DOIT DEVKIT V1 Rady (přečtěte si Nejlepší ESP32 rozvoj desky)
  • Potenciometr
  • Prkénko
  • Propojovací vodiče

můžete použít předchozí odkazy, nebo jít přímo do MakerAdvisor.com/tools najít všechny díly pro vaše projekty za nejlepší cenu!

schéma

Připojte potenciometr k vašemu ESP32. Střední kolík potenciometru by měl být připojen k GPIO 34. Jako odkaz můžete použít následující schematický diagram.

Přečíst hodnotu z Potenciometru ESP32 Arduino IDE

Kód

Budeme program ESP32 pomocí Arduino IDE, takže ujistěte se, že máte ESP32 add-on nainstalován před pokračováním:

  • Windows podle pokynů – ESP32 Rady v Arduino IDE
  • Mac a Linux pokyny – ESP32 Rady v Arduino IDE

Otevřít svůj Arduino IDE a zkopírujte následující kód.

// 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);}

Zobrazit surový kód

tento kód jednoduše přečte hodnoty z potenciometru a vytiskne tyto hodnoty do sériového monitoru.

v kódu začnete definováním GPIO, ke kterému je potenciometr připojen. V tomto příkladu GPIO 34.

const int potPin = 34;

v nastavení () inicializujte sériovou komunikaci při přenosové rychlosti 115200.

Serial.begin(115200);

ve smyčce () použijte funkci analogRead()pro čtení analogového vstupu z potpinu.

potValue = analogRead(potPin);

nakonec vytiskněte hodnoty odečtené z potenciometru na sériovém monitoru.

Serial.println(potValue);

Nahrajte poskytnutý kód do vašeho ESP32. Ujistěte se, že máte v nabídce Nástroje vybranou správnou desku a port COM.

testování příkladu

po nahrání kódu a stisknutí tlačítka RESET ESP32 otevřete Sériový Monitor přenosovou rychlostí 115200. Otočte potenciometr a uvidíte, jak se hodnoty mění.

Přečtěte si potenciometru ESP32 analogRead

maximální hodnotu, kterou dostanete, je 4095 a minimální hodnota je 0.

Přečtěte si potenciometru ESP32 analogRead serial monitor Arduino IDE demonstrace

balíme

V tomto článku jste se naučili, jak číst analogové vstupy pomocí ESP32 s Arduino IDE. V souhrnu:

  • deska ESP32 DEVKIT V1 doit (verze s 30 kolíky) má 15 pinů ADC, které můžete použít ke čtení analogových vstupů.
  • tyto piny mají rozlišení 12 bitů, což znamená, že můžete získat hodnoty od 0 do 4095.
  • Chcete-li číst hodnotu v Arduino IDE, jednoduše použijte funkci analogRead ().
  • špendlíky ADC ESP32 nemají lineární chování. Pravděpodobně nebudete schopni rozlišit mezi 0 A 0.1 V, nebo mezi 3.2 A 3.3 V. při používání pinů ADC to musíte mít na paměti.

doufáme, že vám tento krátký průvodce bude užitečný. Pokud se chcete dozvědět více o ESP32, přihlaste se do našeho kurzu: Naučte se ESP32 s Arduino IDE.

další návody ESP32, které se vám mohou také líbit:

  • ESP32 OLED Displej s Arduino IDE
  • ESP32 s DHT Čidlo Teploty a Vlhkosti pomocí Arduino IDE
  • ESP32 Webový Server s DHT hodnoty
  • 20+ ESP32 Projekty a Kurzy

Díky za čtení.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.

Previous post Jak Ian McKellen Téměř nehrál Gandalfa
Next post Kapitálu Ortopedickými Specialisty – Lanham