Taula de continguts:

Com conduir molts LEDs des de pocs pins de microcontrolador: 6 passos (amb imatges)
Com conduir molts LEDs des de pocs pins de microcontrolador: 6 passos (amb imatges)

Vídeo: Com conduir molts LEDs des de pocs pins de microcontrolador: 6 passos (amb imatges)

Vídeo: Com conduir molts LEDs des de pocs pins de microcontrolador: 6 passos (amb imatges)
Vídeo: Part 05 - Moby Dick Audiobook by Herman Melville (Chs 051-063) 2024, Desembre
Anonim
Com conduir molts LEDs des de pocs pins de microcontrolador
Com conduir molts LEDs des de pocs pins de microcontrolador

Utilitzant el fet que molts pins de microcontrolador tenen tres estats (+ V, GND o "alta impedència"), podeu conduir N * (N-1) LEDs de N pins. Així, el petit microcontrolador de 8 pines com un PIC12Fxxx o un ATtiny11 pot accionar A 20 LEDs hi ha cinc pins de sortida disponibles i encara els queda un pin per a algun tipus d’entrada. Vegeu també

Pas 1: 20 LEDs en 5 pins

20 LEDs en 5 pins
20 LEDs en 5 pins

El cultiu actual de microcontroladors de baix nombre de pins (de 6 pins a 20 pins activats)

tot el paquet) tenen un preu atractiu i són "bonics", però es planteja la pregunta sobre com es pot fer un millor ús d'aquests pins per a aplicacions habituals, com ara la conducció de LEDs. Un enfocament de connexió directa per conduir els LED consumeix un pin per cada LED. Un esquema tradicional de multiplexació on les files d’ànodes LED són impulsades per un conjunt de N pins i el càtode comú de cada fila és impulsat per un altre conjunt de pins M aconsegueix encendre LED N * M amb pins N + M. No obstant això, en un processador amb només 5 o menys sortides (com és el cas de la majoria de microcontroladors de 8 pins), amb prou feines obtindreu més sortides que la unitat directa.

Pas 2: Charlieplexing

Charlieplexing
Charlieplexing

Suposant que els pins de sortida són realment triestats (activa, baixa activa i alta impedència (entrada)), també és possible compartir els controladors de fila i columna i controlar els LED N * (N-1) amb només N pins. Un pin està connectat a càtodes comuns d'una fila de LEDs i baixa, i els pins N-1 restants es connecten als ànodes i es mouen per encendre aquesta columna o es deixen com a entrades per deixar el LEDoff. Maxim anomena aquesta tècnica "Charlieplexing" i la descriu a (1); Microchip també esmenta això al seu document (2) (i també a la placa PICKit 1). (1) "Charlieplexing - Reduced Pin-Count LED Display Multiplexing" https://www.maxim-ic.com/appnotes. cfm / appnote_number / 1880 (2) "Tips 'n Tricks 8-pin FLASH PIC Microcontrollers" https://ww1.microchip.com/downloads/en/DeviceDoc/40040b.pdf(3) Charlieplexing LEDs- The theory An Instructable by rgbphil

Pas 3: posar-lo a treballar

Posant-ho a treballar
Posant-ho a treballar
Posant-ho a treballar
Posant-ho a treballar

Això alimenta 20 LED d'un ATtiny11. Una versió anterior d'aquest tauler era

realment construït i apareix com la foto de la pàgina principal. Em temo que la imatge de l’esquema és força desesperant; necessiteu Eagle per dir-vos quins senyals hi ha connectats.

Pas 4: més petit i més versàtil …

Més petit i versàtil …
Més petit i versàtil …

Com que la major part del tauler està ocupada per la matriu LED, podem deixar espai

per a un xip Attiny O un xip PIC12F de microxip. Reduïu els LED fins a 3 mm i aneu a un tauler de doble cara i obtindrem alguna cosa de 27x44 mm. Per desgràcia, aquest tauler encara no s'ha provat …

Pas 5: Itty Bitty

Itty Bitty
Itty Bitty

El microxip, per descomptat, té els seus xips PIC10F de 6 pins, capaços de conduir un

només 6 LED dels 3 pins de sortida. Això té uns 16 mm de diàmetre. Anar a 603 LED us permet reduir la seva mida, però no estic segur de quin punt té.

Pas 6: programari

El programari es torna una mica desordenat per motius de servidor:

1) per a les PCB que es mostren, els LED es distribueixen de manera que sigui convenient per al disseny de PCB, en lloc de fer-ho en un ordre de bits "correcte". IMO, aquesta és la manera de fer les coses, però vol dir que la fila 1 no vol dir necessàriament el bit 1, o el coluimn 3 no vol dir el bit 3. Això requereix un nivell de mapatge entre l'adreça de fila / columna habitual i la bits que necessiten configuració. 2) Com que s'utilitzen els mateixos bits per ànodes i càtodes, la connexió comuna (fila) d'alguns bits pot estar al mig dels bits impulsats (columna). Això vol dir que heu de canviar els bits de columna segons si es troben abans o després del bit de fila per a aquest conjunt de columnes. 3) Heu de derivar paraules de sortida per al registre ioport i el port. El codi ASM adjunt per a ATtiny11 és una "prova de concepte". És vergonyosament poc optimitzat i mal comentat, però és tot el que he escrit fins ara.

Recomanat: