denne artikel viser, hvordan man læser analoge indgange med ESP32 ved hjælp af Arduino IDE. Analog læsning er nyttig til at læse værdier fra variable modstande som potentiometre eller analoge sensorer.
læsning af analoge indgange med ESP32 er lige så let som at bruge analogRead(GPIO) – funktionen, der accepterer som argument den GPIO, du vil læse.
vi har også andre tutorials om, hvordan man bruger analoge stifter med ESP-kort:
- ESP8266 ADC-Læs analoge værdier med Arduino IDE, MicroPython og Lua
- ESP32 analoge aflæsninger med MicroPython
se videoen
du kan se videovejledningen eller fortsætte med at læse denne side for de skriftlige instruktioner.
analoge indgange (ADC)
læsning af en analog værdi med ESP32 betyder, at du kan måle varierende spændingsniveauer mellem 0 V og 3,3 V.
den målte spænding tildeles derefter en værdi mellem 0 og 4095, hvor 0 V svarer til 0, og 3,3 V svarer til 4095. Enhver spænding mellem 0 V og 3.3 V vil blive givet den tilsvarende værdi i mellem.
ADC er ikke-lineær
ideelt set ville du forvente en lineær opførsel, når du bruger ESP32 ADC-stifterne. Det sker dog ikke. Hvad du får er en adfærd som vist i følgende diagram:
denne adfærd betyder, at din ESP32 ikke er i stand til at skelne 3.3 V fra 3,2 V. Du får den samme værdi for begge spændinger: 4095.
det samme sker for meget lave spændingsværdier: for 0 V og 0.1 V får du den samme værdi: 0. Du skal huske dette, når du bruger ESP32 ADC-stifterne.
der er en diskussion om GitHub om dette emne.
analogRead() funktion
læsning af en analog indgang med ESP32 ved hjælp af Arduino IDE er så simpelt som at bruge analogRead () – funktionen. Det accepterer som argument, den GPIO, du vil læse:
analogRead(GPIO);
ESP32 understøtter målinger i 18 forskellige kanaler. Kun 15 er tilgængelige i DEVKIT V1 DOIT-kortet (version med 30 GPIOs).
tag fat i din ESP32 board pinout og find ADC-stifterne. Disse er fremhævet med en rød kant i nedenstående figur.
Lær mere om ESP32 GPIOs: ESP32 Pinout Reference.
disse analoge input pins har 12-bit opløsning. Dette betyder, at når du læser en analog indgang, kan dens rækkevidde variere fra 0 til 4095.
Bemærk: ADC2-stifter kan ikke bruges, når der bruges trådløst internet. Så hvis du bruger trådløs internetadgang, og du har problemer med at få værdien fra en ADC2 GPIO, kan du overveje at bruge en ADC1 GPIO i stedet, der skulle løse dit problem.
andre nyttige funktioner
der er andre mere avancerede funktioner til brug med ADC-pins, der kan være nyttige i andre projekter.
- analogReadResolution(opløsning): Indstil prøvebits og opløsning. Det kan være en værdi mellem 9 (0 – 511) og 12 Bit (0-4095). Standard er 12-bit opløsning.
- analogsetbredde (bredde): Indstil prøvebits og opløsning. Det kan være en værdi mellem 9 (0 – 511) og 12 Bit (0-4095). Standard er 12-bit opløsning.
- analogsetcykler(cykler): Indstil antallet af cyklusser pr. Standard er 8. Rækkevidde: 1 til 255.
- analogSetSamples(prøver): Indstil antallet af prøver i området. Standard er 1 prøve. Det har en effekt af stigende følsomhed.
- analogSetClockDiv(dæmpning): Indstil divider for ADC-uret. Standard er 1. Rækkevidde: 1 til 255.
- analogSetAttenuation(dæmpning): indstiller indgangsdæmpningen for alle ADC-stifter. Standard er ADC_11db. Accepterede værdier:
- ADC_0db: indstiller ingen dæmpning. ADC kan måle op til ca. 800 mV (1V input = ADC læsning af 1088).
- ADC_2_5db: ADC ‘ s indgangsspænding dæmpes og udvider måleområdet til op til ca. 1100 mV. (1V input = ADC læsning af 3722).
- ADC_6db: ADC ‘ s indgangsspænding dæmpes og udvider måleområdet til op til ca. 1350 mV. (1V input = ADC læsning af 3033).
- ADC_11db: ADC ‘ s indgangsspænding dæmpes og udvider måleområdet til op til ca. 2600 mV. (1V input = ADC læsning af 1575).
- analogSetPinAttenuation (pin, dæmpning): indstiller indgangsdæmpningen for den angivne pin. Standard er ADC_11db. Dæmpningsværdier er de samme fra tidligere funktion.
- adcAttachPin(pin): Vedhæft en pin til ADC (rydder også enhver anden analog tilstand, der kan være tændt). Returnerer sandt eller falsk resultat.
- adcStart(pin), adcBusy(pin) og resultatadcend (pin): starter en ADC-konvertering på vedhæftet pin ‘ s bus. Kontroller, om konvertering på pinkoden ADC bus kører i øjeblikket (returnerer TRUE eller FALSE). Få resultatet af konverteringen: returnerer 16-bit heltal.
der er en meget god video, der forklarer disse funktioner, som du kan se her.
Læs analoge værdier fra et Potentiometer med ESP32
for at se, hvordan alt binder sammen, laver vi et simpelt eksempel for at læse en analog værdi fra et potentiometer.
til dette eksempel har du brug for følgende dele:
- ESP32 doit DEVKIT V1 Board (Læs Best ESP32 development boards)
- Potentiometer
- Breadboard
- Jumper ledninger
du kan bruge de foregående links eller gå direkte til MakerAdvisor.com/tools for at finde alle dele til dine projekter til den bedste pris!
skematisk
led et potentiometer til din ESP32. Potentiometerets midterste stift skal tilsluttes GPIO 34. Du kan bruge følgende skematiske diagram som reference.
kode
Vi programmerer ESP32 ved hjælp af Arduino IDE, så sørg for at have ESP32-tilføjelsen installeret, før du fortsætter:
- vinduer instruktioner-ESP32 Board in Arduino IDE
- Mac og Linuks instruktioner – ESP32 Board in Arduino IDE
åbn din Arduino IDE og kopier følgende kode.
// 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);}
se rå kode
denne kode læser simpelthen værdierne fra potentiometeret og udskriver disse værdier i den serielle skærm.
i koden starter du med at definere den GPIO, som potentiometeret er tilsluttet. I dette eksempel, GPIO 34.
const int potPin = 34;
i opsætningen () initialiseres en seriel kommunikation med en baudhastighed på 115200.
Serial.begin(115200);
i loop () skal du bruge analogRead () – funktionen til at læse den analoge indgang fra potPin.
potValue = analogRead(potPin);
Udskriv endelig de værdier, der læses fra potentiometeret i den serielle skærm.
Serial.println(potValue);
Upload koden leveret til din ESP32. Sørg for, at du har valgt det rigtige bord og COM-port i menuen Funktioner.
test af eksemplet
når du har uploadet koden og trykket på ESP32 reset-knappen, skal du åbne den serielle skærm med en baudhastighed på 115200. Drej potentiometeret og se værdierne ændre sig.
den maksimale værdi, du får, er 4095, og den mindste værdi er 0.
indpakning
i denne artikel har du lært, hvordan du læser analoge indgange ved hjælp af ESP32 med Arduino IDE. Sammendrag:
- ESP32 DEVKIT V1 DOIT-kortet (version med 30 stifter) har 15 ADC-stifter, du kan bruge til at læse analoge indgange.
- disse stifter har en opløsning på 12 bit, hvilket betyder, at du kan få værdier fra 0 til 4095.
- for at læse en værdi i Arduino IDE, skal du blot bruge funktionen analogRead ().
- ESP32 ADC-stifterne har ikke en lineær opførsel. Du vil sandsynligvis ikke være i stand til at skelne mellem 0 og 0.1 V eller mellem 3.2 og 3.3 V. Du skal huske det, når du bruger ADC-stifterne.
vi håber du har fundet denne korte vejledning nyttig. Hvis du vil lære mere om ESP32, skal du tilmelde dig vores kursus: Lær ESP32 med Arduino IDE.
andre ESP32-guider, som du måske også kan lide:
- ESP32 OLED-skærm med Arduino IDE
- ESP32 med DHT temperatur-og fugtighedsføler ved hjælp af Arduino IDE
- ESP32-Server med DHT-aflæsninger
- 20+ ESP32-projekter og Tutorials
tak for læsning.