Transformators.lv


 
 
 
 
 
 
 
Transformators.lv » 2D/3D gaismas diožu ekrāns, adresācijas izvēle un multipleksēšana | Loģika | Forums
Jums jāielogojas lai rakstītu
Meklēt Forumus:


 






Wildcard Usage:
*    apzīmē jebkuru skaitli
%    apzīmē tieši vienu rakstzīmi

2D/3D gaismas diožu ekrāns, adresācijas izvēle un multipleksēšana

Aplūkot oriģinālo rakstu

Ieraksts
Member

afla

09:13 04.06.2010

ieraksti3
Rakstu skaits 1

1

Mana izvēlētā raksta tēma būs no digitālās elektronikas – gaismas diožu ekrāna multipleksēšana. Raksts ieteicams tiem, kas jau ir iepazinušies ar kādu no programmējamajiem čipiem (piem. Atmega), vai arduino, un interesē gaismas diožu adresācijas veidi.

Multipleksēšana nozīmē attēla attainošanu n-dimensiju ekrānā, ja to fiziski nav iespējams parādīt 1 kadrā, bet iespējams parādīt atsevišķi visas tā daļas (detaļas). Pietiekoši ātri šīs daļas secīgi parādot, vērotājam rodas ilūzija par kopējo attēlu.

Apskatīsim gadījumu, kur var būt tikai 2 krāsas – diode iedegta (zaļš) un diode izslēgta (balts).

Multipleksēšana izpaužās visdažādākajos veidos, piemēram CRT monitorā, kur vienā laika momentā tiek iedegta tikai 1 horizontāla līnija secīgi no augšas uz leju, bet tas notiek tik ātri, ka rodas ilūzija, ka tiek vienlaicīgi iedegts viss ekrāns. Šādos monitoros ir nepieciešams liels ātrums, ejot pilnu periodu (no augšas uz leju) – 60 Hz līdz 100 Hz. Tātad vienā sekundē līnija paspēj noiet 60 reižu no augšas uz leju. Otrs piemērs, ko varbūt nevarētu tieši uzskatīt par multipleksēšanu, ir kvēlspūldzes, kuras iedegas un iezdziest 50 reižu sekundē, tā pat radot ilūziju, ka tā deg visu laiku. Šis gadījums ir analogs un pilnībā atkarīgs no tā, ka tiek izmantota maiņstrāva, tad nav citas izejas, bet digitālajās sistēmās taču ir līdzstrāva, kur nevajadzētu rasties šādai problēmai.

Protams, ka ir iespējams katrai ekrāna diodei pievienot savu personīgu kanālu, un visām kopēju zemējumu, tādā gadījumā attēlu var parādīt vienā kadrā. Ja diožu skaits ekrānā pārsniedz pieejamo kanālu skaitu, kas iziet no digitālas sistēmas (piem. Atmega328 mikročips, kur ir 14 izejas kanāli), tad vairs nav iespējams individuāli adresēt katru diodi ar vienu čipu. Būtu muļķīgi likt klāt papildus čipus, lai risinātu šo problēmu, jo čipi ir dārgi, un tos būtu jāliek klāt ļoti daudz.

Risinājums ir adresācijas ieviešana. Var būt visdažādākā adresācija, ko es izšķiru digitālajā un fiziskajā (analogajā) adresācijā. Esmu izmēģinājis visdažādākos to veidus. Pirmais no digitālajiem ir tāds, ka var uzskatīt, ka kanāli veido bināru adresi, kur var adresēt katru diodi, piemēram, ja man ir 6 kanāli, tad es varu adresēt 64 diodes, bet tikai vienu vienlaicīgi.

Šajā gadījumā man atliek kombinēt signālus 6 kanālos, kuri iet uz konverteri, no kura tālāk iziet 64 kanāli – katrs uz savu diodi (protams ar tik daudz izejām konverteri neeksistē). Šis veids ir pilnībā digitāls, bet limitēts uz to, ka var iedegt tikai 1 diodi. Ja diožu skaits nav liels, piem. 25, tad vērotāju var pilnībā piemuļķot, iededzinot secīgi visas vēlamās diodes, kuras ir jāiededz, un to darīt periodiski.

Otrs digitālais veids ir izvietot Atmega izejas kanālus 2D tīklā, kur vieni iet vertikāli, bet otri horizontāli. Kanālu krustojumos pievieno tranzistoru (AND gate), un gaismas diodi. Šeit ir nepieciešami daudzi tranzistori.

