Pull-up / Pull-down weerstand

Pull-up weerstanden worden in veel elektronische circuits gebruikt, niet alleen bij drukknoppen. Hier zijn enkele andere toepassingen:

  • Digitale ingangen: Om de staat van een digitale ingang (hoog of laag) duidelijk te definiëren wanneer deze niet actief is.
  • I2C-bus: Worden gebruikt voor de SDA (data lijn) en SCL (klok lijn) om de lijnen hoog te trekken wanneer geen enkel apparaat communiceert.
  • SPI-bus: Soms gebruikt op de chip select lijnen om te verzekeren dat een apparaat alleen communiceert wanneer expliciet geselecteerd.
  • Resetlijnen: Om ervoor te zorgen dat microcontrollers of andere IC’s niet per ongeluk resetten door ruis op de resetlijn.
  • Logic level conversion: Om een veilig en duidelijk hoog signaalniveau te bieden in logische circuits die werken op verschillende voedingsspanningen.

Deze weerstanden helpen bij het voorkomen van ongewenste ruis en zorgen voor een stabiele staat in digitale circuits wanneer een ingang niet actief wordt aangestuurd.

Let op!
Het betreft standaard weerstanden. Hun functie als pull-up of pull-down weerstand wordt bepaald door hun positie in het elektrische circuit.

Een zwevende aansluiting
Een waarde die je uitleest op een digitale poort, kan in theorie twee waarden hebben, namelijk ‘HIGH’ (ook wel 1 of ‘true’) of ‘LOW’ (ook wel 0 of ‘false’). Alleen is het niet zo zwart/wit. Op een bijvoorbeeld ESP, die we in onze workshops gebruiken, kan een spanning van 0 t/m 3,3 Volt staan. En daar zitten dus veel waarden tussen. Dus wanneer is het HIGH of LOW? Deze overgang ligt ergens in het midden en kan verschillen per microprocessorboard. Een zwevende aansluiting kan daar dus ergens zitten (de spanning is niet steeds gelijk) en zodoende kan dit het ene moment een HIGH geven en even later een LOW.

Hieronder wordt uitgelegd hoe je een pull-up/pull-down-weerstand gebruikt in combinatie met een drukknop.

Als je een drukknop gebruikt dan wordt een kant van de drukknop op de min aangesloten en de andere kant op de aansluiting (van het microprossecorboard) die je gaat uitlezen. Als de knop ingedrukt is en je leest de waarde van de aansluiting, dan is deze ‘LOW’ (0 of ‘false’). Maar als de knop niet ingedrukt is, is deze waarde zwevend. De waarde kan ‘LOW’ (0 of ‘false’) of ‘HIGH’ (1 of ‘true’) zijn. Kort gezegd weet je niet of de knop nu echt niet ingedrukt is.

Hier gaat de Pull-up of Pull-down weerstand ons helpen.

Pull-up weerstand
Het probleem is dat als de knop niet ingedrukt is, de waarde zwevend is. Dit moeten we dus wijzigen. We doen dit door een weerstand (10KΩ of groter) te plaatsen. De ene kant van de weerstand verbindt je met de plus en de andere kant met de zijde van de drukknop waar ook het draadje aanzit dat naar de aansluiting gaat die je gaat uitlezen. Hierdoor is deze aansluiting verbonden met de plus als de drukknop niet ingedrukt is en geeft dus altijd een waarde ‘HIGH’ (ook wel 1 of ‘true’). Als de drukknop ingedrukt wordt, wordt de aansluiting naar de min geleid. Dit geeft altijd een waarde ‘LOW’ (ook wel 0 of ‘false’).

Pull-down weerstand
Nu wordt de weerstand aan de ene kant weer op de drukknop aangesloten waar ook het draadje op aangesloten zit dat naar de aansluiting gaat die je gaat uitlezen. De andere kant van de weerstand wordt nu met de min verbonden. De andere kant van de drukknop wordt nu met de plus verbonden. Het resultaat is dat als de drukknop niet ingedrukt wordt de uit te lezen aansluiting via de weerstand naar de min gaat en dus altijd een ‘LOW’ (0 of ‘false’) geeft. En als de drukknop ingedrukt wordt, wordt er een verbinding gemaakt met de plus. Dit geeft dan altijd een ‘HIGH’ (1 of ‘true’).
Sommige aansluitingen moeten bij het opstarten ‘LOW’ zijn (zij hebben bij het opstarten een dubbele functie).

Zie de afbeelding hieronder hoe dit er uitziet op een breadboard. Het blauwe draadje gaat naar de ingang die je gaat uitlezen.

Let op!
Bij een Pull-up weerstand is de waarde bij een NIET ingedrukte drukknop ‘HIGH’ (1 of ‘true’) en bij een Pull-down weerstand is deze ‘LOW’ (0 of ‘false’).

Er is nog een andere oplossing. Je gebruikt op het breadboard de zwevende toestand situatie (meest linker opstelling in de afbeelding). Bij het definiëren van de ingang in de software (programma) geef je aan dat de aansluiting (waar de drukknop op aangesloten zit) het microprocessorboard gebruik moet maken van een interne Pull-up weerstand. Niet elke aansluiting heeft deze interne Pull-up weerstand, zie de pin bezetting van het microprocessorboard dat je gebruikt.