Taula de continguts:

Matriu de pantalla LED 5x4 mitjançant un segell bàsic 2 (bs2) i Charlieplexing: 7 passos
Matriu de pantalla LED 5x4 mitjançant un segell bàsic 2 (bs2) i Charlieplexing: 7 passos

Vídeo: Matriu de pantalla LED 5x4 mitjançant un segell bàsic 2 (bs2) i Charlieplexing: 7 passos

Vídeo: Matriu de pantalla LED 5x4 mitjançant un segell bàsic 2 (bs2) i Charlieplexing: 7 passos
Vídeo: Matriz de LED's de 5x4.mp4 2024, Desembre
Anonim
Matriu de pantalla LED 5x4 mitjançant un segell bàsic 2 (bs2) i Charlieplexing
Matriu de pantalla LED 5x4 mitjançant un segell bàsic 2 (bs2) i Charlieplexing

Tens un segell bàsic 2 i alguns LED addicionals asseguts? Per què no jugar amb el concepte de charlieplexing i crear una sortida amb només 5 pins?

Per a aquesta instrucció, utilitzaré el BS2e, però qualsevol membre de la família BS2 hauria de treballar.

Pas 1: Charlieplexing: què, per què i com

Primer deixem el perquè. Per què utilitzar el charlieplexing amb un segell bàsic 2? --- Prova del concepte: aprengueu el funcionament del charlieplexing i apreneu sobre el BS2. Això em pot ser útil més endavant utilitzant xips de 8 pins més ràpids (només 5 d’ells seran E / S).--- Raó útil: bàsicament no n’hi ha cap. El BS2 és massa lent per mostrar-se sense parpellejar notable. Vaig aprendre sobre el charlieplexing a www.instructables.com i tu també pots: Charlieplexing LEDs - The theory How to drive a lot of LEDs from a few microcontroller pins. També a wikipedia: Charlieplexing Com puc conduir 20 leds amb 5 pins d'E / S? --- Llegiu els tres enllaços de "Què és el charlieplexing?". Això ho explica millor del que mai podria. El Charlieplexing és diferent del multiplexing tradicional que necessita un pin d'E / S per a cada fila i cada columna (que seria un total de 9 pins d'E / S per a una pantalla de 5/4).

Pas 2: maquinari i esquema

Maquinari i esquema
Maquinari i esquema

Llista de materials: 1x - Segell bàsic 220x - díodes emissors de llum (LED) del mateix tipus (caiguda de color i tensió) 5x - resistències (vegeu a continuació el valor de la resistència) Auxiliar / opcional: mètode de programació del polsador BS2 Momentari com a interruptor de reinici 6v -9v Alimentació en funció de la vostra versió de BS2 (llegiu el manual) L'esquema: aquest esquema es combina amb el disseny mecànic. Veureu la quadrícula de LEDs configurada a l’esquerra, aquesta és l’orientació per a la qual s’ha escrit el codi BS2. Fixeu-vos que cada parell de LEDs tenen l’ànode connectat al càtode de l’altre. A continuació, es connecten a un dels cinc pins d'E / S. Valors de la resistència: hauríeu de calcular els vostres propis valors de resistència. Consulteu la fitxa tècnica dels vostres LED o utilitzeu la configuració de LED del multímetre digital per trobar la caiguda de tensió dels vostres LED. Anem a fer alguns càlculs: Voltatge de subministrament - Caiguda de tensió / Corrent desitjat = Valor de resistència El BS2 subministra una potència regulada de 5v i pot generar 20ma de corrent. Els meus LED tenen una caiguda de 1,6 v i funcionen a 20ma.5v - 1,6v /.02amps = 155ohms Per protegir el vostre BS2, heu d’utilitzar el següent valor de resistència més alt del que obteniu amb el càlcul, en aquest cas crec que seria de 180ohms. He utilitzat 220ohms perquè la meva placa de desenvolupament té aquest valor de resistència integrat per a cada pin d'E / S. NOTA: Crec que, ja que hi ha una resistència a cada pin, això duplica efectivament la resistència de cada led, ja que un pin és V + i l'altre és Gnd. Si aquest és el cas, haureu de reduir els valors de la resistència a la meitat. L’efecte advers d’un valor de resistència massa alt és un LED més atenuat. Algú pot verificar-ho i deixar-me un PM o un comentari per poder actualitzar aquesta informació? Programació: he estat fent servir una placa de desenvolupament que té un connector DB9 per programar el xip a la placa. També faig servir aquest xip a la meva placa de suport sense soldar i he inclòs una capçalera de programació en circuit (ICSP). La capçalera té 5 pins, els pins 2 a 5 es connecten als pins 2-5 d’un cable sèrie DB9 (el pin 1 no s’utilitza). Tingueu en compte que per utilitzar aquesta capçalera ICSP els pins 6 i 7 del cable DB9 han d'estar connectats entre si. Restabliment: un botó de reinicialització instantània és opcional. Això només estira el pin 22 a terra quan s’empeny.

Pas 3: Taulers de revisió

Tauler de pa
Tauler de pa
Tauler de pa
Tauler de pa

Ara és el moment de construir la matriu sobre una taula de pa: he utilitzat una tira de borns per connectar una pota de cada parell de leds junts i un petit cable de pont per connectar les altres potes. Això es detalla a la foto del primer pla i s’explica a fons aquí: 1. Orienteu la vostra taula de configuració perquè coincideixi amb la imatge més gran2. Col·loqueu el LED 1 amb l’ànode (+) cap a vosaltres i el càtode (-) lluny de vosaltres. Col·loqueu el LED 2 en la mateixa orientació que l’ànode (+) a la tira de connexions del càtode LED 1. Utilitzeu un petit cable de pont per connectar l’ànode del LED 1 amb el càtode del LED 2.5. Repetiu-ho fins que s’hagi afegit cada parell de LED a la placa. Utilitzo el que normalment serien les tires de bus d’alimentació de la placa de pa com a tires de bus per als pins d'E / S BS2. Com que només hi ha 4 tires de bus, faig servir una terminal per a P4 (la cinquena connexió d'E / S). Això es pot veure a la imatge més gran de sota. Connecteu la tira de borns del càtode LED 1 a la tira de bus P0. Repetiu per a cada LED senar substituint el P * adequat per a cada parell (vegeu l’esquema).7. Connecteu la tira de terminals del càtode LED 2 a la tira de bus P1. Repetiu per a cada LED senar substituint el P * adequat per a cada parell (vegeu l’esquema).8. Connecteu cada tira de bus al pin d'E / S adequat al BS2 (P0-P4).9. Comproveu totes les connexions per assegurar-vos que coincideixen amb l’esquema. NOTA: al primer pla veureu que no sembla que he seguit el pas 7, ja que la connexió amb el segon pin d'E / S es troba a l'ànode dels LED senars. Recordeu que el càtode dels LED parells està connectat a l'ànode dels LED parells, de manera que la connexió és la mateixa de qualsevol manera. Si aquesta nota us confon, només l’ignoreu.

