Table of Contents

Grigore-Petruț BELINGHER (66882) - Cub cu led-uri și accelerometru

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Scurtă descriere: Pentru proiect am decis sa creez un cub format din led-uri RGB, de dimensiune 3x3x3 pentru un număr total de 27 de led-uri. În cadrul acestui cub îmi doresc să implementez și un accelerometru care să verifice poziția pe care o are cubul, și în funcție de anumite valori, sa comute culorile afișate de led-uri.

Utilitate: Consider ca acest cub poate fi folosit atât ca un instrument de măsurare a înclinației (nu unul foarte precis e drept) dar și ca o jucărie amuzantă care în funcție de unghiul la care este ținută își schimbă culoarea.

Descriere generală

Schemă bloc:

Hardware Design

Listă piese:

Scheme electrice

Schemă electrică pentru cub:

Schemă electrică pentru accelerometru:

Imagini proiect

Plăcuță de bază și breadboard:

Cub și conexiunile de sub:

Modul stabilzator și accelerometru:

Realizarea efectivă a cubului

Pentru a realiza cubul propriu-zis am folosit sârmă de oțel pentru schelet și unirea LED-urilor. LED-urile sunt alimentate fiecare pe etajul său (din breadboard pleacă câte o alimentare pentru fiecare nivel). Culorile sunt unite vertical, pe coloane, rezultând la baza cubului 27 de fire de culoare. Pentru că nu am dorit să controlez independent LED-urile, ci doar pe toate împreună (aceasta era logica aleasă pentru proiect), am unit fiecare pin de aceeași culoare între el și vecinii săi, obținând în final doar 3 pini pentru fiecare culoare.

Accelerometrul și stabilizatorul de tensiune au fost montate pe aceeași plăcuță de test ca și cubul. Stabilizatorul de tensiune preia curent de la Portul B de pe plăcuța de laborator și o oferă convertită la 3.3V alimentării accelerometrului. Accelerometrul are conectat pin-ul g-Sel la GND, iar cele 3 output-uri merg in breadboard, unde au conectate în paralel 3 condensatori de 3.3nF pentru reducerea zgomotului, iar din breadboard merg pe placa de bază pe pinii PA0, PA1 și PA2 ai convertorului analogic digital.

Controlul culorii cubului se face prin 3 fire ce pornesc din plăcuța de test către placa de bază pe porturile PC0, PC1 și PC2. Alimentarea fiecărui etaj se face din breadboard cu ajutorul a 3 condensatori BC517 ce au montate câte o rezistență de 22K ohmi în bază. Alimentarea breadboard-ului se face din placa de bază folosind porturile de alimentare. Pentru selectarea culorilor, firele au montate 2 rezistențe de 220 ohmi pentru culorile verde și albastru și o rezistență de 100 ohmi pentru culoarea roșie.

Software Design

Pentru a realiza codul am folosit mediul de dezvoltare Atmel Studio, versiunea 7. De asemenea pentru a citii rezultatele furnizate de convertorul analog digital de pe plăcuță am folosit elemente din cadrul laboratorului 5.

Codul în sine nu este foarte complicat, am realizat mai întâi o secvență de testare ce aprinde cubul verde, albastru, roșu, verde + albastru, verde + roșu, albastru + roșu și în final toate cele 3 culori împreună, și o structură repetitivă ce ar fi trebuit să schimbe culorile cubului.

Problema este că nu am anticipat citirea datelor furnizate de accelerometru când nu se mișcă nimic, ceea ce m-a făcut să nu realizez programul cum îmi doream (momentan cred că am nimerit doar coordonatele pentru Y, ce face cubul să cicleze între stins complet și albastru (așa cum este vizibil și în clip).

Dat fiind faptul că LED-urile sunt cu anod comun, aprinderea lor se face în mod invers față de laborator.

Pentru prima versiune a codului (cea în care am reușit să simulez schimbarea culorii pentru o axă) am luat direct citirea analogică și am încercat să găsesc intervale favorabile. Am încercat și o a doua versiune a codului, în care calculez voltajul raportat la valoarea 0g pentru a seta intervale, însă nereușind să aflu exact valoarea 0g a accelerometrului meu, m-am rezumat la valoarea 0g din Datasheet. Din cauza acestui lucru, nu am reușit să realizez funcționalitatea dorită de mine.

Rezultate Obţinute

Am reuși să realizez montajul corect, lucru demonstrat și de secvența de testare folosită la începutul programului. Din păcate funcționalitatea dorită per total nu este completă, reușind să demonstrez doar o singură comutare între culori folosind accelerometrul (așa cum se vede într-unul dintre cele două clip-uri).

Secvența de testare a cubului:

kdRSI5Cn_e8

Exemplu de funcționare a cubului cu ajutorul accelerometrului:

zjWwFFipRjo

Concluzii

Proiectul în sine a fost interesant însă îmi pare rău că nu am anticipat necesitatea de putea citii valorile oferite de accelerometru când nu există mișcare și acesta stă pe o suprafață plată. Dacă aș fi realizat și acest lucru probabil că nu aș fi avut probleme să realizez proiectul exact cum îmi doream.

Mi-aș dorii ca după sesiune să îl finalizez complet exact cu modul de funcționare pe care eu îl aveam în plan inițial.

Download

Arhiva ce conține codul preliminar cu care am reusit comportamentul de mai sus:

petrutbelinghergrigore_332ccv1.zip

Arhiva ce conține codul în versiunea a doua, cu calculul voltajului raportat la valoarea 0g:

petrutgrigorebelingher_332ccv2.zip

Jurnal

7 Mai - am început realizarea efectivă a proiectului

14 Mai - am terminat structura de cub de pe placa de test

17 Mai - am terminat montarea accelerometrului și a stabilizatorului de tensiune

19 Mai - finalizare realizare logică de legături pe breadboard

20 Mai - testare inițială

23 Mai - cod preliminar, proiect aproape gata

24 Mai - proiect considerat gata

Bibliografie/Resurse