Dimmer di potenza (230V~)

per illuminazione con PIC 12F683

ATTENZIONE: Chi ha realizzato questo o altri progetti presenti in questo sito, per favore può inviarmi sulla mia email delle foto delle sue realizzazioni? Vorrei metterle qui on-line in modo che siano visibili e possano servire da spunto per nuove idee, realizzazioni diverse o modifiche , seguendo in questo modo lo spirito di questo sito che è a favore della divulgazione e conoscenza gratuita dell'elettronica.
Inoltre se voi, mentre inviate le foto dei vostri prototipi, mi autorizzate a mettere on-line insieme alle foto almeno il vostro nome e la vostra email, potrete essere contattati o potrete contattare un altro utente che ha realizzato lo stesso progetto in modo da poter fare insieme dei confronti costruttivi.
Vi ringrazio anticipatamente, Tony

ATTENZIONE! Gli schemi elettrici qui descritti sono collegati direttamente alla tensione di rete, pertanto la realizzazione, il montaggio ecc... sono destinati ad utenti esperti e non a principianti.

Descrizione dell'elettrico:

Sono state realizzate diverse versioni di questo dimmer, la prima versione è stata progettata con le parti di potenza NON collegate direttamente alla rete elettrica ma isolato tramite fotoaccoppiatori e trasformatore di alimentazione.

Il circuito è stato alimentato tramite un trasformatore da 6V/100mA seguito dal raddrizzatore e dal regolatore 78L05 sempre da 100mA.

La versione più diffusa (v. 1.03) di questo circuito è la versione alimentata direttamente dalla rete cioè senza trasformatore di alimentazione con il fine di ridurre costi ed ingombri per poter posizionare il dimmer anche in una scatola incasso standard tipo 503.

Il circuito è così composto: Subito dopo il fusibile di protezione è presente il condensatore da 470nF di classe X2 con isolamento adeguato per poter funzionare alla diretta tensione di rete, in parallelo a questo condensatore si trovano due resistenze da 470k, la tensione in uscita da questo condensatore passa tramite una resistenza da 47 Ohm e raggiunge il ponte raddrizzatore. In uscita dal ponte è presente il diodo zener da 6,8V 1W (per stabilizzare la tensione e fare in modo che all’ingresso del regolatore la tensione non sia troppo elevata) seguito dal condensatore di livellamento da 470ųF 16V e dal regolatore di tensione 78L05 da 5V 100mA con un condensatore da 0,1ųF.

L’assorbimento del circuito in tutte le condizioni non supera i 25mA.

Il circuito è basato su un microcontroller PIC 12F683 (8 pin con 2k di memoria) è stato scelto questo micro poiché ha l’oscillatore interno a 8MHz, al posto del 12F675 o 12F629 che hanno 1 solo k di memoria e l’oscillatore interno a 4MHz.

Il circuito Zero-Crossing è stato realizzato con un ponte raddrizzatore direttamente collegato alla rete, seguito da un partitore resistivo, un diodo 1N4148, un condensatore da 220nF e due transistor BC547 che pilotano il led del fotoaccoppiatore PC901V realizzato da Sharp con uscita digitale. Questo circuito genera degli impulsi in prossimità dello zero-crossing di circa 240ųS dei quali 120ųS prima dello zero crossing e 120ųS dopo lo zero crossing.

Il programma aggiusterà il ritardo sui primi 120ųS con il fine di essere più precisi sul vero zero della tensione di rete.

L’uscita di questo fotoaccoppiatore entra nel micro tramite il pin 5 (GP2) sottoposto a interrupt.

Il led utilizzato è un led bicolore rosso/verde del diametro di 3mm e le resistenze da 1k limitano la corrente intorno ai 3,5mA

La parte finale è composta da un foto triac-driver MOC 3020 non sensibile allo zero crossing che pilota un triac BTA10 da 10 Ampere con circuito limitatore di disturbi composto da un condensatore C8 da 0,01 ųF ed una resistenza da 39 Ohm 1/2W.

La resistenza R4 di pull-up presente sul pulsante PL1 con ingresso su GP4 è stata fissata a 100k. In un paio di circuiti si è reso necessario mettere in parallelo 3 pulsanti per l’accensione, lo spegnimento e regolazione tramite una linea lunga una decina di metri; in questo caso è stato ridotto il valore della resistenza R4 a soli 10k.

E’ stata realizzata anche una versione di Doppio Dimmer, in questa versione il condensatore C1 da 0,47ųF è stato elevato ad 1ųF. Il principio di funzionamento di questo dimmer è uguale al dimmer standard qui descritto e differisce solo per il condensatore C1 e viene raddoppiato il circuito relativo al micro 12F683.

Nella versione doppio dimmer è stata presa in considerazione l’idea di usare un solo micro, con più out rispetto il 12F683, però, vista la criticità del doppio circuito e la riscrittura completa del programma poiché totalmente incompatibile, si è deciso per l’utilizzo di due 12F683.

 

Descrizione del funzionamento:

A dimmer spento, il Led1 è acceso (rosso) e serve come indicazione della posizione del pulsante di gestione.

Premendo brevemente il pulsante per un tempo inferiore a 400mS, si ha la commutazione da acceso a spento e viceversa.

In fase di accensione, onde evitare di sottoporre il filamento della lampada (o delle lampade) ad uno shock termico, è stata generata una rampa per l’accensione graduale; da zero alla massima luminosità in poco più di un secondo, e lo stesso vale per lo spegnimento.

A dimmer acceso, se il pulsante viene tenuto premuto per più di 400mS si entra nel ciclo di regolazione della luminosità. Infatti viene generata una rampa in un ciclo infinito (finchè è premuto il pulsante…) che aumenta la luminosità fino al massimo e diminuisce la luminosità fino a zero. In prossimità del punto di massima luminosità viene acceso il Led1 per circa 1 secondo, poi il led viene spento e la luminosità decresce fino a zero. Questo tempo di attesa fa sì che l’utente abbia il tempo di rilasciare il pulsante in quando il dimmer è posizionato sulla massima luminosità.

 

Il Programma:

In sintesi il programma dopo aver inizializzato il micro ed impostato l’interrupt su GP2 e Timer Zero, gira in una routine per la gestione dell’unico pulsante.

Nella modalità dimmer spento il Led1 rosso è acceso ed il dimmer è spento, premendo e rilasciando rapidamente il pulsante (tempo < 400mS) si ottiene l’accensione graduale della lampada fino al punto preimpostato; Cioè, viene attivato il dimmer e di conseguenza l’interrupt su GP2 che interviene con la frequenza di una semionda e cioè ogni 10mS circa con un impulso pari a 240ųS proveniente dal circuito per la rilevazione dello zero-crossing. Non appena scatta l’interrupt, viene attivato il timer 0 con il valore di ritardo impostato per ottenere la luminosità desiderata e tramite il decremento di una variabile viene ritardato l’innsesco del triac determinando così la luminosità controllata della lampada.

 

Routine interrupt:

Questa routine gestisce due interrupt, l’interrupt proveniente da GP2 e l’interrupt proveniente da Timer Zero.

Il ciclo normale delle operazioni in questa routine, prevede che venga atteso l’interrupt su GP2 generato dal circuito per la rilevazione dello zero-crossing e cioè con cadenza di 10mS (ogni semionda a 50Hz) ed un impulso con ampiezza di circa 240ųS. L’impulso ha un’ampiezza di 240ųS e cioè 120ųS prima del passaggio per lo zero e 120ųS dopo lo zero, questo fa sì che per attivare il triac esattamente quando si passa per lo zero occorre eseguire la routine SYNC che genera un ritardo pari a 120uS, trascorso questo tempo esistono tre possibilità:

1°) Stiamo accendendo il dimmer

2°) Stiamo spegnendo il dimmer

3°) Il dimmer è regolato ed è in fase normale di lavoro

Sempre seguendo lo stesso ciclo e cioè trascorsi i 120ųS si attiva il timer zero con il valore contenuto nella variabile V_TMR0 (RITARDO), questa variabile contiene il valore di ritardo che va da Zero (massima luminosità) a RAMP_MIN che è il valore prefissato per la luminosità minima. Il timer zero viene attivato n*V_TMR0 volte con una base dei tempi di 40ųS, quando V_TMR0 raggiunge zero, viene innescato il triac tramite la routine FIRING che genera l’impulso di innesco pari a 100ųS.

Come già anticipato in precedenza esistono tre situazioni che caricano con valori diversi la variabile V_TMR0 e cioè:

1°) Se il flag RAMP_ON è impostato, significa che stiamo accendendo il dimmer e viene generata la rampa di accensione per il soft-start. La rampa di accensione è stata inserita all’interno del dimmer non solo per l’effetto ottico piacevole nel vedere la lampada (o le lampade) accendersi in modo graduale, ma anche per proteggere il filamento della lampada; poiché la resistenza del filamento a lampada fredda è circa 20 volte inferiore del filamento alla temperatura di lavoro;  generalmente le lampade si bruciano proprio nel momento dell’accensione, accendendo invece la lampada in modo graduale, si tende ad aumentare la vita della lampada stessa, per cui, sempre nella funzione interrupt se il flag RAMP_ON è attivo, viene caricata la variabile V_TMR0 con un valore che decrementa automaticamente ad ogni ciclo accorciando il tempo di ritardo di innesco del triac ad ogni semionda in modo tale da avere l’accensione completa della lampada in poco più di 1 secondo.

2°) Lo stesso principio è stato applicato per simmetria di funzionamento e per bellezza, anche in fase di spegnimento; questa fase è gestita dal flag RAMP_OFF che opera in modo inverso aumentando il valore di ritardo caricato in V_TMR0 ad ogni semionda fino a raggiungere il massimo valore definito in RAMP_MIN, quando raggiunto, spegne il dimmer e riaccende il led 1 rosso, che indica dimmer spento e nell’oscurità anche la posizione del pulsante di accensione.

3°) Se il dimmer ha terminato la rampa di accensione fino al punto di luminosità prefissato, inizia il ciclo normale e cioè, carica V_TMR0 sempre con lo stesso valore per mantenere costante la luminosità ed attiva Timer Zero. Timer Zero ha una base dei tempi fissata a 40ųS per cui ogni 40ųS viene decrementata V_TMR0 fino a zero, quando V_TMR0 vale zero, viene innescato il triac e siccome Timer zero non viene più riattivato si attende il prossimo interrupt da GP2 del prossimo passaggio per lo zero ed il ciclo si ripete.

 

Modifica luminosità:

Quando la rampa di accensione è terminata ed il dimmer è in funzionamento normale, tenendo premuto il pulsante per più di 400mS si varia la luminosità.

Quando si raggiunge il punto di luminosità desiderato lasciando il pulsante, il dimmer ne memorizza il livello. Alle successive accensioni, il dimmer accenderà la lampada sempre a questo livello prefissato.

Tenendo premuto  il pulsante, viene proseguita l’ultima rampa attiva; ad esempio se l’ultima volta che è stata impostata la luminosità la rampa stava diminuendo la luminosità, tenendo premuto il pulsante per impostare la nuova luminosità la rampa prosegue dall’attuale punto fino al fondo della rampa e cioè diminuisce la luminosità fino a zero… tenendo sempre premuto il pulsante, una volta raggiunta la luminosità minima, il microcontroller inverte la rampa e comincia ad aumentare la luminosità verso il massimo… tenendo sempre premuto il pulsante, il ciclo delle rampe crescenti e decrescenti si ripete all’infinito finchè il pulsante viene mantenuto premuto.

Quando la rampa che incrementa la luminosità fino al massimo raggiunge il massimo, è stata introdotta una pausa di 1 secondo, con relativa accensione del led 2 verde per indicare che la massima luminosità è stata raggiunta, se il pulsante viene sempre mantenuto premuto, trascorso 1 secondo, il led verde si spegne ed inizia la rampa verso la luminosità minima.

Il led verde è stato acceso perché dal punto di vista visivo, quando la lampada è verso la massima luminosità, è molto difficile capire quando è stato veramente raggiunto il punto di massima luminosità, ed in genere, senza segnalazione visiva, lo si capisce solo quando il dimmer inizia la rampa decrescente ed inizia a ridurre la luminosità superando così il punto di massima luminosità. La pausa di 1 secondo è stata aggiunta poiché è stato osservato che una persona giovane in attesa di un evento ha un tempo di reazione inferiore al mezzo secondo, una persona anziana supera questo tempo… e così è stato stabilito un tempo di 1 secondo che è normalmente sufficiente per una corretta impostazione.

 



Schema elettrico




Prime versioni: circuito per la rilevazione dello zero-crossing indipendente















Visualizzazione uscita dal rivelatore di zero-crossing




Versione con circuito zero-crossing indipendente




Versione con circuito zero-crossing indipendente




Versione con circuito zero-crossing indipendente




Primi prototipi




Primi prototipi: Vista lato saldature




Primi prototipi




Primi prototipi




Ultimo prototipo: Progressione montaggio (Alimentatore)




Ultimo prototipo: Progressione montaggio (Alimentatore(





Ultimo prototipo: Progressione montaggio (Alimentatore)





Ultimo prototipo: Progressione montaggio (Zero-crossing)





Ultimo prototipo: Progressione montaggio (Zero-crossing)




Ultimo prototipo: Progressione montaggio (Micro e potenza)





Ultimo prototipo: Progressione montaggio (Lato saldature)





Ultimo prototipo: Progressione montaggio (Finito)

 

Files

Data sheet Led bicolore Led Bicolore.pdf (122k)
Data sheet 78L05 LM78L05.pdf(686k)

Data sheet opto triac driver MOC3020-M.pdf (522k)
Data sheet opto triac driver MOC3020X.pdf (68k)

Data sheet triac BTA06 bta06.pdf (67k)
Data sheet triac  BTA10 bta10.pdf (60k)

Data sheet opto TTL PC901V.pdf (58k)

File .HEX per PIC 12F683 Dimmer.zip (2k)

 

I files .HEX nonchè il contenuto di queste pagine è stato rilasciato per applicazioni didattiche SENZA fine di lucro. Per qualsiasi altro tipo di applicazione potete contattarmi via email.

The files. HEX and the content of these pages was released for teaching applications WITHOUT end of I make money from. For any other type of application it be able to contact me via email.

© Copyright tony@microt.it