Val av microprocessor, RGB LED styrning

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Val av microprocessor, RGB LED styrning

Inlägg av jesse »

Jag har inte tänkt igenom det här jättemycket. Det är inte ett färdigt fungerande förslag utan mer en idé man kan bygga vidare på. (Det är ganska mycket jobb att sitta och räkna ut alla detaljer, men det är ju inte jag som ska göra det jobbet, hade jag tänkt). Som jag tänkt nu så fungerar bara dimning av alla dioder samtidigt (eller möjligtvis rad för rad). Jag kan ju gå igenom lite grann ungefär hur jag tänkt mig:

Timing:

En diodrad åt gången ska lysa. Vilka dioder i raden som ska lysa i just den raden bestäms av innehållet i shiftregistren just då. Vilken rad det är fråga om beror på kretsarna uppe till höger i ritningen: counter - decoder.... "counter" är en binärräknare. Om man har 8 rader behövs det tre bitar i räknaren som i decodern omvandlas till 8 datalinjer... Vad som händer är då att en rad i taget stegas fram av räknaren. För att processorn ska ha koll på vilken rad den är på kan den nollställa räkanren på räknarens resetingång.

Studera list of 74 series Logic ICs.
Här kan du hitta alla logikkretsar som behövs, t.ex. 74HC393 = 4-bit Binary Counter, 74HC138 = 3 to 8-line Decoder/Demultiplexer. Shiftregistren kan vara t.ex. 74HC595. Leta upp och läs databladen för kretsarna.

För varje rad som ska lysa så skall alltså detta ske:

1) 18 bitar data skickas ut seriellt till shiftregistren. Detta kan göras "manuellt" i programvaran (bitbanging) men det smartaste är att använda det färdiga SPI - Serial interface. Se datablad för den processor du kommer att välja - t.ex här: Atmega1284P kapitel 17 - SPI (sidan 162) så kan du läsa om seriell kommunikation. Den är speciellt anpassad för att kunna skicka ut och läsa in data från shiftregister.
2) när alla bitar är på plats så skickas en signal till "latch" som överför bitarna till shiftregistrens utgångar. Nu kommer de valda lysdioderna i den raden att lysa. Denna signal bör skickas samtidigt som man byter till ny rad. Bitarna på shiftregistrens utgångar kommer att vara satta ända tills nästa gång en "latch" signal kommer - då nästa rad ska visas.

En tanke på hur man skulle kunna göra denna dimning vore kanske att man använder sig av antingen shiftregistrens "output enable" eller kanske ännu hellre den 8-bitars multiplexerns "output enable"... alltså signaler som styr om utgångarna ska vara på eller inte.

Multiplexern skulle jag välja av följande anledning:
tittar man på databladet för 74HC595 så ser man att utgångarna hamnar i tri-state-läge om man avaktiverar utgångarna med output-enable. Men multiplexern antar ett logiskt värde då utgångarna "avaktiveras" med output-enable. Tittar man lite extra på vad multiplexern gör , samt på den transistorkonstruktion jag föreslagit för att styra raderna så upptäcker man:

* för att aktivera en rad krävs en logisk etta på utgången. Alla andra rader ska då ha logisk nolla. (detta beror på transistorernas funktion - en transistor inverterar signalen, - här har vi två transistorer - en NPN och en PNP. Denna koppling fungerar bra om man driver lysdioderna med högre drivspänning än processorn - om man ska driva lysdioderna med samma spänning som processorn så behövs inte NPN-transistorn och då blir signalen inverterad bara en gång). Men 74HC138 har inverterade utgångar, dvs den valda raden får en nolla och övriga en etta. Detta skulle alltså passa utmärkt om du inte har nån NPN-transistor före. Men nu har du det (antar vi just nu) och då ser vi att det finns en motsvarande multiplexer som heter 74HC238 och som har icke-invererade utgångar. Så vi väljer en 74HC238. Denna ger logisk nolla på alla utgångar när den är "avstängd" med någon av output-enable-ingångarna.

* Här (på en av multiplexerns output-enable-ingång) kan vi alltså koppla in en dimmerfunktion. Om man för varje rad som visas bara har på utgången en viss tid.

* Detta kan man lätt styra med en timer - samma timer som då styr allt annat i programmet som har med att skicka ut data att göra.

Timern programmeras som PWM med fast frekvens. En av processorns utgångar blir PWM-utgång. (Du kan inte välja vilken pinne - den är förutbestämd och "hör till timern"). Antagligen kan man använda denna utgång med fördel att även styra klockan på räknaren (74HC393) och latch-ingången på shiftregistrena. Då får vi allt detta synkroniserat. För att även synkronisera utshiftandet av data till shiftregistren kan timern generera en interrupt, eller alternativt, sätta en flagga, som triggar att man skickar ut nästa rads data.

Detta är ganska mycket "händelsebaserad" programmering, så om man tänker sekventiell programmering här kan det ara svårt att hänga med. Men om du läst java som är objektorienterat så borde det inte vara några större problem.
dscn5359.jpg
Allt utgår från timern - det är den som triggar övriga händelser. Om detta görs som interrupt och även de tre byten som ska shiftas ut seriellt blir interruptstyrt så kommer processorn, när det hela väl är igång, att vara nästan helt ledig för att göra annat. Då får du gott om tid på dig att ändra dimning, bygga mönster osv...

Om någon kommer på hur man ska dimma varje enskild LED-grupp så får man nog ändra lite i tänket.

EDIT: har lagt in länken till Atmega1284P i texten. (missade det förut)
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Senast redigerad av jesse 13 september 2010, 21:49:30, redigerad totalt 2 gånger.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Val av microprocessor, RGB LED styrning

Inlägg av jesse »

Men jag tror att i det här läget - innan vi går vidare - så får du börja med att:

1) skaffa programmerare och en processor på något lämpligt universellt utvecklarkort så att du kommer igång med programmering. Prova enklare program först (blinka lysdiod, använda timern)
2) skaffa nån breadboard eller liknande och prova att koppla upp lite logikkretsar (om du inte redan kan detta) och testa olika kopplingar , t.ex med räknare, shiftregister osv.
3) prova att koppla ihop det med processorn. Se om du kan styra kretsarna.
4) testa att koppla upp några RGB-LED med transistorer och se om du kan styra dessa med logiska signaler.

Jag antar att flera av dessa steg kommer att generera frågor osv..

sen är vi redo att gå vidare, tror jag. Det är ingen bra idé att diskutera en ganska avancerad koppling i detalj om du inte först har provat på enklare kopplingar och fått de att fungera. Samma gäller för programmeringen. Det blir alldeles för många frågor samtidigt för att det ska bli meningsfullt.
dragon9226
Inlägg: 144
Blev medlem: 8 september 2010, 14:26:12

Re: Val av microprocessor, RGB LED styrning

Inlägg av dragon9226 »

Nu inser jag att jag kan alldeles för lite om det här med att konstruera kretsarna...
Därför har jag skaffat hjälp med just denna bit.
Så jag hoppas få ett färdigt kopplingsschema, vilket betyder att det räcker med att löda ihop och programmera.

Dock inser jag att eftersom jag inte programmerat sådant innan, kan det bli svårt att göra något så stort på en gång.
Men tror ni detta är möjligt?

Det borde ju ändå gå att börja i liten skala, som att tända en led/ alla, dimma lite osv., för att träna.
Användarvisningsbild
vfr
EF Sponsor
Inlägg: 3515
Blev medlem: 31 mars 2005, 17:55:45
Ort: Kungsbacka

Re: Val av microprocessor, RGB LED styrning

Inlägg av vfr »

Det är väl bara att köra igång och göra just det. Träna alltså. Lek lite med lysdioder och andra grejor så du börjar känna dig lite mer varm i kläderna. Det är en väldigt stor del erfarenhet och vana som gör en bra programmerare.
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Val av microprocessor, RGB LED styrning

Inlägg av jesse »

Absolut - börja i liten skala. Nånting kommer det ju att bli. Sen kan du ju utveckla det hela allt eftersom.
dragon9226
Inlägg: 144
Blev medlem: 8 september 2010, 14:26:12

Re: Val av microprocessor, RGB LED styrning

Inlägg av dragon9226 »

När jag sa börja i liten skala syftade jag på om jag skulle bygga ihop hela produkten och på den testa i liten skala?
Alltså testa sig fram på några få led:s.

Men nu har jag också fått tag på en redan färdig 8x8 led matris med färdiga kretsar.
Så snart kan jag börja testa på denna.

Dock skulle jag behöva någon bok eller pdf för att komma igång.
Eftersom jag programmerat i Java förut, och jag kommer använda AVR ISP processor så tänkte jag programmera i C.
Har ni någon bok eller pdf som skulle kunna hjälpa till för att komma igång med programmeringen?
Ni har tidigare nämnt två, är dessa lämpliga tror ni?
("Mikroprocessorteknik" och "Vägen till C" föreslagna av Jesse)

Skulle jag utgå från deras titel så låter det bra i alla fall.
sneaky
Inlägg: 1621
Blev medlem: 22 juni 2009, 18:38:42

Re: Val av microprocessor, RGB LED styrning

Inlägg av sneaky »

De hade nog inte föreslagits om de inte var lämpliga hehe. Och mitt stilla råd är att börja i liten skala först. Du kommer ha fullt upp att reda ut saker och ting i början utan att behöva bekymra dig för om hårdvaran fungerar som den ska. Blinka en LED, blinka sedan två, blinka två i olika takt, testa att koppla in ett shift-register etc etc. Så hade i alla fall jag gjort.
Användarvisningsbild
jonnorberg
Inlägg: 850
Blev medlem: 19 mars 2008, 17:45:40
Ort: Årsta

Re: Val av microprocessor, RGB LED styrning

Inlägg av jonnorberg »

Du kommer att ha frågot vid 4 leds, så börja med det på ett breadboard. Då får du idéer om hur du skall konstruera det stora projektet. Du får en idé om hur lång tid det tar oxå.
dragon9226
Inlägg: 144
Blev medlem: 8 september 2010, 14:26:12

Re: Val av microprocessor, RGB LED styrning

Inlägg av dragon9226 »

Så ni tror alltså det är alldeles för svårt att först programmera lite på en 8x8 och sedan på det stora projektet?
sneaky
Inlägg: 1621
Blev medlem: 22 juni 2009, 18:38:42

Re: Val av microprocessor, RGB LED styrning

Inlägg av sneaky »

Varför inte prova? Förstår inte riktigt vad problemet är om jag ska vara ärlig. Det kostar ju inget att göra ett snabbt test med en LED innan du hoppar in i det stora projektet? Jag kan inte svara för andra men första gången jag började med att programmera microprocessorer (PIC i mitt fall) så tog det ett flertal timmar första gången innan jag ens fick fart på en LED. Visserligen pulade jag då med ASM och var fullkomlig novis men jag tror nog att du kommer ha att göra en stund bara med att koppla upp din första test-krets, få ordning på programmeringsmiljön, förstå hur du ska börja, förstå hur du ska konfigurera processorn för första gången, hur du ska få in programmet du skrivit i processorn etc etc etc. Och när du nu försöker få styr på dessa grundläggande saker så underlättar det ju inte direkt om det skulle vara något litet skitfel på den stora mer avancerade kretsen som gör att du tror att din kod inte fungerar som den ska.
dragon9226
Inlägg: 144
Blev medlem: 8 september 2010, 14:26:12

Re: Val av microprocessor, RGB LED styrning

Inlägg av dragon9226 »

Det låter väll som en bra ide i och för sig.
Men jag har tyvärr för lite kunskaper för att veta hur jag ska koppla en sådan enkel krets....
Men om jag får hjälp med det så ska det nog gå bra...
Känner att jag kan för lite om elektriska kretsar. Men står det om detta i boken "Mickroprocessorteknink"?
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Val av microprocessor, RGB LED styrning

Inlägg av jesse »

Det är ju inte så att programmeringen blir svårare ju fler LED's du har. Och hur du ska programmera beror ju också på hårdvaran - hur den är konstruerad. Olika hårdvara kräver olika signaler för att fungera. Och kanske är olika svårt att programmera. Om du hoppar från en hårdvara till en annan kanske du måste börja om från början med programmet. Så det är inte säkert att du tjänar på att först börja med 8x8 och sedan byta upp dig till 12x12. Det tar antagligen bara dubbelt så mycket tid.

Om du har ett system så spelar det egentligen ingen roll om du har 4 x 4 dioder eller om du har 200 x 200... principen blir densamma. Det är ganska enkelt att få 12 x 12 lysdioder att lysa och att dimma alla samtidigt. Det jag tror blir svårare är när du ska programmera in rörliga mönster.

Men vad vi menar med att först lära sig att blinka en led, är ju att du lär dig hur du programmerar så att en pinne på processorn ändrar spänning med visst tildsintervall. När du kan det har du lärt dig en del grunder och är nog redo att programmera för fler dioder eller matriser med dioder.

Se bara till att bygga upp programmet i moduler - dvs separata funtioner för att styra hårdvaran.

Då blir det lättare att sedan bygga ut programmet.

så att du får funktioner som liknar dessa:

Kod: Markera allt

send_8bit_data_to_shiftregister(data);
nolla_rad(); // börja om från rad 0
stega_rad(); // nästa rad

set_dimmer_value(val); // sätt dimmer till visst värde
dimma_upp(time); // dimma upp under viss tid i sekunder
dimma_ner(time);

set_colour(rad,kolumn,colour); // sätt en viss färg i en viss LED
Användarvisningsbild
jesse
Inlägg: 9240
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Val av microprocessor, RGB LED styrning

Inlägg av jesse »

Angående böcker:

Mikroprocessorteknik är fantastiskt bra på att förklara de grundläggande funktionerna i en AVR-processor. Här kan du lära dig mycket om in- och utgångar, timers, med mera. Boken är uppbyggd kring assemblerspråket, men det gör inte så värst mycket - de flesta namnen på de perifera enheterna är samma och du måste göra på samma sätt oavsett vilket språk du använder... så du lär dig att programmera en pinne som ingång eller utgång och att styra den i ett program.

Sen behöver du en bok om programmeringsspråket C.

Om du vill lära dig mer om logiska kretsar (vilket du behöver förstå en del av även för att förstå processorns funktioner) bör du läsa nån bok om digitalteknik. Exempelvis denna eller kanske denna. Kan du inte grunderna i digitalteknik kan det vara svårt att förstå innehållet i Mikroprocessorteknik.

Det är ett rejält arbete du tagit på dig, men om du pluggar och övar ordentlig så tror jag du ska kunna klara det.
dragon9226
Inlägg: 144
Blev medlem: 8 september 2010, 14:26:12

Re: Val av microprocessor, RGB LED styrning

Inlägg av dragon9226 »

Dags att gå till biblioteket och börja läsa =)
Användarvisningsbild
4kTRB
Inlägg: 20824
Blev medlem: 16 augusti 2009, 19:04:48

Re: Val av microprocessor, RGB LED styrning

Inlägg av 4kTRB »

Eller mjukstarta lite på nätet...http://ermicroblog.wordpress.com/2008/11/
Skriv svar