Innholdsfortegnelse:

Charlieplexing LEDs- Theory: 7 Steps (med bilder)
Charlieplexing LEDs- Theory: 7 Steps (med bilder)

Video: Charlieplexing LEDs- Theory: 7 Steps (med bilder)

Video: Charlieplexing LEDs- Theory: 7 Steps (med bilder)
Video: 555 Timer Circuit Troubleshooting / Component Testing 2024, Juni
Anonim
Charlieplexing LEDs- Theory
Charlieplexing LEDs- Theory
Charlieplexing LEDs- Theory
Charlieplexing LEDs- Theory

Dette instruerbare er mindre et byggprosjekt du eier og mer en beskrivelse av teorien om charlieplexing. Den er egnet for folk med det grunnleggende innen elektronikk, men ikke komplette nybegynnere. Jeg har skrevet det som svar på de mange spørsmålene jeg har fått i mine tidligere publiserte instrukser.

Hva er 'Charlieplexing'? Den kjører mange lysdioder med bare noen få pinner. I tilfelle du lurer på er Charlieplexing oppkalt etter Charles Allen på Maxim som utviklet teknikken. Dette kan være nyttig for mange ting. Du må kanskje vise statusinformasjon på en liten mikrokontroller, men har bare noen få pins tilgjengelig. Det kan være lurt å vise en fancy prikkmatrise eller klokkeskjerm, men du vil ikke bruke mange komponenter. Noen andre prosjekter som demonstrerer charlieplexing du kanskje vil se på er: Hvordan kjøre mange lysdioder fra noen få mikrokontroller -pins. av Westfw:- https://www.instructables.com/id/ED0NCY0UVWEP287ISO/ Og et par av mine egne prosjekter, Microdot-klokken:- https://www.instructables.com/id/EWM2OIT78OERWHR38Z/ Minidot 2-klokken: - https://www.instructables.com/id/E11GKKELKAEZ7BFZAK/ Et annet kult eksempel på bruk av charlieplexing er på: https://www.jsdesign.co.uk/charlie/ Minidot 2 -klokken introduserer et avansert charlieplexing -opplegg for fading/dimming som ikke vil bli diskutert her. OPPDATERING 19. august 2008: Jeg har lagt til en zip -fil med en krets som kan være i stand til å utnytte matrisens charliplexing for lysdioder med høy effekt som er diskutert (i lengden:)) i kommentarfeltet. Den har en trykknapp + posisjonskoder for å gjøre et brukergrensesnitt, pluss kretser for enten USB- eller RS232 -datamaskinstyring. Hver av høysidespenningsskinnene kan settes til en av to spenninger, si 2,2V for RØDE LED og 3,4V for grønn/blå/hvit. Spenningen for de høye sideskinnene kan stilles inn med trimpot. Jeg vil se for meg at en 20wire IDC -båndkabel kobles til kortet, og 20pins IDC -kontakter legges til langs båndets lengde, hvert LED -kort har koblinger til hvilke ledninger i matrisen som er ønsket. Kretsen er i Eagle Cad og gjengitt i delbildet nedenfor. Høysidekretsen implementeres ved å bruke optokoblere som jeg tror kan være passende. Jeg har faktisk ikke testet denne kretsen eller skrevet noen programvare på grunn av mangel på tid, men har lagt den til kommentar, jeg er spesielt interessert i implementeringen av optokobleren. Noen som er modige nok til å prøve … vennligst legg ut resultatene. OPPDATERING 27. august 2008: For de som ikke bruker EagleCad…. Nedenfor er en pdf av skjematisk oversikt

Trinn 1: Noen LED -teorier

Noen LED -teorier
Noen LED -teorier
Noen LED -teorier
Noen LED -teorier

Charlieplexing er avhengig av en rekke nyttige aspekter ved lysdioder og moderne mikrokontroller.

