Innehållsförteckning:

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

Detta instruerbara är mindre ett byggprojekt som du själv har och mer en beskrivning av teorin om charlieplexing. Den är lämplig för personer med grunderna i elektronik, men inte kompletta nybörjare. Jag har skrivit det som svar på de många frågor jag har fått i mina tidigare publicerade instruktioner.

Vad är 'Charlieplexing'? Det driver många lysdioder med bara några få stift. Om du undrar Charlieplexing är uppkallad efter Charles Allen på Maxim som utvecklade tekniken. Detta kan vara användbart för många saker. Du kan behöva visa statusinformation på en liten mikrokontroller, men har bara några få stift kvar. Du kanske vill visa en snygg prickmatris eller klockdisplay men vill inte använda många komponenter. Några andra projekt som visar charlieplexing du kanske vill titta på är: Hur man driver många lysdioder från några mikrokontroller -stift. av Westfw:- https://www.instructables.com/id/ED0NCY0UVWEP287ISO/ Och ett par av mina egna projekt, Microdot-klockan:- https://www.instructables.com/id/EWM2OIT78OERWHR38Z/ Minidot 2-klockan: - https://www.instructables.com/id/E11GKKELKAEZ7BFZAK/ Ett annat coolt exempel på användning av charlieplexing är på: https://www.jsdesign.co.uk/charlie/ Minidot 2 -klockan introducerar ett avancerat charlieplexing -schema för blekning/dimning som inte kommer att diskuteras här. UPPDATERING 19 augusti 2008: Jag har lagt till en zip -fil med en krets som kanske kan utnyttja matrisens charliplexing för kraftfulla lysdioder som diskuteras (i längden:)) i kommentarfältet. Den har en tryckknapp + positionsgivare för ett användargränssnitt, plus kretsar för antingen USB- eller RS232 -datorstyrning. Var och en av högspänningsskenorna kan ställas in på en av två spänningar, säg 2,2V för RÖDA lysdioder och 3,4V för grönt/blått/vitt. Spänningen för de höga sidoskenorna kan ställas in med trimpot. Jag skulle föreställa mig att en 20wire IDC -bandkabel ansluts till kortet och 20pin IDC -kontakter läggs längs bandets längd, varje LED -kort har länkar till vilka ledningar i matrisen som önskas. Kretsen är i Eagle Cad och återges i delbilden nedan. Högsidans krets implementeras med hjälp av optokopplare som jag tror kan vara lämpliga. Jag har faktiskt inte testat den här kretsen eller skrivit någon programvara på grund av brist på tid, men har lagt ut den för kommentar, jag är särskilt intresserad av implementeringen av optokopplare. Någon som är modig nog att prova … lägg upp dina resultat. UPPDATERING 27 augusti 2008: För dem som inte använder EagleCad….laddas nedan en pdf av schemat

Steg 1: Lite LED -teori

Några LED -teorier
Några LED -teorier
Några LED -teorier
Några LED -teorier

Charlieplexing förlitar sig på ett antal användbara aspekter av lysdioder och moderna mikrokontroller.

Först vad som händer när du ansluter en LED till el. Huvuddiagrammet nedan visar vad som kallas If v Vf -kurvan för en typisk 5 mm lågeffekts -LED. Om står för "framåtström" Vf står för "framspänning" Den vertikala axeln med andra ord visar den ström som kommer att flöda genom en lysdiod om du sätter den horisontella axelspänningen över dess terminaler. Det fungerar tvärtom också, om du mäter att strömmen är av något värde kan du titta över till den horisontella axeln och se spänningen som lysdioden kommer att presentera över dess terminaler. Det andra diagrammet visar en schematisk bild av en LED med If och Vf märkt. Från huvuddiagrammet har jag också märkt områden i grafen som är av intresse. - Det första området är där lysdioden är "släckt". Mer exakt avger LED: n ljus så svagt att du inte kan se det om du inte hade någon form av superduper bildförstärkare. - Det andra området har lysdioden som bara avger ett svagt sken. - Det tredje området är där en LED vanligtvis används och avger ljus vid tillverkarens betyg. - Det fjärde området är där en lysdiod används utanför dess gränser, lyser förmodligen väldigt starkt men ack bara en kort stund innan den magiska röken inuti släpper ut och den inte fungerar igen … dvs i detta område brinner det ut eftersom för mycket ström strömmar genom den. Observera att If/Vf-kurvan eller driftskurvan för lysdioden är en 'icke-linjär' kurva. Det vill säga, det är inte en rak linje … det har en böj eller knäck i den. Slutligen är detta diagram för en typisk 5 mm röd LED designad för att fungera vid 20mA. Olika lysdioder från olika tillverkare har olika driftskurvor. Till exempel i detta diagram vid 20mA kommer framspänningen för lysdioden att vara cirka 1,9V. För en blå 5 mm LED vid 20mA kan framspänningen vara 3,4V. För en högeffekts vit luxeon -LED vid 350mA kan framspänningen vara runt 3,2V. Vissa LED -paket kan vara flera lysdioder i serie eller parallellt, vilket ändrar Vf/If -kurvan igen. Normalt kommer en tillverkare att ange en driftström som är säker att använda lysdioden vid och framspänningen vid den strömmen. Vanligtvis (men inte alltid) får du en graf som liknar nedan i databladet. Du måste titta på databladet för lysdioden för att avgöra vad framspänningen är vid olika driftströmmar. Varför är denna graf så viktig? Eftersom det visar att när en spänning är över lysdioden, kommer strömmen som kommer att flöda att vara enligt diagrammet. Sänk spänningen och mindre ström kommer att flöda …. och lysdioden kommer att vara "av". Detta är en del av teorin om charlieplexing, som vi kommer till i nästa steg.

Steg 2: Lagarna (elektronik)

Lagarna (av elektronik)
Lagarna (av elektronik)
Lagarna (av elektronik)
Lagarna (av elektronik)
Lagarna (av elektronik)
Lagarna (av elektronik)

Fortfarande inte ännu i magin med charlieplexing ännu … vi måste gå till några grunder i elektroniklagar. Den första intresselagen säger att den totala spänningen över alla serier av anslutna komponenter i en elektrisk krets är lika med summan av individen spänningar över komponenterna. Detta visas i huvuddiagrammet nedan. Detta är användbart när du använder lysdioder eftersom ditt genomsnittliga batteri eller mikrokontrollerutgångsstift aldrig kommer att vara exakt rätt spänning för att köra din LED med den rekommenderade strömmen. Till exempel kommer en mikrokontroller normalt att köra vid 5V och dess utgångsstiften kommer att vara på 5V när den är på. Om du bara ansluter en lysdiod till mikrofonens utgångsstift ser du från driftskurvan på föregående sida att för mycket ström kommer att flöda i lysdioden och den blir varm och bränner ut (troligen skadar mikro också). Men om vi introducerar en andra komponent i serie med lysdioden kan vi subtrahera några av 5V så att spänningen kvar är precis rätt för att köra lysdioden med rätt driftström. Detta är vanligtvis ett motstånd, och när det används på detta sätt kallas det ett strömbegränsande motstånd. Denna metod används mycket vanligt och leder till det som kallas 'ohms law' …. så uppkallat efter Mr Ohm. Ohms law följer ekvationen V = I * R där V är spänningen som kommer att visas över ett motstånd R när en ström I rinner genom motståndet. V är i volt, jag är i ampere och R är i ohm. Så om vi har 5V att spendera och vi vill ha 1,9V över lysdioden för att få den att köra vid 20mA så vill vi att motståndet har 5-1,9 = 3,1 V över det. Vi kan se detta i det andra diagrammet. Eftersom motståndet är i serie med lysdioden kommer samma ström att flyta genom motståndet som lysdioden, dvs 20mA. Så omorganisera ekvationen kan vi hitta motståndet vi behöver för att få detta att fungera. V = I * RsoR = V / Isubstituera värdena i vårt exempel vi får: R = 3.1 / 0.02 = 155ohms (not 20mA = 0.02Amps) Fortfarande med mig än så länge … coolt. Titta nu på diagram 3. Den har lysdioden inklämd mellan två motstånd. Enligt den första lagen som nämns ovan har vi samma situation vid det andra diagrammet. Vi har 1.9V över lysdioden så den körs enligt dess specifikation. Vi har också varje motstånd som subtraherar 1,55V vardera (totalt 3,1). Om vi lägger ihop spänningarna har vi 5V (mikrokontrollerstiftet) = 1,55V (R1) + 1,9V (lysdioden) + 1,55V (R2) och allt balanserar ut. Med hjälp av ohm -lagen finner vi att motstånden måste vara 77,5 ohm vardera, vilket är hälften av mängden beräknat från det andra diagrammet. Naturligtvis i praktiken skulle du vara hårt pressad för att hitta ett 77,5ohm motstånd, så du skulle bara ersätta det närmaste tillgängliga värdet, säg 75ohms och sluta med lite mer ström i lysdioden eller 82ohm för att vara säker och ha lite mindre. Varför i hela friden ska vi göra det här motståndet för att driva en enkel LED … ja, om du har en lysdiod är det lite dumt, men det här är en instruktion om charlieplexing och det är praktiskt för nästa steg.

