Stap 4: Ten slotte... een Charlieplex matrix
We kunnen ook het idee van de aandrijving van de complentary in een charlieplex matrix uitbreiden. Het onderstaande diagram toont de minimale charlieplex matrix die bestaat uit drie weerstanden en zes LED's en het gebruik van slechts drie pennen van de microcontroller. Nu zie je hoe handig deze methode is? Als je wilde rijden zes LEDs op de normale manier... moet u zes pennen van de microcontroller.
In feite met N pinnen van een microcontroller kunt u potentieel station N * (N - 1) LEDs.
Voor 3 pinnen is dit 3 * (3 - 1) = 3 * 2 = 6 LEDs.
Dingen zich snel stapelen met meer pinnen. Met 6 pinnen rijdt u 6 * (6 - 1) = 6 * 5 = 30 LEDs... wow!
Nu met de charlieplexing bit.
Bekijk het diagram hieronder. We hebben drie aanvullende paren, een paar tussen een elke combinatie van micro output pinnen. Een paar tussen A-B, een paar tussen B-C en één paar tussen A-C.
Als u de verbinding verbrak pin C voor zouden nu we hebben dezelfde situatie als vóór. Met 5V op pin A en 0V op pin B, LED1 zal gloeien, LED2 wordt reverse-vooringenomen en huidige niet zal uitvoeren. Met 5V op pin B en 0V op pin A LED2 zal gloeien en LED1 wordt reverse-vooringenomen.
Dit volgt voor de andere micro pinnen.
Als we pin B verbroken en pin A ingesteld op 5V en pin C naar 0V zou LED5 gloed. Omkeren zodat pin A 0V en pin C 5V dan LED6 zou gloed.
Hetzelfde voor de complementair paar tussen pins B-C.
Hangen, hoor ik u zeggen. Laten we het tweede geval een beetje nauwer.
We hebben 5V op pin A en 0V op pin C. We hebt pin B (de middelste knop) losgekoppeld.
OK, dus een huidige stroomt door LED5, huidige is niet stromend door LED6 omdat het omgekeerde bevooroordeeld (en dus zijn LED2 en LED4)... maar er is ook een pad voor de huidige te nemen van pin A, t/m LED1 en LED3 is er niet? Waarom zijn deze LEDs niet evenals gloeien.
Hier is het hart van de charlieplexing-regeling. Er is inderdaad een stroom stroomt zowel LED1 en LED3, maar de spanning over de beide gecombineerd is alleen gonna be gelijk is aan de spanning over LED5. Meestal hadden ze de helft van de spanning over hen die LED5 heeft. Dus als we 1.9V over LED5 hebben, zullen alleen 0.95V over LED1 en 0.95V over LED3.
Van de If / Vf kromme genoemd aan het begin van dit artikel kunnen we zien dat de stroom bij deze halve spanning nog veel lager dan 20mA... en die LEDs niet zichtbaar gloeien zal.
Dit staat bekend als de huidige stelen.
Dus de meeste van de huidige zullen vloeien al de LED die we willen, de meest directe pad door het minste aantal LEDs (dwz één LED), in plaats van een willekeurige combinatie van de serie van LEDs.
Als u de huidige stroom voor elke combinatie van 5V en 0V zetten met elk twee station pinnen van de charlieplex matrix gekeken, ziet u het zelfde ding. Slechts één LED zal gloeien tegelijk.
Als een oefening, kijken naar de eerste situatie. 5V op pin A en 0V op pin B, verbreken pin C. LED1 is de kortste weg voor de huidige te nemen, en LED 1 zal gloeien. Een kleine stroom zal ook LED5 passeren, dan back-up LED4 op pin B...but opnieuw, deze twee LED's in serie zal niet zitten kundig voor fraude genoeg stroom ten opzichte van LED 1 te fel gloeien.
Dus wordt de kracht van charlieplexing gerealiseerd. Zie het tweede diagram dat het schema voor mijn Microdot horloge is... 30 LEDs, met slechts 6 pinnen. Mijn klok Minidot 2 is in feite een uitgebreide versie van de Microdot... dezelfde 30 LEDs gerangschikt in een matrix.
Om een patroon in de matrix, elke LED verlicht kort aanstaat, dan de micro verplaatst naar de volgende. Als het is gepland om te worden verlicht wordt aangezet opnieuw voor een korte tijd. Door snel scannen via de LEDs snel genoeg een principe genaamd 'persistentie van de visie' kan een matrix van LED's te tonen van een statische patroon. Het artikel van Minidot 2 heeft een beetje van een toelichting op dit beginsel.
Maar wacht... Ik heb schijnbaar verdoezeld een beetje in de beschrijving hierboven. Wat is dit 'verbreken pin B', 'verbreken pin C' business. Gelieve volgende sectie.