Pull-up weerstanden begrijpen
Voordat we ingaan op de details van ESP32-pull-up-pinnen, is het belangrijk om de rol van pull-up-weerstanden in een circuit te begrijpen. Wanneer een digitale ingangspin zwevend blijft (niet aangesloten op een spanningsbron), kan deze willekeurige waarden lezen, waardoor het moeilijk wordt om het logische niveau te bepalen.
Om dit probleem te voorkomen, is er een pull-up-weerstand aangesloten tussen de ingangspin en een spanningsbron (meestal Vcc) om ervoor te zorgen dat de ingang standaard een hoge (logische 1) status aangeeft. Wanneer de ingang is verbonden met een laag (logisch 0) signaal, trekt de weerstand de ingang naar de grond, waardoor de ingang een lage status kan lezen.
Ingebouwde optrekpennen op ESP32
De ESP32-microcontroller heeft 34 algemene input/output (GPIO)-pinnen, die kunnen worden geconfigureerd als digitale of analoge pinnen. Van deze 34 pinnen hebben sommige pinnen ingebouwde pull-up-weerstanden die door software kunnen worden ingeschakeld.
De volgende tabel toont de pinnen op ESP32 die ingebouwde pull-up weerstanden hebben:
Pincode | Pin-naam | Ingebouwde pull-up weerstand |
0 | GPIO0 | Ja |
2 | GPIO2 | Ja |
4 | GPIO4 | Ja |
5 | GPIO5 | Ja |
12 | GPIO12 | Ja |
13 | GPIO13 | Ja |
14 | GPIO14 | Ja |
vijftien | GPIO15 | Ja |
25 | GPIO25 | Ja |
26 | GPIO26 | Ja |
27 | GPIO27 | Ja |
32 | GPIO32 | Ja |
33 | GPIO33 | Ja |
3. 4 | GPIO34 | Nee |
35 | GPIO35 | Nee |
36 | GPIO36 | Nee |
39 | GPIO39 | Nee |
Zoals u kunt zien, hebben de meeste digitale pinnen op ESP32 ingebouwde pull-up-weerstanden. Niet alle pinnen hebben deze functie echter. Pinnen 34, 35, 36 en 39 hebben geen ingebouwde pull-up weerstanden.
Opmerking: In ESP32 zijn geïntegreerde pull-up- en pull-down-weerstanden alleen beschikbaar in pinnen die zowel invoer als uitvoer ondersteunen. GPIO's 34-39 , die beperkt zijn tot alleen invoer, hebben deze weerstanden niet ingebouwd.
Controleer de volledige ESP32 Pinout-referentie .
Pull-up weerstanden inschakelen op ESP32
Om de pull-up-weerstand op een ESP32-pin in te schakelen, kunt u de gpio_set_pull_mode() functie geleverd door het ESP-IDF-framework.
Deze functie heeft twee argumenten:
- De GPIO-pincode
- De pull-up-modus
De pull-up-modus kan beide zijn GPIO_PULLUP_ENABLE of GPIO_PULLUP_DISABLE . Hier is een voorbeeldcode die de pull-up-weerstand op GPIO2 mogelijk maakt:
#include 'driver/gpio.h'leegte inschakelen_pull_up ( ) {
gpio_set_pull_mode ( GPIO_NUM_2 , GPIO_PULLUP_ENABLE ) ;
}
pinMode ( 5 , INPUT_PULLUP ) ;
Het is belangrijk op te merken dat het inschakelen van de pull-up-weerstand op een pin zijn gedrag beïnvloedt wanneer de pin als uitvoer wordt gebruikt. In dit geval zal de pull-up-weerstand fungeren als een zwakke stroombron en kan dit het uitgangsspanningsniveau beïnvloeden.
Als alternatief kunnen we ook interne pull-ups op ESP32 inschakelen met behulp van de pinMode() Arduino-functie.
pinMode ( 5 , INPUT_PULLUP ) ;De bovenstaande code schakelt de interne pull-up-weerstand op pin in 5 . Evenzo kunt u de interne pull-down-weerstand inschakelen door de modus op te geven INPUT_PULLDOWN .
Conclusie
Pull-up-weerstanden zijn essentiële componenten in digitale circuits en de ESP32-microcontroller biedt ingebouwde pull-up-weerstanden op de meeste van zijn digitale pinnen. Het inschakelen van deze weerstanden kan zorgen voor stabiele logische niveaus en zwevende invoerproblemen voorkomen. Het is echter belangrijk op te merken dat niet alle pinnen op ESP32 ingebouwde pull-up weerstanden hebben, dus het is belangrijk om de ESP32 pinout of datasheet voordat u een circuit ontwerpt. Bovendien kan het inschakelen van de pull-up-weerstand het gedrag van de pin beïnvloeden wanneer deze als uitvoer wordt gebruikt.