Innholdsfortegnelse:

Slik driver du mange lysdioder fra noen få mikrokontrollerpinner. 6 trinn (med bilder)
Slik driver du mange lysdioder fra noen få mikrokontrollerpinner. 6 trinn (med bilder)

Video: Slik driver du mange lysdioder fra noen få mikrokontrollerpinner. 6 trinn (med bilder)

Video: Slik driver du mange lysdioder fra noen få mikrokontrollerpinner. 6 trinn (med bilder)
Video: Using 28BYJ-48 Stepper Motor Push button Speed with 8 projects: Ultimate Video Tutorial Lesson 107 2024, November
Anonim
Slik driver du mange lysdioder fra noen få mikrokontroller -pinner
Slik driver du mange lysdioder fra noen få mikrokontroller -pinner

Ved å bruke det faktum at mange mikrokontrollerpinner har tre tilstander (+V, GND eller "høy impedans", kan du drive N*(N-1) lysdioder fra N-pinner. Så den lille 8-pinners mikrokontrolleren som en PIC12Fxxx eller en ATtiny11 kan kjøre 20 lysdioder har fem tilgjengelige utgangspinner, og har fortsatt en pinne igjen for en slags inngang. Se også

Trinn 1: 20 lysdioder på 5 pins

20 lysdioder på 5 pins
20 lysdioder på 5 pins

Den nåværende avlingen av mikrokontrollere med lav pin-telling (6 pins til 20 pins på

hele pakken) er attraktivt priset og "søt", men spørsmålet stilles om hvordan du best kan bruke disse pinnene til vanlige applikasjoner, for eksempel kjøring av lysdioder. En direkte-tilnærming til drivende LED-lys bruker en pinne for hver LED. Et tradisjonelt multipleksingsopplegg der rader med LED -anoder drives av ett sett med N -pinner og hver rad sin vanlige katode drives av et annet sett med M -pinner, klarer å lyse N*M -lysdioder med N+M -pinner. Men på en prosessor med bare 5 eller færre utganger (som tilfellet er med de fleste 8-pinners mikrokontrollere), får du knapt flere utganger enn direkte stasjon.

Trinn 2: Charlieplexing

Charlieplexing
Charlieplexing

Forutsatt at utgangspinnene faktisk er tri-state-standbare (aktive høye, aktive lave og høye impedanser (inngang)) er det også mulig å dele rad- og kolonnedriverne og kontrollere N*(N-1) lysdioder med bare N-pinner. En pinne er koblet til vanlige katoder i en rad med lysdioder og drivenlow, og de resterende N-1-pinnene er koblet til anodene og eitherdrevet høyt for å lyse den kolonnen, eller forlates som innganger for å forlate LEDoff. Maxim kaller denne teknikken "Charlieplexing", og beskriver den i (1); Microchip nevner også dette i dokumentet (2) (og implementerer det også på PICKit 1-kortet.) (1) "Charlieplexing-Redusert Pin-Count LED-displaymultiplexering" https://www.maxim-ic.com/appnotes. cfm/appnote_number/1880 (2) "Tips 'n triks 8-pinners FLASH PIC mikrokontrollere" https://ww1.microchip.com/downloads/en/DeviceDoc/40040b.pdf (3) Charlieplexing LEDs- The theory An Instructable av rgbphil

Trinn 3: Sette det i gang

Sette det på jobb
Sette det på jobb
Sette det på jobb
Sette det på jobb

Dette driver 20 lysdioder fra en ATtiny11. En tidligere versjon av dette brettet var

faktisk bygget og vises som hovedsidebildet. Jeg er redd bildet av skjematikken er ganske håpløst; du trenger Eagle for å fortelle deg hvilke signaler som er tilkoblet hvor.

Trinn 4: Mindre og mer allsidig …

Mindre og mer allsidig …
Mindre og mer allsidig …

Siden det meste av brettet blir tatt opp av LED -arrayet, kan vi få plass

for enten en Attiny -brikke ELLER en mikrochip PIC12F -brikke. Skrump lysdiodene ned til 3 mm og gå til et tosidig brett, og vi får noe om 27x44 mm Akk, dette brettet er ikke testet ennå …

Trinn 5: Itty Bitty

Bitteliten
Bitteliten

Mikrochip har selvfølgelig sine 6 -pinners PIC10F -brikker, som kan drive en

bare 6 lysdioder fra de 3 utgangspinnene. Dette er omtrent 16 mm i diameter. Når du går til 603 lysdioder, kan du bli litt mindre, men jeg er ikke sikker på hva som er poenget.

Trinn 6: Programvare

Programvaren blir litt rotete av flere årsaker:

1) for de viste kretskortene, er lysdiodene lagt ut på en måte som er praktisk for PCB -oppsettet, i stedet for i "riktig" bitrekkefølge. IMO, dette er måten å gjøre ting på, men det betyr at rad 1 ikke nødvendigvis betyr bit 1, eller kolonne 3 betyr ikke bit 3. Dette krever et nivå av kartlegging mellom den vanlige rad-/kolonneadresseringen og biter som trenger innstilling. 2) Siden de samme bitene brukes for anoder og katoder, kan den vanlige (rad) tilkoblingen for noen biter være i midten av drevne (kolonne) biter. Det betyr at du må flytte kolonnebiter rundt, avhengig av om de er før eller etter radbiten for det settet med kolonner. 3) Du må avlede utgangsord for både ioport og portretningsregister. Den vedlagte ASM -koden for ATtiny11 er et "proof of concept". Det er pinlig uoptimalisert og dårlig kommentert, men det er alt jeg har skrevet så langt.

Anbefalt: