ESP32 ADC – Basahin ang Analog Values ​​gamit ang Arduino IDE

Esp32 Adc Basahin Ang Analog Values Gamit Ang Arduino Ide



Ang ADC (analog to digital converter) ay isang electronic circuit na may iba't ibang microcontroller boards o isinama sa loob ng microcontroller. Ang ADC ay ginagamit upang i-convert ang analog na boltahe mula sa iba't ibang mga sensor sa digital form. Tulad ng Arduino, ang ESP32 ay mayroon ding ADC na maaaring magbasa ng analog data. Alamin natin ang higit pa tungkol sa ESP32 ADC.

ESP32 ADC Panimula

Ang ESP32 board ay may dalawang pinagsamang 12-bit ADC na kilala rin bilang SAR (Successive Approximation Registers) ADCs. Ang ESP32 board ADCs ay sumusuporta sa 18 iba't ibang analog input channel na nangangahulugang maaari tayong magkonekta ng 18 iba't ibang analog sensor upang kumuha ng input mula sa kanila.

Ngunit hindi ito ang kaso dito; ang mga analog na channel na ito ay nahahati sa dalawang kategorya channel 1 at channel 2, parehong mga channel na ito ay may ilang mga pin na hindi palaging magagamit para sa ADC input. Tingnan natin kung ano ang mga ADC pin na iyon kasama ng iba pa.







ESP32 ADC Pins

Tulad ng nabanggit kanina ang ESP32 board ay may 18 ADC channel. Sa 18, 15 lang ang available sa DEVKIT V1 DOIT board na may kabuuang 30 GPIO.



Tumingin sa iyong board at tukuyin ang mga ADC pin habang na-highlight namin ang mga ito sa larawan sa ibaba:







Mga Pin ng ADC ng Channel 1

Ang sumusunod ay ang ibinigay na pin mapping ng ESP32 DEVKIT DOIT board. Ang ADC1 sa ESP32 ay may 8 channel ngunit ang DOIT DEVKIT board ay sumusuporta lamang sa 6 na channel. Ngunit ginagarantiya ko na ang mga ito ay higit pa sa sapat.

ADC1 GPIO PIN ESP32
CH0 36
CH1 NA sa 30 Pin na Bersyon na ESP32 (Devkit DAPAT)
CH2 NA
CH3 39
CH4 32
CH5 33
CH6 3. 4
CH7 35

Kasunod na larawan ay nagpapakita ng mga ESP32 ADC1 channel:



Mga Pin ng ADC ng Channel 2

Ang mga DEVKIT DOIT board ay mayroong 10 analog channel sa ADC2. Bagama't may 10 analog channel ang ADC2 para magbasa ng analog data, hindi palaging magagamit ang mga channel na ito. Ibinabahagi ang ADC2 sa mga driver ng onboard na WiFi, na nangangahulugang sa oras na gumagamit ang board ng WIFI ay hindi magiging available ang mga ADC2 na ito. Ang solusyon sa problemang ito ay ang paggamit lamang ng ADC2 kapag naka-off ang driver ng Wi-Fi.

Ang larawan sa ibaba ay nagpapakita ng pin mapping ng ADC2 channel.

Paano Gamitin ang ESP32 ADC

Gumagana ang ESP32 ADC sa katulad na paraan tulad ng Arduino ang pagkakaiba lamang dito ay mayroon itong 12 bit ADC. Kaya, ang ESP32 board ay nagmamapa ng mga analog na halaga ng boltahe mula 0 hanggang 4095 sa mga digital discrete na halaga.

  • Kung ang boltahe na ibinigay sa ESP32 ADC ay zero sa isang ADC channel ang digital na halaga ay magiging zero.
  • Kung ang boltahe na ibinigay sa ADC ay maximum ay nangangahulugan na 3.3V ang output digital na halaga ay magiging katumbas ng 4095.
  • Upang sukatin ang mas mataas na boltahe, maaari naming gamitin ang paraan ng divider ng boltahe.

Tandaan: Ang ESP32 ADC ay bilang default na nakatakda sa 12-bits, gayunpaman posible itong i-configure sa 0-bit,10-bit, at 11-bit. Maaaring sukatin ng 12-bit na default na ADC ang halaga 2^12=4096 at ang analog na boltahe ay mula 0V hanggang 3.3V.

