Forstå Pull-Up-motstander
Før du dykker inn i detaljene til ESP32 pull-up pins, er det viktig å forstå rollen til pull-up motstander i en krets. Når en digital inngangspinne blir stående flytende (ikke koblet til noen spenningskilde), kan den lese tilfeldige verdier, noe som gjør det vanskelig å bestemme dets logiske nivå.
For å unngå dette problemet er en pull-up motstand koblet mellom inngangspinnen og en spenningskilde (typisk Vcc) for å sikre at inngangen leser en høy (logisk 1) tilstand som standard. Når inngangen er koblet til et lavt (logisk 0) signal, trekker motstanden inngangen ned til bakken, slik at inngangen kan lese en lav tilstand.
Innebygde Pull-Up Pins på ESP32
ESP32-mikrokontrolleren har 34 generelle inngangs-/utgangspinner (GPIO), som kan konfigureres som enten digitale eller analoge pinner. Blant disse 34 pinnene har noen pinner innebygde pull-up motstander som kan aktiveres av programvare.
Følgende tabell viser pinnene på ESP32 som har innebygde pull-up motstander:
PIN-kode | Pin navn | Innebygd Pull-Up Resistor |
0 | GPIO0 | Ja |
2 | GPIO2 | Ja |
4 | GPIO4 | Ja |
5 | GPIO5 | Ja |
12 | GPIO12 | Ja |
1. 3 | GPIO13 | Ja |
14 | GPIO14 | Ja |
femten | GPIO15 | Ja |
25 | GPIO25 | Ja |
26 | GPIO26 | Ja |
27 | GPIO27 | Ja |
32 | GPIO32 | Ja |
33 | GPIO33 | Ja |
3. 4 | GPIO34 | Nei |
35 | GPIO35 | Nei |
36 | GPIO36 | Nei |
39 | GPIO39 | Nei |
Som du kan se, har de fleste digitale pinnene på ESP32 innebygde pull-up motstander. Imidlertid har ikke alle pinner denne funksjonen. Pinne 34, 35, 36 og 39 har ikke innebygde pull-up motstander.
Merk: I ESP32 er integrerte pull-up og pull-down motstander kun tilgjengelig i pinner som støtter både inngang og utgang. GPIOer 34-39 , som er begrenset til kun inngang, har ikke disse motstandene innebygd.
Sjekk hele ESP32 Pinout-referanse .
Aktiverer Pull-Up Resistors på ESP32
For å aktivere pull-up-motstanden på en ESP32-pinne, kan du bruke gpio_set_pull_mode() funksjon levert av ESP-IDF-rammeverket.
Denne funksjonen tar to argumenter:
- GPIO-pinnummeret
- Pull-up-modusen
Pull-up-modusen kan være enten GPIO_PULLUP_ENABLE eller GPIO_PULLUP_DISABLE . Her er en eksempelkode som aktiverer pull-up-motstanden på GPIO2:
#include 'driver/gpio.h'tomrom enable_pull_up ( ) {
gpio_set_pull_mode ( GPIO_NUM_2 , GPIO_PULLUP_ENABLE ) ;
}
pin-modus ( 5 , INPUT_PULLUP ) ;
Det er viktig å merke seg at aktivering av pull-up-motstanden på en pinne vil påvirke dens oppførsel når pinnen brukes som en utgang. I dette tilfellet vil pull-up-motstanden fungere som en svak strømkilde og kan påvirke utgangsspenningsnivået.
Alternativt kan vi også aktivere interne pull-ups på ESP32 ved å bruke pinMode() Arduino funksjon.
pin-modus ( 5 , INPUT_PULLUP ) ;Koden ovenfor vil aktivere den interne pull-up motstanden på pinne 5 . På samme måte kan du aktivere den interne nedtrekksmotstanden ved å spesifisere modusen INPUT_PULLDOWN .
Konklusjon
Pull-up-motstander er essensielle komponenter i digitale kretser, og ESP32-mikrokontrolleren har innebygde pull-up-motstander på de fleste av sine digitale pinner. Aktivering av disse motstandene kan sikre stabile logiske nivåer og unngå flytende inngangsproblemer. Det er imidlertid viktig å merke seg at ikke alle pinner på ESP32 har innebygde pull-up motstander, så det er viktig å sjekke ESP32 pinout eller dataark før du designer en krets. I tillegg kan aktivering av pull-up-motstanden påvirke oppførselen til pinnen når den brukes som en utgang.