Pas 4: Programació bàsica

Perquè funcioni el charlieplexing, activeu només un led a la vegada. Perquè això funcioni amb la nostra BS2 necessitem dos passos bàsics: 1. Establiu els modes de sortida dels pins mitjançant l’ordre OUTS. Digueu al BS2 quins pins s'utilitzaran com a sortides mitjançant l'ordre DIRS. Funciona perquè es pot dir a BS2 quins pins voleu pujar i baixar i esperareu fins que especifiqueu quins pins són sortides. Vegem si les coses estan connectades correctament per només intenteu parpellejar el LED 1. Si mireu l'esquema, podreu veure que P0 està connectat al càtode (-) del LED 1 i P1 està connectat a l'ànode d'aquest mateix LED. Això vol dir que volem conduir P0 baix i P1 alt. Això es pot fer així: "OUTS =% 11110" que fa que P4-P1 sigui alt i P0 baix. (% Indica que s'ha de seguir un número binari. El dígit binari més baix es troba sempre a la dreta. 0 = BAIX, 1 = ALT) El BS2 emmagatzema aquesta informació, però no hi actuarà fins que no declarem quins pins són les sortides. Aquest pas és clau, ja que només dos pins han de ser sortides al mateix temps. La resta haurien de ser entrades, que estableixen aquests pins al mode d’alta impedància perquè no enfonsin cap corrent. Hem de conduir P0 i P1, de manera que els definirem a les sortides i la resta a les entrades així: "DIRS =% 00011". (% Indica que s'ha de seguir un número binari. El dígit binari més baix sempre està a la dreta. 0 = INPUT, 1 = OUTPUT) Reunim això en un codi útil: '{$ STAMP BS2e}' {$ PBASIC 2.5} DO OUTS =% 11110 'Drive P0 low and P1-P4 high DIRS =% 00011' Set P0- P1 com a sortides i P2-P4 com a entrades PAUSA 250 'Pausa perquè el LED romangui en DIRS = 0' Estableix tots els pins a Entrada. Això apagarà el LED PAUSE 250 'Pausa perquè el LED romangui apagat

Pas 5: el cicle de desenvolupament

Ara que hem vist treballar un pin per assegurar-nos que funcionin tots. 20led_Zig-Zag.bse Aquest codi adjunt hauria d’il·luminar cadascun dels 20 LEDs en un patró en zig-zag. Notareu que després que cada pin s'hagi encès, faig servir "DIRS = 0" per convertir tots els pins en entrades. Si canvieu el OUTS sense apagar els pins de sortida, podeu obtenir "fantasmes" on un led que no s'hauria d'encendre parpelleja entre cicles. Si canvieu la variable W1 al principi d'aquest codi a "W1 = 1" allà només hi haurà una pausa d'1 mil·lisegon entre cada LED parpellejant. Això provocarà un efecte de persistència de la visió (POV) que fa que sembli que tots els LED estan il·luminats. Això té l’efecte de fer que els LED siguin més atenuats, però és l’essència de com mostrarem els caràcters en aquesta matriu. LEDs en un patró útil. Aquest fitxer és el meu primer intent. Veureu que a la part inferior del fitxer els caràcters s’emmagatzemen en quatre línies de binari de 5 dígits. Cada línia es llegeix, s’analitza i es crida una subrutina cada vegada que s’ha d’encendre un led. Aquest codi funciona, recorrent els números 1-0. Si proveu d'executar-lo, observeu que està afectat per una velocitat d'actualització molt lenta que fa que els caràcters parpellegin gairebé massa lent per ser reconeguts. Aquest codi és dolent per molts motius. En primer lloc, cinc dígits de binari ocupen tanta capacitat a l’EEPROM com 8 dígits de binari, ja que tota la informació s’emmagatzema en grups de quatre bits. En segon lloc, el SELECT CASE utilitzat per decidir quin pin cal il·luminar requereix 20 casos. El BS2 està limitat a 16 casos per operació SELECT. Això significa que he hagut de piratejar aquesta limitació amb una declaració IF-THEN-ELSE. Hi ha d’haver una manera millor. Després d’unes hores de rascar-me el cap, el vaig descobrir.

Pas 6: un millor intèrpret

Cada fila de la nostra matriu es compon de 4 LED, cadascun pot estar encès o apagat. El BS2 emmagatzema informació a la seva EEPROM en grups de quatre bits. Aquesta correlació ens hauria de facilitar les coses. A més d’aquest fet, quatre bits corresponen als nombres decimals 0-15 per a un total de 16 possibilitats. Això fa que SELECT CASE sigui molt més fàcil. Aquí hi ha el número 7 emmagatzemat a la EEPROM: '7% 1111,% 1001,% 0010,% 0100,% 0100, cada fila té un decimal equivalent a 0-15, de manera que llegim un remeu des de la memòria i introduïu-lo directament a la funció SELECT CASE. Això significa que la matriu binària llegible per humans que es fa servir per fer cada caràcter (1 = led on, 0 = led off) és la clau per a l’intèrpret. Per utilitzar el mateix SELECT CASE per a cadascuna de les 5 files he utilitzat un altre case select per establir el DIRS i OUTS com a variables. Primer vaig llegir en cadascuna de les cinc línies del caràcter les variables ROW1-ROW5. A continuació, el programa principal crida a la subrutina per mostrar el caràcter. Aquesta subrutina pren la primera fila i assigna les quatre possibles combinacions OUTS a la variable outp1-outp4 i les dues possibles combinacions DIRS a direc1 i direc2. Els LED s’encenen, s’incrementa el comptador de files i s’executa el mateix procés per a cadascuna de les altres quatre files, molt més ràpid que el primer programa d’intèrpret. Dit això, encara hi ha parpelleig notable. Mireu el vídeo, la càmera fa que el parpelleig sembli molt pitjor, però teniu la idea. Portar aquest concepte a un xip molt més ràpid, com un picMicro o un xip AVR, permetria la visualització d’aquests personatges sense un parpelleig notable.

Pas 7: cap a on anar des d’aquí

No tinc un molí de cnc ni subministraments de gravat per fer plaques de circuits, de manera que no connectaré aquest projecte. Si teniu un molí i esteu interessat en col·laborar per avançar des d’aquí, envieu-me un missatge. Estaria encantat de pagar els materials i l'enviament encara més feliç per mostrar un producte acabat per a aquest projecte.

Altres possibilitats: 1. Porteu-lo a un altre xip. Aquest disseny de matriu es pot utilitzar amb qualsevol xip que tingui disponibles 5 pins d'E / S que puguin triestat (pins que poden ser alts, baixos o d'entrada (alta impedància)). 2. Amb un xip més ràpid (potser AVR o picMicro) podeu augmentar l’escala. Amb un xip de 20 pins, podríeu utilitzar 14 pins per carregar una pantalla de 8 x 22 i utilitzar els pins restants per rebre ordres en sèrie des d’un ordinador o un altre controlador. Utilitzeu tres xips de 20 pins més i podeu tenir una pantalla de desplaçament de 8x88 per a un total d’11 caràcters alhora (segons l’amplada de cada caràcter, per descomptat). Bona sort, diverteix-te!

Recomanat: