Persistence of Vision Clock

Introducere

Scopul proiectului este realizarea unui dispozitiv de afișare bazat pe fenomenul de inerție a retinei (Persistence of Vision). Astfel, prin succedarea rapidă a unor imagini distincte dar apropiate, percepem o animație. În cazul acestui dispozitiv ne bazăm pe o plăcuță cu 16 LED-uri, care se rotește în câmpul vizual al privitorului. LED-urile se aprind alternativ pentru a crea impresia unui ecran care afișează un ceas.


Descriere generală

Pentru realizarea proiectului voi folosi plăcuța făcută la etapa 1 la care voi adăuga o extensie (o placă imprimată) care se va lega la prima. Aceasta extensie va conține ledurile și partea de setare a ceasului. Ambele plăcuțe vor fi montate pe un dispozitiv care le va învârti (un cooler). Alimentarea se va face de la o baterie care va fi prinsă tot de suportul ce va învârti placa.

Pentru a seta ceasul se va folosi un senzor de lumină. Astfel, când se va lumina ceasul sub cifra 3 se va incrementa minutul iar când se va lumina sub cifra 9 se va decrementa minutul. Pentru a incrementa ora se va lumina sub 12, iar pentru a decrementa ora se va lumina sub cifra 6. Astfel când senzorul de lumină va avea la ieșire 1 logic, se va verifica cadranul în care s-a primit această valoare și se va face modificarea corespunzătoare. După ce s-a efectuat o modificare, luminarea senzorului nu mai are nici un efect timp de două secunde.

Schema Bloc


Hardware Design

Placuta principala conține 2 extensii:

  • extensia cu LED-uri. Aceasta conține 16 LED-uri conectate la porturile A și C ale microcontrolerului
  • extensia cu senzorul de lumină. Acesta va da la ieșire 1 logic când este luminat, și 0 în caz contrar. El este realizat cu ajutorul:
    • unei rezistențe și a unei fotorezistențe care funcționează ca un divizor de tensiune
    • ieșirea divizorului intră într-un inversor CMOS (74HC04) care va asigura la ieșirea extensiei o tensiune de 0 V sau VDD.

Schema generală


Schema PCB

leduri2.jpg

Lista pieselor folosite

În afară de piesele folosite la prima etapă, pentru realizarea proiectului am mai folosit:

  • 17 LED-uri de diferite culori
  • 16 rezistențe de 470 Ω
  • 2 rezistențe de 20k
  • cooler 12 cm
  • pinheader mamă
  • inversor CMOS - 74HC04
  • suport + baterie 9 V
  • cablu cu mufă jack
  • placă de test
  • fotodiodă 300k/8k

Design-ul extensiilor (PCB-urile) au fost făcute în Eagle și plăcuțele au fost realizate prin imprimare și corodare.


Software Design

Pentru programarea microcontrolerului am folosit limbajul C și WinAvr.

Cadranul ceasului este împărțit în 120 de linii. Astfel, programul constă într-o buclă infinită în care sunt afișate cele 120 de linii. Pentru afișarea lor am folosit porturile A și C, fiecare linie fiind formată din 16 LED-uri.

Pentru afișarea numerelor pe cadranul ceasului am format o matrice a LED-urilor aprinse în fiecare poziție pe portul A, iar pentru afișarea limbilor am creat câteva măști pentru cele două porturi.

Pentru partea de funcționare a ceasului am realizat un timer pentru secunde cu prescalerul de 1024. În acesta se vor incrementa secundele și se vor face modificările, atunci când este necesar, pentru minute și ore, precum se și vor decrementa numărul de secunde până când va fi acceptată următoarea comandă de setare.

Pentru partea de setare, am verificat pinul al șaselea al portului D (PIND) dacă are valoarea 1 în liniile multiple de 30, senzorul de lumină având ieșirea pe acest pin. Dacă valoarea este 1 atunci se modifică ora sau minutul și se setează o variabilă pentru a nu mai putea face modificări în următoarele două secunde (se dorește acest lucru pentru că altfel nu s-ar putea face setările datorită numărului de rotații pe secundă destul de mare).

Practic pentru afișarea ceasului se afișează fiecare linie, verificându-se dacă pe aceasta trebuie afișată vreo limbă a ceasului, se modifică valorile pentru cele două porturi și acestea sunt lăsate o perioadă de timp până se modifică pentru următoarea linie.


Rezultate obtinute

În aceasta secțiune am pus câteva imagini cu proiectul finalizat și părțile sale componente precum și câteva filmulețe în care se poate observa modul de funcționare a ceasului.

Imagini

1.jpg2.jpg







Plăcuța cu leduri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Senzorul de lumină

3.jpg 4.jpg













5.jpg 6.jpg



















7.jpg 8.jpg















Video

Funcționalitatea proiectului poate fi observată în filmulețele următoare. Datorită faptului că viteza cu care este învârtită placa nu este constantă ceasul se poate roti ușor.

The Adobe Flash Plugin is needed to display this content. The Adobe Flash Plugin is needed to display this content.


















The Adobe Flash Plugin is needed to display this content. The Adobe Flash Plugin is needed to display this content.



















Concluzii

  • Proiectul a fost destul de interesant.
  • Cea mai mare problemă întâlnită a fost echilibrarea greutății pe placă și păstrarea vitezei constante. Nu am reușit să fac o echilibrare perfectă a plăcii și pentru a o învârti am folosit o bormașină cu turația reglabilă.
  • Se reușește menținerea unei viteze constante pentru o anumită perioadă de timp atunci când placa este bine fixată pentru a nu mai oscila.
  • Sunt destul de mulțumit de rezultatele obținute.
  • Pe viitor, ar putea fi adăugat încă un senzor pentru a determina durata unei rotații și astfel nu ar mai fi dependent la mici oscilații ale vitezei de rotație.


Download


Bibliografie/Resurse

pm/prj2011/dtudose/povclock.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0