3.6. Basiselektronica¶
Om iets externs vanaf een GPIO-pin aan te sturen is er een schakeling nodig aan de andere kant van de pin. Drie begrippen uit de basiselektronica – spanning, stroom en het verband daartussen via een weerstand – komen in elke dergelijke schakeling terug.
3.6.1. Spanning, stroom, weerstand¶
Spanning (volt, V) is het potentiaalverschil tussen twee punten in een schakeling. De voedingsrail van de chip kan zich op 3,3 V ten opzichte van massa bevinden; een GPIO-pin die hoog wordt aangestuurd staat op dezelfde 3,3 V.
Stroom (ampère, A, of milliampère, mA) is de ladingsstroom door een draad. Stroom keert altijd terug naar waar hij vandaan kwam, dus om enige stroom te laten vloeien moet de schakeling een volledige lus vormen van de voeding terug naar massa.
Weerstand (ohm, Ω) is de mate waarin het pad die stroom belemmert. Het doel van een weerstand is de stroom op een bekende waarde in te stellen bij een bekende spanning.
De wet van Ohm verbindt ze met elkaar:
De wet van Ohm in zijn drie vormen.¶
In woorden: de spanning over een weerstand is gelijk aan de stroom erdoorheen maal de weerstand. Als je twee van de drie kent, geeft de algebra de derde.
3.6.2. Diodes¶
Een diode is een component met twee aansluitingen die stroom in één richting geleidt (van anode naar kathode) en in de andere richting blokkeert.
Een diode geleidt alleen van anode naar kathode. Een LED is een diode die licht uitzendt tijdens het geleiden.¶
Een diode heeft ook een voorwaartse spanning (Vf) – de spanningsval erover wanneer er stroom in de geleidende richting vloeit. Zodra de aangelegde spanning Vf bereikt, gedraagt de diode zich ongeveer als een draad; daaronder vloeit er vrijwel geen stroom.
3.6.3. LED’s¶
Een lichtgevende diode (LED) is een diode die zijn geleidingsstroom omzet in zichtbaar of infrarood licht. De helderheid schaalt mee met de stroom; de kleur wordt bepaald door de chemie van de LED, niet door de aansturing.
Typische voorwaartse spanningen van LED’s:
Rood: 1,8 – 2,2 V
Groen of geel: 2,0 – 2,4 V
Blauw of wit: 2,8 – 3,4 V
Een bruikbare werkstroom voor een indicator-LED is 5 – 20 mA. Hogere stromen zijn helderder, maar verkorten de levensduur van de LED en kunnen de aanstuurlimiet van de GPIO-pin overschrijden.
3.6.4. De stroombegrenzende weerstand¶
Een LED rechtstreeks tussen een GPIO-pin en massa aansluiten zou vrijwel onbeperkte stroom laten vloeien: zodra de voorwaartse spanning is bereikt, lijkt de LED op een bijna-kortsluiting. Een serieweerstand tussen de pin en de LED stelt de stroom in op een veilige waarde.
Een serieweerstand stelt de LED-stroom in.¶
De voedingsspanning verdeelt zich tussen de weerstand en de LED: de LED neemt zijn voorwaartse spanning op, de weerstand neemt de rest op. Volgens de wet van Ohm:
R = (Vsupply - Vf) / If
Voor een rode LED (Vf ≈ 2.0 V) aangestuurd vanaf een 3,3 V GPIO-pin bij 10 mA:
R = (3.3 - 2.0) / 0.010 = 130 Ω
In de praktijk kies je de dichtstbijzijnde grotere standaardwaarde (150 Ω of 220 Ω). Het resultaat is een iets minder heldere LED met een gezondere veiligheidsmarge. Grijp naar 200 – 470 Ω als verstandige standaardwaarde wanneer de exacte helderheid er niet toe doet.
3.6.5. Waarom elk onderdeel ertoe doet¶
De vorm van elke GPIO-uitgangsschakeling komt voort uit de vier hierboven genoemde begrippen:
Spanning bepaalt de beschikbare energie aan de pin. Een 3,3 V GPIO heeft 3,3 V te besteden over wat er ook tussen de pin en massa is aangesloten.
Een diode (in dit geval een LED) verbruikt een deel van die spanning als voorwaartse spanningsval en weigert in de verkeerde richting te geleiden – hij bepaalt welke richting en het vaste aandeel.
Een stroombegrenzende weerstand verbruikt de resterende spanning en zet het overgebleven budget om in een gecontroleerde stroom. Zonder deze zou de LED alle stroom trekken die de pin kan leveren – meestal genoeg om één of beide te vernietigen.
De wet van Ohm maakt de waarde van de weerstand berekenbaar: gegeven de resterende spanning en de gewenste stroom, valt
Ruit de algebra.
Spanning, stroom, weerstand, diodes en één herschreven vergelijking zijn genoeg om elke basale GPIO-uitgangstrap te ontwerpen.
Dezelfde onderdelen zaten al die tijd verstopt achter de ingebouwde LED. machine.LED("LED_RED").on() laat de LED branden omdat het bord van de camera alles eromheen al levert – de stroombegrenzende weerstand, de draad naar massa, de LED zelf – en de class schakelt alleen de GPIO van het silicium erachter. De kijk dat “één regel een LED laat branden” klopt; het is gewoon een korte manier om te zeggen “stuur die schakeling aan”. Haal de abstractie weg en precies de bovenstaande schakeling blijft over.
machine.Pin is hetzelfde silicium, blootgesteld zonder de omringende onderdelen. Het script regelt de spanning van de pin rechtstreeks; jij levert de weerstand (gedimensioneerd met de wet van Ohm), de LED en het retourpad naar massa. Dezelfde vier begrippen komen, in iets andere combinaties, terug achter het ontdenderen van schakelaars, PWM-filtering en motoraansturing.