3.9. Schakelaars en pull-weerstanden

Een GPIO-uitgang stuurt externe hardware aan. Een GPIO-ingang is het tegenovergestelde: de camera leest de spanning op een pin en rapporteert die als 0 of 1. Het eenvoudigste ingangsapparaat is een schakelaar – en om er betrouwbaar van af te kunnen lezen is er naast de schakelaar zelf nog één stukje elektronica nodig.

3.9.1. Schakelaars en zwevende ingangen

Een schakelaar is een mechanisch contact: twee stukken metaal die elkaar raken wanneer de schakelaar gesloten is en uit elkaar gaan wanneer hij open is. Elektrisch gezien is dat het hele apparaat. Er zit geen spanningsbron in; een schakelaar alleen levert slechts “verbonden” of “niet verbonden”.

Een schakelaar rechtstreeks tussen een GPIO-pin en massa bedraden betekent dat de pin:

  • Op 0 V staat wanneer de schakelaar gesloten is (nu verbonden met massa).

  • Zwevend is wanneer de schakelaar open is (met niets verbonden).

Een zwevende pin heeft geen gedefinieerde spanning. De ingang leest wat er toevallig in de buurt is – overspraak van nabijgelegen signalen, ruis van de voeding, zelfs statische lading op een vinger dicht bij de draad. value() retourneert onvoorspelbare mengsels van 0 en 1, vele malen per seconde.

3.9.2. Pull-up- en pull-down-weerstanden

De oplossing is een pull-weerstand: een weerstand met hoge waarde (10 kΩ tot 100 kΩ is typisch) die de ingang aan een bekende rail koppelt wanneer de schakelaar open is.

Twee schakelschema's naast elkaar. Links: een pull-up- schakeling met een weerstand van de ingangspin omhoog naar de voeding en een schakelaar van de ingangspin omlaag naar GND. Rechts: een pull-down-schakeling met een weerstand van de ingangspin omlaag naar GND en een schakelaar van de ingangspin omhoog naar de voeding.

Pull-up- (links) en pull-down-configuraties (rechts) voor een schakelaaringang.

  • Pull-up. De weerstand koppelt de ingang aan de voedingsrail. Wanneer de schakelaar open is, sijpelt er slechts een kleine stroom door de weerstand en leest de pin hoog. Wanneer de schakelaar gesloten is, sluit hij de pin kort naar massa; de pin leest laag. De weerstand begrenst de stroom die anders van voeding naar massa zou lopen via de gesloten schakelaar.

  • Pull-down. Het spiegelbeeld: de weerstand koppelt de ingang aan massa, en de schakelaar verbindt met de voeding. Open leest laag, gesloten leest hoog.

Pull-up is de gangbaardere conventie – “actief-laag” knoppen. De MCU zelf voorziet in ingebouwde pull-ups en pull-downs die kunnen worden ingeschakeld met Pin.PULL_UP of Pin.PULL_DOWN, waardoor de externe weerstand volledig wegvalt.