Dubbio su dimmer lampadina con TRIAC

Ma che ci devi fare nello specifico?

Fare un dimmewr con Arduino (o un qualsiasi MCU) è abbastanza semplice. Lo zero crossing serve anche per evitare le correnti di Rush (e tutte le spurie di commutazione) che si hanno utilizzando un normale fotoaccoppiatore, che taglia l'onda "a babbo", quindi non sincronizzato.

Solo che, come ha confermato uwe, il mio optoisolatore non è zerocrossing (moc3021 non 3041) quindi devo fare un circuito di zero crossing...
Tutto ció perchè vorrei utilizzare l'arduino come dimmer

Ti servono 100 Hz, quindi una doppia semionda, da cui estrarre un impulso da usare come INTERRUPT:

Una volta agganciato ad un INTERRUPT, devi far partire un contatore che ritarda l'attivazione del TRIAC rispetto al passaggio per lo zero.

Come vedi dalla figura, spostando con un ritardo l'impulso di attivazione del TRIAC, lo attivi ad un dato punto della semionda. Meno semionda c'è, e minore sarà il valore medio, quindi la tensione ai capi di un eventuale carico.

Ramenta che questi sistemi funzionano solo su carichi resistivi come lampadine e/o faretti a 220V. Con lampadine a basso consumo, non funziona, tantomeno su carichi induttivi (ci vorrebbe un circuito rognoso fatto con IGBT in antiparalelo).

Grazie mille! Provo e vi faccio sapere!
Scrivo poi in aggiunta a ciò che hai scritto, per i posteri che finiranno su questa discussione, che il triac si può solo "accendere" e non "spegnere", si disattiva a corrente = 0, cioè quando la sinusoide passa per lo 0...

(Mi sembra di aver detto cosa giusta no?)

@babbuino:
potresti spiegarmi il circuito di cui hai messo lo schema, per piacere?
Non riesco a capirlo.
Inoltre il segnale in uscita, come lo utilizzi?

potresti spiegarmi il circuito di cui hai messo lo schema, per piacere?
Non riesco a capirlo.

D1 e D2 servono a trasformare l'alternata in semionde positive che vanno applicate alla base del transistor. Quando la tensione scende sotto i 0,7 volt il transistor si interdice(non conduce) portando alto il suo collettore e viceversa quando supera i 0,7 volt si satura portando basso il suo collettore dando origine ad un'onda quadra sul punto "B".
Il condensatore C1 serve per livellare la tensione da applicare al collettore del transistor ed il diodo D3 serve per non far tornare indietro al punto "A" la tensione livellata dal condensatore.
R1,R2 polarizzano la base e R3 limita la corrente di collettore.

Guglio:
Grazie mille! Provo e vi faccio sapere!
Scrivo poi in aggiunta a ciò che hai scritto, per i posteri che finiranno su questa discussione, che il triac si può solo "accendere" e non "spegnere", si disattiva a corrente = 0, cioè quando la sinusoide passa per lo 0...

(Mi sembra di aver detto cosa giusta no?)

Il triac si spegne quando la corrente va a Zero , non necessariaemnte la tensione.
Ciao Uwe

penso che intenda collegarlo ad un pin interrupt di Arduino per gestire poi il pilotaggio del TRIAC, ma non potresti usare direttamente un timer interno come riferimento a 100Hz e duty al 10%, c'è bisogno di tutta sta cosa?

@tonid:
grazie della spiegazione.

@michele:
non può funzionare perché manca la sincronizzazione tra il timer e la sinusoide del segnale della rete elettrica.

tonid:

potresti spiegarmi il circuito di cui hai messo lo schema, per piacere?
Non riesco a capirlo.

D1 e D2 servono a trasformare l'alternata in semionde positive che vanno applicate alla base del transistor. Quando la tensione scende sotto i 0,7 volt il transistor si interdice(non conduce) portando alto il suo collettore e viceversa quando supera i 0,7 volt si satura portando basso il suo collettore dando origine ad un'onda quadra sul punto "B".
Il condensatore C1 serve per livellare la tensione da applicare al collettore del transistor ed il diodo D3 serve per non far tornare indietro al punto "A" la tensione livellata dal condensatore.
R1,R2 polarizzano la base e R3 limita la corrente di collettore.