Limitasyon ng ADC sa ESP32

Narito ang ilang limitasyon ng ESP32 ADC:

  • Hindi maaaring direktang masukat ng ESP32 ADC ang boltahe na higit sa 3.3V.
  • Kapag pinagana ang mga driver ng Wi-Fi, hindi magagamit ang ADC2. 8 channel lang ng ADC1 ang magagamit.
  • Ang ESP32 ADC ay hindi masyadong linear; ito ay nagpapakita ng non-linearity pag-uugali at hindi matukoy ang pagkakaiba sa pagitan ng 3.2V at 3.3V. Gayunpaman, posibleng i-calibrate ang ESP32 ADC. Dito ay isang artikulo na gagabay sa iyo upang i-calibrate ang ESP32 ADC na nonlinearity na pag-uugali.

Ang nonlinearity na pag-uugali ng ESP32 ay makikita sa serial monitor ng Arduino IDE.

Programang ESP32 ADC Gamit ang Arduino IDE

Ang pinakamahusay na paraan ng pag-unawa sa pagtatrabaho ng ESP32 ADC ay ang pagkuha ng potentiometer at basahin ang mga halaga laban sa zero resistance hanggang sa maximum. Ang sumusunod ay ang ibinigay na circuit na imahe ng ESP32 na may potentiometer.

Ikonekta ang gitnang pin ng potentiometer gamit ang digital pin 25 ng ESP32 at 2 terminal pin na may 3.3V at GND pin ayon sa pagkakabanggit.

Hardware

Ang sumusunod na larawan ay nagpapakita ng hardware ng ESP32 na may potentiometer. Ang sumusunod ay ang listahan ng mga sangkap na kailangan:

  • ESP32 DEVKIT DOIT board
  • Potensyomiter
  • Breadboard
  • Mga wire ng jumper

Code

Buksan ang Arduino IDE at i-upload ang code sa ibaba sa ESP32 board. Upang suriin kung paano i-install at i-configure ang ESP32 gamit ang Arduino IDE click dito .

const int Pin_Potentiometer = 25 ; /*Potentiometer konektado sa GPIO 25 (Analog ADC2_CH8)*/
int Val_Potentiometer = 0 ; /*Ang potentiometer read value ay iimbak dito*/
walang bisa setup ( ) {
Serial. magsimula ( 115200 ) ; /*Nagsisimula ang serial communication*/
}
walang bisa loop ( ) {
Val_Potentiometer = analogRead ( Pin_Potentiometer ) ; /*Pagbabasa ng halaga ng potentiometer*/
Serial. println ( Val_Potentiometer ) ; /*Prints Potentiometer value*/
pagkaantala ( 2000 ) ; /*delay ng 2sec*/
}

Dito sa code sa itaas, sinisimulan namin ang digital pin 25 para sa potentiometer sa ESP32 board. Susunod na kumuha ng input, ang isang variable na Val_Potentiometer ay sinisimulan. Ang susunod na Serial na komunikasyon ay sinisimulan sa pamamagitan ng pagtukoy ng baud rate.

Nasa loop bahagi ng code gamit ang analogRead() function ADC values ​​ay mababasa sa pin 25 ng ESP32. Susunod gamit ang Serial.print() lahat ng value ay naka-print sa serial monitor.

Output

Ipinapakita ng output ang mga analog value na nakamapa laban sa mga digital discrete value. Kapag ang read voltage ay maximum na 3.3V digital output ay katumbas ng 4095 at kapag ang read voltage ay 0V ang digital output ay nagiging 0.

Konklusyon

Ginagamit ang mga analog sa digital converter sa lahat ng dako lalo na kapag kailangan nating i-interface ang mga microcontroller board na may mga analog sensor at hardware. Ang ESP32 ay may dalawang channel para sa ADC na ADC1 at ADC2. Ang dalawang channel na ito ay pinagsama upang magbigay ng 18 pin para sa interfacing analog sensors. Gayunpaman, 3 sa mga ito ay hindi magagamit sa ESP32 30 pin na bersyon. Upang makakita ng higit pa tungkol sa pagbabasa ng mga analog na halaga, basahin ang artikulo.