Get Adobe Flash player

Controller RGB

User Rating:  / 1
PoorBest 

Link Articolo Originale: http://www.grix.it/viewer.php?page=10842

 

 

Prefazione:

Questo progetto è stato da me ideato per essere presentato alla commissione d'esame per il corso di elettronica e telecomunicazioni presso la scuola Aldini/Valeriani di Bologna. Ritengo possa essere utile a qualcuno, per cui l'ho modificato per poterlo pubblicare su Grix, il migliore sito di elettronica amatoriale. Il progetto è relativo alla parte Hardware, il sotware, molto semplice ed intuitivo, può essere scitto a piacimento, implementando solo le funzioni interessate o sggiungendone di nuove. Il modulo Radio prevede una modifica Hardware, realizzabile modificando il PCB. Altre funzionalità non sono state sviluppate. Entro breve spero di aggiungere delle caratteristiche che lo rendano completo, quali un telecomando con orologio, multicontrollo per più strip, ecc.   :-)

 

Presentazione del progetto

 

L'idea di questo progetto è nata dopo un guasto ad una strip led, acquistata presso un rivenditore di Bologna, e resa inutilizzabile dopo 6 mesi. Durante la frequentazione dell'ultimo anno scolastico di elettronica ho sottoposto il problema all'attenzione della classe, e mi sono posto l'obiettivo di capire l'origine dell'avaria e trovare una soluzione che ne impedisse il ripetersi. Ho ritenuto quindi opportuno progettare un alimentatore per led-strip, successivamente evolutosi in un controller RGB, in modo da poter alimentare e gestire le strisce colorate garantendo una discreta immunità ai guasti.


Una strip led è una sorgente di illuminazione che utilizza diodi led per produrre luce, in particolare una serie di 3 diodi in serie e 2 resistenze, messi in parallelo in file di 100 accoppiamenti, montati su un circuito stampato flessibile ed adesivo.


Le strip led sono progettate per lavorare ad una tensione di 12V ed assorbono fino ad un massimo di 7A. La luce è disponibile in una gamma di colori derivata da una sorgente rossa, una verde e una blu. Per il mio progetto ho scelto una strip led che monta un chip 5050 (5,0mm x 5,0mm) contenente 3 bulbi di colore diverso, i quali alimentati differentemente, possono fornire una gamma di colori infinita.
Le tre alimentazioni sono fornite da un fonte impulsiva a duty cycle variabile, un metodo che consente un notevole risparmio di corrente a parità di emissione luminosa. E' inoltre possibile usare diverse tensioni di alimentazioni (tensioni superiori, filtrate con un passa/basso) e modularle tramite la variazione del duty cycle.

Origine del guasto e ideazione del progetto: il guasto si è presentato sotto forma di un affievolimento dell'intensità luminosa. Dopo sei mesi dall'acquisto l'intensità si è abbassata del 60% e la plastica di supporto si è annerita. Ho contattato il rivenditore che ha respinto ogni responsabilità imputando il guasto o ad un difetto dell'alimentatore o a sfortunate ed imprevedibili circostanze non note. Ho cominciato una ricerca per trovare le cause del guasto e ho scoperto che le strisce led di potenza superiore ai 20W vanno montate su una aletta di raffreddamento in alluminio con profilo ad U; le sue dimensioni non devono essere inferiori a 15mm di larghezza e 20mm di altezza dei due lati.
Lo spessore deve essere di almeno 2mm.

Stranamente i commercianti di led-strip non sono a conoscenza di questo particolare, e la gran quantità di prodotti sul mercato è destinata a guastarsi entro breve tempo.

I datasheet  riportano le caratteristiche di funzionamento ed indicano la temperatura nominale e massima del funzionamento del bulbo. Le descrizioni più dettagliate riportano dati allarmanti sulla loro durata: il calore distrugge i bulbi in modo proporzionale alla durata di funzionamento e alla temperatura. Il guasto non è evidente da subito, si manifesta in modo impercettibile.

Considerazioni sulla temperatura

Sono riuscito (con grande fatica) a reperire dei grafici che riportano l'andamento della vita di una led strip in tutto il suo ciclo vitale:

 

clicca per ingrandire


Possiamo vedere come la luminosità si degradi se si trova a lavorare a temperature troppo elevate.

 

 

clicca per ingrandire



In questo grafico, data una corrente costante di 60 mA, l'aspettativa di vita del diodo led è di 50.000 ore ad una temperatura di giunzione di 55°C. Se la temperatura sale, fino a 70°C, la vita media si abbassa a 35.000 ore. Ad una temperatura di 80°C la vita media scende a meno di 20.000 ore.
Per vita media intendiamo il tempo che intercorre dal led nuovo avente luminosità 100%, al led con una luminosità ridotta al 70%.

Ho scelto un microcontrollore PIC16F877A per gestire la scheda di controllo dei mosfet di potenza, in quanto è il modello che abbiamo studiato durante l'anno scolastico ed io mi sono trovato a mio agio sia nella programmazione sia nella gestione delle sue periferiche, in quanto è un prodotto adattabile a diverse esigenze.

 

Il sensore di temperatura comunica al microcontrollore una misura empirica della temperatura di giunzione (calcolata in base ai dati che disponiamo dal datasheet e misurata sperimentalmente). Il processore a sua volta abbasserà la tensione di alimentazione e quindi la corrente assorbita, di qualche millivolt, fino a che la potenza dissipata dal diodo led sarà coerente con il valore di temperatura da noi precedentemente calcolato, e misurato sull'aletta di dissipazione della led strip.

Nel mio progetto, monto una led strip 5050 su un supporto dissipatore ad U (20X15X20 spessore=2mm). Verifichiamo da datasheet una differenza termica tra la giunzione e il contenitore del led di 22 C°/W. Arrotondiamo a 30 C°/W perchè consideriamo una dispersione della conduzione termica tra il contenitore del chip, il PCB della strip e il relativo dissipatore. Considerato che lo stesso datasheet ad una temperatura di giunzione di 55°C ci prospetta una vita media di 50.000 ore, e volendo io rispettare questa durata, calcolo che l'aletta di raffreddamento non dovrà superare la temperatura di 55°C – (0,2W*30°C/W) = 49°C. Considerando un margine di errore di calcolo e di approssimazione del 15% scelgo come temperatura massima 42°C.
In questo modo posso aumentare in modo soddisfacente la vita della strip led.

Il controller da me progettato tiene quindi conto della temperatura di giunzione e abbassa la tensione di alimentazione (e quindi la potenza assorbita e quindi abbassa la temperatura) proporzionalmente ad essa.

Le caratteristiche aggiuntive di questo progetto sono la possibilità di pilotare sia led-strip monocolore, sia RGB. Per pilotare una striscia led monocolore è sufficiente utilizzare un solo canale, dei tre forniti. La potenza non dovrà superare i 20W. Se si volesse pilotare strisce di potenza superiore è necessario aumentare la larghezza delle piste dello stampato e sovradimensionare l'aletta di raffreddamento posta sui mosfet di potenza. Si avrà cura di sceglierla con terminale comune positivo.
I terminali di alimentazione di una led strip RGB invece, andranno inseriti nei tre differente morsetti.
 

Progettazione e implementazione delle funzionalità

Sul mercato sono già presenti una gamma di alimentatori già assemblati, quelli di produzione cinese hanno un basso costo. Nonostante ciò ho voluto comunque accingermi in questa piccola sfida, per una ragione pratica: ho necessità in casa di un prodotto che riporti le caratteristiche da me progettate.

Le caratteristiche che lo rendono interessante, e sulle quali mi sono soffermato per dargli un tocco di originalità sono:

Costo della progettazione nullo
Il progetto è pubblicato su Grix.it,  in licenza “open source”
Costo dei componenti bassissimo
Ho scelto dei componenti facilmente reperibili, in modo da minimizzare le spese di produzione.
Consumi ridotti
Il progetto si è evoluto tenendo conto di questo importante parametro, al giorno d'oggi le progettazioni elettriche ed elettroniche “GREEN” sono orientate ad un risparmio di corrente.
Ridotte dimensioni
Lo spazio ridotto e la facilità di trasporto rendono il prodotto più maneggevole.
Possibilità di essere controllato a distanza
Caratteristica indispensabile per competere con i moderni controller costruiti in serie. La caratteristica verrà implementata con una scheda a parte che si occupa della comunicazione in radiofrequenza.
Alimentazione separata
L'alimentatore è separato, in modo da poter scegliere la tensione e la corrente più idonei al carico sopportato. Il Mosfet possono comunque pilotare 60V e 18A in potenza continua. 

Il microprocessore si occupa di controllare, dopo un'autodiagnosi all'accensione, il corretto funzionamento del modulo di potenza, della corretta erogazione di corrente, del monitoraggio di una eventuale sovratensione, della protezione contro i cortocircuiti e di un erroneo collegamento della striscia ai morsetti di alimentazione.
La sua funzione principale resta quella di gestire i colori attraverso una modulazione ad impulso dei tre canali; pilota 3 mosfet collegati alle uscite dei 3 colori base: rosso, verde e blu, consentendo la produzione di tutta la gamma di colori possibili, attraverso la pressione di 6 tasti.
Il microprocessore è dotato di una porta di acquisizione esterna e può essere programmato per eseguire dei giochi di colore, una funzionalità utile nel caso la led strip fosse montata sulla vetrina di un negozio o come elemento decorativo in un bar.

La destinazione d'uso originaria di questo prodotto sono proprio le vetrine che vogliono sottolineare l'esposizione di prodotti, i bar, per gestire l'atmosfera e la decorazione degli ambienti, i ristoranti che vogliono richiamare una tematica gastronomica, le decorazioni natalizie, pasquali. Può essere installato su autovetture, sia all'interno che all'esterno (utilizzando le apposite strisce led “water prof”. Io lo monterò in casa sulle mensole per variare il colore dell'illuminazione ambientale.

10 memorie completano il circuito, offrono la possibilità di richiamare i colori preferiti. L'accensione avverrà sull'ultimo colore impostato, l'intensità luminosa crescente all'accensione e decrescente allo spegnimento evita fastidiosi shock luminosi, una spia indica il corretto funzionamento o l'eventuale guasto.
 

Funzionamento del circuito

Modulo di controllo. Si occupa di verificare i parametri globali e il funzionamento dei tre mosfet. Il programma all'interno del microcontrollore gestisce tutte le funzionalità. La scheda prende alimentazione dal modulo di potenza, fornisce attraverso un quarzo da 20 Mhz il clock necessario al funzionamento del processore, ed è dotata delle resistenza pull-up dei pulsanti e le limitatrici di corrente del display a 7 segmenti. Sono montate delle comuni strip per essere interfacciata alle altre due schede.

Modulo di potenza. In questo modulo sono montati i 3 mosfet che aprono e chiudono, come degli interruttori, la tensione di alimentazione sulle tre piste di alimentazione. E' previsto il montaggio di un condensatore per pista nel caso fosse necessario aggiungere un filtro passa basso per limitare un eventuale sfarfallio dovuto ad un carico troppo impegnativo. La scheda ha un integrato stabilizzatore a 5V che alimenta il microcontrollore, e un fusibile per proteggere da eventuali extrassorbimenti indesiderati.

Pulsantiera. Una terza scheda si occupa di ospitare 6 pulsanti di variazione della crominanza, uno per la selezione della memoria colore, un display a 7 segmenti, l'interruttore principale e il potenziometro per variare la luminosità. Un led bicolore si occupa di segnalare il corretto funzionamento.

La sistemazione dei componenti delle tre schede è stata studiata per impilarne due, una sull'altra, in modo da far coincidere (più o meno) le connessioni elettriche dei cavi; l'alloggiamento della terza scheda è previsto sul lato destro, ed occupare in questo modo il minor spazio possibile.


Il cuore di tutto il circuito è il software che gira all'interno del microcontrollore, e ne gestisce le funzionalità. E' possibile, attraverso un algoritmo software, gestire un gran numero di programmi luminosi, giochi etc.
Il software è scritto in linguaggio C, compilato attraverso Mplab. L'ambiente Windows consente il dialogo tra il compilatore l'utente e il programmatore.


Listato componenti e materiale utilizzato

 

Sigla

Componente

Valore

Utilizzo

-

Acido muriatico 37%

-

PCB

-

Acqua ossigenata 130 Volumi

-

PCB

-

Acquaragia

-

PCB

-

Alcool 90°

-

PCB

-

Carta, stracci

-

PCB

-

Acquaragia

-

PCB

-

Soda caustica

-

PCB

-

Bacinelle in vetro

-

PCB

-

Carta vetrata

-

PCB

-

Cavo rame multifilare 0,35 mm

2m

PCB

-

Smalto da unghie per isolare

-

PCB

-

Cavo rame unifilare 1mm

1m

PCB

-

Carta trasparente

-

Tesina

-

Strip led RGB, 3 led, 12V

-

Potenza

-

Portafusibile

-

Potenza

7SEGM

Display 7 segmenti

-

Pulsantiera

C1

-

-

Potenza

C1

Condensatore poliestere

100 nF 50V

Controllo

C2

-

-

Potenza

C2

Condensatore ceramico

18 pF 50V

Controllo

C3

-

-

Potenza

C3

Condensatore ceramico

18 pF 50V

Controllo

C5

Condensatore poliestere

100 nF 50V

Potenza

C6

Condensatore poliestere

100 nF 50V

Potenza

Conn_3

Connettore a strip 3 pin

-

Controllo

Conn_3

Connettore a strip 3 pin

-

Pulsantiera

Conn_5X2

Doppio connettore a strip 5 pin

-

Controllo

Conn_6

Connettore 16 A 4 uscite

-

Potenza

Conn_6

Connettore a strip 6 pin

-

Pulsantiera

Conn_9

Connettore a strip 9 pin

-

Pulsantiera

Conn. 3

Connettore a strip 3 pin

-

Controllo

Conn. 4

Connettore 16A e uscite

-

Potenza

Conn. 4

Connettore a strip 6 pin

-

Potenza

Conn. 5

Connettore a strip 2 pin

-

Controllo

Conn. 6

Connettore a strip 3 pin

-

Controllo

Conn. 7

Connettore a strip 3 pin

-

Controllo

Connettore 1

Connettore a strip 10 pin

-

Controllo

Connettore 2

Connettore a strip 8 pin

-

Controllo

Connettore 4

Connettore a strip 6 pin

-

Controllo

D1

Diodo led doppio anodo

Rosso/verde

Pulsantiera

Fuse1

Fusibile

5A

Potenza

MFT1

Mosfet 60V, 18A, STP36NF06

-

Potenza

MFT2

Mosfet 60V, 18A, STP36NF06

-

Potenza

MFT3

Mosfet 60V, 18A, STP36NF06

-

Potenza

PCB

Circuito stampato, basetta presensibilizzata monofaccia

-

Controllo

PCB

Circuito stampato, basetta presensibilizzata monofaccia

-

Pulsantiera

POT

Potenziometro lineare

5K

Pulsantiera

Quarzo1

Quarzo

20,000 Mhz

Controllo

R1

Resistenza a filo ¼ W

2K2 ohm

Controllo

R10

Resistenza a filo ¼ W

1 ohm

Potenza

R10

Resistenza a filo ¼ W

2K2 ohm

Controllo

R2

Resistenza a filo ¼ W

220 ohm

Controllo

R3

Resistenza a filo ¼ W

220 ohm

Controllo

R4

Resistenza a filo ¼ W

10K ohm

Controllo

R5

Resistenza a filo ¼ W

2K2 ohm

Controllo

R6

Resistenza a filo ¼ W

2K2 ohm

Controllo

R7

Resistenza a filo ¼ W

2K2 ohm

Controllo

R8

Resistenza a filo ¼ W

1 ohm

Potenza

R8

Resistenza a filo ¼ W

2K2 ohm

Controllo

R9

Resistenza a filo ¼ W

1 ohm

Potenza

R9

Resistenza a filo ¼ W

2K2 ohm

Controllo

RP1

Pacco resistivo 16 pin

330 ohm

Controllo

SW1

Micro pulsante da stampato

-

Pulsantiera

SW2

Micro pulsante da stampato

-

Pulsantiera

SW3

Micro pulsante da stampato

-

Pulsantiera

SW4

Micro pulsante da stampato

-

Pulsantiera

SW5

Micro pulsante da stampato

-

Pulsantiera

SW6

Micro pulsante da stampato

-

Pulsantiera

SW7

Deviatore a levetta da pannello

-

Pulsantiera

SW8

Micro pulsante da stampato

-

Pulsantiera

U***1

PIC16F877A

-

Controllo

U2

Integrato stabilizzatore UA7805

5V

Potenza

 

Per il montaggio è stato usato anche: Stagnatore, treccia in rame dissaldante, tronchese per il taglio dei circuiti stampati, cacciaviti, pinzette, avvitatore con punte 0,8/1/1,2/1,5/4 mm, pinze .

Strumentazione usata: Voltmetro, capacimetro, oscilloscopio, generatore di funzioni, Ohmetro, alimentatore da banco, programmatore, pc portatile (S.O. WindowsXP e OSX 10.7.4), stampante laser/getto di inchiostro, bromografo artigianale.

Software principali utilizzati: Openoffice, KIKAD,

 

Disegno dello schema e costruzione del prototipo

Schemi elettrici:

 

clicca per ingrandire
clicca per ingrandire

 

 

clicca per ingrandire

 

 

clicca per ingrandire

 


La realizzazione degli schemi elettrici e del disegno del circuito stampato è stata fatta tramite il software open source KIKAD. Mi sono trovato bene nel disegno e nell'ampio ventaglio di funzionalità che questo software dispone.
Ho quindi realizzato la prova su breadboard e constatato il corretto funzionamento.

Prototipo:

Una volta che si è realizzato il disegno dello stampato si stampa in duplice copia identica(da sovrapporre al momento della fotoesposizione) su pellicola trasparente. E' stata usata una comune stampante a getto di inchiostro. Le pellicole andranno posizionate sopra la basetta in rame presensibilizzata, fissata con del nastro removibile; si colloca sopra un vetro, in modo che la pellicola sia perfettamente aderente alla basetta. Si accende il tubo neon a raggi ultravioletti (posto ad una distanza di 3 cm) attendendo il tempo di esposizione, che nel nostro caso è di 4 minuti. Finita la prima esposizione si gira la scheda per procedere all'esposizione dell'altro lato rimasto.

 

clicca per ingrandire

 


Completato il processo di esposizione si elimina il photoresist indebolito dai raggi ultravioletti con una soluzione di acqua e soda caustica al 2% di concentrazione, sciacquando vivacemente la basetta un paio di volte. Il tempo totale di immersione è di 5/10 secondi circa.

 

clicca per ingrandire

 


Se dopo il lavaggio c'è qualche sgradita imperfezione, del tipo una pista corrosa troppo, è possibile fare un ritocco con un pennarello indelebile. L'acido non lo intaccherà.

 

clicca per ingrandire

 


Successivamente si prepara una soluzione di 2 parti di acido cloridrico (concentrazione: 37%), una parte di perossido di idrogeno al 36% (130 volumi), 4 parti di acqua di rubinetto. Si immerge la scheda precedentemente fissata su un cavetto metallico ricoperto di plastica e si agita all'interno per un paio di minuti. Con un cotton fiock è possibile aiutare il rame a staccarsi dalla basetta. Si osserva una reazione chimica vivace che produce un gas molto pungente. L'acqua diventa gialla, simile al colore della cedrata. Dopo il risciacquo l'acido ha mangiato completamente lo strato in rame non ricoperto dal photoresist. A questo punto con l'acetone si elimina il photoresist rimasto e la scheda è pronta per essere limata e forata.

 

clicca per ingrandire

 


Viene fatto un controllo di resistenza (1 Mohm) sulle piste, oltre che un collaudo visivo per verificare l'assenza di anomalie.
I fori vengono eseguiti con un trapano a colonna, alla massima velocità. I diametri sono di 0,8 / 1 / 1,5 mm per reofori più grossi.
Dopo la foratura vengono montati i componenti, a partire dagli zoccoli, resistenze e in ultimo i mosfet e l'integrato.
Successivamente si stampa e si applica la serigrafia dei componenti.


Si passa quindi alla programmazione del microprocessore attraverso il ponte circuitale predisposto per questo scopo.
Il circuito è ora pronto per il funzionamento e può essere montato nella sua scatola.

 

Implementazioni

Dimensionamento di un eventuale circuito di condizionamento del sensore LM35.
Considerato che il sensore lavora in una temperatura utile di [40 / 70°C], e quindi un risultato in tensione dichiarato nel dathasheet Philips di [0,400mV / 0,600mV], condizioneremo la sua uscita in modo da elaborare all'ingresso di RA0 del processore, una tensione tra i 0 (40°C) e i 5 V (60°C).

Una temperatura inferiore a 40°C dopo il condizionamento potrebbe risultare negativa, aggiungo quindi un diodo per introdurre al pic la sua tensione corretta, che non deve essere inferiore agli 0V. Tengo presente nei calcoli che il diodo mi abbassa la tensione di 0,6 V. In uscita, per scrupolo inserisco uno zener da 5,1 V, per assorbire eventuali picchi di sovratensione e quindi abbassare tensioni maggiori di 5,1 V dovute ad una temperatura eccessiva, aumentata anche per una scorretta installazione. Tenendo conto della caduta del diodo di protezione contro le tensioni negative calcolo il dimensionamento:

 

clicca per ingrandire

 

Il sensore di temperatura e il contenitore degli operazionali

 

0,4 Vin → 0,6 Vout
0.6 Vin → 5,6 Vout
Vout = m* Vin + q
{ 5,6 = 0,6m +q {q = 5,6 – 0,6m {5,6 – 0,6m = 0,6 – 0,4m {5,6 – 0,6 = 0,6m – 0,4m
{ 0,6 = 0,4m + q {q = 0,6 – 0,4m
{5=0,2m {m = 25
{q = 0,6 – 0,4*25 {q = -9,4
La tensione di ingresso dovrà essere moltiplicata per un fattore 25 e sottratto un valore di tensione di 9,4 V.
Per compiere queste operazioni uso un operazionale General Purpose LM324. Il suo guadagno in configurazione invertente (scelta per avere maggiore stabilità ed avere l'opportunità di togliere una tensione positiva anziché aggiungerne una negativa) è la seguente:
Vout = -Vin* R2 / R1 →
Le resistenze vengono quindi dimensionate: R1 = 2,7 KOhm; R2 = 68 Kohm.
A questo punto togliamo una tensione positiva i 9,4 V attraverso il partitore



Problematiche riscontrate

L'utilizzo di alcune funzionalità del software è stato possibile dopo un'attenta consultazione della guida. Non è stato facile all'inizio capire e gestire tutti gi aspetti di questo prodotto open source.
Non sono stati disponibili tutte le impronte dei componenti, ho dovuto pertanto disegnarle.

Non è stato facile far coincidere le esigenze personali con la disponibilità degli strumenti della scuola. Ho dovuto procurarmi un bromografo, stampare a casa i lucidi e provvedere da me all'acquisto del materiale, dei fogli e degli acidi necessari.

Lo schema elettrico è stato ricorretto una trentina di volte. La fase iniziale di progettazione prevedeva 3 diversi generatori da 12 V con mosfet pilotato direttamente dal pic, ritenuti poi inutili, e soprattuto impossibili da gestire con il dutycycle di un microcontrollore.
Il circuito di condizionamento del sensore di temperatura è stato eliminato in quanto non si è ritenuto necessario gestire una definizione di temperatura inferiore al mezzo grado Celsius. Ho comunque provveduto a riportare i calcoli di un eventuale circuito nel caso fosse necessario in futuro apportare delle modifiche.

Il primo grave errore è stato commesso al disegno del circuito, un cortocircuito scavalcava il mosfet portando a massa i 300V.
Al montaggio della breadboard un'avaria al mosfet principale ha fatto bruciare ripetutamente il limitatore di corrente del partitore resistivo dell'alimentazione dell'NE555. La corrente passando attraverso quest'ultimo lo ha distrutto.

Il trasformatore è stato dimensionato male in quanto un nucleo in lamierini di ferro non è adatto a sopportare una frequenza più elevata di 10 Khz. Ho scelto dunque un nucleo a doppia E in ferrite, reperendolo in una scheda guasta, togliendo il vecchio avvolgimento e avvolgendone uno nuovo.

Un'altra difficoltà è nata al momento del disegno delle piste: lo spessore del rame con consentiva il disegno di piste sotto gli 0,75 mm, per cui ho dovuto ridisegnare tutte le piste, le vie e le piazzole. In alcuni casi sono state ridisegnate alcune piazzole per permettere il passaggio delle piste nella loro vicinanza.

La realizzazione del circuito stampato ha richiesto parecchie prove prima di essere stata completata. In particolare la gestione degli acidi di corrosione si è rivelata rischiosa e in alcuni passaggi imprevista. Sono state gettate via diverse basette prima della prova definitiva.

Il montaggio dei componenti non è stato semplice: il circuito stampato è stato realizzato di dimensioni contenute, per specifiche progettuali. In particolare i passaggi delle piste attraverso il circuito stampato ha richiesto molta pazienza e spirito di adattamento.

Note di istallazione e istruzioni d'uso.


Il circuito si accende tramite l'interruttore a levetta, e si illumina il led verde che indica lo stato di corretto funzionamento.
All'accensione il circuito ricorda il colore presente allo spegnimento, l'intesità luminosa aumenterà gradualmente fino a metà valore. 
A questo punto possiamo modificare il colore premendo i 6 tasti della pulsantiera, i quali a coppia si dedicano alla gestione di ogni singolo colore; i tasti di incremento e di decremento crominanza agiscono in un range di 50 valori.
Quando il colore ci piace abbiamo la possibilità di memorizzarlo tenendo premuto per due secondi il tasto “selezione” nello spazio di memoria da 0 a 10 indicato nel display. Il display lampeggerà per due secondi per indicarci l'avvenuta memorizzazione.

 

clicca per ingrandire

 


La pressione del tasto di selezione, se inferiore a 0,05 secondi, programma varia il colore della led-strip su uno di quelli impostati. A ruota verranno visualizzati i colori relativi a tutte 10 le memorie. L'impostazione di fabbrica prevede che tutte le memorie abbiano valore “bianco”, cioè intensità massima su tutti i 3 canali.
Il potenziometro serve a variare la luminosità, cioè abbassa la tensione in modo proporzionale a tutti i tre canali. Abbassando la luminosità la crominanza resta invariata.
Se si accende il led rosso vuol dire che il sistema ha rilevato una temperatura della giunzione eccessiva, ed ha provveduto automaticamente ad abbassarla. Il led rosso resterà acceso fino a quando la temperatura della giunzione non torna a valori accettabili.
Se il led rosso si accende ad intermittenza è intervenuta una sicurezza elettrica. Ad esempio si è verificato un cortocircuito durante il collegamento a tensione inserita, o è presente una anomalia nel funzionamento del processore o della tensione elettrica di alimentazione che il sistema non riesce a gestire. 
Se all'accensione del circuito il led verde non si illumina è necessario portare l'apparecchio a riparare.

 

Radiocomunicazione
Considerazioni generali. Ho previsto un modulo radio per essere un prodotto competitivo sul mercato: molti Controller RGB sul mercato sono dotati di questa caratteristica. Il dispositivo aggiuntivo consiste in un telecomando con portata di 20m in linea d'aria, con alcuni tasti che emulano le funzionalità del tastierino, ad esclusione dell'interruttore di accensione che non può essere azionato a distanza in quanto seziona fisicamente la linea elettrica.
La prima caratteristica costruttiva del modulo radio risponde ad un requisito "politico": il prezzo. Per tenerlo basso sono costretto ad usare una tecnologia semplice che mi impieghi pochi componenti e di facile reperibilità.
Ho scelto per la comunicazione il protocollo OOK. Questo protocollo consiste nell'accensione e lo spegnimento della portante per trasmettere i bit 1 e 0. E' previsto un preambolo di dati per discriminare il segnale trasmesso da eventuali interferenze. Non è previsto alcun criptaggio o codifica particolare, e nemmeno un controllo degli errori.

Esempio di un preambolo di comunicazione

 

L'organizzazione del progetto prevede la presenza, di almeno due microcontrollori, uno sul modulo ricevente, come da specifiche del progetto, e uno sul modulo trasmittente. La comunicazione avverrà quindi tra i firmware dei due componenti che gesticono non solo la comunicazione, ma nel caso del microcontrollore montato nel modulo trasmittente, può gestire un eventuale orologio o funzionalità che possono fare comodo, o possono essere usate in contemporanea ad un altro ricevitore, sempre per led strip, o di altro genere, discriminati dal preambolo dati iniziale.
La frequenza scelta come modulante sarà a 3 Khz (periodo 333 uS), in quanto accettata sia dai moduli radio, sia dal mio microcontrollore.

Un esempio di modulo radio già saldato e collaudato in vendita a pochi euro.

 

Il funzionamento specifico consiste nella generazione di un'onda quadra da parte della periferica PWM del pic. Tramite questo clock verrà inviato il preambolo che attiva la ricezione della periferica centrale. Viene quindi prodotto il byte 01010101, 10 ms di onda a 3 kHz, 10 ms di assenza segnale, per quattro volte. Una volta attivate le periferiche radio si può procedere alla gestione della comunicazione. Nel telecomando sono presenti dei pulsanti (il potenziometro che controlla l'intensità luminosa 
viene sostituito da un registro software incrementato da 2 pulsanti) relativi alle funzioni precedentemente spiegate. La pressione di questi tasti, collegata agli ingressi digitali del PIC (utilizzerò per semplicità lo stesso modello, in SMD per comodità di spazio), i quali verranno convertiti in una stringa numerica che li differenzia l'uno dall'altro; verranno quindi espressi dalla porta del pic che comunica con il modulo radio trasmittente che li modulerà in radiofrequenza. Il modulo ricevente converte la radiofrequenza in un'onda quadra che il pic accetta solo se il preambolo coincide con l'impostazione software contenuta al suo interno. Da questo momento viene
interpretato il segnale trasmesso attraverso l'algoritmo interno che riconverte le stringhe numeriche in ingressi virtuali coincidenti con gli stessi ingressi del microcontrollore che sono in ascolto sui pulsanti presenti nella pulsantiera.

Caratteristiche tecniche allegate ai moduli radio in vendita su e-bay


Non ritengo produttivo progettare un modulo radio (che avrei comunque preso come riferimento da un progetto già esistente), ma avrei utilizzato un modulo radio già esistente, reperito presso un rivenditore on-line. Un esempio è dato dal 8110-AC-RX2/CS sopra riportato, dal costo di 5 euro.


L'attuale sviluppo tecnologico, la globalizzazione, e l'esponenziale espansione della cina, ci permettono una discreta facilità nel reperire componenti elettronici già assemblati e collaudati ad un prezzo irrisorio. Ad esempio era impensabile fino a qualche anno fa dover reperire ad un costo di 10 euro uno strumento già progettato, costruito e tarato che permettesse lo scambio di informazioni digitali a distanza. Questi prodotti vengono venduti completi di specifiche, e spendendo qualche euro in più si possono
trovare già omologati per l'utilizzo in paesi con restrizioni legislative, ad esempio sulle radioemissioni o sullo smaltimento dei rifiuti contenenti piombo.

 
Listato del programma (verificare)

//*************************************************************************************************
// 
// Filename : *.C
// Date : 28/Giugno/2012
// File Version : 5.6.8
//
// Author : Elettroumano
// 
//*************************************************************************************************

//*************************************************************************************************
// INCLUDE FILE
//*************************************************************************************************
#include <pic.h> // Include file con le specifiche del nostro micro

// Configuration WORD *****************************************************************************
// Oscillatore : XT 
// Watchdod : OFF
// Power Up Timer : ON 
// Code Protect : ALL
// Brown Out Detect : ON
// Low Voltage Program : Disabled
// Data EE Protect : OFF
// Flash Program Write : Disabled
// Background Debug : Disabled
// ************************************************************************************************
// 0b 0000 1101 0100 0001 
__CONFIG(0x0D41); // stringa per 16f877

//__CONFIG(0x1D41); // stringa per 16f877a
//*************************************************************************************************
// ELENCO PROTOTIPI
//*************************************************************************************************
void ritardino();
//*************************************************************************************************
// COSTANTI GLOBALI
//*************************************************************************************************
// Programmazione porte A .. E --------------------------------------------------------------------
#define ADSelect 0b00000110 // Tutti i pin come I/O digitali

#define PA_DInit 0b00000000 // Configurazione iniziale per PORTA
#define PA_TInit 0b00000001 // Configurazione iniziale direzione di PORTA

#define PB_DInit 0b00000000 // Configurazione iniziale per PORTB 
#define PB_TInit 0b00111111 // Configurazione iniziale direzione di PORTB (RB0=R; RB1=G; RB2=B)INPUT

#define PC_DInit 0b00000000 // Configurazione iniziale per PORTC
#define PC_TInit 0b00000000 // Configurazione iniziale direzione di PORTC (RC0=R; RC1=G; RC2=B)OUTPUT

#define PD_DInit 0b00000000 // Configurazione iniziale per PORTD
#define PD_TInit 0b00000000 // Configurazione iniziale direzione di PORTD

#define PE_DInit 0b00000000 // Configurazione iniziale per PORTE
#define PE_TInit 0b00000000 // Configurazione iniziale direzione di PORTE

#define RED RC0
#define GREEN RC1
#define BLUE RC2


//*************************************************************************************************
// VARIABILI GLOBALI
//*************************************************************************************************
unsigned char PWMR;
unsigned char PWMB;
unsigned char PWMG;
unsigned char PWMconta;
unsigned long j;
//*************************************************************************************************
// MAIN PROGRAM
//*************************************************************************************************
void main(void) {
// Blocco di inizializzazione -------------------------------------------------------------------

// Selettore Analogico-Digitale -----------------------------------------------------------------
ADCON1 = ADSelect;

// PORTA-----------------------------------------------------------------------------------------
PORTA = PA_DInit;
TRISA = PA_TInit;

// PORTB-----------------------------------------------------------------------------------------
PORTB = PB_DInit;
TRISB = PB_TInit;

// PORTC-----------------------------------------------------------------------------------------
PORTC = PC_DInit;
TRISC = PC_TInit;

// PORTD-----------------------------------------------------------------------------------------
PORTD = PD_DInit;
TRISD = PD_TInit;

// PORTE-----------------------------------------------------------------------------------------
PORTE = PE_DInit;
TRISE = PE_TInit;

//inizializzo il convertitore AD
ADCON1= 0b00000100;
ADCON0= 0b00000001;
//Inizializzare le uscite per avere all'accensione il bianco a media intensit‡

PWMR=128;
PWMG=128;
PWMB=128;
PWMconta=0;

//Inizializzare il timer0
T0CS=0;
T0SE=1;
PSA=0;
T0IF=0;
TMR0=256-256; //Allo scadere del registro abilita TOIF

//Impostare il valore del prescaler
PS2=0;
PS1=0;
PS0=0; // TOIF * 2 (TOIF = 100 microsecondi)

//Usiamo un quarzo da 20 MHz
//Impostiamo valore del tempo TMRO (100 microsecondi) 4/MHz = Ti 4/20000000 = 0,0000002 (0.2 microsecondi)
// TMRO = 51,2 microsecondi

//Abilitazione interrupt 
GIE=1; 
T0IE=1;

// BLOCCO AD ELABORAZIONE CICLICA ---------------------------------------------------------------
for(;;)
{
// Leggere i valori sui pulsanti, ciclicamente per ogni colore
ADGO = 1;
if (RB0) {
PWMR++;
if (PWMR>254) PWMR=254;
}
if (RB1) {
PWMR--;
if (PWMR<2) PWMR=2;
}
if (RB2) {
PWMG++;
if (PWMG>254) PWMG=254;
}
if (RB3) {
PWMG--;
if (PWMG>2) PWMG=2;
}
if (RB4) {
PWMB++;
if (PWMB>254) PWMB=254;
}
if (RB5) {
PWMB--;
if (PWMB>2) PWMB=2;
}


while(ADGO);
RC3=ADRESH;
ritardino();
}
}

//*************************************************************************************************
// INTERRUPT SERVICE ROUTINE
//*************************************************************************************************
static void interrupt IntRout(void) {
if(T0IF==1)
{
PWMconta++;

RED = (PWMconta < PWMR ); //PWM sul canale rosso
GREEN = (PWMconta < PWMG ); //PWM sul canale verde
BLUE = (PWMconta < PWMB ); //accende il canale blu

T0IF=0;
}

}

void ritardino() 
{
for(j=0; j<2000; j++);
}

 

clicca per ingrandire

 

 

Il processore è il cuore del sistema.

 

 

 

 Il progetto finito:

 

 

 

clicca per ingrandire

 

 

Bibliografia:

Riviste di Nuova Elettronica, via Cracovia 9, Bologna.

Manuale di Elettronica e Telecomunicazioni, Hoepli 5°ed.

www.alldatasheet.com Qui ho trovato tutti i datasheet che mi servivano.

www.ledpoint.it/caratteristiche Caratteristiche tecniche delle strip led.

www.gtronic.it/energiaingioco/it In questo sito ho trovato spunti per la configurazione e la polarizzazione di semplici dispositivi quali gli integrati stabilizzatori, resistenze di push pull etc.

www.openoffice.com Qui ho trovato la suite office con la quale ho gestito la stesura della tesina.

www.kikad.org Da questo sito ho scaricato il software, il manuale d'uso e le librerie dei componenti.

http://ompldr.org/vOG80Yg Datashett e schemi approssimativi del trasformatore in ferrite ad alta frequenza (scrtato poi nella realizzazione).

Login Form

Elettronica Open Source