POVer to the people!

Display POV multifuncțional

Introducere

  • Proiectul își propune realizarea unui dispozitiv capabil de a afișa text și imagini simple folosind fenomenul de Persistence of Vision . Textul / imaginile sunt stocate pe un card SD pentru a oferi mai mult spațiu.
  • Am ales acest proiect datorită faptului că prezenta o provocare din punct de vedere al design-ului hardware și software, iar produsul final poate fi folosit drept display universal având diferite întrebuințări (Ex.: afișe, reclame etc.).
  • Pentru a obține o rezoluție cât mai bună ținta este de a folosi 32 de led-uri RGB. Modelul inițial va fi construit cu 16 led-uri pentru testare. Datorită construirii modulare va putea fi extins relativ ușor la 32 de led-uri. Datorită limitărilor hardware vor fi doar 6 culori folosibile.

Descriere generală

  • La inițializarea circuitului, uC-ul citește de pe cardul SD informația care urmează să fie afișată. Ea este adusă în memoria RAM și apoi este pornit timer-ul de refresh.
  • Acesta generează o întrerupere cu frecvența de 400 Hz care activează funcția de refresh, aceasta fiind cea responsabilă cu actualizarea stării led-urilor. Ea transferă din memoria de afișare în buffer-ul de 6 octeți stările led-urilor și apoi trimite această informație pe magistrala SPI către led-uri.
  • Circuitul de driver pentru LED-uri este format din 6 registre de shiftare serial-paralel cu latch pe output care sunt înseriate

Hardware Design

Schema modulelor circuitului

PCB-ul obținut

Schema pinout-ului led-urilor RGB

Schema pinout-ului circuitului 74HC595

Detalii despre circuit
  • Design-ul PCB-ului a fost făcut de la 0 în Eagle și a fost realizat prin imprimare cu foaie Press'n'Peel și corodare.
  • PCB-ul final folosește o baterie de 9V pentru a oferi libertate în mișcare
  • Proiectul inițial a fost gândit să poată fi atașat unui motor extern pentru a putea afișa informația pe un cadran circular. Am decis ca această idee să rămână ca idee de implmenetat pe viitor.
  • Fiecare filament de led RGB are atașat o rezistența SMD de 220 ohmni pentru a proteja led-urile, latch-urile și regulatorul de tensiune
  • Led-urile RGB sunt legate în conexiune anod-comun
  • Slot-ul de card SD a fost legat în circuit conform schemei din Laboratorul 4
Lista pieselor folosite
  • Atmel ATMEGA16 PU x 1
  • 74HC595 8-bit Serial-Paralel Shift Registers with Latch x 6
  • Rezistențe 220 ohmni SMD x 48
  • Regulator de tensiune 7805T x 1
  • Slot card SD x 1
  • Led-uri RGB Common Anode 5V x 16
  • Baterie 9V x 1
  • Quartz 16 MHz x 1
  • Rezistență 10k x 1
  • Rezistențe 1k8 x 3
  • Rezistențe 3k3 x 3
  • Led 5V x 1
  • Diode 1N4004 x 2
  • Condensator Electrolit 10uF x 1
  • Condensatoare 100nF x 4
  • Condensatoare 15pF x 2

Software Design

  • Singura parte din software care a fost preluată din surse externe este implementarea accesului la cardul SD prin interfața SPI și sistemul de fișiere FAT (Petit FAT FS), acestea fiind preluate din exemplul din laboratorul 4.
  • Comunicarea cu circuitul de driver al led-urilor se făcea prin intermediul interfeței SPI, frecvența de ceas fiind setată la 8 MHz (f_CLK / 2)
  • După comunicarea datelor prin SPI către 74HC595-uri se activa high semnalul PB3 care pe 595-uri avea semnificația de RCLK ( Ready Clock ) și provoca trecerea datelor din registrele de shiftare în latch-uri
  • Folosind timer-ul 0 cu un prescaler de 256 și count până la valoarea de 80 se realiza o întrerupere cu frecvența de ~400 Hz. Handler-ul întreruperii era funcția de refresh care actualiza informația pe led-uri
  • Pentru afișarea de text a fost stocată în memoria de program o matrice de 256 de elemente reprezentând un font de rezoluție 8×6.
  • Deocamdată programul citește de pe cardul SD textul de afișat din fișierul “pov.txt”. Acest lucru este ușor de modificat din fișierul sursă “constants.h”
  • Fișierul “pov.txt” trebuie să conțină pe prima linie numărul de caractere al șirului afișat (incluzând spațiile albe) și pe următoarea linie textul de afișat

Rezultate Obținute

Datorită lipsei de timp circuitul afișează doar text pe 2 rânduri citit dintr-un fișier de pe cardul SD, însă funcționalitatea poate fi extinsă cu ușurință la imagini. În exemplul de mai jos fiecare linie este desenată cu o altă culoare, acest lucru fiind intenționat ca proof-of-concept.

Concluzii

  • Partea cea mai dificilă s-a dovedit a fi proiectarea și realizarea cablajului, deoarece a fost prima dată când am realizat design-ul PCB-ului unui circuit de o asemenea complexitate
  • Datorită faptului că traseele sunt destul de subțiri iar pad-urile de la pinii led-urilor destul de mici a fost dificilă lipirea pinilor led-urilor
  • Circuitul este echilibrat față de primul led dinspre microcontroler, astfel fiind ușor de atașat unui motor
  • Pe viitor mă gândesc să încerc folosirea unei surse constante de curent în locul celor 48 de rezistențe SIMD pentru alimentarea led-urilor
  • Deși a fost destul de dificilă, realizarea acestui circuit s-a dovedit a fi educațională și, de ce nu, destul de fun
  • Voi încerca să extind proiectul ca un hobby spre specificațiile inițiale (afișarea oricărei imagini)
  • Dat fiind timpul avut la dispoziție sunt foarte mulțumit de rezultatele obținute

Download

Bibliografie/Resurse

pm/prj2010/avoinescu/ciorgulescu/start.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