denne artikkelen viser hvordan du leser analoge innganger MED ESP32 ved Hjelp Av Arduino IDE. Analog lesing er nyttig for å lese verdier fra variable motstander som potensiometre eller analoge sensorer.
Lese analoge innganger MED ESP32 er like enkelt som å bruke analogRead (GPIO) – funksjonen, som aksepterer som argument, GPIO du vil lese.
Vi har også andre opplæringsprogrammer om hvordan du bruker analoge pinner MED ESP-kort:
- ESP8266 ADC-Les Analoge Verdier Med Arduino IDE, MicroPython og Lua
- ESP32 Analoge Avlesninger Med MicroPython
Se Videoen
du kan se videoopplæringen eller fortsette å lese denne siden for de skriftlige instruksjonene.
Analoge Innganger (ADC)
Leser en analog verdi MED ESP32 betyr at du kan måle varierende spenningsnivåer mellom 0 V og 3.3 V.
den målte spenningen tilordnes deretter en verdi mellom 0 og 4095, hvor 0 v tilsvarer 0 og 3,3 v tilsvarer 4095. Enhver spenning mellom 0 V og 3,3 V vil bli gitt den tilsvarende verdien i mellom.
ADC Er Ikke-lineær
Ideelt sett forventer du en lineær oppførsel når DU bruker ESP32 ADC-pinnene. Men det skjer ikke. Det du får er en oppførsel som vist i følgende diagram:
DENNE oppførselen betyr AT ESP32 IKKE kan skille 3.3 V fra 3,2 V. du får samme verdi for begge spenningene: 4095.
det samme skjer for svært lave spenningsverdier: for 0 V og 0,1 V får du samme verdi: 0. Du må huske på dette når DU bruker ESP32 ADC-pinnene.
Det er en diskusjon På GitHub om dette emnet.
analogRead () – Funksjon
Å Lese en analog inngang MED ESP32 ved Hjelp Av Arduino IDE er like enkelt som å bruke analogRead () – funksjonen. Den aksepterer som argument, GPIO du vil lese:
analogRead(GPIO);
ESP32 støtter målinger i 18 forskjellige kanaler. Bare 15 er tilgjengelige I DEVKIT V1 DOIT board(versjon med 30 GPIOs).
Ta TAK I ESP32-tavlen og finn ADC-pinnene. Disse er uthevet med en rød kant i figuren nedenfor.
Lær mer OM Esp32 GPIOs: ESP32 Pinout Referanse.
disse analoge inngangspinnene har 12-biters oppløsning. Dette betyr at når du leser en analog inngang, kan rekkevidden variere fra 0 til 4095.
Merk: ADC2-pins kan ikke brukes Når Wi-Fi brukes. Så, hvis Du bruker Wi-Fi, og du har problemer med å få verdien FRA EN ADC2 GPIO, kan du vurdere å bruke EN ADC1 GPIO i stedet, som bør løse problemet.
Andre Nyttige Funksjoner
det finnes andre mer avanserte funksjoner å bruke MED ADC-pinnene som kan være nyttige i andre prosjekter.
- analogReadResolution (oppløsning): angi prøvebitene og oppløsningen. Det kan være en verdi mellom 9 (0 – 511) og 12 biter (0 – 4095). Standard er 12-biters oppløsning.
- analogSetWidth( bredde): angi prøvebiter og oppløsning. Det kan være en verdi mellom 9 (0 – 511) og 12 biter (0 – 4095). Standard er 12-biters oppløsning.
- analogSetCycles( sykluser): angi antall sykluser per prøve. Standard er 8. Rekkevidde: 1 til 255.
- analogsetsprøver (prøver): angi antall prøver i området. Standard er 1 prøve. Det har en effekt av økende følsomhet.
- analogSetClockDiv (demping): still inn deleren for ADC-klokken. Standard er 1. Rekkevidde: 1 til 255.
- analogSetAttenuation (demping): angir inngangsdemping for ALLE ADC-pinner. Standard Er ADC_11db. Aksepterte verdier:
- ADC_0db: angir ingen demping. ADC kan måle opp til ca 800 mV (1v inngang = ADC lesing av 1088).
- ADC_2_5db: inngangsspenningen TIL ADC vil bli dempet, og utvide måleområdet til opptil ca. 1100 mV. (1v inngang = ADC lesing av 3722).
- ADC_6db: inngangsspenningen TIL ADC vil bli dempet, og utvide måleområdet til opptil ca. 1350 mV. (1v inngang = ADC lesing av 3033).
- ADC_11db: inngangsspenningen TIL ADC vil bli dempet, og utvide måleområdet til opptil ca. 2600 mV. (1v inngang = ADC lesing av 1575).
- analogSetPinAttenuation( pin, demping): angir inngangsdempingen for den angitte pin-koden. Standard Er ADC_11db. Dempningsverdiene er de samme fra tidligere funksjon.
- adcAttachPin (pin): Fest en pin TIL ADC (fjerner også annen analog modus som kan være på). Returnerer SANT eller USANT resultat.
- adcStart (pin), adcBusy (pin) og resultadcEnd(pin): starter EN ADC-konvertering på festet pin-buss. Sjekk om konvertering PÅ pin ADC bussen kjører (returnerer SANT eller USANT). Få resultatet av konverteringen: returnerer 16-biters heltall.
det er en veldig god video som forklarer disse funksjonene som du kan se her.
Les Analoge Verdier fra Et Potensiometer MED ESP32
For å se hvordan alt knytter seg sammen, gjør vi et enkelt eksempel for å lese en analog verdi fra et potensiometer.
for dette eksemplet trenger du følgende deler:
- ESP32 DOIT DEVKIT V1 Board (les BESTE ESP32 utvikling boards)
- Potensiometer
- Brødfjel
- Jumper ledninger
du kan bruke de foregående linker eller gå direkte til MakerAdvisor.com/tools for å finne alle delene til prosjektene dine til den beste prisen!
Skjematisk
Koble et potensiometer TIL ESP32. Potensiometerets midtpinne skal kobles TIL GPIO 34. Du kan bruke følgende skjematisk diagram som referanse.
Kode
VI programmerer ESP32 ved Hjelp Av Arduino IDE, så sørg for at DU har ESP32-tillegget installert før du fortsetter:
- Windows instruksjoner-ESP32 Bord I Arduino IDE
- mac og Linux instruksjoner-ESP32 Bord I Arduino IDE
Åpne 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);}
Vis raw-kode
denne koden leser bare verdiene fra potensiometeret og skriver ut disse verdiene I Seriell Skjerm.
i koden starter du med å definere GPIO potensiometeret er koblet til. I dette eksemplet ER GPIO 34.
const int potPin = 34;
initialiser en seriell kommunikasjon med en overføringshastighet på 115200 i oppsettet ().
Serial.begin(115200);
bruk analogRead () – funksjonen I loop()til å lese den analoge inngangen fra potpinen.
potValue = analogRead(potPin);
til Slutt skriver du ut verdiene som leses fra potensiometeret i seriell skjerm.
Serial.println(potValue);
Last opp koden som er oppgitt TIL DIN ESP32. Pass på at du har riktig brett og COM-port valgt i Verktøy-menyen.
Testing Av Eksemplet
etter opplasting av koden og trykk PÅ ESP32 reset-knappen, åpner Du Seriell Skjerm med en baudrate på 115200. Roter potensiometeret og se verdiene endres.
den maksimale verdien du får er 4095 og minimumsverdien er 0.
Innpakning
i denne artikkelen har du lært å lese analoge innganger ved HJELP AV ESP32 Med Arduino IDE. I sammendrag:
- ESP32 DEVKIT V1 DOIT board (versjon med 30 pins) har 15 ADC pins du kan bruke til å lese analoge innganger.
- disse pinnene har en oppløsning på 12 biter, noe som betyr at du kan få verdier fra 0 til 4095.
- for å lese en verdi I Arduino IDE, bruker du bare analogRead () – funksjonen.
- ESP32 ADC-pinnene har ikke en lineær oppførsel. Du vil sannsynligvis ikke kunne skille mellom 0 og 0,1 V, eller mellom 3,2 Og 3,3 V. du må huske på det når DU bruker ADC-pinnene.
vi håper du har funnet denne korte guiden nyttig. Hvis DU vil lære MER OM ESP32, melde deg på kurset Vårt: Lær ESP32 med Arduino IDE.
ANDRE ESP32 guider som du kanskje også liker:
- ESP32 OLED-Skjerm Med Arduino IDE
- ESP32 MED Dht Temperatur-Og Fuktighetssensor ved Hjelp Av Arduino IDE
- ESP32 Webserver med dht-avlesninger
- 20+ ESP32 Prosjekter Og Opplæringsprogrammer
takk for at du leste.