Dubbio su dimmer lampadina con TRIAC

Ciao a tutti, sto felicemente utilizzando una schedina che avevo assemblato con TRIAC e optoisolatori per comandare diverse lampadine.
Per semplicità ho usato degli optoisolatori Zero-Crossing... solo che adesso sorge il problema: se non sbaglio l'opto zero crossing non s'accende e non si spenge finchè non raggiunge lo zero, quindi in questo modo una corrente pulsata sarebbe inefficace per un dimming..
E se io invece facessi "saltare" dei cicli alla lampadina riuscirei a dimmerarla?
Mi spiego meglio: la 230 fa 50 cicli in un secondo, quindi l'opto s'accende e si spegne 50 volte al secondo, se io lo facessi accendere una volta sì ed una no (solo 25 accensioni) avrei come effetto una lampadina dimmerata al 50% ?

(Certo mi serve sempre un trasformatore per individuare il passaggio dello zero ma in questo modo non dovrei dissaldare gli optoisolatori che sto usando per metterne di NON-ZeroCrossing)

Spero di essere stato comprensibile :sweat_smile: :sweat_smile:

L'opotisolatore zero crossing accende l'uscita solo quando la tensione alteranta passa per il zero (tensione) e se in quel momento é ancore pilotato. Lo spegnimento del triac a optoisolatore spento non funziona tramite l'optoisolatore ma perché nel passaggio del zero (della corrente) il triac si spegne.

Sí puoi far passare delle (semi)onde intere e lasciare pause. Questa tecnica si chiama treno di impulsi. Normalmente viene fatto passare una onda intera per avere una parte positiva e negativa della tensione. È realizzabile facilmente e senza sincronizzazione. basta tener acceso l' optoisolatore per il tempo di 2 semionde (20mS a un alternata di 50Hz)
Questo pilotaggio é molto indicato con riscaldamento, ma meno per lampadine o motori perché potendo solo sceglere pezzi dell'alternata da 20mS potrebbe essere visibile il pilotaggio e fare oscillare o farfallare il motore o lampadina.

Ciao Uwe

Vado a riprendere il mano il libro di fisica e a dare un occhio alle onde ma ho qualche dubbio...
Dunque lo sketch x provare è questo:

  delay(T);
  digitalWrite(A5, HIGH);
  delay(T);
   digitalWrite(A5, LOW);

Dove ho provato a variare T per fare un po' di prove...
Se metto T=20 si vede palesemente lo sfarfallio, in questo modo dovrebbe far passare un onda sì ed una no giusto?
Se metto T=10 cioè una semionda sì ed una no non si vedono sfarfallamenti ma varia la luminosità... cioè che ne so dopo 10 secondi sale un po' e dopo magari scende... è data dal fatto che la rete non è perfettamente a 50Hz? (misuro 49.90) o dal fatto che il delay non è preciso e il digitalwrite è lento?

L'elettronico locale mi ha venduto gli opto come degli zero crossing... in realtà s'è sbagliato!! MOC3021 (HTTP 301 This page has been moved) io lo Zero Detector non lo vedo citato... quindi come io alimento l'opto lui non aspetta lo zero ma accende subito giusto?
Quindi mi serve una cosa così:

Il MOC3041/2/3 é un zero crossing.
Ciao Uwe

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: