Aiuto per dimmerare la 220V

Buonasera a tutti, sono nuovo del forum, e anche della comunità di Arduino.
Mi ritrovo a dover regolare la tensione di rete (220V 50Hz) tramite Arduino. Cercando in rete la soluzione più usata è sembra essere l'uso del Triac, isolato da un fotoaccoppiatore.

Quando riceve 1,3V sul Gate il triac chiude il circuito e la corrente alternata, collegata sugli altri due pin, può passare.
Lì per lì ho pensato di governare il triac tramite PWM, di modo da poterlo facilmente governare, ma i fatti mi hanno smentito; una gestione del triac ad impulsi mal si combina con la corrente di rete: il triac infatti si apre allo zero crossing della rete e necessita quindi di un altro impulso per la semionda successiva.

Ciò di cui avrei bisogno io adesso sarebbe un sistema per sincronizzare gli impulsi del PWM derivanti da arduino con gli zero crossing dell'alternata.

Il sistema del triac in molti lo spacciano per semplice, ma io non sono ancora riuscito a capire come fare per farlo funzionare. Probabilmente sarà una fesseria che mi sfugge, di rapida risoluzione, ma finchè non lo risolvo sono nei guai (esame in vista): chiedo quìndi se in giro c'è qualcuno che si è già imbattuto in questo tipo di applicazione e se ha voglia di darmi una mano :wink:

Grazie mille in anticipo.

P.S. la parte HW funziona, provata col tester ed il triac si apre e si chiude come dovrebbe e con la corrente continua non da nessun problema.

ciao vaxel
Devi sincronizzare l' accensione del Triac con i 50 Hz.

leggi
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1289741248/7

Per sicronizzare usa un optocopler per sapere quando c'é il passaggio zero dei 230V.

Dove ci sono alcuni errori:
L' optocoppler MOC3012M per pilotare il triac é sbagliato; non puó essere un zero crossing. Usa uno normale; va bene un 4n25M .
Per la sincronizzazione (parte superiore) devi cambiare le resistenze perché sono per una tensione americana di 120V.

Puoi usare un piccolo trasformatore di 5-6V e sotto 1VA, un ponte radrizzatore (senza condensatori !!) e l'optocopler con una resistenza. In questo modo non hai un segnale di 100Hz ad ogni passaggio attraverso zero. Partedo da quel momento con un ritardo variabile da 0 a 10 mSecondi piloti il triac e puoi regolare la tensione da 0 a 230V.

Ciao Uwe

Grazie della risposta uwe.

Rimetto ordine alle idee e cerco di capire come funziona lo schema che mi hai suggerito

vediamo se ho capito lo schema...saranno considerazioni banali, ma servono a me per conferma e a qualcun altro in futuro per chiarirsi le idee...
ci sono di fatto due circuiti che partono dalla Fase e dal Neutro della 220V: uno, attraverso due resistenze in parallelo, entra nel fotoaccoppiatore e la scritta Arduino_2 dovrebbe essere l'input che indica al microcontroller l'istante di 0xing; invece Arduino_10 dovrebbe essere l'output che va al 4N32M (quella M finale mi par di capire che fa la differenza e che lo identifica come fotoaccoppiatore per alti carichi) e che gestisce l'interruttore.

Ci sono ancora alcuni punti che mi sono poco chiari:

  1. i valori delle resistenze R2 R3, R4, R5 come si calcolano? e la R6? 10K come sempre? R7 ed R8? scusate, ma non ho ancora afferrato il dimensionamento delle resistenze.

  2. analogamente come faccio a dimensionare il condensatore?

  3. il Triac BT136 (BT136 pdf, BT136 Description, BT136 Datasheet, BT136 view ::: ALLDATASHEET :::) vuole al Gate 1,5V, mentre così mi pare che al Gate ci finisce la 220V...o no?

Scusate la sfilza di domande da ignorante, non vorrei passare per presuntuoso nel chiedervi certe cose basilari, è che di elettronica "non sono mai stato infarinato"... :stuck_out_tongue:

Buona notte a tutti :wink:

Ciao vaxel
Questo circuito Ti avevo indicato come esempio.

Questo circuito, come ti avevo scritto ha 3 difetti:

  • Hai 230 V sul optocopler OK2.
  • Il LED del Optocopler viene alimentato in polarisazione inversa sopra la tension limite.
    Il optocoler OK1 non puoi usare uno col acccensiona nel passaggio 0 perché devi accendere il Triac in momneti ben definiti del semionda.

Silevamento fase:
Se metti un piccolo trasformatore (ma veramente piccolo , sotto 1 VA va bene, tensione qualcosa tra 4 e 12V). poi metti un ponte radrizzatore (senza condensatore!!!) e colleghi il LED del optocopler con una resistenza che limita la corrente a 10mA.

risposte:

  1. R2 R3, R4, R5 come si calcolano?: per avere una tensione di 1,6V e una corrente di ca 10mA sul Led del Optocopler.
    10K come sempre? : sí.
    R7 ed R8? servono per polarizzare e far funzionare il Triac. Di piú non so dirti.
  2. buona domanda; non so.
  3. è un valore di minima. deve essere almeo 1,5V per far partire il triac.

Ciao Uwe

Scusami, ma sono veramente un vero niubbo, e alcune cose sono per me quasi completamente sconosciute.

Ok, lo schema lo prendo solo come esempio per sapere che ci vuole un optocoupler per indicare ad arduino lo 0xing ed un altro optocoupler per gestire il triac. Le resistenze ed il condensatore restano ancora sconosciute, se qualcuno potesse dimensionarle glie ne sarei infinitamente grato.

  • Hai 230 V sul optocopler OK2.

esatto, invece lo schema è tarato per 120V. Si devono cambiare le resistenze...rinnovo il mio appello a qualcuno che possa spiegarmi come calcolarne il valore in funzione dell'optocopler 4n25M (se corretto).

  • Il LED del Optocopler viene alimentato in polarisazione inversa sopra la tension limite.

cosa vuol dire? che con la semionda negativa il led non si accende? praticamente si brucia per la tensione troppo alta? non ci pensano le resistenze ad abbassarla?

Il optocoler OK1 non puoi usare uno col acccensiona nel passaggio 0 perché devi accendere il Triac in momneti ben definiti del semionda.

OK2 indica quando la tensione è 0 (perchè il led dentro sarà spento); Arduino lo rileva e aspetterà un pò prima di inviare il segnale ad OK1, che a sua volta mette in conduzione il triac. In base ai millisecondi (o microsecondi) di attesa tra lo 0V segnato da OK2 ed il segnale di accensione mandato a OK1 potrò gestire la velocità del carico.
Il tempo d'attesa sarà definito in base al segnale du un sensore ad ultrasuoni (ma questo è un altro discorso).
Dove sbaglio?

Silevamento fase:
Se metti un piccolo trasformatore (ma veramente piccolo , sotto 1 VA va bene, tensione qualcosa tra 4 e 12V). poi metti un ponte radrizzatore (senza condensatore!!!) e colleghi il LED del optocopler con una resistenza che limita la corrente a 10mA.

Ecco questo, anche se è la seconda volta che me lo dici, non l'ho proprio capito.
*Dove lo metto il piccolo trasformatore? Elettronico o con avvolgimenti?
*il ponte raddrizzatore va messo dopo R2-R3 ed R4-R5? Oppure prima del triac, cioè dopo R7? Credo di aver capito come funziona e cosa fa, ma non ne ho mai usato uno.
*a quale optocoupler ti riferisci? OK2? resta il fatto di non sapere come dimensionare le resistenze.

  1. R2 R3, R4, R5 come si calcolano?: per avere una tensione di 1,6V e una corrente di ca 10mA sul Led del Optocopler.

O_O
devo far scendere la 220 a 1,6V con delle resistenze?
dovrei applicare R = V / I? cioè R = 1,6V / 0,01A ... R = 160 ohm?
credo di aver capito male....forse non si applica così questa formula...

Chiedo ancora scusa per l'impreparazione, la lunghezza del messaggio e l'uso dei quote (che fa un pò saputello) ma se non sono ordinato rischio di fare più confusione che altro :stuck_out_tongue:

Grazie ancora a uwe che è tanto paziente e disponibile e a tutti quelli che vorranno dire la loro.
Buona serata :wink:

ciao vaxel

Ecco questo, anche se è la seconda volta che me lo dici, non l'ho proprio capito.
*Dove lo metto il piccolo trasformatore? Elettronico o con avvolgimenti?
*il ponte raddrizzatore va messo dopo R2-R3 ed R4-R5? Oppure prima del triac, cioè dopo R7? Credo di aver capito come funziona e cosa fa, ma non ne ho mai usato uno.
*a quale optocoupler ti riferisci? OK2? resta il fatto di non sapere come dimensionare le resistenze.

230V-> trasformatore -> ponte radrizzatore -> resistenza -> LEd del optokopler. simile a questo: http://elektronik-kompendium.de/public/arnerossius/schaltungen/avr/microclock.pdf non servono resistenze. L' unica resistenza é una che calcoli con la tensione trasformatore mano 1,6V diviso 10mA.

praticamente si brucia per la tensione troppo alta? non ci pensano le resistenze ad abbassarla?

Se non c'é corrente non c'é perdita tensione soprale resistenze R2-R3 ed R4-R5. Per questo hai a LED polarizato tutta la tensione sul LED e i LEd polarizzati inversamente reggono da 5 a 7V.

OK2 indica quando la tensione è 0 (perchè il led dentro sarà spento); Arduino lo rileva e aspetterà un pò prima di inviare il segnale ad OK1, che a sua volta mette in conduzione il triac. In base ai millisecondi (o microsecondi) di attesa tra lo 0V segnato da OK2 ed il segnale di accensione mandato a OK1 potrò gestire la velocità del carico.
Il tempo d'attesa sarà definito in base al segnale du un sensore ad ultrasuoni (ma questo è un altro discorso).
Dove sbaglio?

Scusami un errore mio; I dati tecnici chiamano il MOC3012 "non zero crossing Triacs". Ho interpretato male questo. Comunque il 3012 é per 120V; Per 230V devi prendere un MOC3022.

O_O
devo far scendere la 220 a 1,6V con delle resistenze?
dovrei applicare R = V / I? cioè R = 1,6V / 0,01A ... R = 160 ohm?
credo di aver capito male....forse non si applica così questa formula...

sulle resistenze deve cadere i 230V- 1,6V del LED percui quasi 229V e 10 mA percui 229 / 0,01 = ca 23kOhm a ca 2,5W

Ciao Uwe

Grazie uwe, faccio delle prove e ti faccio sapere :wink:

nell'ultimo calcolo riesco a segurti per la tensione, ma non capisco come hai calcolato la potenza di 2,5W.

La potenza dissipata dalle resistenze é tensione sulle resistenze moltiplicato per la corrente percui 229V per 0,01A = 2,29W; arrotondato a 2,5W; da usare resistenze in totale per 10W. (diventano meno calde).
Ciao Uwe

facendo sempre riferimento allo schema in rosso (che rilinko quì)...

...il condensatore è proprio necessario? non lo metterei semplicemente perchè non saprei dimensionarlo.

Le resistenze R7 ed R8 immagino cambieranno: che valori devono avere? metto anch'esse a 2,5W? non avendo questi valori non solo non posso acquistarle ma il negoziante mi piglia anche per scemo ...e altri rischi più seri...

Grazie ancora :wink:

facendo sempre riferimento allo schema in rosso (che rilinko quì)

Dunque, quello schema così com'è non è adatto e questo ti è stato detto.

Premessa:
Io non ho la possibilità al momento di sperimentare in tal senso, tuttavia posso essere di aiuto.

In base al tipo di Triac (corrente di gate) il gate può essere connesso ad arduino senza optocoupler, Interponendo una semplice resistenza da 330 ohm tra gate e pin di arduino.

Anche il circuito di zero crossing può essere privo di optocoupler.

Tuttavia l'optocoupler ci mette al sicuro visto che stiamo pasticciando un circuito e potremmo commettere qualche errore fatale ad arduino.

Questa porzione di board riguarda una scheda di lavastoviglie:

Però i Triac Z3M se non sbaglio non sono adatti al controllo proporzionale, più tardi controllo.

Per il resto del circuito ora vedo se trova info su google, cerca anche tu, "zero cross detect".
Se scarichi il datasheet del'optocoupler ci sarà un esempio di uso, con i valori di resistenze.

Ciao

Dunque come zero cross detect si può usare questo, che però cambia stato ogni volta che passa per zero.

.. .. -< 220
. . ____ . . ____ <- onda quadra su C di 4N25
. .| |. .| |
. .
..

Circuito:

Invece per ottenere un'inpulso al passagio per lo zero si deve usare un OP come comparatore di tensione.

Grazie del supposto mauro.

Il tuo schema funziona senza trasformatore, senza ponte raddrizzatore...e la 220VAC.
Basteranno quelle resistenze? Come fa il diodo a non bruciarsi?

Lo schema non è testato ma simulato con LTswitchCad di LT.

Basteranno quelle resistenze? Come fa il diodo a non bruciarsi?

Dipende a quale diodo ti riferisci, per D1, questo funge da raddrizzatore monofase dal momento che conduce solo durante le semionde positive non si brucia.

Per DZ1 c'è la R2 in caduta e comunque e messo li solo per avere la certezza che la tensione non salga oltre i 4,7 volts.

La corrente sul led del'opto e di circa 3.3 mA pochi ma dovrebbero bastare.

I valori di R non sono critici, puoi anche mettere R1 82k e R2 2.7K. Stessa cosa per R3 solo non scendere sotto 6,8K e non sopra ad occhio 22k.

Lo zener vai sul sicuro con 1/2 W al limite anche 250mW.

Riassumendo:
Si deve testare.
Poi emersi i problemi si pone rimedio.
Nota che il diodo del'opto di solito viene pilotato attraverso un regolatore shunt. Ora non sono sicuro credo si tratti di un TL431.

Mentre per pilotare il triac usi sempre 4N25, ma la R3 la devi mettere sull'emettire da collegare al gate del triac, il valore può scendere a 3.3k.
Il led dell'opto invece lo colleghi al micro attraverso una R da 330-470 ohm.

Ciao.

giusto per conferma, all'emettitore (pin4 dell'op), oltre al Gnd, dovrebbe andare il pin di arduino, no? magari con una resistenza di pull-up da 10k 1/4W.
Se no da dove percepisce arduino l'istante dello zero crossing?

giusto per conferma, all'emettitore (pin4 dell'op), oltre al Gnd,

Hai fatto bene a chiedere. Il disegnino sopra l'immagine non è molto chiaro.

Non fare affidamento alla numerazione dei pin nel disegno dello schema o meglio devi sempre fare riferimento al datasheet.

Il pin di arduino messo in Input deve essere collegato al collettore Pin 5. Vedi se riesci a comprendere questa spiegazione:

Il transistor presente nel'opto ha la base di controllo sensibile alla luce emessa dal diodo led interno all'opto.

Quando il led emette luce polarizza la base con una corrente che nel caso specifico riduce la resistenza CE (collettore emettitore), impotizando un comportamento ideale CE risultano connessi insieme (circuito chiuso). Quando il led si spegne la connessione CE viene meno (circuito aperto)

In realtà il circuito aperto è un circuito ad alta impedenza, e il circuito chiuso è invece a bassa impedenza.

Nota che su C trovi una onda quadra con il fronte di salita quando passa per lo zero e il fronte di discesa quando ripassa per lo zero. Il vero Zero Crossing detect emette un impulso di breve durata ogni volta che passa per lo zero ma serve un'amplificatore OPerazionale configurato come comparatore di tensione.

Ciao se hai un pò di componenti prova il circuito.

Abbastanza comprensibile, ho letto di "peggio".

Solo il seguente passaggio mi è poco chiaro...

Nota che su C trovi una onda quadra con il fronte di salita quando passa per lo zero e il fronte di discesa quando ripassa per lo zero. Il vero Zero Crossing detect emette un impulso di breve durata ogni volta che passa per lo zero ma serve un'amplificatore OPerazionale configurato come comparatore di tensione.

...ma appena finisco di fare quello che sto facendo mi faccio una ricerchina e cerco di comprenderlo meglio.

Sono andato a comprarli proprio per provare il circuito...lo faccio e posto il risultato :wink:
Ma se lo provo sulla breadboard? come si comporta con la 220V? (ho comprato i morsetti a vite per fissare i cavi, tipo quelli che stanno dentro le prolunghe...forse si chiamano mammut?!)

Come faccio a capire se funziona? che test faccio?

Intanto sottolineo LA MASSIMA CAUTELA a tutti quelli che volessero realizzare questo circuito: ai capi della resistenza da 2W 100kohm passano quasi 220V ed è scoperta!! Mettete tutto dentro una scatola di derivazione da elettricista prima di mandare corrente!! Spero sia sufficiente come isolamento, senza dimenticare le regole base: mani sciutte, scarpe isolanti, millefori bloccata al tavolo e ciabatta con interruttore. Almeno queste sono le precauzioni che prendo io :wink:

Solo il seguente passaggio mi è poco chiaro...

C è il collettore del transistor.
L'immagine seguente ti chiarirà le idee.

Qui immagine a grandezza naturale http://i56.tinypic.com/2rwkoie.jpg
Dove:
Blu = Onda sinusoidale 230VAC rms, ridotta in ampiezza di 20 volte.
Verde = Onda quadra sul terminale C del' optotransistor
Rosso = Corrente nel optoled
Celeste = Inpulso 0.1ms di durata al passagio per lo zero, di un'ipotetico circuito Zero Crossing detect (ingrandita 2 volte).

Ma se lo provo sulla breadboard? come si comporta con la 220V?

Visto che hai i mammut, fissa la R1 al mammut, l'atro capo di R1 lo porti alla breadboard, in questo modo anche se dovessi malauguratamente toccare questo capo, prenderesti una corrente minore.

Se possiedi un led: usalo al posto dell'opto inizialmente, così hai riscontro visivo. Solo dopo che vedi tremare la luce del led, togli alimentazione e rimetti l'opto al posto del led. Nota non mettere led più opto, la corrente e troppo bassa per tutti e due

Con l'opto montato rilevi se funge attraverso arduino, per il codice però non sò darti lumi.

Intanto sottolineo LA MASSIMA CAUTELA a tutti quelli che volessero realizzare questo circuito:

Hai fatto benissimo a specificarlo, io l'avrei dovuto dire a priori.

Un'altra precauzione è quella di usare oltre alla multipresa con interruttore anche un scatola con dentro un interruttore differenziale.

La tensione di 220 Volts è in realta una sinusoide dove i picchi massimi e minimi hanno valore di 220 * 1.41 = 310.2 Volts.
Toccare fase e neutro ognuna con una mano comporta i maggiori danni all'organismo.
C'è in rete l'argomento trattato ma ho perso il link, documentatevi prima di giocare con la 220.

Ciao.

Grazie per i chiarimenti, ho la connessione un pò farlocca in questi giorni e quindi rispondo un pò meno...ma sto facendo delle prove saldando sulla millefori (l'ultimo mess l'ho letto adesso)...novità quanto prima :wink:

*edit: ma il triac che regola la tensione non interferisce con lo zero crossing detection?

mi spiego meglio: ho il mio bel cavo tripolare: da una parte va alla rete, dall'altra c'è il carico (fin quì niente di strano), in mezzo vado a rilevare lo zerocrossing con il circuito di cui sopra collegato ad Arduino che comanderà un triac posto sempre sul cavo tripolare.
La mia domanda è: sarebbe consigliabile mettere prima l'uno o l'altro? entrambi sulla fase? uno sulla fase e l'altro sul neutro?
...e soprattutto il fatto che Ardu regoli la tensione mediante il triac non si riflette sulle rilevazioni dello zerocrossing? credo di no perchè regola la tensione, ma la frequenza, che è ciò che mi interessa, resta invariata. L'unica attenzione che prenderei sarebbe di mettere il triac verso il carico, ma non so quanto questo sia influente. Chiedo lumi per conferma :wink:

Ciao, qualche post fa ha scritto:

Grazie del supposto mauro.

Non mi ero accorto, per chi legge non ho dato nessun supposto, ma se mai supporto. ;D

Ok si fà sul serio:

*edit: ma il triac che regola la tensione non interferisce con lo zero crossing detection?
mi spiego meglio: .......

Meno male che le tue intenzioni erano quelle di spiegarti meglio. Io non ci ho capito quarzo.
Quindi al momento non pensare al triac, ma solo al circuito Zero Crossing.
Qui c'è un circuito con OPerazionale Single Supply Zero Crossing Detector – Electronic Circuit Diagram

Per il triac devi documentarti su i seguenti argomenti:
Controllo triac a parzializazzione di fase, ma lo devi cercare in inglese perchè io in italiano non trovo nulla.
Triac snubberless
Snubber

Poi non hai detto quale è il carico che devi collegare al triac, sappi che se è induttivo (motore) potresti avere qualche grattacapo in più, il motivo e legato allo sfasamento tra corrente e tensione.

Se è resistivo (forno, ferro da stiro, lampade a incandescenza) è più semplice.

ehm...si, devo regolare un motore (pompa d'acquario). Vedo di documentarmi a dovere: avevo già provato a gestire il motore da arduino mediante triac optoisolato, ma ho fallito: anche staccando il circuito da arduino il motore gira in maniera incostante, disordinata, pare posseduto!!