Introducere

Proiectul isi propune sa foloseasca fenomenul de Persistence Of Vision (POV Persistence_of_vision ) pentru a afisa texte sau imagini pe o roata de bicicleta. Pentru aceasta voi folosi 16 leduri RGB, deci imaginile si textul vor putea avea orice culoare.

Proiecte similare :

  1. Monkey Electric (www.monkeylectric.com)
  2. Spoke POV (spokepov)
  3. Ian's Spoke Pov (index.htm)

Utilitatea proiectului este mai degraba de natura estetica, dar se poate la fel de bine folosi pentru a implementa un display pe acest principiu, putem monta roata pe un motor si sa obtinem un afisaj cu scopuri diverse. O alta utilitate ar fi folosirea pentru publicitate ( ar fi o idee inedita).

Descriere generala

Voi folosi placuta facuta la etapa 1, si voi face o extensie (tot placa imprimata) care se va lega la prima. Aceasta contine ledurile. Ambele placute vor trebuie montate pe roata de la bicicleta, si va trebui gasita o sursa de alimentare. Controlul ledurilor se va face prin PWM, pentru asta am un driver special pentru leduri: TLC5940, de la Texas Instruments. Pentru a detecta cand roata a facut o tura completa, voi folosi un senzor Hall si un magnet montat pe furca biciletei.

Hardware Design

TLC5940 are 16 iesiri PWM, deci poate controla 16 leduri. Eu am 16 leduri RGB –> 48 de iesiri. Ar trebui sa folosesc 3 integrate TLC5940, dar (din comoditate) am ales folosesc 1 singur astfel: fiecare din cele 16 iesiri ale integratului este legat la catodul unui led, iar anodurile sunt legate impreuna (toate rosii, toate verzi, toate albastre). Voi avea 3 tranzistoare pentru comutare, si voi multiplexa culorile: afisez rosu, apoi verde, apoi albastru foarte rapid. Switchul a fost inclus pe placa pentru a putea schimba animatia (daca vor fi mai multe). Pentru alimentare voi folosi o baterie de 9V, conectat la jackul de alimentaer de la placa cu microcontrolerul. Lista de piese(pe langa placa de la etapa 1) :

Pinout TLC5940:

Conectarea TLC5940 la Atmega16:

Aceasta schema este teoretica, cele 2 integrate nu vor conectate direct deoarece sunt pe placi separate; vor fi conectate prin pinii de extensie.

Software Design

Am plecat de la codul lui Vitor (user Hazard de pe www.instructables.com) care a fost destul de amabil sa ma ajute cu unele probleme :-D

Pentru comunicare cu TLC5940 am folosit SPI; datele le primeste pe portul SIN, si e nevoie de un SCLK pe portul cu acelasi nume. Mai necsita un Grayscale clock (GSCLK) si 2 semnale : Blank si Xlat, si 2 care tin de modul de functionare: VPROG si DCPROG.

Mod de functionare: Datele se trimit prin SPI pe SIN, cate 192 de biti, deci cate 12 biti pentru fiecare led. Valoarea unui led este intre 0 si 4096 deci, si aceasta reprezinta numarul de ciclii pentru care el sta aprins. Astfel, TLC-ul numara semnalele primite pe GSCLK , si la un pas X verifica pentru fiecare led daca valoarea sa este >=X, caz in care este aprins, astfel este stins. Celalte semnale se folosesc pentru control : Blank stinge toate ledurule, iar XLat preia datele in registrele interne.

Modul de functionare senzor / switch Reed: Am configurat Timer0 pentru a da o intrerupere la intervale regulate si se verifica daca s-a facut o tura de roata (a primit semnal de la senzor). In functia de asta cresc sau scad numarul de afisari a liniilor din matrice, pentru a se adapta la viteza.

Modul de afisare a imaginilor: Se mentin 3 matrici: red, blue si green. Acestea tin valorile pentru fiecare led (24 de octeti , o linie de matrice) pentru fiecare etapa (coloanele matricii). 'Etapele' sunt de fapt numarul de diviziuni ale rotii, in functie de imaginea afisata.

Rezultate Obtinute

Dupa (cateva ) vizite pe Maica Domnului am reusit sa gasesc toate piesele, mai putin senzorul Hall care nu se gasea nicaieri ( au zis ca mi-l comanda si il aduc…peste 3 luni :-/ ). LEDuri RGB iarasi se gasesc destul de greu, si nu ai de ales mare lucru. Ideal ar fi sa se foloseasca leduri superluminoase (eventual comandate pe net). In loc de senzor Hall am cumparat un switch Reed, care este de fapt format din 2 lamele apropiate, care la intrarea intr-un camp magnetic fac contact. Desi este oarecum echivalent cu un senzor Hall, nu este la fel de precis si din aceasta cauza am avut cateva probleme de sincronizare.

Placa cu TLC5940 si ledurile a fost facuta ca si prima, prin imprimare.

Cele 2 placi montate pe roata:

Animatii:

Concluzii

Download

Bibliografie/Resurse