Steg 3: Presentation av "kompletterande enhet"

Vi presenterar "kompletterande enhet"
Vi presenterar "kompletterande enhet"

Ett annat namn som är mer exakt att beskriva "charlieplexing" är "komplementär drivning".

I din genomsnittliga mikrokontroller kan du i fast programvara berätta för mikron att ställa in en utgångsstift för att antingen vara '0' eller '1', eller att presentera en 0V -spänning vid utgången eller en 5V -spänning vid utgången. Diagrammet nedan visar nu den inklämda LED -lampan med en omvänd partner….eller en komplement -LED, därav kompletterande drivenhet. I diagrammets första hälft matar mikron ut 5V till stift A och 0V till stift B. Strömmen kommer således att flöda från A till B. Eftersom LED2 är orienterad bakåt till LED1 kommer ingen ström att strömma genom den och den kommer inte glöd. Det är det som kallas omvänd partiskhet. Vi har motsvarigheten till situationen på föregående sida. Vi kan i princip ignorera LED2. Pilar visar det aktuella flödet. En LED är i huvudsak en diod (därav Light Emitting Diode). En diod är en enhet som tillåter ström att flöda i en riktning, men inte i den andra. Schemat över en LED visar detta, strömmen kommer att flöda i pilens riktning … men är blockerad åt andra hållet. Om vi instruerar mikroen att nu mata ut 5V till stift B och 0V på stift A har vi motsatsen. Nu är LED1 omvänd förspänd, LED2 är förspänd framåt och tillåter strömflöde. LED2 lyser och LED1 är mörkt. Nu kan det vara en bra idé att titta på schemat över de olika projekten som nämns i inledningen. Du bör se en hel del av dessa kompletterande par i en matris. Naturligtvis i exemplet nedan kör vi två lysdioder med två mikrokontroller -stift …. du kan säga varför bry dig. Nästa avsnitt är där vi kommer till tarmarna med charlieplexing och hur det effektivt utnyttjar en mikrokontrollers utgångsstiften.

Steg 4: Slutligen….en Charlieplex Matrix

Äntligen….en Charlieplex Matrix
Äntligen….en Charlieplex Matrix
Äntligen….en Charlieplex Matrix
Äntligen….en Charlieplex Matrix

Som nämnts i inledningen är charliplexing ett praktiskt sätt att köra massor av lysdioder med bara några stift på en mikrokontroller. Men på de föregående sidorna har vi inte riktigt sparat några nålar, kört två lysdioder med två stift ….stor puss!

