Indholdsfortegnelse:

Sådan køres en masse lysdioder fra et par mikrokontrollerpinde .: 6 trin (med billeder)
Sådan køres en masse lysdioder fra et par mikrokontrollerpinde .: 6 trin (med billeder)

Video: Sådan køres en masse lysdioder fra et par mikrokontrollerpinde .: 6 trin (med billeder)

Video: Sådan køres en masse lysdioder fra et par mikrokontrollerpinde .: 6 trin (med billeder)
Video: Using Digispark Attiny85 Mini Arduino boards: Lesson 108 2024, November
Anonim
Sådan køres en masse lysdioder fra et par mikrokontrollerpinde
Sådan køres en masse lysdioder fra et par mikrokontrollerpinde

Ved at bruge mange mikrokontrollerpinde til at have tre tilstande (+V, GND eller "høj impedens", kan du drive N*(N-1) lysdioder fra N-pins. Så den lille 8-polede mikrokontroller som en PIC12Fxxx eller en ATtiny11 kan køre 20 lysdioder har fem tilgængelige udgangsstifter og har stadig en pin tilbage til en slags input. Se også

Trin 1: 20 lysdioder på 5 pins

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

Den nuværende afgrøde af mikrokontroller med lavt tællerantal (6 ben til 20 ben på

hele pakken) er attraktivt prissatte og 'søde', men spørgsmålet rejser sig om, hvordan du bedst kan bruge disse stifter til almindelige applikationer som f.eks. at køre LED'er. En direkte forbindelse til drivende LED'er bruger en pin til hver LED. Et traditionelt multiplexingsskema, hvor rækker af LED -anoder drives af et sæt N -stifter, og hver ræks fælles katode drives af et andet sæt M -ben, formår at tænde N*M -LED'er med N+M -ben. På en processor med kun 5 eller færre udgange (som det er tilfældet med de fleste 8-bens mikrokontroller), får du dog næppe flere output end direkte drev.

Trin 2: Charlieplexing

Charlieplexing
Charlieplexing

Forudsat at udgangsstifterne faktisk er i tri-state-stand (aktiv høj, aktiv lav og høj impedens (input)) er det også muligt at dele række- og søjledrivere og styre N*(N-1) lysdioder med kun N-ben. Den ene pin er forbundet til fælles katoder i en række LED'er og drivenlow, og de resterende N-1-pins er forbundet til anoderne og eitherdrevet højt for at tænde den kolonne eller efterlades som input for at forlade LEDoff. Maxim kalder denne teknik "Charlieplexing", og beskriver den i (1); Microchip nævner også dette i deres dokument (2) (og implementerer også på PICKit 1-tavlen.) (1) "Charlieplexing-Reduceret Pin-Count LED Display Multiplexing" https://www.maxim-ic.com/appnotes. cfm/appnote_number/1880 (2) "Tips 'n tricks 8-ben FLASH PIC mikrokontrollere" https://ww1.microchip.com/downloads/en/DeviceDoc/40040b.pdf (3) Charlieplexing LEDs- The theory An Instructable af rgbphil

Trin 3: Sætte det i gang

Sætte det på arbejde
Sætte det på arbejde
Sætte det på arbejde
Sætte det på arbejde

Dette driver 20 lysdioder fra en ATtiny11. En tidligere version af dette bord var

faktisk bygget og vises som hovedsidebillede. Jeg er bange for, at billedet af skematikken er ret håbløst; du har brug for Eagle til at fortælle dig, hvilke signaler der er forbundet hvor.

Trin 4: Mindre og mere alsidig …

Mindre og mere alsidig …
Mindre og mere alsidig …

Da det meste af tavlen optages af LED -arrayet, kan vi få plads

for enten en Attiny -chip ELLER en mikrochip PIC12F -chip. Skrump lysdioderne ned til 3 mm og gå til et dobbeltsidet bord, og vi får noget om 27x44 mm Ak, dette bord er ikke blevet testet endnu …

Trin 5: Itty Bitty

Lille bitte
Lille bitte

Mikrochip har naturligvis deres 6 pin PIC10F chips, der er i stand til at køre en

kun 6 lysdioder fra de 3 udgangsstifter. Det er cirka 16 mm i diameter. Når du går til 603 LED'er, kan du blive lidt mindre, men jeg er ikke sikker på, hvad der er meningen.

Trin 6: Software

Softwaren bliver lidt rodet af flere årsager:

1) for de viste printkort er LED'erne lagt ud på en måde, der er bekvem for PCB -layoutet, frem for i "korrekt" bitrækkefølge. IMO, dette er måden at gøre tingene på, men det betyder, at række 1 ikke nødvendigvis betyder bit 1, eller kolonne 3 betyder ikke bit 3. Dette kræver et niveau af kortlægning mellem den sædvanlige række/kolonne -adressering og bits, der skal indstilles. 2) Da de samme bits bruges til anoder og katoder, kan den fælles (række) forbindelse for nogle bits være i midten af drevne (kolonne) bits. Det betyder, at du skal flytte kolonne bits rundt, afhængigt af om de er før eller efter række bit for det sæt kolonner. 3) Du skal udlede outputord for både ioport og portretningsregisteret. Den vedhæftede ASM -kode til ATtiny11 er et "proof of concept". Det er pinligt uoptimeret og dårligt kommenteret, men det er alt, hvad jeg har skrevet indtil nu.

Anbefalede: