tesina esami di stato scolastico: 2012/2013 · nel caso di corrente continua, la frequenza...
TRANSCRIPT
Tesina esami di stato
Classe: 5° AART elettronica
Anno scolastico: 2012/2013
Fellet Francesco Minet Alberto
Globo LED Fellet Francesco – Minet Alberto Pagina 1
Globo LED Fellet Francesco – Minet Alberto Pagina 2
Descrizione generale.
In questo progetto, realizzato e studiato grazie ad alcuni spunti ricavati da Internet, è stato creato un “globo LED” virtuale,
comandato, per quanto riguarda la parte elettronica, dal “PIC18F2420”, programmato per comandare 48 Led attraverso del registri
a scorrimento collegati in cascata (TPIC6595N).
Per quanto riguarda la parte meccanica, grazie all’aiuto di un nostro compagno della sezione di meccanica, è stato studiato un
motore a corrente alternata e un metodo per diminuire il numero di giri e aumentare la coppia (per eliminare i vari attriti) in modo
tale da soddisfare le esigenze del progetto.
Per alimentare il circuito durante la rotazione è stato posto un jack ad una estremità dell’asse: esso, toccando il jack femmina
produceva 5V, per il corretto funzionamento.
Dopo aver progettato il circuito tramite il programma di progettazione “Orcad”, lo abbiamo realizzato sulla basetta millefori
posizionando adeguatamente i componenti per cercare il minor sbilanciamento possibile: un sbilanciamento consistente potrebbe
provocare problemi durante la rotazione del globo.
Completata la struttura, con l’aiuto del professore abbiamo creato il programma tramite MPLAB in linguaggio C: inizialmente si è
cercato di visualizzare una lettera. Successivamente, ampliando il programma, è stato possibile creare una serie di immagini e
scritte che, dopo un certo periodo di tempo, si alternano.
Problemi durante la creazione
Durante la creazione del progetto, ci sono stati diversi problemi. Tra questi:
Alimentare il circuito durante la rotazione;
Diminuire le vibrazioni della struttura durante la rotazione;
Creare il programma;
Abbiamo cercato di migliorare il progetto in più ambiti: esteticamente, rumore dalle vibrazioni, diminuire il più possibile la
struttura con al suo interno vari componenti. In quest’ultimo ambito, abbiamo sistemato un vecchio alimentatore di un PC per
alimentare il nostro circuito. Purtroppo, verso la fine dell’anno scolastico l’alimentatore non è stato più in grado di dare una
corretta alimentazione (dava 2.6V mentre per il corretto funzionamento ne servivano 5V); quindi, sebbene e stato lasciato
all’interno del progetto, per l’alimentazione viene utilizzato un generatore di tensione della scuola.
Indice( Globo LED)
Introduzione pag. 4
Diagramma a blocchi:
1) Parte meccanica: struttura e motore; pag. 4
2) Parte elettronica: pag.5
Spiegazione componenti progetto e loro datasheet;
a) Pic18f2420; pag.5
b) IR sensor; pag.10
c) TPIC6595 (registro a scorrimento); pag.11
Alimentazione del circuito; pag.12
3) Programma; pag.13
4) Configurazione immagine; pag.17
Schema elettrico pag.19
Problemi trovati durante svolgimento del progetto pag. 20
Lista componenti e strumenti utilizzati pag. 20
Foto pag.22
Conclusione pag.23
Globo LED Fellet Francesco – Minet Alberto Pagina 3
INTRODUZIONE
Il globo LED utilizza la persistenza della visione (acronimo :POV persistence of vision). La persistenza della visione è il
fenomeno degli occhi con cui un immagine residua persistere per circa un venticinquesimo di secondo sulla retina. Questo effetto,
ad esempio, è utilizzato nella televisione: l’immagine che si vuole visualizzare viene scandita 25 volte per produrre l’obiettivo
desiderato.
Questo fenomeno avviene grazie alla “memoria iconica”. La memoria iconica (memoria legata alle immagini) fornendo un flusso
regolare di informazioni al nostro cervello, permette l'integrazione di informazioni visive lungo un flusso continuo di immagini
come, ad esempio, durante la visione di un film.
Quindi, mentre i LED ruotano e svolgono delle combinazioni di accensione e spegnimento, il nostro occhio vede l’immagine che
fa riferimento a quella combinazione.
DIAGRAMMA A BLOCCHI
SPIEGAZIONE DELLE FASI
1) Parte meccanica
La struttura è composta dai seguenti componenti:
un anello di plastica;
un asse di acciaio;
le boccole di plastica;
i cuscinetti radenti in ottone;
il telaio in acciaio zincato;
la cassa contenente l’alimentatore, il motore elettrico e la trasmissione.
L’anello di plastica è stato ricavato da un tubo di PVC appositamente forato per permettere il fissaggio dei led e il
passaggio dell’asse.
PARTE
MECCANICA
PARTE
ELETTRONICA
PROGRAMMA CONFIGURAZIONE
IMMAGINE
Globo LED Fellet Francesco – Minet Alberto Pagina 4
L’asse in acciaio è ottenuto tagliando uno spezzone di un tubo, saldando ad esso altri componenti, i quali sono stati
torniti, forati e filettati in modo da permettere: l’avvitamento del connettore; la fuoriuscita dei cavi che passano
all’interno; il fissaggio della puleggia.
Le boccole di plastica sono state ottenute tornendo e forando dei pezzi di barra, chevengono utilizzati per collegare
l’anello all’asse.
I cuscinetti radenti in ottone sono stati costruiti in modo da agevolare la rotazione dell’asse e bloccarlo in modo da non
permettergli spostamenti assiali.
Il telaio è stato ottenuto piegando a “C”un tubo e viene utilizzato per sorreggere l’asse. La cassa è stata costruita
avvitando tra loro delle tavole di multistrato di spessore pari a 2 cm.
Poiché il motore elettrico a regime sviluppa 1442 g/min e all’utilizzatore (asse) sono richiesti 650 g/min (per
aumentare inoltre la coppia all’utilizzatore per vincere gli attriti), è stato necessario utilizzare una trasmissione a
cinghie dentate in modo da ottenere un rapporto di trasmissione i pari a 2,2.
2) Parte elettronica
a) PIC18F2420
Il PIC18F2420 fa parte di una famiglia di microcontrollori. Si tratta di un microcontrollore moderno di fascia alta,
completo, programmabile in assembly e in linguaggio C, dotato di moltissime periferiche. L’unica periferica non
presente è la periferica USB.
L’assenza della periferica USB costituisce certo una limitazione rispetto al PIC18F4550, ma in ambiente didattico essa
sarebbe comunque difficilmente introducibile per la sua complessità.
Il microcontrollore può essere programmato sia lasciandolo a bordo del target che mediante un corretto
programmatore (PicKit3).
Il software può essere sviluppato in diversi linguaggi. In questo progetto è stato utilizzato il linguaggio C perché il
programma è molto ripetitivo e quindi ci sono dei comandi più facili da gestire.
Per la programmazione è stato utilizzato il programma MPLAB; inoltre per funzionare con il sistema operativo
Windows 7 è stato installato al suo interno il software C18.
Nel caso di corrente continua, la frequenza operativa del PIC18F2420 è 40MHz. La memoria massima che può
programmare è 16384byte usando il clock interno.
Il pin RA0…RA7, RB0…RB7 e RC0…RC7 sono l’ingresso/uscita digitale del PIC.
Al pin RB0/INT0, ho collegato una resistenza e un led per dare un’indicazione, cioè quando passa la corrente, il led
accende e viceversa. I pin RB7/PGD, RB6/PGC e MCLR/VPP/RE3 sono collegati insieme per la programmazione e il
debug dell’ header 5 utilizzato per la programmazione del circuito.
Globo LED Fellet Francesco – Minet Alberto Pagina 5
La descrizione dei pin di PIC 18F2420:
4.5V
R1200
R210k
R410k
programmazione e debug?
HEADER 5
1 2 3 4 5
C1100uF
PVN?
PIC18F2420
RC718
VSS8 RB0/INT0
21 RB1/INT122 RB2/INT223 RB324 RB425 RB5/PGM26 RB6/PGC27 RB7/PGD28
MCLR/VPP/RE31
RA02 RA13 RA24 RA35 RA46 RA57
VDD20
VSS19
OSC19
OSC210
RC011RC112RC213RC314RC415RC516RC617
R610K
D0
LED
N14148
5V
Globo LED Fellet Francesco – Minet Alberto Pagina 8
b) IR sensor(fototransistor + fotodiodo)
IR sensor è composto da un fototransistor e un fotodiodo. Un fototransistor in sostanza è un transistor a
giunzione bipolare che viene inscatolato in un contenitore trasparente in modo che la luce possa
raggiungere la giunzione tra la base ed il collettore. Il fototransistor è simile al fotodiodo, ma con una
sensibilità alla luce molto maggiore, grazie al fatto che gli elettroni che sono generati dai fotoni nella
giunzione tra la base ed il collettore vengono iniettati nella base e la corrente così prodotta viene
successivamente amplificata dal transistor.
Un fotodiodo è un particolare tipo di diodo. È in grado di riconoscere una determinata lunghezza d’onda
dell’onda elettromagnetica incidente, e trasformare questo evento in un segnale elettrico di corrente
applicando ai suoi estremi un opportuno potenziale elettrico. Esso è un trasduttore da un segnale ottico ad
un segnale elettrico.
Nel nostro progetto, usiamo il fototransistor e il fotodiodo come IR sensor per sincronizzare l’immagine
con la posizione di partenza dell’immagine.
Globo LED Fellet Francesco – Minet Alberto Pagina 9
c) TPIC6595
Questo dispositivo contiene 8 bit seriali che alimentano un registro di scorrimento.
Il trasferimento di dati, cioè lo spostamento e il deposito di essi, avviene quando l’ orologio shift-register
(SRCK) e l'orologio del registro (RCK) sono sul fronte di salita. Il trasferimento del registro di archiviazione
dei dati alla memoria di uscita avviene quando lo shift-register (SRCLR) è alto. Quando SRCLR è basso, il
registro a scorrimento viene cancellato.
Quando l'uscita abilitata (G) viene tenuta alta, tutti i dati in uscita della memoria sono bassi e tutte le uscite
dei dati sono spente.
L’uscita seriale (SER OUT) dà la possibilità di collegare dei dispositivi aggiuntivi per aumentare il numero
di dati nel registro a scorrimento.
Datasheet del TPIC6595N
ALIMENTAZIONE
Per l'alimentazione del progetto è stato recuperato un alimentatore (ormai inutilizzato) di un computer.
Dopo averlo sistemato abbiamo rimosso i cavi che non servivano, lasciando solo i collegamenti necessari.
Quindi, dati in ingresso 220 V, erogava 5V (e 12V, non utilizzati) in uscita.
I dispositivi alimentati nel progetto sono:
Motore:220V(fase e neutro) poiché posto in parallelo all’alimentatore;
Globo LED Fellet Francesco – Minet Alberto Pagina 10
Alimentatore: 220V (fase e neutro) posto in parallelo al motore;
Circuito:5V e massa.
Sono stati utilizzati due deviatori come interruttori per alimentare il motore e il circuito più agevolmente.
Successivamente, per evitare possibili cortocircuiti, sono stati aggiunti due fusibili da 1A-250V in ingresso
all’alimentatore e al motore; in uscita all’alimentatore e all’ingresso del circuito è stato posto un fusibile da
50mA.
Inizialmente al circuito veniva data una corretta
alimentazione.
Verso la fine dell’anno scolastico però,
l’alimentatore non funzionava più correttamente
dando solo 2.6V al circuito : perciò i registri a
scorrimento non svolgevano il loro compito in modo
corretto.
Quindi, per mancanza di tempo, l’alimentazione del
circuito è stata collegata a un generatore di tensione
datoci in dotazione dalla scuola.
Schema alimentazione
3) Programma
Il programma scritto in linguaggio C, si può suddividere principalmente in quattro parti:
Impostazioni generali del microcontrollore (p. viola) ;
Caricamento dei LED: controllo dei bit di ciascun registro se sono a 1 o 0 (p. rosso);
Caricamento della colonna (p. verde);
Controllo Interrupt: per il funzionamento dell’ IR sensor (p. azzurro);
Caricamento dell’immagine (p. giallo);
Durata dell’immagine (p. blu).
PROGRAMMA IN LINGUAGGIO C
#include "p18f2420.h"
#include "delays.h"
#define LED LATBbits.LATB0
void High_Int (void);
#pragma code high_vector = 0x08 // impostato vettore dell'interrupt
Circuito
(millefori-LED)
Alimentazione
220V dalla rete
Deviatore
(interruttore)
Deviatore
(interruttore)
Fusibile
1A-250V
Fusibile
1A-250V Motore
Alimentatore
del computer
Fusibile
50mA
Globo LED Fellet Francesco – Minet Alberto Pagina 11
#define DATI LATCbits.LATC2 //pin dei dati 13
#define CLK1 LATCbits.LATC0 //pin del clock dati 11
#define CLK2 LATCbits.LATC1 //pin del caricamento finale 12
#define SRCLR LATCbits.LATC4 //pin sempre alto 15
#define G LATCbits.LATC3 //pin sempre alto 14
//#pragma config OSC = HS
#pragma config WDT = OFF
#pragma config LVP = OFF
#pragma config PBADEN = OFF
//OSC = HS Impostato per lavorare ad alta frequenza
//WDT = OFF Disabilito il watchdog timer
//LVP = OFF Disabilito programmazione LVP
//PBADEN = OFF Disabilito gli ingressi analogici
int caricaled (int numero);
int caricacolonna (int n1, int n2, int n3, int n4, int n5, int n6);
int i;
int tempo =249;
int t;
int stato1 = 0 ;
int stato2 = 0 ;
//interrupt
void interrupt (void)
_asm GOTO High_Int _endasm //salta alla funzione dove viene svolto l'interrupt
void main (void)
OSCCON=0X70;
//OSCTUN|=0X40;
// Imposto PORTD tutti ingressi e RD0 come uscita
LATB = 0x00;
TRISB = 0b11111110;
// Imposto PORTC come tutte uscite
LATC = 0x00;
TRISC = 0x00;
// Imposto PORTE tutti ingressi
//LATDbits.LATD0 = 1;
//interrupts settings
RCONbits.IPEN = 1; // abilita priorità dell'interrupt ( priorità alta)
INTCONbits.INT0IE = 0; // disabilita l'interrupt di B0
INTCON2bits.INTEDG1 = 1; // abilita inter. nel fronte di salita
INTCON3bits.INT1IP = 1; // priorità alta
INTCON3bits.INT1IE = 1; // abilita l'interupt di RB1
INTCON3bits.INT1IF = 0; // imposta flag( variabile che va 1 quando c'è int e poi impostare a 0 altrimenti continua a entrare sull'int ) a 0 dell'inter INT1
INTCONbits.GIEH = 1; // abilita tutti interupt (funzione generale)
t =50;
G = 0;
while (1)
//Vuoto
#pragma interrupt High_Int
void High_Int (void)
if (INTCON3bits.INT1IF == 1) //controllo flag se a 1
++stato1; //aumenta stato1 di 1
if (stato1> 150) //per aumentare intervalli di tempo
stato1 = 0;
++stato2; //aumenta stato2 di 1
if (stato2>2) stato2 = 0; // metti il numero di disegni meno 1 (es. 3 disegni, metti "stato2 > 2")
LED=LED^1;
G = 0;
SRCLR = 1;
//Stato 1 (scritta "ITIS" )
switch (stato2)
case 0: //se stato2 = 0
caricacolonna(255,0,0,0,0,255);
Globo LED Fellet Francesco – Minet Alberto Pagina 12
caricacolonna(255,0,255,255,0,255); //Lettera I
caricacolonna(255,0,255,255,0,255);
caricacolonna(255,0,255,255,0,255); //fine lettera I
caricacolonna(255,0,0,0,0,255);
caricacolonna(255,0,0,0,0,255);
caricacolonna(255,0,0,248,0,255); //lettera T
caricacolonna(255,0,0,248,0,255);
caricacolonna(255,0,0,248,0,255);
caricacolonna(255,0,0,248,0,255);
caricacolonna(255,0,255,255,0,255);
caricacolonna(255,0,255,255,0,255);
caricacolonna(255,0,255,255,0,255);
caricacolonna(255,0,0,248,0,255);
caricacolonna(255,0,0,248,0,255);
caricacolonna(255,0,0,248,0,255);
caricacolonna(255,0,0,248,0,255); //fine lettera T
caricacolonna(255,0,0,0,0,255);
caricacolonna(255,0,0,0,0,255);
caricacolonna(255,0,255,255,0,255); //Lettera I
caricacolonna(255,0,255,255,0,255);
caricacolonna(255,0,255,255,0,255); //fine lettera I
caricacolonna(255,0,0,0,0,255);
caricacolonna(255,0,0,0,0,255);
caricacolonna(255,0,0,0,0,255);
caricacolonna(255,0,135,255,0,255); //lettera S
caricacolonna(255,0,135,255,0,255);
caricacolonna(255,0,135,225,0,255);
caricacolonna(255,0,135,225,0,255);
caricacolonna(255,0,135,225,0,255);
caricacolonna(255,0,135,225,0,255);
caricacolonna(255,0,135,225,0,255);
caricacolonna(255,0,255,225,0,255);
caricacolonna(255,0,255,225,0,255); //fine lettera S
caricacolonna(255,0,0,0,0,255);
caricacolonna(255,0,0,0,0,255);
caricacolonna(255,0,0,0,0,255);
caricacolonna(255,0,0,0,0,255);
break;
//Stato 2 (scritta "A.T.F")
case 1: //se stato2 = 1
caricacolonna(255,0,0,0,0,255);
caricacolonna(255,0,0,0,0,255);
caricacolonna(255,0,0,0,0,255);
caricacolonna(255,224,255,255,7,255);
caricacolonna(255,224,255,255,7,255);
caricacolonna(255,0,240,192,7,255)
caricacolonna(255,0,240,192,7,255);
caricacolonna(255,0,240,192,7,255);
caricacolonna(255,0,240,192,7,255);
caricacolonna(255,224,255,255,7,255);
caricacolonna(255,224,255,255,7,255);
caricacolonna(255,0,0,0,0,255);
caricacolonna(255,0,0,0,0,255);
caricacolonna(255,192,0,0,0,255)
caricacolonna(255,224,1,0,0,255);
caricacolonna(255,192,0,0,0,255);
caricacolonna(255,0,0,0,0,255);
caricacolonna(255,0,0,0,0,255);
caricacolonna(255,0,0,192,7,255);
caricacolonna(255,0,0,192,7,255);
caricacolonna(255,0,0,192,7,255);
caricacolonna(255,224,255,255,7,255);
caricacolonna(255,224,255,255,7,255);
caricacolonna(255,0,0,192,7,255);
caricacolonna(255,0,0,192,7,255);
caricacolonna(255,0,0,192,7,255);
caricacolonna(255,0,0,0,0,255);
caricacolonna(255,0,0,0,0,255);
caricacolonna(255,192,0,0,0,255);
Globo LED Fellet Francesco – Minet Alberto Pagina 13
caricacolonna(255,224,1,0,0,255);
caricacolonna(255,192,0,0,0,255);
caricacolonna(255,0,0,0,0,255);
caricacolonna(255,0,0,0,0,255);
caricacolonna(255,224,255,255,7,255);
caricacolonna(255,224,255,255,7,255);
caricacolonna(255,0,128,195,7,255);
caricacolonna(255,0,128,195,7,255);
caricacolonna(255,0,0,192,7,255);
caricacolonna(255,0,0,192,7,255);
caricacolonna(255,0,0,192,7,255);
caricacolonna(255,0,0,0,0,255);
caricacolonna(255,0,0,0,0,255);
break;
// Stato 3 (immagine "space invaders")
case 2: //se stato2 = 2
caricacolonna(31,0,0,0,0,248);
caricacolonna(31,0,0,0,0,248);
caricacolonna(31,252,0,0,0,248);
caricacolonna(31,192,3,0,0,248);
caricacolonna(31,192,3,0,0,248);
caricacolonna(31,252,207,0,0,248);
caricacolonna(31,252,207,0,0,248);
caricacolonna(31,243,60,192,0,248);
caricacolonna(31,243,60,192,3,248);
caricacolonna(31,243,15,192,3,248);
caricacolonna(31,240,15,240,15,248);
caricacolonna(31,243,15,240,15,248); //12 RIGA
caricacolonna(31,243,60,252,60,248);
caricacolonna(31,243,60,252,60,248);
caricacolonna(31,252,207,240,63,248);
caricacolonna(31,252,207,240,63,248);
caricacolonna(31,192,3,192,252,248);
caricacolonna(31,192,3,192,252,248); //18 RIGA
caricacolonna(31,252,0,240,255,248);
caricacolonna(31,0,0,240,255,248);
caricacolonna(31,0,0,240,255,248);
caricacolonna(31,0,63,240,255,248);
caricacolonna(31,192,3,192,252,248);
caricacolonna(31,192,3,192,252,248); //24 RIGA
caricacolonna(31,252,207,240,63,248);
caricacolonna(31,252,207,240,63,248);
caricacolonna(31,243,60,252,60,248);
caricacolonna(31,243,60,252,60,248);
caricacolonna(31,243,15,240,15,248);
caricacolonna(31,240,15,192,15,248); //30 RIGA
caricacolonna(31,243,15,192,3,248);
caricacolonna(31,243,60,192,3,248);
caricacolonna(31,243,60,192,0,248);
caricacolonna(31,252,207,0,0,248);
caricacolonna(31,252,207,0,0,248);
caricacolonna(31,192,3,0,0,248);
caricacolonna(31,192,3,0,0,248);
caricacolonna(31,0,63,0,0,248);
caricacolonna(31,0,0,0,0,248);
caricacolonna(31,0,0,0,0,248);
break;
INTCON3bits.INT1IF = 0; //azzero il flag di interrupt
int caricaled ( int numero ) //ciclo per 16 volte se LED acceso o spento
int i;
for (i = 0 ; i < 8 ; i++)
Globo LED Fellet Francesco – Minet Alberto Pagina 14
int temporanea ;
temporanea = numero & 1; // azzera tutti bit del numero tranne primo bit
if (temporanea == 0)
DATI = 0;
else
DATI = 1;
CLK1 = CLK1^1; //SALITA(inizio) CLOCK PER INVIO 1 BIT
CLK1 = CLK1^1; //DISCESA(fine) CLOCK PER INVIO 1 BIT
STATUSbits.C = 0;
numero = numero >> 1; //SPOSTARE DI UNA POSIZIONE BIT
int caricacolonna (int n1, int n2, int n3, int n4, int n5, int n6)
SRCLR = 1;
caricaled(n1);
caricaled(n2);
caricaled(n3);
caricaled(n4);
caricaled(n5);
caricaled(n6);
CLK2 = CLK2^1; //INIZIO INVIO CLOCK DELLA COLONNA
CLK2 = CLK2^1; //FINE INVIO CLOCK DELLA COLONNA
SRCLR = 0;
4) Configurazione immagine
Tramite un foglio di documento Excel, è stata costruita una tabella. Le righe corrispondono ai 48 LED ad
alta luminosità presenti nella semicirconferenza del cerchio. Le colonne invece, corrispondono alle divisioni
di un singolo giro: in questo caso è stato scelto di suddividerlo in 40 parti.
A sinistra (ovale rosso) della tabella sono stati inseriti i valori corrispondenti a ogni singolo LED, se acceso.
Questi valori sono una progressione geometrica di 2 (2N), dove N è compreso tra 0 (2
0 = 1) e 7 (2
7 = 128),
perchè ogni registro a scorrimento (TPIC6595N) è composto da 8 uscite.
Questa serie di numeri è stata inserita per sei volte poiché si ha sei integrati per comporre l’immagine. Il
massimo numero che ogni integrato può dare è 255 (quando tutte e otto le uscite sono a 1); mentre il minimo
valore, quando tutte le uscite sono spente, è 0.
Sotto la tabella (ovale verde), sono state introdotte sei righe corrispondenti ai sei numeri che si dovranno poi
introdurre nel programma per formare una colonna completa ( vedi programma: “carica colonna(n1 , n2 , n3
, n4 , n5 , n6)” )
40 colonne comporteranno 40 serie numeriche per formare l’immagine completa.
Globo LED Fellet Francesco – Minet Alberto Pagina 16
SCHEMA ELETTRICO
D18 LED
D19 LED
D20 LED
Rv
1M
4.5V D21 LED
R1200
R210k
R410k
programmazione e debug?
HEADER 5
1 2 3 4 5
C1100uF
D22 LED
PVN?
PIC18F2420
RC718
VSS8 RB0/INT0
21 RB1/INT122 RB2/INT223 RB324 RB425 RB5/PGM26 RB6/PGC27 RB7/PGD28
MCLR/VPP/RE31
RA02 RA13 RA24 RA35 RA46 RA57
VDD20
VSS19
OSC19
OSC210
RC011RC112RC213RC314RC415RC516RC617
R610K
D0
LED
D23 LED
D24 LED
RL1 330
D25 LED
RL2 330
RL3 330
D26 LED
RL4 330
U4
TPIC6595
SDI3
SRCLR8 G9
RCLK12
SRCLK13
SDO18
DRAIN04
DRAIN15
DRAIN26
DRAIN37
DRAIN414
DRAIN515
DRAIN616
DRAIN717
RL5 330
D27 LED
RL6 330
RL7 330
D28 LED
RL8 330
RL9 330
D29 LED
RL10 330
RL11 330
D30 LED
RL12 330
RL13 330
D31 LED
RL14 330
RL15 330
D32 LED
RL16 330
RL17 330
D33 LEDU2A
74HC14
1 2
RL18 330
RL19 330
D34 LED
RL20 330
RL21 330
D35 LED
RL22 330
N14148
RL23 330
D36 LED
RL24 330
RL25 330
D37 LED
RL26 330
RL27 330
D38 LED
RL28 330
Q1IR sensor
RL29 330
D39 LED
RL30 330
RL31 330
D40 LED
RL32 330
D1 LED
RL33 330
D41 LED
RL34 330
U1
TPIC6595
SDI3
SRCLR8 G9
RCLK12
SRCLK13
SDO18
DRAIN04
DRAIN15
DRAIN26
DRAIN37
DRAIN414
DRAIN515
DRAIN616
DRAIN717
RL35 330
D42 LED
RL36 330
RL37 330
RL38 330
U5
TPIC6595
SDI3
SRCLR8 G9
RCLK12
SRCLK13
SDO18
DRAIN04
DRAIN15
DRAIN26
DRAIN37
DRAIN414
DRAIN515
DRAIN616
DRAIN717
U3
TPIC6595
SDI3
SRCLR8 G9
RCLK12
SRCLK13
SDO18
DRAIN04
DRAIN15
DRAIN26
DRAIN37
DRAIN414
DRAIN515
DRAIN616
DRAIN717
RL39 330
D43 LED
RL40 330
RL41 330
D44 LED
RL42 330
RL43 330
-
+
U1A
TL082
3
21
84
D45 LED
RL44 330
RL45 330
RL46 330
RL47 330
RL48 330
D2 LED
D3 LED
R10 K
D46 LED
D4 LED
D48 LED
D5 LED
D47 LED
D6 LED
D7 LED
D8 LEDU2
TPIC6595
SDI3
SRCLR8 G9
RCLK12
SRCLK13
SDO18
DRAIN04
DRAIN15
DRAIN26
DRAIN37
DRAIN414
DRAIN515
DRAIN616
DRAIN717
10kR3
D9 LED
10kR5
D10 LED
D11 LED
U6
TPIC6595
SDI3
SRCLR8 G9
RCLK12
SRCLK13
SDO18
DRAIN04
DRAIN15
DRAIN26
DRAIN37
DRAIN414
DRAIN515
DRAIN616
DRAIN717
5V
1k
R7
D12 LED
D13 LED
D14 LED
D15 LED
D16 LED
5V
D17 LED
Globo LED Fellet Francesco – Minet Alberto Pagina 17
PROBLEMI E POSSIBILI SOLUZIONI
Circuito e alimentazione:
Problemi incontrati Possibili soluzioni
Cortocircuiti nell’alimentazione. Introduzione di fusibili.
Durante la rotazione,a volte, il jack maschio non fa
contatto con il jack femmina.
Porre un condensatore in modo tale che, in quei
millesimi di secondo il circuito viene comunque
alimentato.
Alimentatore non riesce a alimentare correttamente
il circuito (2.6V).
Alimentazione tramite alimentatore della scuola.
Jack si rompono facilmente. Sostituzione tramite contatti striscianti o bobina.
Programma:
Il microcontrollore è troppo lento a svolgere il programma con l’oscillatore interno di appena 4MHz: per
questo motivo l’immagine non è possibile farla dettagliata. Una soluzione potrebbe essere quella di
aggiungere un oscillatore esterno in modo tale da velocizzare il PIC18F2420 e quindi poter aumentare il
numero di colonne.
LISTA COMPONENTI E STRUMENTI UTILIZZATI
COMPONENTI
Materiale Quantità
Microcontrollore PIC18F2420 1
Led blu ad alta luminosità 49
TPIC6595N 6
Resistenza 100 Ω 48
Resistenza 330 Ω 1
Resistenza 10K Ω 5
Resistenza 1K Ω 1
Potenziometro 1M Ω 1
Condensatore 1µF – 250V(motore) 2
Condensatore 3µF – 450V(motore) 1
Condensatore 100 µF – 63V(circuito) 1
Condensatore 100 nF 9
Diodo N14148 1
Header 2
Push botton (reset circuito) 1
Fotodiodo a infrarossi 1
Foto transistor 1
TL082 1
Globo LED Fellet Francesco – Minet Alberto Pagina 18
74HC14 (NOTtriggerata) 1
Motore 230V– 50Hz– 100W (Classe
B) 1
Alimentatore da PC 1
Fusibile da 1A – 250V 2
Fusibile da 50mA – 250V 1
Deviatore (alimentazione) 2
Strip
STRUMENTI
Alimentatore
PicKit 3
Multimetro
FOTO
(prove per regolare i tempi)
(circuito completo nella millefori) (progetto completo)
Globo LED Fellet Francesco – Minet Alberto Pagina 19
CONCLUSIONE
Durante la realizzazione del progetto si sono riscontarti alcuni problemi causati sia da una struttura non proprio in asse
che provoca un’elevata vibrazione della struttura; sia dall’alimentazione poiché non si utilizza dei veri e propri contatti
striscianti, ma solo un jack. Tutto ciò è dovuto anche a una forte limitazione dei tempi. Comunque il progetto è stato
completato in modo corretto ed è possibile visualizzare una serie di scritte e immagini: “ITIS”, “A.T.F” (iniziali dei
nostri nomi) e un’animazione che corrisponde a un logo di un gioco. Ovviamente è possibile ampliare il progetto
aggiungendo nel programma le serie di combinazioni ricavate dalle tabelle che si creeranno in futuro. Questo periodo
è stato molto proficuo poiché ci ha dato degli insegnamenti importanti anche per i lavori futuri: la collaborazione, il
rispetto reciproco e che, lavorando con determinazione è possibile realizzare i propri sogni.