ESP32 ADC — lasiet analogās vērtības, izmantojot Arduino IDE

Esp32 Adc Lasiet Analogas Vertibas Izmantojot Arduino Ide



ADC (analogs to digital converter) ir elektroniska shēma, kas tiek piegādāta ar dažādām mikrokontrollera platēm vai integrēta mikrokontrollerī. ADC izmanto, lai pārveidotu analogo spriegumu no dažādiem sensoriem digitālā formā. Tāpat kā Arduino, ESP32 ir arī ADC, kas var nolasīt analogos datus. Uzzināsim vairāk par ESP32 ADC.

ESP32 ADC ievads

ESP32 platei ir divi integrēti 12 bitu ADC, kas pazīstami arī kā SAR (secīgās aproksimācijas reģistri) ADC. ESP32 plates ADC atbalsta 18 dažādus analogās ievades kanālus, kas nozīmē, ka mēs varam savienot 18 dažādus analogos sensorus, lai ņemtu no tiem ievadi.

Bet tas tā nav šajā gadījumā; šie analogie kanāli ir sadalīti divās kategorijās: kanāls 1 un kanāls 2, abiem šiem kanāliem ir dažas tapas, kas ne vienmēr ir pieejamas ADC ievadei. Apskatīsim, kādas ir šīs ADC tapas kopā ar citām.







ESP32 ADC tapas

Kā minēts iepriekš, ESP32 platei ir 18 ADC kanāli. No 18 tikai 15 ir pieejami DEVKIT V1 DOIT platē ar 30 GPIO.



Apskatiet savu dēli un identificējiet ADC tapas, kā mēs tos izcēlām zemāk esošajā attēlā:







1. kanāla ADC tapas

Tālāk ir sniegta ESP32 DEVKIT DOIT plates tapu kartēšana. ESP32 ADC1 ir 8 kanāli, taču DOIT DEVKIT plate atbalsta tikai 6 kanālus. Bet es garantēju, ka tie joprojām ir vairāk nekā pietiekami.

ADC1 GPIO PIN ESP32
CH0 36
CH1 NA 30 pin versijā ESP32 (Devkit MUST)
CH2 TAS
CH3 39
CH4 32
CH5 33
CH6 3. 4
CH7 35

Nākamajā attēlā redzami ESP32 ADC1 kanāli:



2. kanāla ADC tapas

DEVKIT DOIT paneļiem ir 10 analogie kanāli ADC2. Lai gan ADC2 ir 10 analogie kanāli analogo datu lasīšanai, šie kanāli ne vienmēr ir pieejami lietošanai. ADC2 tiek koplietots ar iebūvētajiem WiFi draiveriem, kas nozīmē, ka laikā, kad plate izmantos WIFI, šie ADC2 nebūs pieejami. Šīs problēmas risinājums ir izmantot ADC2 tikai tad, kad Wi-Fi draiveris ir izslēgts.

Zemāk redzamajā attēlā parādīta ADC2 kanāla tapu kartēšana.

Kā lietot ESP32 ADC

ESP32 ADC darbojas līdzīgi kā Arduino, vienīgā atšķirība šeit ir tā, ka tam ir 12 bitu ADC. Tātad ESP32 plate kartē analogās sprieguma vērtības diapazonā no 0 līdz 4095 digitālās diskrētās vērtībās.

  • Ja ESP32 ADC piešķirtais spriegums ir nulle ADC kanālam, digitālā vērtība būs nulle.
  • Ja ADC dotais spriegums ir maksimālais, nozīmē 3,3 V, izejas digitālā vērtība būs vienāda ar 4095.
  • Lai izmērītu augstāku spriegumu, mēs varam izmantot sprieguma dalītāja metodi.

Piezīme: ESP32 ADC pēc noklusējuma ir iestatīts uz 12 bitiem, tomēr ir iespējams to konfigurēt uz 0 bitu, 10 bitu un 11 bitu. 12 bitu noklusējuma ADC var izmērīt vērtību 2^12=4096 un analogais spriegums svārstās no 0V līdz 3,3V.

ADC ierobežojums ESP32

Šeit ir daži ESP32 ADC ierobežojumi:

  • ESP32 ADC nevar tieši izmērīt spriegumu, kas lielāks par 3,3 V.
  • Ja ir iespējoti Wi-Fi draiveri, ADC2 nevar izmantot. Var izmantot tikai 8 ADC1 kanālus.
  • ESP32 ADC nav ļoti lineārs; tas parāda nelinearitāte uzvedību un nevar atšķirt 3,2 V un 3,3 V. Tomēr ir iespējams kalibrēt ESP32 ADC. Šeit ir raksts, kas palīdzēs jums kalibrēt ESP32 ADC nelinearitātes uzvedību.

ESP32 nelinearitātes uzvedību var redzēt Arduino IDE sērijas monitorā.

Programmējiet ESP32 ADC, izmantojot Arduino IDE

Labākais veids, kā izprast ESP32 ADC darbību, ir ņemt potenciometru un nolasīt vērtības pret nulles pretestību līdz maksimumam. Tālāk ir sniegts ESP32 shēmas attēls ar potenciometru.

Savienojiet potenciometra vidējo tapu ar ESP32 digitālo tapu 25 un 2 spailes tapas ar attiecīgi 3,3 V un GND tapu.

Aparatūra

Nākamajā attēlā ir parādīta ESP32 aparatūra ar potenciometru. Tālāk ir norādīts nepieciešamo komponentu saraksts:

  • ESP32 DEVKIT DOIT dēlis
  • Potenciometrs
  • Maizes dēlis
  • Džemperu vadi

Kods

Atveriet Arduino IDE un augšupielādējiet tālāk norādīto kodu ESP32 platē. Lai pārbaudītu, kā instalēt un konfigurēt ESP32 ar Arduino IDE, noklikšķiniet šeit .

konst starpt Pin_potenciometrs = 25 ; /*Potenciometrs pievienots pie GPIO 25 (analogs ADC2_CH8)*/
starpt Val_potenciometrs = 0 ; /*Šeit tiks saglabāta potenciometra nolasītā vērtība*/
nederīgs uzstādīt ( ) {
Seriāls. sākt ( 115200 ) ; /*Sākas seriālā komunikācija*/
}
nederīgs cilpa ( ) {
Val_potenciometrs = analogLasīt ( Pin_potenciometrs ) ; /*Nolasa potenciometra vērtību*/
Seriāls. println ( Val_potenciometrs ) ; /*Drukā potenciometra vērtību*/
kavēšanās ( 2000. gads ) ; /*2 sek. aizkave*/
}

Šeit iepriekš minētajā kodā mēs inicializējam digitālo tapu 25 potenciometram uz ESP32 plates. Pēc ievades tiek inicializēts mainīgais Val_Potentiometer. Nākamais Seriālais savienojums tiek uzsākts, definējot bodu ātrumu.

Iekš cilpa koda daļa, izmantojot funkciju analogRead() ADC vērtības tiks nolasītas ESP32 25. tapā. Pēc tam, izmantojot Serial.print(), visas vērtības tiek izdrukātas sērijas monitorā.

Izvade

Izvade parāda analogās vērtības, kas samērotas ar digitālajām diskrētajām vērtībām. Kad nolasīšanas spriegums ir maksimālais, kas ir 3,3 V, digitālā izeja ir vienāda ar 4095 un, ja nolasīšanas spriegums ir 0 V, digitālā izeja kļūst par 0.

Secinājums

Analogie-digitālie pārveidotāji tiek izmantoti visur, it īpaši, ja mums ir jāsaista mikrokontrolleru plates ar analogajiem sensoriem un aparatūru. ESP32 ir divi ADC kanāli, kas ir ADC1 un ADC2. Šie divi kanāli apvieno 18 tapas analogo sensoru savienošanai. Tomēr 3 no tiem nav pieejami ESP32 30 kontaktu versijā. Lai uzzinātu vairāk par analogo vērtību lasīšanu, izlasiet rakstu.