Tja, vi kan utöka idén om kompletterande drivning till en charlieplex -matris. Diagrammet nedan visar den minsta charlieplexmatrisen som består av tre motstånd och sex lysdioder och som endast använder tre mikrokontrollerstift. Nu ser du hur praktisk denna metod är? Om du ville köra sex lysdioder på normalt sätt … behöver du sex stycken mikrokontroller. Faktum är att med N -stift på en mikrokontroller kan du eventuellt driva N * (N - 1) lysdioder. För 3 stift är detta 3 * (3-1) = 3 * 2 = 6 lysdioder. Saker staplas snabbt med fler stift. Med 6 stift kan du köra 6 * (6 - 1) = 6 * 5 = 30 lysdioder….ow! Nu till charlieplexing -biten. Titta på diagrammet nedan. Vi har tre komplementära par, ett par mellan varje kombination av mikroutgångar. Ett par mellan A-B, ett par mellan B-C och ett par mellan A-C. Om du kopplade bort stift C för tillfället skulle vi ha samma situation som tidigare. Med 5V på stift A och 0V på stift B lyser LED1, LED2 är omvänd förspänd och leder inte ström. Med 5V på stift B och 0V på stift A lyser LED2 och LED1 är omvänd. Detta följer för de andra mikrostiften. Om vi kopplade bort stift B och satte stift A till 5V och stift C till 0V så skulle LED5 lysa. Omvänd så att stift A är 0V och stift C är 5V då lyser LED6. Samma för det komplementära paret mellan stiften B-C. Vänta, jag hör dig säga. Låt oss titta närmare på det andra fallet. Vi har 5V på stift A och 0V på stift C. Vi har kopplat bort stift B (den mittersta). OK, så en ström flyter genom LED5, strömmen flödar inte genom LED6 eftersom den är omvänd förspänd (och så är LED2 och LED4) … men det finns också en väg för strömmen att ta från stift A, genom LED1 och LED3 finns det inte? Varför lyser inte dessa lysdioder lika bra. Här är hjärtat i charlieplexing -schemat. Det finns faktiskt en ström som flödar både LED1 och LED3, men spänningen över båda dessa kombinerade kommer bara att vara lika med spänningen över LED5. Vanligtvis skulle de ha halva spänningen över dem som LED5 har. Så om vi har 1,9V över LED5, då är endast 0,95V över LED1 och 0,95V över LED3. Från If/Vf -kurvan som nämns i början av denna artikel kan vi se att strömmen vid denna halva spänningen är mycket mycket lägre än 20mA…..och dessa lysdioder kommer inte att lysa synligt. Detta kallas strömstöld. Således kommer det mesta av strömmen att flöda genom den lysdiod vi vill ha, den mest direkta vägen genom minst antal lysdioder (dvs en lysdiod), snarare än någon seriekombination av lysdioder. Om du tittar på det aktuella flödet för en kombination av att sätta 5V och 0V på två drivstift på charlieplexmatrisen ser du samma sak. Endast en lysdiod lyser i taget. Som en övning, titta på den första situationen. 5V på stift A och 0V på stift B, koppla bort stift C. LED1 är den kortaste vägen för strömmen och LED 1 lyser. En liten ström kommer också att passera genom LED5, sedan säkerhetskopiera LED4 till stift B … men igen kommer dessa två lysdioder i serie inte att kunna suga upp tillräckligt med ström jämfört med LED 1 för att lysa starkt. Således realiseras kraften i charlieplexing. Se det andra diagrammet som är schematisk för min Microdot -klocka … 30 lysdioder, med endast 6 stift. Min Minidot 2 -klocka är i princip en utökad version av Microdot …. samma 30 lysdioder arrangerade i en array. För att skapa ett mönster i matrisen tänds varje lysdiod som ska belysas kort, sedan flyttar mikron till nästa. Om den är planerad att lysa, slås den på igen en kort stund. Genom att snabbt skanna igenom lysdioderna tillräckligt snabbt kan en princip som kallas "visionens beständighet" tillåta en rad lysdioder att visa ett statiskt mönster. Minidot 2 -artikeln har lite förklaring till denna princip. Men vänta….. Jag har till synes överblickat lite i beskrivningen ovan. Vad är detta "koppla bort stift B", "koppla bort stift C" -verksamhet. Nästa avsnitt tack.

Steg 5: Tri-tillstånd (inte trehjulingar)

Tri-tillstånd (inte trehjulingar)
Tri-tillstånd (inte trehjulingar)
Tri-tillstånd (inte trehjulingar)
Tri-tillstånd (inte trehjulingar)

I föregående steg nämnde vi att en mikrokontroller kan programmeras för att mata ut en 5V spänning eller en 0V spänning. För att få charlieplexmatrisen att fungera väljer vi två stift i matrisen och kopplar bort alla andra stift.