Normālā situācijā izmanto čipus, uz kuriem ir vairāki AND gates.

Šeit AND gates ir izvietoti tīklā. 2D tiklam ir 1 priekšrocība pār 1D bināro adresāciju, kas bija pirmajā gadījumā, bet ir arī trūkumi. Trūkums ir tāds, ka ar pirmo veidu var adresēt vairāk diodes ar ierobežotu sākuma kanālu skaitu. Piemēram, ja ir 6 kanāli, tad ar binary to decimal konverteri var adresēt 64 diodes, bet ar tīklu var tikai 3x3 = 9 diodes. Kā jau minēju, ja diožu skaits ekrānā nav liels, tad labāk izmantot pirmo veidu, taču, ja skaits pārsniedz 25 diodes, tad vērotājs sāk ievērot mirgošanu, jo atmega procesoram ir tikai 16MHz, kur lielāko taktu skaitu aizņem algoritms, bet tikai kāds 0.01% paliek pāri ekrānam.

Tieši šeit parādās priekšrocība pār pirmo veidu – zināms, ka tiklā tranzistors iedarbina diodi, ja attiecīgais vertikālais un horizontālais kanāls ir ieslēgti vienlaicīgi, tātad vertikālos un horizontālos kanālus var kombinēti ieslēgt tā, lai iedegtos vairākas diodes. Tātad būs nepieciešami mazāk kadri, lai parādītu attēlu, tātad mazāka mirgošana ekrānam.

Piemēram mums ir 4x4 ekrāns, kur ir jāiegūst šāds attēls:

Parādās jautājums, cik kadri būs nepieciešami, lai parādītu šo attēlu ?

Šeit nav viennozīmīgas atbildes, jo attēlu var parādīt visdažādākajos veidos, kā arī ar dažādu kadru skaitu.

1. veids būtu katru diodi ieslēgt un izslēgt pēc kārtas, kas aizņemtu 3 kadrus. Attiecīgi būtu jāieslēdz vertikālie un horizontālie kanāli.

Periodiski un ļoti ātri, ieslēdzot šīs diodes, novērotājam būs redams vēlamais attēls.

2. veids ir multipleksēšanu nedaudz optimizēt, jo, ja jāparāda liels attēls, tad vērotājs sāk pamanīt mirgošanu.

Šei viens periods aizņem tikai 2 kadrus, tātad būs mazāka mirgošana, kā arī diodes degs spilgtāk, jo būs nepieciešams mazāks laiks, lai izslēgto diodi pēc pilna perioda atkal ieslēgtu, tātad tā var pat nepaspēt līdz galam izdzist. Optimizējot multipleksēšanu ir jāņem vērā arī viena lieta – ja kāda diode tiks iedegta pilna perioda laikā vairāk, kā vienu reizi, tad novērotājam izskatīsies, ka tā deg spilgtāk, kā pārējās. Tas ne būt nav labi, taču bieži sanāk tā,  ka pēc optimizēšanas, ir vairāk to diožu, kas iedegas biežāk vienā pariodā par tām, kas iedegas mazāk. Tad novērotājam liktos, ka dažas diodes deg vājāk, kā pārējās. Trešais variants:

No sākuma varētu likties, ka 3. veids nav nemaz tik labs, jo diode ar koordinātēm (2, 2) būs spilgtāka, kā pārējās. Ja ir jārāda liels attēls, tad ir daudz diodes, kuras var ieslēgt vairāk kā 1 reizi pilnā periodā, tātad tām būs mazāka mirgošana. Gadās pat, ka diodi var ieslēgt pat 3 reizes.

Ir vēl viens adresācijas veids, kurš ir analogs pēc dabas, kā arī vispār neprasa tranzistorus pie katras diodes. Par šo vedu uzzināju tikai nesen un  esmu izmantojis tikai vienā projektā.

Šeit ir tā pati tīkla adresācija, tikai bez tranzistoriem, tātad attēlā, kur bija daudzie čipi, bez tiem varēja iztikt.

Gaismas diode, kā jau diode, strāvu laiž cauri tikai 1 virzienā. Tai ir 2 kontakti (katods un anods), pie kuriem attiecīgi var pieslēgt plusu un mīnusu dažādās kombinācijās:

No četriem gadījumiem diode deg tikai tad, ja pie anoda ir + signāls, un pie katoda ir ground signāls. Slēdzot tīklā, diodēm attiecīgajās rindās un kolonnās jābūt paralēlā slēgumā, savādāk strāva netiks cauri diodēm, kas ir izslēgtas, un netiks līdz diodēm, kuras jāieslēdz.

Pateicoties šai diodes īpašībai, var pat iet tālāk un taisīt 3D ekrānu, jo ekrāna adresāciju nosaka paša ekrāna elementu īpašības. Mans piemērs apskatāms šeit:

Šeit līmeņi, kas ir paralēli zemei (pa 9 diodēm) ar katodiem ir salodēti kopā un pieslēgti pie 3 kanāliem, kuri var strādāt 2 režīmos: pluss vai mīnuss.

Diodēm anodi ir salodēti kopā 9 kolonnās, kas attiecīgi ir pieslēgtas 9 kanāliem.

Multipleksēšāna notiek pa 3 līmeņiem katrs savā kadrā. Tādējādi katrā līmenī var ieslēgt visas nepieciešamās diodes vienlaicīgi. Procesu varētu optimizēt, ja vienā kolonnā jāiededz vairākas diodes, tad pietiktu ieslēgt ground 2 līmeņos un plusu attiecīgajā kolonnā, tad pietiktu tikai ar 1 kadru. Jāpiemin, ka jau minētie kadri ir kā apakškadri, ja notiek animācija, nevis tikai konstants attēls.

Atmega čips tiek programmēts ar C valodu, tātad varētu ieprogrammēt arī kādu līmeni, kas optimizē multipleksēšanu. Būtu jāizvērtē visi iespējamie apakškadru varianti kadra parādīšanai.

Turpmāk apakškadrus saukstim par kadriem, un uzskatīsim, ka animācijas vietā tiek rādits tikai 1 attēls.

Katru variantu, kā parādit attēlu, varētu novērtēt pēc vairākiem pazīmēm (kritērijiem).

N1 = (iedezdamo diošu skaits)/(kadru skaits)

N2 = vidējais kadru skaits, kurā deg katra diode

N3 = (vidējais katrā kadrā iedegto diožu skaits)/(iedezdamo diošu skaits)

N4 = (lielākais kādā kadrā iedegto diožu skaits)/(iedezdamo diošu skaits)

N5 = (mazākais kādā kadrā iedegto diožu skaits)/(iedezdamo diošu skaits)

N6 = (iedezdamo diošu skaits)/(pārslēgumu skaits pilnā periodā)

Jo augstāks rezultāts pazīmēs, jo izvēlētais veids ir labāks, taču parasti pēc šādas matemātiskās shēmas attēla parādīšanas veidus neizvērtēju, un taisu, kā pagadās, lai tikai mazāk kadrus aizņemtu.

Iesaku katram, kam interesē digitālā elektronika uztaisīt kādu projektu ar gaismas diodēm – 2D/3D ekrānu, vai salikt diodes riņķī vai kādā citā formā, un izmēģināt dažādus veidus, kā ar ierobežotu kanālu skaitu var adresēt mazu, lielāku un beigās ļoti lielu diožu skaitu.

Projektus sāku taisīt ar Arduino Duemilanove shēmu, kas nopērkama Argus veikalā, bet šobrīd pērku tikai  Atmega328p čipus, kas maksā daudz lētāk.


Aplūkot oriģinālo rakstu

Viesis

Aleksejs

10:19 20.06.2010


Rakstu skaits 0

2

Super! Vel vajag pieslegt 3 pogas + izmantot divkrasainas diodes, un vares uztaisit 3d snake speliti ))

Member

afla

11:31 20.06.2010

ieraksti3
Rakstu skaits 1

3

Ieraksts labots 11:37 – 20.06.2010 Labotājs – afla


Man arī bija ideja taisīt 3d snake, tikai tur vajaga lielāku kubu piem.8x8x8, lai būtu efektīvāk. Šobrīd gaidu, kad argusā parādīsies gaismas diodes, kas vairumā maksā lētāk: 300+ Ls 0.02, lai varētu sākt to taisīt. Domāju pirkt caurspīdīgās nevis matētās, lai var skaidri atšķirt, kad diode deg/nedeg pēc krāsas, nevis spilgtuma. + Vēl jānopūš baltā krasā, lai labāks efekts.



Sākums | Visi Raksti | DIY Raksti | Pasākumi | Noteikumi | Forums
© 2010 Argus Radiodetaļu Tirdzniecība SIA | Web izstrāde Kārlis Baumanis