Descrierea Proiectului

Proiectul urmareste realizarea unui display tri-dimensional format din 64 de leduri. Ledurile sunt dispuse pe 4 planuri, fiecare continand 16 leduri. Fiecare led din cele 64 va putea fi controlat individual pentru a crea efecte si animatii 3d exceptionale.

Toate cele 64 de leduri vor fi controlate de un microcontroller Atmel AT Mega 16. Microcontrollerul nu are destui pini pentru a putea controla individual fiecare dintre cele 64 de leduri, deci va trebui sa gasim o solutie pentru a putea face acest lucru.

Cum putem controla individual 64 de leduri fara a avea pentru fiecare cate doua fire (+) , (-) ? Prin Multiplexare. Multiplexarea este un proces  în care mai multe semnale analogice sau fluxuri de date digitale sunt combinate intr-un semnal pe un mediu comun. Scopul este de a împărtăşi o resursă. In cazul nostru resursa va fi reprezentata de fire.

Astfel vom reusi sa controlam toate cele 64 de leduri individual la un anumit moment de timp, folosind doar 16 fire de legatura, implicit doar 16 pini ai microcontrollerului. Alte 4 fire respectiv pini vor fi folosite pentru a controla fiecare un tranzistor.

Solutia aleasa de noi este urmatoarea:

  • Avand 4 planuri a cate 16 leduri, vom crea un punct de masa comun pentru fiecare dintre cele 4 planuri. Astfel toti catozii ledurilor pentru un nivel se vor uni intr-un punct comun.
  • Fiecare  punct de masa , aferent planului respectiv va fi controlat de un tranzistor de tip NPN. Astfel cand baza acestuia va fi parcursa de un curent se inchide circuitul respectiv.
  • Fiecare pin din cei 16 controleaza practic o coloana a cubului,  iar in functie de ce plan de masa (circuit) alegem sa inchidem se va aprinde ledul in consceinta. Astfel daca vrem sa aprindem un singur led, inchidem circuitul aferent planului pe care se afla ledul (dam valoarea 1 portului care controleaza respectivul tranzistor) si selectam coloana pe care se afla ledul (dam valoarea 1 portului care controleaza respectiva coloana).
  • Rezolvand problema aprinderii independente a fiecarui led, putem trece la crearea  jocurilor/animatiilor.

De retinut este faptul ca fiecare iesire a microprocesorului furnizeaza 5V. Pentru aputea aprinde corect ledurile am ales pentru fiecare (coloana) un rezistor de 220 Ω . Pentru a putea controla baza tranzistoarelor, am folosit cate un rezistor de 1 MΩ.

Descrierea Hardware

Schema electrica pentru functionarea si interconectarea microcontrollerului :

Schema electrica pentru conectarea MAX232:

Schema electrica  pentru conectarea cubului :

Componente necesare:

Cant. Denumire Descriere Pret (RON)
1 Atmel AT Mega16 Microprocesor 10
1 MAX ST232 Convertor 4
1 Sursa Sursa 2
2 C2, C3 22pF 0.3
4 C5,C6,C12,C13 100nF 0.3
1 C4 10uF 0.1
1 R2 330Ω 0.1
1 C1 2.2uF 0.1
4 C7,C8,C9,C10 1uF 0.5
1 R1 10kΩ 0.1
1 XTAL Oscilator 7.37Mhz 2
1 LED Rosu 1
1 Switch Negru 0.1
64 LED Alb 128
16 R-100-R160 220 Ω 2
4 R170-R200 1MΩ 1
4 Q1-Q4 NPN 2
Total 153.6

Din punct de vedere hardware, exista doua parti importante:

  • – PCB-ul pe care se afla instalat microcontrellerul si toate componentele care permit functionarea si conectivitatea acestuia cu PC-ul

Placuta   – fata –

Placuta – spate –

  • – Displayul 3d sau cubul format din 64 de leduri

Cubul


Descrierea Software

Structura cubului este de forma :

  • B0        B1          B2 B3 = acestea fiind etajele/liniile  cubului sau mai bine zis pinii care controleaza tranzistoarele.
  • A0       A4         C6         C2 =acestea fiind coloanele cubului.
  • A1       A5          C5         C1 =acestea fiind coloanele cubului.
  • A2       A6          C4         C0 =acestea fiind coloanele cubului.
  • A3       A7          C3         D7 =acestea fiind coloanele cubului.

Pentru a se aprinde un led trebuie activat pinul ” linie” care inchide circuitul prin tranzistor si pinul „coloana” pe care se afla ledul  ( din punct de vedere software software sa li se atribuie valoarea 1).De exemplu pentru a aprinde ledul A0 de pe primul etaj ( nivel/linie)  urmatorii pini trebuie sa aiba valorile : PORTA.0=1 si PORTB.0=1.

Daca PORTB.0=1  curentul circula prin tranzistor si  se inchide circuitul iar ledurile care se vor aprinde vor fi doar cele de pe acea linie in functie si de pinii coloana activati.

Daca PORTA.0=1 inseamna ca prin acea coloana circula curentul si se vor aprinde ledurile de pe coloana in functie de tranzistoarele activate.

De la aceasta baza s-a creat programul, jocul de lumini.

  • Mai intai am activat pinii liniei si dupa, fiecare coloana in parte pentru a vedea functionalitatea legaturilor create. Am pornit de la un capat si am aprins pe rand toate coloanele cu scopul de a inconjura/parcurge laturile cubului. Dupa care am stins pe rand pinii liniilor (atribuindu-le valoarea „0”) si i-am reaprins dupa un interval. Pentru a nu aprinde toate ledurile concomitent ne-am folosit de comanda delay_ms  – pentru a introduce diferite intarzieri.
  • Un alt joc de lumini mai complex a fost creat prin activarea pinilor „linie” si activarea pinilor „coloana” alternand tot timpul valoarea acestora. Astfel se parcurgea cubul de la un capat pe margini pana se ajungea in centrul acestuia  dupa care centrul acestuia ramane aprins si se parcurge in sens invers drumul apinzand toate ledurile de pe margine pana ce toate ledurile sunt aprinse.
  • Ca demarcatie intre cele 2 jocuri ar mai exista inca un al treilea joc prin care se sting ledurile de pe linii si se aprind din nou.

Rezultate si concluzii

Rezultate :

Cerintele initiale ale proiectului au fost respectate. Constructia fizica a cubului a ridicat unele probleme intrucat a trebuit sa lipim 64 de leduri intre ele intr-o structura cubica, ca in imagini. Spatiul „de manevra” fiind foarte limitat am intalnit unele dificultati in a ajunge cu ciocanul de lipit in unele locuri.

Concluzii :

In cadrul acestui proiect am descoperit ca:

  • Daca montam procesorul invers pe soclu, ne chinuim jumatate de ora sa ne dam seama de ce nu functioneaza legatura cu PC-ul.
  • Daca incalzim prea tare o componenta aceasa se desprinde cu tot cu partea de cupru de sub placuta.
  • Daca ne tremura mana nu reusim sa lipim corect.
  • Daca nu folosim fire de culori diferite ne va fi aproape imposibil sa identificam orice problema ulterioara.
  • Putem arde un LED.
  • Putem arde chair procesorul.

Intr-un final toate problemele au fost depasite si cubul functioneaza:

    Bibliografie