Image of eBits Academy fundamentals illustration

Pull-up- & Pull-down modstande, ganske enkelt et helt uundværligt værktøj!

  • January 20, 2022
  • |
  • Jesper Nielsen

 

Hvis du har oplevet at dine elektronik projekter ikke altid agerer som ønsket, kan det være at du har manglet en pull-up- eller pull-down modstand et sted i dit kredsløb. Denne artikel har til formål at beskrive og illustrere eksempler på anvendelse af pull-up og pull-down modstande og ligeledes vise hvad der kan ske hvis der ikke anvendes en sådan modstand. Det er dermed et rigtig godt værktøj at have i sin værktøjskasse til fremtidige projekter.
Når man taler om Pull-up og Pull-down modstande har de til formål at kunne hjælpe med at holde en indgang på et fast niveau enten logisk 1 eller logisk 0. Hvis indgangen ikke holdes kan den stå og "svæve". Det betyder at indgangen kan stå og hoppe mellem logisk 0 og logisk 1. Som oftest med mange ting er der ikke en fin skarp overgang mellem 0 og 1, men derimod en kurve op fra logisk 0 til logisk 1 vice versa. 
Som det ses på ovenstående billede er dette en grafisk illustration af hvad en ESP32 bruger definerede spændingsgrænser til at skelne mellem logisk 0 og 1. Billedet er kun en generel illustration: ESP32 GPIO arbejder med 3.3V og må ikke tilsluttes 5V. Brug databladets VIL- og VIH-grænser for den konkrete chip.
Nedenstående diagrammer viser hvor modstanden placeres alt efter om man ønsker at anvende en pull-up eller pull-down modstand. Nedenfor vil der gåes lidt mere i dybden med hver af de to metoder, samt dens udregninger og praktiske eksempler.
 

 

 

INDHOLDSFORTEGNELSE

PULL-UP & dens anvendelse

En pull-up modstand er ofte nyttig hvis man ønsker styre en input-pin til en kendt tilstand, når der ikke er noget input. Dette gøres ved at tilføje en pull-up modstand i serie med en spændingsforsyning, på ovenstående billede eksempelvis +5V for et passende 5V-system. Til ESP32 skal pull-up forbindes til 3.3V, ikke 5V. Det vil altså sige at indgangen læses som logisk 1 eller høj.

UDREGNING AF VÆRDI

Pull-up-modstanden skal vælges ud fra udgangens tilladte sink-strøm og VOL ved lavt niveau samt indgangens lækstrøm, VIH og signalets stigetid. Strømgrænsen sætter en nedre modstandsgrænse; lækstrøm og stigetid kan sætte en øvre grænse. 10k ohm er et almindeligt udgangspunkt til langsomme knapindgange, men er ikke en universel værdi. Den ældre formelillustration nedenfor må ikke bruges alene til dimensionering.

Vsupply er forsyningsspændingen. Vh(min), også kaldet VIH, er den mindste spænding, der garanteres læst som høj. Tilladt sink-strøm skal aflæses sammen med udgangens VOL-specifikation i databladet; VIH er ikke spændingsfaldet over en aktiv lav udgang.

PULL-DOWN & dens anvendelse

Pull-down har den modsatte funktion af pull-up, nemlig at trække ned. Her som ovenstående billede illustrerer sættes en modstand i serie med jord/ground. Det resulterer i at indgangen læses som logisk 0 eller lav.

UDREGNING AF VÆRDI

Pull-down-modstanden skal holde indgangen under VIL trods lækstrøm, samtidig med at en aktiv høj udgang ikke overbelastes. Lækstrømmen sætter typisk en øvre modstandsgrænse, mens tilladt udgangsstrøm kan sætte en nedre grænse. 10k ohm er et almindeligt udgangspunkt til langsomme knapindgange; kontrollér datablad og signalhastighed. Den ældre formelillustration nedenfor må ikke bruges alene til dimensionering.

Vl(max), også kaldet VIL, er den højeste spænding, der garanteres læst som lav. Skeln mellem indgangens lækstrøm og den strøm, en aktiv udgang kan levere (source); de bruges til forskellige dimensioneringsgrænser.

EKSEMPLER PÅ SVÆVENDE INDGANG (HI Z)

Eksemplet er implementeret på en ESP32, vha. af MicroPython. For at læse mere om implementering af MicroPython på ESP32, kan du læse følgende artikel: Micropython

Der er i eksemplet en modtand i serie med en LED på pin 4. På Pin23 læser vi så om der er 0 eller 1. Eksemplet går ud på at vise at uden en modstand der trækker til logisk 0(pull down) eller en modstand der trækker til logisk 1(pull up). Risikere man at indgangen står og svæver mellem 0 og 1. Af nedenstående video ses dette illustreret.

from machine import Pin
import time

p4=Pin(4,Pin.OUT)
p23=Pin(23,Pin.IN)

print(p23.value())

while 1:
    print(p23.value())
    if p23.value() == 1:
        p4.value(1)
    else:
        p4.value(0)
    time.sleep_ms(100)
    

 

PRAKTISKE EKSEMPLER PÅ LØSNING

Et eksempel på pull-down modstand i serie med en switch, for at sikre vi ikke svæver eller får uønskede aflæsninger på Pin23 i dette tilfælde. Nedenstående diagram viser hvordan opstillingen på fumlebræt er lavet. Pull down modstanden er i dette tilfælde R2. Af videoen ses det hvordan vi vha. switchen SW1 kan styre læsningen af Pin23. 

Nedenstående diagram viser det modsatte, nemlig en pull up modstand R4, som holder indgangen høj eller med andre ord, sørger for at indgangen læser et logisk 1. Ved at trykke på switchen SW2, trækkes det til logisk 0 og LED'en vil dermed slukke. 

SPECIFIKATIONER

For at kunne udføre ovenstående tests, er følgende materialer brugt. Det kan alt sammen købes her på ebits.dk. OBS. trykknap, LED og dupont-kabler kan købes i Komponent mega-kittet nederst i tabellen.

GODE VIDEOER OM PULL-UP OG PULL-DOWN

Efterlad en kommentar

Bemærk venligst, at kommentarer skal godkendes, før de offentliggøres.