Bravo! Vedo che gli "Analogici" non sono tutti morti... :smiley:

azzz, ti credevi una sorta di Babbusauro superstite? :stuck_out_tongue_closed_eyes:

Bravo! Vedo che gli "Analogici" non sono tutti morti...

Ahaha....no,no,qualcuno vivo c'è ancora 8)

Ma no, ma vedo anche qua da me che giovani bravi ingegneri digitali c'è nè tanti, ma nessuno che conosce bene l'elettronica 'gnorante. Addirittura ho qualche giovane delle scuole professionali che dà dei punti a certi ingegneri, quanto a capacità di "aggeggiamento elettronico". Ma la colpa, ovviamente, è del sistema scolastico, moltro lontano dalle esigenze di Azienda. I più bravi sono sempre quelli che hanno un percorso da autodidatta, che va oltre quanto appreso a scuola. Il nostro è un mestiere per appassionati. Chi sceglie Elettronica, così tanto per... fa poca o nessuna strada.

Tonando al circuito:

questo prosegue con un Trigger di Schmitt con CD40106..

..per squadrare bene l'onda (dal Transistor esce molto lontana dall'essere quadra) e adattarsi al livello di tensione dellATMega. Se ne mettono due in cascata per recuperare la fase corretta.

Poi si entra dentro il piedino 4 (a memoria mi pare il D2 = INT0) e si apre un'istanza di INTERRUPT sul fronte di salita (RISE), e da lì si fa partire il contatore di ritardo di un impulso tipo:

digitalWrite(outTriac, HIGH); // accende il TRIAC
delayMicroseconds(5); // rimane a 1 per 5 uSec
digitalWrite(outTriac, LOW); // il TRIAC CMQ NON SI SPEGNE fino al successivo passaggio per lo zero

Il delay è un tempo critico, perchè va considerata la capacità del gate del TRIAC, e non sempre 5 uSec sono sufficienti ad accenderlo. Con certi TRIAC sono dovuto salire fino a 10 uSec. Cmq sui Datasheet si trova il Tmin per l'impulso di accensione.

Considerando che una semionda a 50Hz dura 10 mSec, il tempo di ritardo va da 0 uS, fino a non oltre 8-9000 uS, pena il non-sganciamento del TRIAC al passaggio per lo zero.

Ovviamente si può legare il tempo di ritardo ad una variabile, magari manipolabile da un ingresso analogico (potenzimetro) o come nel mio caso, una variabile AJAX che prende il valore da uno slider su una pagina Web il valore di dimmer (il progetto Domo- BaBBuino!)

Che poi è la stessa identica solfa che hai detto a dicembre del 2011.

http://arduino.cc/forum/index.php/topic,80971.0.html
http://sound.westhost.com/appnotes/an005.htm

Secondo me fornire i link dove ci sono discussioni utili di pro e contro a quello che dici non farebbe male, se ne è già discusso con molti dettagli, perchè ripetere il tutto?

niente da fare, è proprio amore a prima vista :slight_smile:

Un altro post OT e sono costretto ad intervenire.

leo72:
Un altro post OT e sono costretto ad intervenire.

Dove sarebbe l'OT scusa, l'argomento è sempre sui dimmer o no?

Non intervengo per l'OT ma per gli screzi fra utenti.

Grazie mille per le risposte... ho un dubbio sul codice però: non dovrebbe invece essere una cosa del genere?

void zero_crossed(){//Viene chiamato quando la fase passa per lo 0 cioè quando la quadra in ingresso è a LOW
delay(9);//L'onda dovrebbe essere quasi sulla cresta più alta
delay(var);//dove 0<var<10; 
digitalWrite(outTriac, HIGH);   // accende il TRIAC
 delayMicroseconds(5);   
 digitalWrite(outTriac, LOW);    // il TRIAC NON SI SPEGNE fino al successivo passaggio per lo zero
}

var tende a 10 quando la luce tende a 0... o non ho capito una cippa?