Naturligtvis är det lite svårt att koppla bort stiften manuellt, särskilt om vi skannar saker väldigt snabbt för att använda visningseffektens beständighet för att visa ett mönster. Men en mikrocontrollerutgång kan också programmeras till att vara ingångsstiften. När en mikrostift är programmerad att vara en ingång går det in i det som kallas 'högimpedens' eller 'tri-state'. Det vill säga, det uppvisar ett mycket högt motstånd (i storleksordningen megaohms, eller miljoner ohm) mot stiftet. Om det finns ett mycket högt motstånd (se diagram) kan vi i huvudsak betrakta stiftet som frånkopplat, och så fungerar charliplex -schemat. Det andra diagrammet visar matrisstiften för varje kombination som är möjlig att belysa var och en av de 6 lysdioderna i vårt exempel. Vanligtvis betecknas ett tri-tillstånd med ett 'X', 5V visas som ett '1' (för logiskt 1) och 0V som ett '0'. I mikroprogramvaran för en '0' eller '1' programmerar du stiften som en utgång och dess tillstånd är väldefinierat. För tri-state programmerar du det som en ingång, och eftersom det är en ingång vet vi faktiskt inte vad staten kan vara … därifrån "X" för okänt. Även om vi kan tilldela en pin för att vara tri-state eller en ingång, behöver vi inte läsa den. Vi drar bara nytta av det faktum att en ingångsstift på en mikrokontroller är hög impedans.

Steg 6: Några praktiska frågor

Magin med charlieplexing är beroende av det faktum att den individuella spänningen som presenteras över flera lysdioder i serie alltid kommer att vara mindre än den för en enda lysdiod när den enda lysdioden är parallell med seriekombinationen. Om spänningen är mindre är strömmen mindre och förhoppningsvis kommer strömmen i seriekombinationen att vara så låg att lysdioden inte tänds. Detta är dock inte alltid fallet. Låt oss säga att du hade två röda lysdioder med en typisk framspänning på 1.9V i din matris och en blå LED med en framspänning på 3.5V (säg LED1 = röd, LED3 = röd, LED5 = blå i våra 6 LED -exempel). Om du tänder den blå lysdioden skulle du få 3,5/2 = 1,75V för var och en av de röda lysdioderna. Detta kan vara mycket nära LED: s svaga arbetsområde. Det kan hända att de röda lysdioderna lyser svagt när det blå är upplyst. Det är därför en bra idé att se till att framspänningen för alla olika färgade lysdioder i din matris är ungefär densamma vid driftströmmen, eller annars använda samma färgade Lysdioder i en matris. I mina Microdot/Minidot -projekt behövde jag inte oroa mig för detta, jag använde högeffektiva blå/gröna SMD -lysdioder som lyckligtvis har ungefär samma framspänning som de röda/gula. Men om jag implementerade samma sak med 5 mm lysdioder skulle resultatet bli mer problematiskt. I det här fallet skulle jag ha implementerat en blå/grön charlieplex -matris och en röd/gul matix separat. Jag hade behövt använda fler stift…. Men där är du. En annan fråga är att titta på din nuvarande dragning från mikro och hur ljus du vill ha LED. Om du har en stor matris och snabbt skannar den, är varje lysdiod tänd endast en kort stund. Detta kommer att se relativt svagt ut jämfört med en statisk display. Du kan fuska genom att öka strömmen genom lysdioden genom att minska de strömbegränsande motstånden, men bara till en punkt. Om du drar för mycket ström från mikron för länge skadar du utgångsstiften. Om du har en matris som rör sig långsamt, säg en status- eller cyklondisplay, kan du hålla strömmen nere på en säker nivå men ändå ha en lysande LED -display eftersom varje lysdiod är tänd under en längre tid, eventuellt statisk (i fallet med en Några fördelar med charlieplexing:- använder bara några få stift på en mikrokontroller för att styra många lysdioder- minskar komponentantalet eftersom du inte behöver massor av drivrutiner/motstånd etc Några nackdelar:- din mikro-firmware kommer att behöva hantera inställningen både spänningstillstånd och ingångs-/utgångstillstånd för stiften- måste vara försiktiga med att blanda olika färger. PCB-layout är svårt, eftersom LED-matrisen är mer komplex.

Steg 7: Referenser

Det finns massor av referenser om charlieplexing på webben. Förutom länkarna längst fram i artikeln är några av dem: Den ursprungliga artikeln från Maxim, detta har mycket att säga om att köra 7 segmentdisplayer vilket också är möjligt. https://www.maxim-ic.com/appnotes.cfm/appnote_number/1880A wiki-posthttps://en.wikipedia.org/wiki/Charlieplexing

Rekommenderad: