Cuscino d’amore: un regalo romantico con messaggio luminoso

Ricamiamo un cuscino con un messaggio diretto alla persona amata fatto di filo elettroluminescente pilotato da una scheda che lo farà accendere creando un effetto suggestivo.

La festa degli innamorati di tutto il mondo (ed anche, è inevitabile, del commercio che gli gira intorno…) è, come ogni anno, il momento per pensare a qualcosa di originale che possa fare colpo o stupire.

I più fantasiosi possono attingere all’instancabile vena creativa di chi produce gadget d’ogni genere, ma noi elettronici non perdiamo l’occasione per strabiliare unendo questo e quel componente per creare animazioni di vario genere.

Come ogni anno, cerchiamo di proporre un progetto a tema e stavolta abbiamo pensato a qualcosa di davvero originale, che coniuga la tradizione con la tecnologia: si tratta di un cuscino con “cucite” degli EL Wire.

Il cuscino naturalmente lo scegliete voi e potete applicargli poi gli EL Wire, che sono delle strisce elettroluminescenti, disponibili anche in forma di filamenti (sempre elettroluminescenti) che utilizziamo per la prima volta con questo progetto.

Nel nostro progetto utilizziamo proprio dei filamenti, cogliendo l’occasione per spiegarvi cosa sono e in che modo si accendono.

Gli EL Wire, in un numero massimo di 6, vengono controllati da una scheda che descriveremo nei prossimi paragrafi e che è basata su un microcontrollore PIC e degli integrati driver specifici.

Cavo elettroluminescente Rosso - 5 metri / 2,3 mm

Il progetto del cuscino luminoso per San Valentino

Ma andiamo con ordine: siamo partiti dall’idea di realizzare una scritta “d’amore” con degli EL Wire; la soluzione più comoda sarebbe stata quella di adottare l’immancabile scheda Arduino e le componenti che trovate a alla destra di questo articolo, visto che in commercio esistono diversi shield che permettono di realizzare vari effetti luminosi e che contengono un driver specifico funzionante a 110 Vca; tale tensione è richiesta dai filamenti o strip elettroluminescenti per accendersi. L’alta tensione poi viene pulsata ed eventualmente parzializzata mediante fototriac.

Ovviamente questa soluzione va bene se gli EL Wire da pilotare sono molto lunghi e quindi al driver da utilizzare è richiesta una buona potenza. Il difetto di tale soluzione è che lo shield non integra l’elevatore di tensione, ma richiede che l’alta tensione gli sia fornita da un dispositivo esterno (che può essere opportunamente calibrato in base alle esigenze).

Volendo una soluzione più economica e compatta (Arduino e gli shield occupano spazio e nel nostro cuscino non ce nè tantissimo…) abbiamo cercato cosa offriva il mercato ed abbiamo trovato una famiglia di driver per EL wire sviluppata da Microchip; alcuni driver sono stati sviluppati -e non è casuale- dopo l’acquisto di Supertex (azienda che produce e commercializza driver per fogli e strip elettroluminescenti) da parte della stessa Microchip. Quindi dove altro avremmo potuto orientare la nostra ricerca?

Tra questi driver ne esistono alcuni con costi molto bassi e che non necessitano di bobine esterne per il funzionamento dei converter necessari all’elevamento di tensione; tra essi abbiamo trovato quello da noi utilizzato nel progetto, che è l’HV852.

Questo integrato è l’ideale per il nostro progetto e se proprio vogliamo, possiamo trovargli un piccolo difetto: quello di non poter pilotare grossi carichi, quindi la lunghezza massima di un EL wire deve essere non superiore a circa 1 metro.

E qui apriamo una parentesi: le strisce o filamenti elettroluminescenti sono formati da due superfici variamente sagomate, una delle quali rivestita da materiale elettroluminescente, tra le quali si applica una differenza di potenziale di valore tale da innescare la fluorescenza; in altre parole, quando il campo elettrico supera un certo livello la struttura atomica del materiale fosforescente viene alterata e gli elettroni periferici, debolmente legati al nucleo, vengono estratti dall’azione del campo elettrico, ma poi all’inversione di polarità della tensione di alimentazione (che è alternata) ritornano nei loro legami e restituiscono l’energia ricevuta sotto forma di fotoni, generando quindi della luce.

Questo fenomeno comporta un certo assorbimento di corrente che dipende dalla superficie degli elettrodi, perciò, a parità di larghezza, più un EL Wire è lungo o esteso in superficie, maggiore è la corrente che richiede.

L’adozione dei driver Microchip risparmia hardware, perché utilizzando dei driver comuni bisogna innanzitutto generare il segnale di controllo, poi produrre i 110 Vca e parzializzare la tensione alternata mediante dei TRIAC disaccoppiati tipicamente mediante fotoaccoppiatori; tutto questo può essere semplificato grazie all’HV852, driver che permette di fare a meno di TRIAC (e quindi fotoaccoppiatori ed eventuali DIAC) e dei driver di potenza.
Con l’eliminazione di tutti questi componenti siamo riusciti ad ottenere un circuito in grado di pilotare fino a sei EL wire, il tutto gestito da un PIC16F1574, in dimensioni un po’ più ridotte di quelle di una carta di credito.

Schema elettrico del Driver per EL Wire

Passiamo ad analizzare il circuito elettronico, che è basato sul PIC16F1574 perché ha le caratteristiche che fanno al caso nostro: è basato su un’architettura ad 8 bit con una buona potenza di calcolo (elabora fino a 8 MIPS) e dispone di ben 4 moduli PWM indipendenti a ben 16 bit, con cui è possibile pilotare i driver per ottenere effetti luminosi particolari.

Per il momento abbiamo progettato il firmware senza utilizzare i PWM, ma semplicemente costruiamo una sequenza di attivazione delle linee di I/O del microcontrollore, tutte sul registro RC, che sono RC0, RC1, RC2, RC3, RC4 ed RC5. Tutte sono inizializzate come uscite.

La linea RA2 viene inizializzata come ingresso e serve al firmware per rilevare la pressione del pulsante P1, ovvero della chiusura dei contatti CNP1, che può avvenire ad opera di un dispositivo esterno che provvede al telecomando; a riposo, la linea viene mantenuta a livello logico alto dal resistore di pull-up R7.

Il pulsante e in generale l’RA2 del micro, è disponibile (previa implementazione nel firmware) per scegliere tra più effetti luminosi composti dai sei EL Wire.

La RA5 viene inizializzata come uscita per il comando del LED LD1, che provvederà alle segnalazioni di stato durante il funzionamento del circuito.
Il firmware viene caricato on-board una volta montato il microcontrollore, tramite il consueto connettore ICSP, cui fanno capo le linee Vpp (tensione di programmazione) PGC (clock della connessione dati seriale) e PGD (canale dati per la programmazione).

L’alimentazione dell’intero circuito viene prelevata dai contatti +/- PWR, cui si fornisce una tensione di valore compreso tra 9 e 12 volt; il diodo D1 protegge dall’inversione di polarità il resto del circuito, ovvero il regolatore integrato U8, il quale, contornato dai condensatori che filtrano l’alimentazione da disturbi impulsivi ed eventuali ripple (C7 e C8 valgono per l’ingresso e C9-C10 per l’uscita), fornisce 5 volt stabilizzati al microcontrollore e ai sei driver per EL Wire.

E veniamo proprio ai driver, per spiegare come vengono utilizzati: ognuno contiene un elevatore di tensione definito inductorless e a basso rumore (significa che la tensione che fornisce è abbastanza pulita da eventuali residui di commutazione); il dispositivo funziona senza induttanze perché non è un converter switching tradizionale, ma piuttosto un circuito a pompa di carica capacitiva, costituito da un multivibratore astabile che pilota una cascata di moltiplicatori di tensione e capace di partire da 5 volt e ricavare al massimo 92 volt di picco fornendo un’onda rettangolare alternata dai fronti di salita e discesa ad andamento simil-esponenziale.

Il circuito a pompa capacitiva può essere abilitato e disattivato mediante il livello logico applicato al piedino EN (l’uno logico abilita e lo zero disabilita) il che permette di accenderlo e spegnerlo all’occorrenza e comunque di gestirne l’attività mediante un semplice segnale digitale. L’elevatore di tensione è retroazionato, in modo da stabilizzare quanto possibile l’alta tensione continua fornita allo stadio di commutazione full-bridge.

L’accensione e lo spegnimento del circuito a pompa capacitiva può essere controllato anche da un segnale PWM, che però dev’essere a frequenza minore di quella impostata per la commutazione dei MOSFET del ponte, perché altrimenti la modulazione non riesce; il PWM consente di controllare entro certi limiti la luminosità. Va inoltre considerato che la frequenza del segnale PWM non deve scendere sotto i 50 Hz, altrimenti il nostro occhio percepisce lo sfarfallìo della luce.

Il circuito elevatore di tensione alimenta un ponte a MOSFET alle cui uscite va collegata la lampada: la struttura a ponte consente di trasformare la tensione continua fornita dall’elevatore in alternata, dato che può invertire la polarità tra i propri capi di uscita facendo accendere alternativamente il transistor superiore di un lato e l’inferiore di quello opposto e viceversa.

Siccome nasce per pilotare EL Wire, il driver funziona a basse frequenze: tipicamente tra 50 e 500 Hz; il clock può essere fornito dall’esterno tramite il piedino CLKIN (il segnale dev’essere un’onda rettangolare a livello TTL) e in questo caso va posto a livello logico alto il piedino CLKEN (che abilita la ricezione del clock dall’esterno e blocca il multivibratore interno) e a massa il pin REL, ovvero si può ricavare internamente definendone la frequenza (f) mediante la resistenza applicata tra il piedino REL e il positivo di alimentazione. REL può assumere valori che vanno da 7,5 Mohm a 0,75 Mohm e nel nostro caso vale 375 Hz.

L’integrato HV852 (l’elevatore di tensione e il driver a ponte) è dimensionato per alimentare EL Wire che abbiano una superficie massima di 14,5 cm², ovvero la cui capacità sia di valore non superiore a 5,3 nF.

L’assorbimento dipende, a parità di tensione applicata, dalla superficie degli elettrodi, dato che essa determina la corrente che scorre.

Nel nostro circuito i driver sono tutti configurati allo stesso modo, ovvero per funzionare con il clock interno (fissato in 375 Hz); l’alimentazione di ciascuno è filtrata mediante un condensatore, in modo da evitare che residui della commutazione degli stadi a ponte di ciascuno si propaghino sulla linea dei 5 volt del circuito, disturbando il funzionamento del microcontrollore.

L’uscita di ciascun driver è collegata a una morsettiera siglata OUT, cui si collegano direttamente i fili della EL Wire.

Realizzazione pratica

Passiamo adesso alla costruzione del circuito, che prevede, per limitare le dimensioni, l’utilizzo di componentistica SMD; fanno eccezione le morsettiere, i pin-strip e il pulsante da c.s. L’utilizzo di componenti SMD impone l’uso di un saldatore a punta molto fine (la potenza non dovrebbe superare i 20 watt) di lega saldante in filo del diametro non superiore a 0,5 mm, nonché di pasta flussante per agevolare le saldature e limitare la possibilità che si formino baffi di stagno.

Una volta ottenuta la basetta (si ricava per fotoincisione partendo dalle tracce lato rame scaricabili dal nostro sito www.elettronicain.it) potete disporvi per primi gli elementi passivi, vale a dire diodi e condensatori, lasciando da parte gli elettrolitici, almeno per il momento.

Si procede poi con gli integrati HV852 e il microcontrollore, da centrare bene nelle rispettive piazzole, quindi saldare partendo dai piedini posti sugli angoli.

A questo punto si saldano il regolatore 7805, che va appoggiato alla propria piazzola e stagnato bene dietro dopo aver saldato i contatti E ed U (la massa è la placca metallica posteriore, da saldare, appunto, sulla piazzola di massa), il pulsante, i pin strip per la connessione ICSP e l’ingresso CNP1, i due elettrolitici e per finire, le morsettiere a passo 5 mm.

Completato il montaggio si può collegare il programmatore e avviare la programmazione del microcontrollore tramite il connettore ICSP.

A questo punto il circuito è pronto per essere utilizzato; per alimentarlo è sufficiente un alimentatore da 9 volt che eroghi una corrente di almeno 200 milliampere, visto che ogni driver assorbe massimo 30 mA (cosa normale, visto che le EL Wire lavorano ad alta tensione).

Il circuito, visto che dissipa pochissimo e quindi scalda appena, può essere collocato sul retro (chiuso in un contenitore piatto) o in una tasca ricavata nel cuscino.
Le EL Wire vanno collegate con fili che garantiscano il necessario isolamento elettrico, dato che la tensione fornita dal circuito è di oltre 90 volt: fili da 1 mm di diametro garantiscono una guaina di spessore sufficiente ad assicurare l’isolamento.

Attenzione alle giunte: se ne fate, ricopritela con abbondante nastro isolante o con due strati di guaina termorestringente.

Nel nostro progetto abbiamo composto, con sei spezzoni di EL Wire a filamento, la scritta “Ti Amo” circondata da un cuore sopra i cui vertici sono applicate due “onde” la cui accensione idealmente simula la pulsazione; dunque, per ottenere l’effetto desiderato bisogna collegare OUT 1 al filamento con cui componete la scritta “Ti”, OUT2 a quello della lettera “A”, OUT3 a quello della scritta “mo”, OUT4 al filamento che delinea il cuore sinistra, OUT5 a quello che delinea il cuore a destra e OUT6 al filamento sovrapposto, che fa la pulsazione.

Per fare le scritte, armatevi di pazienza e puntiglio e piegate -senza spezzarle- le EL Wire disegnando la scritta “Ti”, poi la “A”, poi la “mo”, quindi le metà del cuore e infine la parte alta della pulsazione.

Per far passare il filamento e nascondere il collegamento tra le lettere della scritta Ti, tra quelle della mo e tra i segmenti della parte superiore, forate il rivestimento del cuscino e infilateli per poi farli fuoriuscire dove serve.

Traete spunto dalle foto del prototipo, se volete idee. 3,5, 6, 9, 10, 11.

Elenco Componenti:

R1÷R6: 1 Mohm (0805)
R7: 4,7 kohm (0805)
R8: 470 ohm (0805)
C1÷C6: 100 nF ceramico (0805)
C7, C9: 100 µF 16 VL elettrolitico (E)
C8, C10, C11: 100 nF ceramico (0805)
LD1: LED verde (0805)
D1: GF1M (DO-214AC)
P1: Microswitch
U1÷U6: HV852MG-G
U7: PIC16F1574-I/SL (MF1241)
U8: L7805CD2T-TR
Varie: 
- Morsetto 2 poli passo 5mm (7 pz.)
- Strip maschio 2 vie passo 2.54mm
- Strip maschio 6 poli 2.54mm
- Circuito stampato S1241

Il firmware

È giunto il momento di analizzare il firmware per il microcontrollore che, come accennato, per il momento abbiamo scritto senza utilizzare i PWM, ma semplicemente per creare e ripetere ciclicamente una sequenza di attivazione delle linee di I/O del microcontrollore RC0 (OUT1), RC1 (OUT2), RC2 (OUT3), RC3 (OUT4), RC4 (OUT5) ed RC5 (OUT6).

Nulla vi vieta, se ve la sentite, di implementare il comando in PWM in modo da ottenere, ad esempio, la dissolvenza, tuttavia ricordate quanto detto in precedenza circa la frequenza del segnale PWM e la sua relazione con quella del circuito a pompa capacitiva. Il firmware da caricare nel PIC lo trovate nel Listato 1. e funziona così: sostanzialmente il microcontrollore inizializza un timer per tenere conto della durata dei cicli, quindi attiva le uscite secondo una determinata combinazione, le uscite di comando delle EL Wire, con la cadenza di 1 secondo, sommando poi l’accensione di tutte; in realtà l’esatta sequenza prevede prima l’accensione della OUT1, poi quella simultanea delle OUT2 e OUT3, quindi si accendono insieme OUT4 e OUT5 e infine, a chiusura del ciclo, OUT6. Arrivati all’accensione della OUT6, si riparte con la OUT1.

Rispettando le connessioni da noi indicate, la sequenza consiste nell’accensione di: 1) Ti, 2) A e mo insieme, 3) parte sinistra e destra del cuore, 4 parte superiore del cuore per la pulsazione.

Listato 1

/*
* File: main.c
* Author: Boris Landoni
*
* Created on 13 agosto 2015, 14.16
*/

/* -- includes -- */
#include stdio.h;

#include stdlib.h;

#include xc.h;
// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.

// CONFIG1

// PIC16F1574 Configuration Bit Settings

// ‘C’ source line config statements

#pragma config FOSC = INTOSC // Oscillator Selection Bits
// (INTOSC oscillator; I/O function on CLKIN pin)
#pragma config WDTE = OFF // Watchdog Timer Enable (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable (PWRT disabled)
#pragma config MCLRE = OFF // MCLR Pin Function Select (MCLR/VPP pin
// function is digital input)
#pragma config CP = OFF // Flash Program Memory Code Protection
// (Program memory code protection is disabled)
#pragma config BOREN = OFF // Brown-out Reset Enable (Brown-out Reset disabled)
#pragma config CLKOUTEN = OFF // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)

// CONFIG2
#pragma config WRT = OFF // Flash Memory Self-Write Protection (Write protection off)
#pragma config PPS1WAY = ON // PPSLOCK bit One-Way Set Enable bit
// (PPSLOCKED Bit Can Be Cleared & Set Once)
#pragma config PLLEN = OFF // PLL Enable (4x PLL enabled)
#pragma config STVREN = ON // Stack Overflow/Underflow Reset Enable
// (Stack Overflow or Underflow will cause a Reset)
#pragma config BORV = LO // Brown-out Reset Voltage Selection
// (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config LPBOREN = OFF // Low Power Brown-out Reset enable bit (LPBOR is disabled)
#pragma config LVP = OFF // Low-Voltage Programming Enable (High-voltage
// on MCLR/VPP must be used for programming)

/* -- defines -- */
#define DELAY_VALUE 3000
/* -- defines -- */
#define FOREVER 1

#define OUT1 PORTCbits.RC3
#define OUT2 PORTCbits.RC4
#define OUT3 PORTCbits.RC5
#define OUT4 PORTCbits.RC0
#define OUT5 PORTCbits.RC1
#define OUT6 PORTCbits.RC2
#define LED PORTAbits.RA5

unsigned char portValue; // our counter variable
unsigned char state; // state variable
/*
void interrupt myIsr(void)
{
// only process timer-triggered interrupts
if(INTCONbits.TMR0IE & INTCONbits.TMR0IF) {
//portValue++;
state++;
INTCONbits.TMR0IF = 0; // clear this interrupt condition
}
}
*/

int main(void) {
/*
//T0CON = 0b10001000; // enable the timer as 16 bit...
// internal clock, no prescaler
OPTION_REG = 0b00000111;
INTCONbits.TMR0IE = 1; // enable interrupts for timer 0
ei(); // enable all interrupts
*/

//OSCCONbits.IRCF = 0b101; // Binary value of the three ICRF bits
// to select 4 MHz internal oscillator
ANSELA = 0;
ANSELC = 0;
/* delay counter */
unsigned long counter = DELAY_VALUE;

/* set ddr register */
TRISC = 0x0000;
TRISA = 0x0000;

OUT1 = 0; //Ti
OUT2 = 0; //A
OUT3 = 0; //mo
OUT4 = 0; //cuore sx
OUT5 = 0; //cuore dx
OUT6 = 0; //pulsazione
LED = 0;

/* endless lopp */
while (FOREVER) {
_delay(100000);
//state++;
state = 1;
switch (state) {
case 1:
OUT1 = ~OUT1;
LED = ~LED;
break;
case 2:
OUT2 = ~OUT2;
OUT3 = ~OUT3;
break;
case 3:
OUT4 = ~OUT4;
OUT5 = ~OUT5;
break;
case 4:
OUT6 = ~OUT6;
break;
default:
state = 0;
break;
}

}

/* execution should never reach this line */
return (EXIT_SUCCESS);
}

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Menu