For det første hva som skjer når du kobler en LED til strøm. Hoveddiagrammet nedenfor viser det som kalles If v Vf -kurven til en typisk 5 mm lav effekt LED. Hvis står for "fremoverstrøm" Vf står for "forspenning". Den vertikale aksen med andre ord viser strømmen som vil strømme gjennom en LED hvis du setter den horisontale aksespenningen over terminalene. Det fungerer også omvendt. Hvis du måler at strømmen er av en viss verdi, kan du se over til den horisontale aksen og se spenningen LED -en vil vise over terminalene. Det andre diagrammet viser en skjematisk fremstilling av en LED med If og Vf merket. Fra hoveddiagrammet har jeg også merket områder i grafen som er av interesse. - Det første området er der lysdioden er "av". Nærmere bestemt sender LED-en ut lys så svakt at du ikke kan se det med mindre du hadde en slags super-duper bildeforsterker. - Det andre området har lysdioden som bare avgir en svak glød. - Det tredje området er hvor en LED vanligvis brukes og avgir lys etter produsentens vurdering. - Det fjerde området er der en lysdiode drives utover driftsgrensene, lyser sannsynligvis veldig sterkt, men akk i bare en kort stund før den magiske røyken slipper ut, og den vil ikke fungere igjen … dvs. i dette området brenner det ut fordi for mye strøm strømmer gjennom den. Vær oppmerksom på at If/Vf-kurven eller driftskurven til LED-en er en 'ikke-lineær' kurve. Det vil si at det ikke er en rett linje … den har en sving eller knekk i den. Til slutt er dette diagrammet for en typisk 5 mm rød LED designet for å fungere ved 20mA. Ulike lysdioder fra forskjellige produsenter har forskjellige driftskurver. For eksempel i dette diagrammet ved 20mA vil fremspenningen til LED -en være omtrent 1,9V. For en blå 5 mm LED ved 20mA kan fremspenningen være 3,4V. For en hvit luxeon -LED med høy effekt på 350mA kan fremspenningen være rundt 3,2V. Noen LED -pakker kan være flere lysdioder i serie eller parallelt, og Vf/If -kurven endres igjen. Vanligvis vil en produsent spesifisere en driftsstrøm som er trygt å bruke LED -en på, og fremspenningen ved den aktuelle. Vanligvis (men ikke alltid) får du en graf som ligner nedenfor i databladet. Du må se på databladet for LED -en for å finne ut hva fremspenningen er ved forskjellige driftsstrømmer. Hvorfor er denne grafen så viktig? Fordi det viser at når en spenning er over lysdioden, vil strømmen som vil strømme være i henhold til grafen. Senk spenningen og mindre strøm vil strømme …. og lysdioden vil være "av". Dette er en del av teorien om charlieplexing, som vi kommer til i neste trinn.

Trinn 2: Lovene (av elektronikk)

Lovene (av elektronikk)
Lovene (av elektronikk)
Lovene (av elektronikk)
Lovene (av elektronikk)
Lovene (av elektronikk)
Lovene (av elektronikk)

Fremdeles ikke helt magisk ved charlieplexing ennå … Vi må gå til noen grunnleggende elektronikklover. Den første interesseloven sier at den totale spenningen over en serie tilkoblede komponenter i en elektrisk krets er lik summen av individet spenninger over komponentene. Dette er vist i hoveddiagrammet nedenfor. Dette er nyttig når du bruker lysdioder fordi det gjennomsnittlige batteriet eller mikrokontrollerens utgangspinne aldri vil være akkurat den riktige spenningen for å kjøre lysdioden med anbefalt strøm. For eksempel vil en mikrokontroller vanligvis kjøre på 5V, og utgangspinnene vil være på 5V når den er på. Hvis du bare kobler en LED til utgangsstiften på mikroen, ser du fra driftskurven på forrige side at det vil strømme for mye strøm i LED -en, og den blir varm og brenner ut (sannsynligvis vil den også skade mikroen). Men hvis vi introduserer en andre komponent i serie med LED -en, kan vi trekke fra noen av 5V slik at spenningen til venstre er akkurat for å kjøre LED -en med riktig driftsstrøm. Dette er vanligvis en motstand, og når den brukes på denne måten kalles den en strømbegrensende motstand. Denne metoden brukes veldig ofte og fører til det som kalles 'ohms law' ….so oppkalt etter Ohm. Ohms law følger ligningen V = I * R hvor V er spenningen som vil vises over en motstand R når en strøm I flyter gjennom motstanden. V er i volt, jeg er i ampere og R er i ohm. Så hvis vi har 5V å bruke, og vi vil ha 1.9V over LED-en for å få den til å kjøre på 20mA, så vil vi at motstanden skal ha 5-1.9 = 3.1 V over det. Vi kan se dette i det andre diagrammet. Fordi motstanden er i serie med LED, vil den samme strømmen strømme gjennom motstanden som LED, dvs. 20mA. Så omorganisere ligningen kan vi finne motstanden vi trenger for å få dette til å fungere. V = I * RsoR = V / Erstatter verdiene i vårt eksempel vi får: R = 3.1 / 0.02 = 155ohms (note 20mA = 0.02Amps) Fremdeles hos meg så langt … kult. Se nå på diagram 3. Den har lysdioden klemt mellom to motstander. I henhold til den første loven som er nevnt ovenfor, har vi den samme situasjonen på det andre diagrammet. Vi har 1.9V på tvers av LED -en, så den kjører i henhold til spesifikasjonsarket. Vi har også hver motstand som trekker fra 1,55V hver (totalt 3,1). Ved å legge til spenningene har vi 5V (mikrokontroller -pinnen) = 1,55V (R1) + 1,9V (LED -en) + 1,55V (R2) og alt balanserer seg. Ved bruk av ohm -loven finner vi at motstandene må være 77,5 ohm hver, som er halvparten av beløpet som er beregnet fra det andre diagrammet. Selvfølgelig vil du i praksis være vanskelig å finne en 77,5 ohm motstand, så du vil bare erstatte den nærmeste tilgjengelige verdien, si 75 ohm og ende opp med litt mer strøm i lysdioden eller 82 ohm for å være trygg og ha litt mindre. Hvorfor i all verden skal vi gjøre denne motstanden for å kjøre en enkel LED … vel, hvis du har en lysdiode er det litt dumt, men dette er en instruksjon om charlieplexing og det kommer godt med for neste trinn.

Trinn 3: Vi introduserer 'komplementær stasjon'

Vi introduserer 'komplementær Drive'
Vi introduserer 'komplementær Drive'

Et annet navn som er mer nøyaktig å beskrive 'charlieplexing' er 'komplementær drift'.

I din gjennomsnittlige mikrokontroller kan du i fastvaren fortelle mikroen at den skal sette en utgangspinne til å være enten '0' eller '1', eller presentere en 0V spenning ved utgangen eller en 5V spenning ved utgangen. Diagrammet nedenfor viser nå den sandwichede LED -en med en reversert partner …. eller en komplement -LED, derav komplementær drift. I første halvdel av diagrammet sender mikroen ut 5V til pin A, og 0V til pin B. Strømmen vil dermed flyte fra A til B. Fordi LED2 er orientert bakover til LED1, vil ingen strøm strømme gjennom den, og den vil ikke strømme gløde. Det er det som kalles omvendt partiskhet. Vi har tilsvarende situasjonen på forrige side. Vi kan i utgangspunktet ignorere LED2. Piler viser gjeldende flyt. En LED er egentlig en diode (derav lysemitterende diode). En diode er en enhet som lar strøm strømme i den ene retningen, men ikke i den andre. Skjematisk av en LED viser dette, strøm vil strømme i pilens retning …… men er blokkert den andre veien. Hvis vi instruerer mikroen om å nå sende ut 5V til pin B og 0V på pin A har vi det motsatte. Nå er LED1 omvendt forspent, LED2 er forspent og vil tillate strøm. LED2 lyser og LED1 blir mørkt. Nå kan det være lurt å se på skjemaene til de forskjellige prosjektene som er nevnt i innledningen. Du bør se mange av disse komplementære parene i en matrise. Selvfølgelig i eksemplet nedenfor kjører vi to lysdioder med to mikrokontroller -pinner …. Du kan si hvorfor bry deg. Den neste delen er hvor vi kommer til tarmene til charlieplexing og hvordan den effektivt bruker en mikrokontrollers utgangspinner.

Trinn 4: Endelig ….en Charlieplex Matrix

Endelig….en Charlieplex Matrix
Endelig….en Charlieplex Matrix
Endelig….en Charlieplex Matrix
Endelig….en Charlieplex Matrix

Som nevnt i innledningen er charliplexing en praktisk måte å kjøre mange lysdioder på med bare noen få pinner på en mikrokontroller. Imidlertid har vi ikke lagret noen pins på de foregående sidene, men kjørt to lysdioder med to pins…. Big whoop!

Vel, vi kan utvide ideen om komplimentær kjøring til en charlieplex -matrise. Diagrammet nedenfor viser minimum charlieplex -matrisen som består av tre motstander og seks lysdioder og kun bruker tre mikrokontroller -pinner. Ser du nå hvor praktisk denne metoden er? Hvis du ville kjøre seks lysdioder på vanlig måte …. trenger du seks mikrokontroller -pinner. Faktisk med N -pinner på en mikrokontroller kan du potensielt drive N * (N - 1) lysdioder. For 3 pinner er dette 3 * (3-1) = 3 * 2 = 6 lysdioder. Ting stabler raskt opp med flere pins. Med 6 pinner kan du kjøre 6 * (6 - 1) = 6 * 5 = 30 lysdioder …. wow! Nå til charlieplexing -biten. Se på diagrammet nedenfor. Vi har tre komplementære par, ett par mellom hver kombinasjon av mikroutgangspinner. Ett par mellom AB, ett par mellom BC og ett par mellom AC. Hvis du koblet fra pin C for nå, hadde vi samme situasjon som før. Med 5V på pin A og 0V på pin B, vil LED1 lyse, LED2 er omvendt forspent og vil ikke lede strøm. Med 5V på pin B og 0V på pin A vil LED2 lyse og LED1 er omvendt. Dette følger for de andre mikropinnene. Hvis vi koblet fra pin B og satte pin A til 5V og pin C til 0V, ville LED5 lyse. Omvendt slik at pin A er 0V og pin C er 5V, så lyser LED6. Samme for det komplementære paret mellom pinnene B-C. Vent, jeg hører deg si. La oss se nærmere på det andre tilfellet. Vi har 5V på pin A og 0V på pin C. Vi har koblet fra pin B (den midterste). OK, så en strøm strømmer gjennom LED5, strømmen strømmer ikke gjennom LED6 fordi den er omvendt forspent (og det er også LED2 og LED4) … men det er også en vei for strømmen å ta fra pin A, gjennom LED1 og LED3 er det ikke det? Hvorfor lyser ikke disse lysdiodene også. Her er hjertet i charlieplexing -opplegget. Det er faktisk en strøm som strømmer både LED1 og LED3, men spenningen over begge disse kombinerte vil bare være lik spenningen over LED5. Vanligvis vil de ha halve spenningen over dem som LED5 har. Så hvis vi har 1,9V over LED5, vil bare 0,95V være på tvers av LED1 og 0,95V over LED3. Fra If/Vf -kurven nevnt i begynnelsen av denne artikkelen kan vi se at strømmen ved denne halve spenningen er mye mye lavere enn 20mA…..og disse lysdiodene lyser ikke synlig. Dette er kjent som gjeldende stjeling. Dermed vil det meste av strømmen flyte gjennom lysdioden vi ønsker, den mest direkte banen gjennom minst antall lysdioder (dvs. en lysdiode), i stedet for noen seriekombinasjon av lysdioder. Hvis du så på strømmen for en hvilken som helst kombinasjon av å sette 5V og 0V på to stasjoner i charlieplex -matrisen, ser du det samme. Bare én LED vil lyse om gangen. Som en øvelse, se på den første situasjonen. 5V på pin A og 0V på pin B, koble fra pin C. LED1 er den korteste ruten for strømmen å ta, og LED 1 lyser. En liten strøm vil også passere gjennom LED5, deretter sikkerhetskopiere LED4 til pin B…..men igjen, disse to lysdiodene i serie vil ikke kunne suge til seg nok strøm sammenlignet med LED 1 for å lyse sterkt. Dermed realiseres kraften i charlieplexing. Se det andre diagrammet som er skjematisk for min Microdot -klokke…..30 lysdioder, med bare 6 pinner. Min Minidot 2 -klokken er i utgangspunktet en utvidet versjon av Microdot….samme 30 lysdioder arrangert i en matrise. For å lage et mønster i matrisen, slås hver LED som skal belyses kort på, deretter går mikroen til den neste. Hvis den er planlagt å lyse, slås den på igjen for en kort stund. Ved raskt å skanne gjennom lysdiodene raskt nok vil et prinsipp som kalles 'vedvarende syn' tillate at en rekke lysdioder viser et statisk mønster. Minidot 2 -artikkelen har litt forklaring på dette prinsippet. Men vent….. Jeg har tilsynelatende glanset litt i beskrivelsen ovenfor. Hva er denne "koble fra pin B", "koble fra pin C" -virksomheten. Vennligst neste avsnitt.

Trinn 5: Tri-states (ikke trehjulssykler)

Tri-state (ikke trehjulssykler)
Tri-state (ikke trehjulssykler)
Tri-state (ikke trehjulssykler)
Tri-state (ikke trehjulssykler)

I forrige trinn nevnte vi at en mikrokontroller kan programmeres til å sende ut en 5V spenning eller en 0V spenning. For å få charlieplex -matrisen til å fungere, velger vi to pinner i matrisen og kobler fra alle andre pinner.

Selvfølgelig er det litt vanskelig å koble fra pinnene manuelt, spesielt hvis vi skanner ting veldig raskt for å bruke visjonseffekten til å vise et mønster. Imidlertid kan en mikrokontroller utgangspinner også programmeres til å være inngangspinner. Når en mikropinne er programmert til å være en inngang, går den inn i det som kalles 'høyimpedens' eller 'tri-tilstand'. Det vil si at den gir en veldig høy motstand (i størrelsesorden megaohms, eller millioner ohm) mot pinnen. Hvis det er en veldig høy motstand (se diagram), kan vi i hovedsak betrakte pinnen som koblet fra, og så fungerer charliplex -ordningen. Det andre diagrammet viser matrisepinnene for hver kombinasjon som er mulig for å belyse hver av de 6 lysdiodene i vårt eksempel. Vanligvis er en tri-tilstand betegnet med et 'X', 5V vises som '1' (for logisk 1) og 0V som '0'. I mikrofastvaren for en '0' eller '1' programmerer du pinnene som en utgang, og tilstanden er godt definert. For tri-state programmerer du den til å være en inngang, og fordi den er en inngang, vet vi faktisk ikke hva staten kan være …. Derav "X" for ukjent. Selv om vi kan tildele en pin til tri-state eller input, trenger vi ikke å lese den. Vi drar fordel av det faktum at en inngangspinne på en mikrokontroller er høy impedans.

Trinn 6: Noen praktiske saker

Magien med charlieplexing er avhengig av det faktum at den individuelle spenningen som presenteres på tvers av flere lysdioder i serie, alltid vil være mindre enn den for en enkelt LED når den ene LED -en er parallell med seriekombinasjonen. Hvis spenningen er mindre, er strømmen mindre, og forhåpentligvis vil strømmen i seriekombinasjonen være så lav at LED -en ikke lyser. Dette er imidlertid ikke alltid tilfelle. La oss si at du hadde to røde lysdioder med en typisk fremspenning på 1,9V i matrisen din og en blå LED med en fremspenning på 3,5V (si LED1 = rød, LED3 = rød, LED5 = blå i vårt 6 LED -eksempel). Hvis du tente den blå lysdioden, ville du ende opp med 3,5/2 = 1,75V for hver av de røde lysdiodene. Dette kan være veldig nær det svake driftsområdet til LED -en. Du vil kanskje oppleve at de røde lysdiodene lyser svakt når den blå lyser. Det er derfor en god idé å sørge for at spenningen for alle forskjellige fargede lysdioder i matrisen er omtrent den samme ved driftsstrømmen, eller bruk den samme fargede Lysdioder i en matrise. I mine Microdot/Minidot -prosjekter trengte jeg ikke å bekymre meg for dette, jeg brukte høyeffektive blå/grønne SMD -lysdioder som heldigvis har omtrent samme fremspenning som de røde/gule. Men hvis jeg implementerte det samme med 5 mm lysdioder, ville resultatet ha blitt mer problematisk. I dette tilfellet ville jeg ha implementert en blå/grønn charlieplex -matrise og en rød/gul matix separat. Jeg hadde trengt å bruke flere pins….men det er du. Et annet problem er å se på din nåværende tegning fra mikroen og hvor lyssterk du vil ha LED -en. Hvis du har en stor matrise og skanner den raskt, er hver LED på bare en kort stund. Dette vil se relativt svakt ut sammenlignet med en statisk skjerm. Du kan jukse ved å øke strømmen gjennom LED -en ved å redusere strømbegrensningsmotstandene, men bare til et punkt. Hvis du trekker for mye strøm fra mikroen for lenge, vil du skade utgangspinnene. Hvis du har en matrise som beveger seg sakte, si en status- eller syklonvisning, kan du holde strømmen nede på et sikkert nivå, men fortsatt ha en lysende LED -skjerm fordi hver LED er på i lengre tid, muligens statisk (i tilfelle en Noen fordeler med charlieplexing:- bruker bare noen få pinner på en mikrokontroller for å kontrollere mange lysdioder- reduserer antall komponenter siden du ikke trenger mange driverchips/motstander osv. Noen ulemper:- din mikro-fastvare må håndtere innstillingene både spenningstilstand og inngang/utgangstilstand for pinnene- må være forsiktig med å blande forskjellige farger- PCB-oppsett er vanskelig, fordi LED-matrisen er mer kompleks.

Trinn 7: Referanser

Det er mange referanser om charlieplexing på nettet. I tillegg til koblingene foran i artikkelen, er noen av dem: Den originale artikkelen fra Maxim, dette har mye å si om å kjøre 7 segmentdisplayer som også er mulig. https://www.maxim-ic.com/appnotes.cfm/appnote_number/1880A wiki-oppføring

Anbefalt: