Indholdsfortegnelse:

Charlieplexing LEDs- teorien: 7 trin (med billeder)
Charlieplexing LEDs- teorien: 7 trin (med billeder)

Video: Charlieplexing LEDs- teorien: 7 trin (med billeder)

Video: Charlieplexing LEDs- teorien: 7 trin (med billeder)
Video: Я работаю в Страшном музее для Богатых и Знаменитых. Страшные истории. Ужасы. 2024, Juni
Anonim
Charlieplexing LEDs- Theory
Charlieplexing LEDs- Theory
Charlieplexing LEDs- Theory
Charlieplexing LEDs- Theory

Dette instruerbare er mindre et bygge -eget projekt og mere en beskrivelse af teorien om charlieplexing. Det er velegnet til folk med det grundlæggende inden for elektronik, men ikke komplette begyndere. Jeg har skrevet det som svar på de mange spørgsmål, jeg har fået i mine tidligere udgivne Instructables.

Hvad er 'Charlieplexing'? Det kører masser af lysdioder med kun få stifter. Hvis du undrer dig over, er Charlieplexing opkaldt efter Charles Allen på Maxim, der udviklede teknikken. Dette kan være nyttigt til mange ting. Du skal muligvis vise statusoplysninger på en lille mikrokontroller, men har kun få stifter til rådighed. Du vil måske vise en smuk prikmatrix eller urskærm, men vil ikke bruge mange komponenter. Nogle andre projekter, der demonstrerer charlieplexing, du måske vil se på, er: Sådan driver du mange LED'er fra et par mikrokontroller -pins. af Westfw:- https://www.instructables.com/id/ED0NCY0UVWEP287ISO/ Og et par af mine egne projekter, Microdot-uret:- https://www.instructables.com/id/EWM2OIT78OERWHR38Z/ Minidot 2-uret: - https://www.instructables.com/id/E11GKKELKAEZ7BFZAK/ Et andet fedt eksempel på brugen af charlieplexing er på: https://www.jsdesign.co.uk/charlie/ Minidot 2 -uret introducerer et avanceret charlieplexing -skema til fading/dimming, som ikke vil blive diskuteret her. OPDATERING 19. august 2008: Jeg har tilføjet en zip -fil med et kredsløb, der muligvis kan udnytte matrix charliplexing til højeffekt -LED'er, der er diskuteret (i længden:)) i kommentarfeltet. Den har en trykknap + positionskoder til at lave en brugergrænseflade plus kredsløb til enten USB- eller RS232 -computerkontrol. Hver af højspændingsskinnerne kan indstilles til en af to spændinger, f.eks. 2,2V for RØDE LED'er og 3,4V for grøn/blå/hvid. Spændingen til de høje sideskinner kan indstilles ved trimpot. Jeg ville forestille mig, at et 20wire IDC -båndkabel sættes i kortet, og 20pin IDC -stik tilføjes langs båndets længde, hvert LED -kort har links til de ledninger, der ønskes i matrixen. Kredsløbet er i Eagle Cad og gengivet i underbilledet herunder. Højsidekredsløbet implementeres ved hjælp af optokoblere, som jeg synes kunne være egnede. Jeg har faktisk ikke testet dette kredsløb eller skrevet software på grund af mangel på tid, men har lagt det til kommentar, jeg er særligt interesseret i implementeringen af optokobleren. Enhver, der er modig nok til at give det en chance … post venligst dine resultater. OPDATERING 27. august 2008: For dem, der ikke bruger EagleCad….under tilføjet en pdf af skematisk

Trin 1: Nogle LED -teorier

Noget LED -teori
Noget LED -teori
Noget LED -teori
Noget LED -teori

Charlieplexing er afhængig af en række nyttige aspekter ved lysdioder og moderne mikrokontroller.

For det første, hvad der sker, når du tilslutter en LED til elektricitet. Nedenstående hoveddiagram viser det, der kaldes If v Vf -kurven for en typisk 5 mm lav effekt LED. Hvis står for 'fremadgående strøm' Vf står for 'fremspænding' Den lodrette akse med andre ord viser den strøm, der vil strømme gennem en LED, hvis du placerer den vandrette aksespænding over dens terminaler. Det fungerer også omvendt, hvis du måler, at strømmen er af en vis værdi, kan du se på tværs til den vandrette akse og se den spænding, LED'en vil vise på tværs af dens terminaler. Det andet diagram viser en skematisk fremstilling af en LED med If og Vf mærket. Fra hoveddiagrammet har jeg også mærket områder i grafen, der er interessante. - Det første område er, hvor LED'en er 'slukket'. Mere præcist udsender lysdioden lys så svagt, at du ikke kan se det, medmindre du havde en slags super-duper billedforstærker. - Det andet område har LED'en kun en smule udsendelse af en svag glød. - Det tredje område er, hvor en LED normalt betjenes og udsender lys ved producenternes vurdering. - Det fjerde område er, hvor en LED betjenes ud over dets driftsgrænser, lyser sandsynligvis meget stærkt, men ak i kun kort tid, før den magiske røg indeni slipper ud, og det vil ikke fungere igen … dvs. i dette område brænder det ud, fordi for meget strøm strømmer igennem den. Bemærk, at hvis/Vf-kurven eller driftskurven for LED'en er en 'ikke-lineær' kurve. Det vil sige, det er ikke en lige linje … det har en bøjning eller knæk i det. Endelig er dette diagram til en typisk 5 mm rød LED designet til at fungere ved 20mA. Forskellige lysdioder fra forskellige producenter har forskellige driftskurver. For eksempel i dette diagram ved 20mA vil LED'ens fremspænding være cirka 1,9V. For en blå 5 mm LED ved 20mA kan fremspændingen være 3,4V. For en højeffekt hvid luxeon LED ved 350mA kan fremspændingen være omkring 3,2V. Nogle LED -pakker kan være flere lysdioder i serie eller parallelt, hvilket ændrer Vf/If -kurven igen. Typisk angiver en producent en driftsstrøm, der er sikker at bruge LED'en på og fremspændingen ved den aktuelle. Normalt (men ikke altid) får du en graf svarende til nedenfor i databladet. Du skal se på databladet for LED'en for at bestemme, hvad forspændingen er ved forskellige driftsstrømme. Hvorfor er denne graf så vigtig? Fordi det viser, at når en spænding er på tværs af LED'en, vil den strøm, der vil strømme, være i henhold til grafen. Sænk spændingen, og mindre strøm flyder…..og lysdioden vil være 'slukket'. Dette er en del af teorien om charlieplexing, som vi kommer til i det næste trin.

Trin 2: Lovene (om elektronik)

Lovene (af elektronik)
Lovene (af elektronik)
Lovene (af elektronik)
Lovene (af elektronik)
Lovene (af elektronik)
Lovene (af elektronik)

Stadig endnu ikke på magien ved charlieplexing endnu …. Vi skal gå til nogle grundlæggende regler inden for elektroniklove. Den første lov af interesse angiver, at den samlede spænding på tværs af en række tilsluttede komponenter i et elektrisk kredsløb er lig med summen af individet spændinger på tværs af komponenterne. Dette er vist i hoveddiagrammet herunder. Dette er nyttigt, når du bruger lysdioder, fordi dit gennemsnitlige batteri eller mikrokontroller -udgangsstift aldrig vil være den helt rigtige spænding til at køre din LED med den anbefalede strøm. For eksempel vil en mikrokontroller typisk køre ved 5V, og dens output pins vil være på 5V, når den er tændt. Hvis du bare tilslutter en LED til udgangsstiften på mikroen, ser du fra driftskurven på forrige side, at der vil strømme for meget strøm i LED'en, og den bliver varm og brænder ud (sandsynligvis også beskadiger mikro). Men hvis vi introducerer en anden komponent i serie med LED'en, kan vi trække nogle af 5V fra, så spændingen tilbage er lige til at køre LED'en med den korrekte driftsstrøm. Dette er typisk en modstand, og når den bruges på denne måde kaldes den en strømbegrænsende modstand. Denne metode bruges meget almindeligt og fører til det, der kaldes 'ohms law'. flyder gennem modstanden. V er i volt, jeg er i ampere og R er i ohm. Så hvis vi har 5V at bruge, og vi vil have 1.9V på tværs af LED'en for at få den til at køre ved 20mA, så vil vi have, at modstanden har 5-1.9 = 3.1 V på tværs af det. Vi kan se dette i det andet diagram. Fordi modstanden er i serie med LED'en, strømmer den samme strøm gennem modstanden som LED'en, dvs. 20mA. Så omorganisering af ligningen kan vi finde den modstand, vi har brug for for at få dette til at fungere. V = I * RsoR = V / Erstatter værdierne i vores eksempel, vi får: R = 3.1 / 0.02 = 155ohms (note 20mA = 0.02Amps) Stadig hos mig indtil videre … sejt. Se nu på diagram 3. Det har LED'en klemt mellem to modstande. Ifølge den første lov, der er nævnt ovenfor, har vi den samme situation på det andet diagram. Vi har 1.9V på tværs af LED'en, så den kører i henhold til dens specifikationsark. Vi har også hver modstand til at trække 1,55V hver (i alt 3,1). Når vi lægger spændingerne sammen, har vi 5V (mikrokontrollerstiften) = 1,55V (R1) + 1,9V (LED'en) + 1,55V (R2), og alt balancerer. Ved hjælp af ohm -loven finder vi, at modstandene skal være 77,5 ohm hver, hvilket er det halve af beløbet beregnet ud fra det andet diagram. Selvfølgelig ville du i praksis være hårdt presset på at finde en 77,5ohm modstand, så du ville bare erstatte den nærmeste tilgængelige værdi, siger 75ohms og ende med lidt mere strøm i lysdioden eller 82 ohm for at være sikker og have lidt mindre. Hvorfor i alverden skulle vi gøre denne modstand sand, som skal køre en simpel LED….. godt, hvis du har en LED, er det lidt fjollet, men det er en instruktion om charlieplexing og det er praktisk til det næste trin.

Trin 3: Introduktion til 'komplementært drev'

Vi introducerer 'komplementær Drive'
Vi introducerer 'komplementær Drive'

Et andet navn, der er mere præcist at beskrive 'charlieplexing', er 'komplementært drev'.

I din gennemsnitlige mikrokontroller kan du i firmware fortælle mikroen at indstille en udgangsstift til enten at være en '0' eller en '1' eller at præsentere en 0V spænding ved udgangen eller en 5V spænding ved udgangen. Diagrammet herunder viser nu den sandwichede LED med en omvendt partner….eller en komplement LED, deraf komplementært drev. I første halvdel af diagrammet udsender mikroen 5V til pin A og 0V til pin B. Strømmen vil således flyde fra A til B. Fordi LED2 er orienteret bagud til LED1, vil der ikke strømme strøm gennem den, og den vil ikke glød. Det er det, der kaldes reverse bias. Vi har tilsvarende situationen på den foregående side. Vi kan dybest set ignorere LED2. Pile viser det aktuelle flow. En LED er i det væsentlige en diode (deraf lysemitterende diode). En diode er en enhed, der tillader strøm at strømme i den ene retning, men ikke i den anden. Skematisk en LED viser sådan, strøm vil strømme i pilens retning …… men er blokeret den anden vej. Hvis vi instruerer mikroen om nu at sende 5V til pin B og 0V på pin A, har vi det modsatte. Nu er LED1 omvendt forudindtaget, LED2 er forspændt fremad og tillader strøm. LED2 lyser, og LED1 er mørkt. Nu kan det være en god idé at se på skemaerne for de forskellige projekter, der er nævnt i indledningen. Du bør se en masse af disse komplementære par i en matrix. Selvfølgelig i nedenstående eksempel kører vi to lysdioder med to mikrokontrollerpinde …. Du kan sige hvorfor gider. Næste afsnit er, hvor vi kommer til tarmene til charlieplexing, og hvordan det effektivt udnytter en mikrocontrollers output pins.

Trin 4: Endelig….en Charlieplex Matrix

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

Som nævnt i indledningen er charliplexing en praktisk måde at køre masser af lysdioder med kun få stifter på en mikrokontroller. Men på de foregående sider har vi ikke rigtig gemt nogen pins, der kørte to lysdioder med to pins….stort pj!

Nå kan vi udvide ideen om komplimentær drift til en charlieplex matrix. Diagrammet herunder viser minimum charlieplex matrix bestående af tre modstande og seks lysdioder og kun ved hjælp af tre mikrokontroller pins. Kan du nu se, hvor praktisk denne metode er? Hvis du ville køre seks lysdioder på den normale måde …. Skulle du bruge seks mikrokontrollerpinde. Faktisk kan du muligvis drive N * (N - 1) lysdioder med N -stifter på en mikrokontroller. For 3 ben er dette 3 * (3-1) = 3 * 2 = 6 lysdioder. Ting stabler hurtigt op med flere pins. Med 6 ben kan du køre 6 * (6 - 1) = 6 * 5 = 30 lysdioder …. wow! Nu til den charlieplexing bit. Se diagrammet herunder. Vi har tre komplementære par, et par mellem hver kombination af mikroudgangsstifter. Et par mellem A-B, et par mellem B-C og et par mellem A-C. Hvis du frakoblede pin C for nu, ville vi have den samme situation som før. Med 5V på pin A og 0V på pin B lyser LED1, LED2 er omvendt forudindtaget og leder ikke strøm. Med 5V på pin B og 0V på pin A LED2 lyser, og LED1 er omvendt forudindtaget. Dette følger for de andre mikrostifter. Hvis vi frakoblede pin B og satte pin A til 5V og pin C til 0V, ville LED5 lyse. Omvendt, så pin A er 0V og pin C er 5V, så lyser LED6. Samme for det komplementære par mellem stifterne B-C. Vent, jeg hører dig sige. Lad os se nærmere på den anden sag. Vi har 5V på pin A og 0V på pin C. Vi har afbrudt pin B (den midterste). OK, så en strøm strømmer gennem LED5, strømmen strømmer ikke gennem LED6, fordi den er omvendt forudindtaget (og det er også LED2 og LED4) ….men der er også en vej for strømmen til at tage fra pin A, gennem LED1 og LED3 er der ikke? Hvorfor lyser disse lysdioder ikke så godt. Her er hjertet i charlieplexing -ordningen. Der er faktisk en strøm, der strømmer både LED1 og LED3, men spændingen over begge disse kombinerede vil kun være lig med spændingen over LED5. Normalt ville de have halvdelen af spændingen på tværs af dem, som LED5 har. Så hvis vi har 1,9V på tværs af LED5, så vil kun 0,95V være på tværs af LED1 og 0,95V på tværs af LED3. Fra If/Vf -kurven nævnt i begyndelsen af denne artikel kan vi se, at strømmen ved denne halvspænding er meget meget lavere end 20mA…..og disse lysdioder lyser ikke synligt. Dette er kendt som nuværende stjæle. Således vil det meste af strømmen flyde gennem den LED, vi ønsker, den mest direkte vej gennem det mindste antal LED'er (dvs. en LED), snarere end nogen seriekombination af LED'er. Hvis du kiggede på det aktuelle flow for en hvilken som helst kombination af at sætte 5V og 0V på to drivstifter i charlieplex -matrixen, vil du se det samme. Kun én LED lyser ad gangen. Som en øvelse skal du se på den første situation. 5V på pin A og 0V på pin B, afbryd pin C. LED1 er den korteste vej for strømmen, og LED 1 lyser. En lille strøm vil også passere gennem LED5, derefter sikkerhedskopiere LED4 til pin B…..men igen, vil disse to lysdioder i serie ikke være i stand til at hæfte tilstrækkelig strøm i forhold til LED 1 til at lyse kraftigt. Således realiseres effekten af charlieplexing. Se det andet diagram, der er skematisk for mit Microdot ur…..30 lysdioder, med kun 6 ben. Mit Minidot 2 -ur er dybest set en udvidet version af Microdot….samme 30 lysdioder arrangeret i en matrix. For at lave et mønster i arrayet tændes hver LED, der skal belyses, kortvarigt, derefter går mikro'en til den næste. Hvis den er planlagt til at blive belyst, tændes den igen i et kort stykke tid. Ved hurtigt at scanne gennem lysdioderne hurtigt nok vil et princip kaldet 'vedholdenhed i synet' tillade en række lysdioder at vise et statisk mønster. Minidot 2 -artiklen har lidt en forklaring på dette princip. Men vent….. Jeg har tilsyneladende glemt lidt i beskrivelsen ovenfor. Hvad er denne 'afbryder pin B', 'afbryd pin C' virksomhed. Næste afsnit tak.

Trin 5: Tri-tilstande (ikke trehjulede cykler)

Tri-tilstande (ikke trehjulede cykler)
Tri-tilstande (ikke trehjulede cykler)
Tri-tilstande (ikke trehjulede cykler)
Tri-tilstande (ikke trehjulede cykler)

I det foregående trin nævnte vi en mikrokontroller kan programmeres til at udsende en 5V spænding eller en 0V spænding. For at få charlieplex -matrixen til at fungere, vælger vi to pins i matrixen, og frakobler alle andre pins.

Selvfølgelig er det lidt svært at afbryde stifterne manuelt, især hvis vi scanner tingene meget hurtigt for at bruge vedvarende synseffekt til at vise et mønster. En mikrocontroller -udgangsstifter kan imidlertid også programmeres til at være input -ben. Når en mikropind er programmeret til at være et input, går den ind i det, der kaldes 'højimpedens' eller 'tri-tilstand'. Det vil sige, at den præsenterer en meget høj modstand (af størrelsen megaohms eller millioner ohm) mod stiften. Hvis der er en meget høj modstand (se diagram), kan vi i det væsentlige betragte stiften som afbrudt, og så fungerer charliplex -skemaet. Det andet diagram viser matrixstifterne for hver kombination, der er muligt at belyse hver af de 6 lysdioder i vores eksempel. Typisk betegnes en tri-tilstand med et 'X', 5V vises som '1' (for logisk 1) og 0V som '0'. I mikrofirmwaren til en '0' eller '1' programmerer du benene til at være et output, og dens tilstand er veldefineret. For tri-state programmerer du det til at være et input, og fordi det er et input, ved vi faktisk ikke, hvad staten kan være …. Deraf 'X' for ukendt. Selvom vi måske tildeler en pin til tri-state eller et input, behøver vi ikke at læse den. Vi drager bare fordel af, at en input -pin på en mikrokontroller er høj impedens.

Trin 6: Nogle praktiske spørgsmål

Magien ved charlieplexing er afhængig af, at den individuelle spænding, der præsenteres på tværs af flere lysdioder i serie, altid vil være mindre end den på tværs af en enkelt LED, når den enkelte LED er i parallel med seriekombinationen. Hvis spændingen er mindre, så er strømmen mindre, og forhåbentlig vil strømmen i seriekombinationen være så lav, at LED'en ikke lyser. Dette er dog ikke altid tilfældet. Lad os sige, at du havde to røde lysdioder med en typisk fremspænding på 1,9V i din matrix og en blå LED med en fremspænding på 3,5V (sig LED1 = rød, LED3 = rød, LED5 = blå i vores 6 LED -eksempel). Hvis du tændte den blå LED, ville du ende med 3,5/2 = 1,75V for hver af de røde LED'er. Dette kan være meget tæt på LED'ens svage driftsområde. Du vil muligvis opleve, at de røde lysdioder lyser svagt, når det blå lyser. Det er derfor en god idé at sikre, at fremadspændingen af alle forskellige farvede lysdioder i din matrix er nogenlunde den samme ved driftsstrømmen, eller brug den samme farvede Lysdioder i en matrix. I mine Microdot/Minidot -projekter behøvede jeg ikke bekymre mig om dette, jeg brugte højeffektive blå/grønne SMD -lysdioder, der heldigvis har meget den samme fremspænding som de røde/gule. Men hvis jeg implementerede det samme med 5 mm lysdioder, ville resultatet have mere problematisk. I dette tilfælde ville jeg have implementeret en blå/grøn charlieplex -matrix og en rød/gul matix separat. Jeg havde haft brug for at bruge flere pins …. men der er du. Et andet problem er at se på din nuværende tegning fra mikroen og hvor lysstærk du vil have LED'en. Hvis du har en stor matrix og hurtigt scanner den, er hver LED kun tændt i kort tid. Dette vil fremstå relativt svagt i forhold til et statisk display. Du kan snyde ved at øge strømmen gennem LED'en ved at reducere de nuværende begrænsningsmodstande, men kun til et punkt. Hvis du trækker for meget strøm fra mikrofonen for længe, beskadiger du udgangsstifterne. Hvis du har en matrix, der bevæger sig langsomt, f.eks. Et status- eller cyklon -display, kan du holde strømmen nede på et sikkert niveau, men stadig have et lyst LED -display, fordi hver LED er tændt i længere tid, muligvis statisk (i tilfælde af en Nogle fordele ved charlieplexing:- bruger kun få stifter på en mikrokontroller til at styre mange lysdioder- reducerer antallet af komponenter, da du ikke har brug for mange driverchips/modstande osv. Nogle ulemper:- din mikro-firmware skal håndtere indstilling både spændingstilstand og input/output-tilstand af stifterne- skal være forsigtige med at blande forskellige farver- PCB-layout er svært, fordi LED-matricen er mere kompleks.

Trin 7: Referencer

Der er masser af referencer om charlieplexing på nettet. Ud over linkene forrest i artiklen er nogle af dem: Den originale artikel fra Maxim, dette har meget at sige om at køre 7 segmentdisplays, hvilket også er muligt. https://www.maxim-ic.com/appnotes.cfm/appnote_number/1880A wiki entryhttps://da.wikipedia.org/wiki/Charlieplexing

Anbefalede: