Vai al contenuto
PLC Forum


Regolatore riscaldatore con zero-crossing, Pwm e triac


Ragnetto

Messaggi consigliati

 Ciao a tutti e ben ritrovati. 

 Dovrei  realizzare un circuito capace di pilotare una resistenza elettrica in alternata, 230 volt, da 800 W circa.

Ho bisogno di realizzarlo con Arduino e PWM, pensavo di inserire oltre all’optoisolatore, anche lo zero Crossing detector prima di comandare il Gate del Triac. 

L’esigenza di  avere una così accurata regolazione nasce dal controllo di temperatura piuttosto severo calcolatio dal PID del micro. 

 

 Prima di abbozzare uno schema chiedo consiglio visto anche i precedenti problemi che avuto con un dimmer e i disturbi EMC. 

 

Come posso filtrare e ridurre se non sopprimere i disturbi creati dal Triac?

 

 Allego uno schema elettrico che ho trovato su Internet, giusto per rendere un po’ l’idea che ho in testa. 

 

grazie in anticipo. 

R. 

7F4C9AD1-3581-4ABF-980D-295E9DB3D1F3.png

Link al commento
Condividi su altri siti


Dipende come intendi controllare l'elemento riscaldante. Se intendi agire sull'angolo di innesco del triac come farebbe un "dimmer" non puoi usare lo 0-cross. Se invece intendi controllare l'elemento in modalità burst allora lo 0-cross è d'obbligo. Per realizzare lo 0-cross la cosa più semplice è usare un fotoaccoppiatore con 0-cross integrato.

Gran parte dei sistemi di termoregolazione con cui ho a che fare per lavoro usano il metodo burst.

Link al commento
Condividi su altri siti

21 minuti fa, Ragnetto scrisse:

Ho bisogno di realizzarlo con Arduino e PWM, pensavo di inserire oltre all’optoisolatore, anche lo zero Crossing detector prima di comandare il Gate del Triac. 

 

Questa è già una contraddizione.

Se usi un triac o lavori sulla variazione di fase o sul burst, ovvero alternando pacchetti di sinusoidi a periodi vuoti.

Giustamente pensi di usare uno zero crossing quindi il periodo minimo di on sono i 10ms di una semi sinusoide.

Se vuoi utilizzare una modulazione in PW la risoluzione più alta che puoi ottenere è dare una semi sinusoide, 10 ms, ogni secondo; in questo modo otterresti una risoluzione pari allo 1%, valore più che buono per un controllo di temperatura con un resistore di riscaldo.

Se vuoi arrivare ad avere 1/255 come permetterebbe il PWM di arduino dovresti tenere il periodo di 260 ms, ovvero 3,846 Hz

 

Con questi tempi non puoi usare il PWM di arduino perchè non puoi arrivare a frequenza minore di 4hz, anzi se ricordo bene la freqeunza minima è poco più di 400Hz (cito a memoria e potrei sbagliarmi) comunque  molto più alta di quella necessaria.

 

Se vuoi usare il PWM di arduino devi cambiare strategia.

Raddrizzare la tensione di rete con un ponte e parzializzare con un MOSFET o un IGBT.

Link al commento
Condividi su altri siti

Grazie Tesla e grazie Livio,

Non conosco il funzionamento della modalità Burst, dalle tue spiegazioni Livio ho capito che potrei "accendere" il triac al passaggio dallo zero,  con n sinusoidi (tempo t1) per poi lasciarlo spento per m periodi (tempo t2), in questo modo se t1=t2 starei modulando l'elemento riscaldante al 50% della potenza.

Se il ragionamento è giusto variando i valori di t1 e t2 in modo inversamente proporzionale dovrei ottenere delle variazioni in potenza.

 

Accantono per ora il PWM, anche se la soluzione di raddrizzare la tensione e pilotarla con MOSFET o IGBT mi stuzzica molto.

 

Elaborando il pensiero esposto sopra conosco che il tempo della semi onda è pari a 10ms, usando lo zerocross so quando inizia la semionda.

Avrebbe senso ritardare l'accensione del  triac per un tempo compreso tra 0ms e 10ms per avere una modulazione di potenza tra il 100% e lo 0%?

A questi valori però devo considerare il tempo di innesco del triac che non essendo nullo mi andrebbe ad abbassare il tempo di ON, ma conoscendolo a priori potrei colmare il gap.

 

Poi chiedo cortesemente se posso avere qualche approfondimento sulla modalità burst visto che Tesla la utilizza per comandare questi sisitemi, in rete ho trovato prevalentemente immagini di multiple sullo stesso fotogramma ma non riesco a trasporre il concetto all'ambito elettronico.

 

R.

Link al commento
Condividi su altri siti

2 ore fa, Ragnetto scrisse:

Avrebbe senso ritardare l'accensione del  triac per un tempo compreso tra 0ms e 10ms per avere una modulazione di potenza tra il 100% e lo 0%?

 

Assolutamente no.

Infatti ho scritto

15 ore fa, Livio Orsini scrisse:

Se vuoi utilizzare una modulazione in PWM la risoluzione più alta che puoi ottenere è dare una semi sinusoide, 10 ms, ogni secondo; in questo modo otterresti una risoluzione pari allo 1%, valore più che buono per un controllo di temperatura con un resistore di riscaldo.

 

Il tempo minimo di portante è 1", anche se io ti consoglierei di non scendere sotto i 10" di periodo (t1 + t2 per stare ai tuoi parametri).

 

Questa è la modalità burst o pacchetto; infatto si accende il triac per erogare un burst o pacchetto di semi sinusoidi.

A partire dagli anni 70 sono presenti sul mercato integrati che, alimentati da rete, fanno tutto quanto necessita per un controllo burst; accettano un valore di riferimento da un potenziometro, una reazione da una RTD e comandano il triac a pacchetti.

Link al commento
Condividi su altri siti

Quote

usando lo zerocross so quando inizia la semionda.

Avrebbe senso ritardare l'accensione del  triac per un tempo compreso tra 0ms e 10ms per avere una modulazione di potenza tra il 100% e lo 0%?

non capisco cosa intendi con "usando lo zero cross", se pensi di usare un foto-accoppiatore con funzione zero-cross non puoi accenderlo con un ritardo rispetto al punto di zero cross, forse non è chiarissimo ma la funzione di zero-cross è sull'accensione del triac non sullo spegnimento, quello avviene automaticamente quando la corrente è inferiore a quella di mantenimento del triac, che in caso di carico resistivo coincide con il passaggio a zero della semionda, un semiperiodo dopo l'accensione.

 

Ops. scrivevo mentre Livio ha postato :D

 

 

Link al commento
Condividi su altri siti

Sto capendo un po' alla volta ma vorrei capire perchè non è possibile percorrere la strada che ho descritto sopra ma forse non mi sono spiegato (come al solito :wacko:):

Riprendo lo schema che ho postato sopra:7F4C9AD1-3581-4ABF-980D-295E9DB3D1F3.png

Quello che cercavo di dire era modulare la tensione in questo modo.https://i.stack.imgur.com/N4uYg.png

 

 

Dove lo zerocross  e comando Gate sono componenti separati.

Il gate, è collegato a P2 e dietro c'è Arduino che si preoccupa di comandare l'accensione del triac (tramite il pin1 di P2) QUANDO sente l'impulso sul pin2 del P2.

Il ritardo nell'accensione del Triac, impostabile da 0 a 10mS, consente di accendere il triac come dalle curve sopra.

 

Tornando ai vostri suggerimenti devo avere nell'ambiente delle temperature variabili a seconda del momento e delle curve termiche/tempo ed il processo deve essere regolato da PID, quindi non è possibile collegare una RTD o potenziomento.

 

 

3 ore fa, Livio Orsini scrisse:

Il tempo minimo di portante è 1", anche se io ti consoglierei di non scendere sotto i 10" di periodo (t1 + t2 per stare ai tuoi parametri).

Il tuo consiglio Livio sarebbe di intervenire sull'accensione del triac ogni dieci secondi per un tempo multiplo di 10milli secondi?

 

Link al commento
Condividi su altri siti

Ok, quindi lo 0 cross non è sul comando del triac, è solo un segnale che usi in stile "interrupt" a sw per gestire il ritardo di accensione del triac. Funzionare dovrebbe funzionare, però a livello EMI non è bellissimo, diciamo che se il carico è rilevante rischi di generare parecchio rumore / armoniche.

 

p.s. ho dei dubbi sul rilevamento dello 0 alimentando il fotoaccoppiatore dalla rete tramite caduta capacitiva a livello di ritardo dovuto allo sfasamento V-I del condensatore.

Link al commento
Condividi su altri siti

40 minuti fa, tesla88 scrisse:

Ok, quindi lo 0 cross non è sul comando del triac, è solo un segnale che usi in stile "interrupt" a sw per gestire il ritardo di accensione del triac. Funzionare dovrebbe funzionare, però a livello EMI non è bellissimo, diciamo che se il carico è rilevante rischi di generare parecchio rumore / armoniche.

 

Grazie Tesla per la risposta,

Esatto, proprio così era la mia idea di partenza ma ecco i miei temutissimi disturbi ed armoniche che vengono fuori facendole da padroni...

 

Quote

p.s. ho dei dubbi sul rilevamento dello 0 alimentando il fotoaccoppiatore dalla rete tramite caduta capacitiva a livello di ritardo dovuto allo sfasamento V-I del condensatore.

Infatti li nutro anche io e non li avrei messi per nulla...

 

Ora, più convinto della modalità Burst, devo capire se posso modulare in modo da mantenere una temperatura costante o costantemente crescente (decrescente) tenendo conto che l'inerzia termica dell'ambiente è molto bassa.

 

Avrei volto utilizzare il metodo sopra per tenere ad esempio sia 40 gradi costanti che avere la possibilità di raggiungere alte temperature (230-240°C) in un tempo noto con rampe definite.

I progetti di questo controllore sono molteplici e vorrei realizzare un solo controller.

 

Alla peggio raddrizzo e piloto in continua con mosfet o IGBT

 

Attendo la risposta di Livio per capire le tempistiche.

Link al commento
Condividi su altri siti

20 ore fa, Ragnetto scrisse:

Il tuo consiglio Livio sarebbe di intervenire sull'accensione del triac ogni dieci secondi per un tempo multiplo di 10milli secondi?

Si, questo è il metodo usato.

Poi molto dipende dall'inerzia del sistema; 10" sono un tempo adatto ad un sistema riscaldante a bassa inerzia termica.

Se assumi una rsoluzione di 1/250 puoi usare un tempo minimo di 40ms, così non hai necessità di avere la rilevazine del passaggio per lo zero. Nel caso pessimo hai un errore di +/-10ms  sulla larghezza dell'impulso che varierà, nel caso di minima larghezza, tra 30ms e 50ms.

 

Dovrai usare un temporizzatore preciso su interrupt da timer1 o timer2 (se usi arduino)

 

Attenzione.

Arduino non ha alcuna immunità ai disturbi EMC condotti e irradiati!

Quindi devi adottare tutta una serie di accorgimenti per garantire un minimo di affidabilità.

Devi filtrare la rete, usare un alimentatore completamente isolato per arduino con filtro pi-greco sulla continua, immediatamente in prossimità della scheda di arduino.

Inoltre dovrai separare galvanicamente, con optoisolatori aventi alimentazioni separate da quella di arduino (per il lato verso il campo). I relè anche se separano galvanicamente non isolano dai disturbi.

Anche il percorsso cavi ha la sua importanza perchè i disturbi condotti dai cavi potrebbero accoppiarsi alla scheda.

Link al commento
Condividi su altri siti

Grazie Livio per il tuo apporto,

ora cerco di calcolare  il filtro pi-grco da applicare alla continua, ho trovato un link per il SW della Murata per il dimensionamento.

 

Ad occhio i 10 secondi sono un po' lunghi ma il concetto ora è molto più chiaro, lavorerò con multipli di semionde complete.

 

Inizierò a postare qualche schema e vi continuerò ad assillare con le mie domande.

 

Buona domenica a tutti.

 

R.

Link al commento
Condividi su altri siti

12 ore fa, Ragnetto scrisse:

Ad occhio i 10 secondi sono un po' lunghi

 

Dai piena potenza per 10" e misura la variazione di temperatura, potresti anche avere la sorpresa che è un tempo molto breve.

Cosa riscaldi con 800W?

 

12 ore fa, Ragnetto scrisse:

ora cerco di calcolare  il filtro pi-grco

:)Basta la regola del dito. Metti 2 condensatori elettrolitici da 220µF ed un induttore da 220µHy e vedrai che va bene per l'alimentazione di arduino. Piuttosto cura bene le distanze che devono essere le più corte possibili.

Poi, presumo che tu abbia previsto di montare su Arduino un'apposita shield con alimentatore, optoisolatori e morsettiere, onde evitare quei grovigli di fili che si fanno di solito.

Link al commento
Condividi su altri siti

il 19/2/2018 at 08:36 , Livio Orsini scrisse:

Cosa riscaldi con 800W?

I progetti sono 2,

- una incubatrice per uova di galline che deve mantenere una temperatura rigorosamente constante a 37,8 °C per 20 giorni.

 

- Il secondo è un forno reflow anche se al momento ho un fornetto da 1100W

 

Avrei individuato un BTA312-600CT, ha 12A di RMS on-state current, e il MOC306xM con Zero cross incorporato, l'idea di Tesla mi è piaciuta e mi permette di semplificare molto il circuito.

 

 

 

il 19/2/2018 at 08:36 , Livio Orsini scrisse:

:)Basta la regola del dito. Metti 2 condensatori elettrolitici da 220µF ed un induttore da 220µHy e vedrai che va bene per l'alimentazione di arduino. Piuttosto cura bene le distanze che devono essere le più corte possibili.

Ah SI? :) Stavo gettando la spugna con calcolo del filtro... :(

Grazie Livio!

 

il 19/2/2018 at 08:36 , Livio Orsini scrisse:

Poi, presumo che tu abbia previsto di montare su Arduino un'apposita shield con alimentatore, optoisolatori e morsettiere, onde evitare quei grovigli di fili che si fanno di solito.

 

Assolutamente si!
Userò la versione Mini Pro montata su PCB creata apposta, tipo quella del dimmer in CC del progetto precedente.

Purtroppo  parto sempre dall'idea realizzare i circuiti in modo che possano essere il più standard possibili, realizzando la PCB mi permette di avere il lucido sempre disponibile e di reincidere velocemente.

Poi magari questo raramente succede, ma il mio schema mentale è quello della produzione di serie e fatico ad abbandonarlo.

 

 

 

Link al commento
Condividi su altri siti

Io ho realzizzato un pcb con 2 pettini da inserire come una shield sopra arduino. Sulla scheda monto un preregolatore a 9V ed ho un filtro prima del regolore ed una ltro dopo.

Sulla scheda ci sono anche le morsettire che permettono di collegare ingressi ed uscite di arduino in modo semplice e veloce.

In pratica è simile ad una shield con morsetti che si trovano su ebay, in più ha alimentazione e filtri.

 

Quote

una incubatrice per uova di galline che deve mantenere una temperatura rigorosamente constante a 37,8 °C per 20 giorni.

 

Mantenere 37.8°C costanti non credo sia possibile. Anche ammesso che non ci siano disturbi, come forti escursioni di temperatura esterna o apertura dell'incubatrice, supponendo anche che la precisione del sensore sia migliore di 0.01°C sarebbe già un bel risultato ottenere +/-0.05°C di oscillazione. Io ritengo che avere una variazione tra 37.8°C e 38°C sarebbe un bel risultato.

 

Comunque sia per il forno che per l' incubatrice 10" di periodo sono più che sufficienti, anzi è leggermente troppo veloce.

Link al commento
Condividi su altri siti

Mio nonno che aveva le galline aveva anche un' incubatrice per far nascere i pulcini. L'elemento riscaldante era una lampada a filamento, non ricordo la potenza ma era pochi watt, il regolatore era un Dimmer luci, il sensore era un termometro clinico a mercurio, la termoregolazione era basata su mio nonno che guardava il temometro e regolava di conseguenza il dimmer. Ha sempre funzionato egregiamente!

Link al commento
Condividi su altri siti

1 ora fa, tesla88 scrisse:

Ha sempre funzionato egregiamente!

 

:thumb_yello::)

 

Per la serie tutto quello che non c'è non si può rompere e più le cose son complicate più è probabile che abbiano problemi di funzionamento.

Link al commento
Condividi su altri siti

22 ore fa, Livio Orsini scrisse:

Comunque sia per il forno che per l' incubatrice 10" di periodo sono più che sufficienti, anzi è leggermente troppo veloce.

 

Ottimo, Fatico a prevedere il comportamento anche alla luce del fatto che non ho realizzato progetti simili in passato, mi fido e faccio tesoro dei vostri consigli.

 

7 ore fa, tesla88 scrisse:

Mio nonno che aveva le galline aveva anche un' incubatrice per far nascere i pulcini. L'elemento riscaldante era una lampada a filamento, non ricordo la potenza ma era pochi watt, il regolatore era un Dimmer luci, il sensore era un termometro clinico a mercurio, la termoregolazione era basata su mio nonno che guardava il temometro e regolava di conseguenza il dimmer. Ha sempre funzionato egregiamente!

Il mio nonno non ne vuole sapere di eseguire l'incubatrice :lol: ed io essendo fuori per tutto il giorno e la notte cerco di dormire, vorrei qualcosa in automatico migliore della passata esperienza di incubatrici non professionali.

 

Grazie ad entrambi per i vostri post.

 

R.

Link al commento
Condividi su altri siti

Il mio post era solo per dire che non serve tutta questa precisione al decimo di grado. Anche le galline avranno una certa tolleranza sulla temperatura corporea :)

Link al commento
Condividi su altri siti

48 minuti fa, tesla88 scrisse:

Il mio post era solo per dire che non serve tutta questa precisione al decimo di grado. Anche le galline avranno una certa tolleranza sulla temperatura corporea :)

:thumb_yello:

Ho lavorato (solo 23 mesi ) in una dita che produceva...pulcini :P . Roba seria , industriale , dai 20 ai 30 mila pulcini alla volta , ogni Lunedì e Giovedì , ma nel arco delle ''tre'' settimane , le uova andavano girate sulle griglie-supporto , per cui venivano portate fuori dall'incubatrice , temperatura ambiente  tra i 28 ed i 42 gradi Celsius ( fuori ne faceva pure 47 °C , non riconosciuti legalmente perché avrebbero dovuto fermare qualsiasi attività lavorativa ) , per almeno mezz'oretta , tempo necessario all'ispezione ed al giro delle uova sui telai-griglia . 

E di problemi con la temperatura , non c'erano .....il titolare , preciso , era il '' veterinario '' capo della 3° ditta del mondo al epoca (95 /97 ) per il medio oriente , dal Egitto al Pakistano , che ne producono di polli .....

Link al commento
Condividi su altri siti

  • 3 weeks later...

Rieccomi qua,

Ho messo in pausa il progetto per dare la priorità ad altri, ora lo riprendo in mano.

Seguendo i vostri consigli ho abbozzato uno schema elettrico per la parte di potenza ed alimentazione, lo posto di seguito.

Lo schema a valle del MOC3061 l'ho preso paro paro dal datasheet del FKPF12N60 che ha parametri del tutto simili.

Che ne dite, potrebbe funzionare?

E' così importante rispettare il collegamento di Fase e Neutro?

 

Controllo_temperatura_Supp_HiPot.png.7860b4ee15f793a80385c6f70c780665.png

Link al commento
Condividi su altri siti

Prima osservazione.

parti con 12V, invece di scendere diretta mente a 5v scendi a 8V, poi dopo L1 metti un'altra coppia di condensatari da 220µF e 100nF, così realizzi un pigreco; ovviamente entri nel connettore Vin di arduino.

 

Seconda osservazione Sei sucuro dei valori di R2 e R3? come li hai calcolati?

Link al commento
Condividi su altri siti

Ciao e Livio grazie per le tue osservazioni.

Ho modificato il circuito supponendo una caduta di 4.0V - 4.5V sulla resistenza da 1W, se la logica dovesse consumare poco più di 200-250mA sono ancora in tolleranza per il valore minimo del 7805.

Ti chiedo se ho capito bene che siano necessari sia C5 che C16 oppure uno lo posso togliere?

 

Alim_.png.ceafd1fffe8c38a8d856280479fb537e.png

 

In merito alla tua seconda osservazione ho copiato il circuito dal datasheet del MOC361 che pilota un Triac diverso ma dalle caratteristiche molto simili, lo posto:

 

Fairchild.png.61d37bcf341cc0a92ca08c91b3ac6a2e.png

 

Link al commento
Condividi su altri siti

4 ore fa, Ragnetto scrisse:

Ho modificato il circuito supponendo una caduta di 4.0V - 4.5V sulla resistenza da 1W

 

Non capisco perchè usare una stufetta; non ha nessuna utilità pratica se non scladare.

Meglio, molto meglio, usare un'induttanza per realizzare un pigreco di ingresso.

E' fondamentale per avere un'ulteriore incremento di immunità ai disturbi entrare con circa 8V nell'ingresso Vin di arduino.

Con il circuito alimentatore che hai previsto rischi ammazzare l'immunità esistente (che di per se è gia esigua).

4 ore fa, Ragnetto scrisse:

In merito alla tua seconda osservazione ho copiato il circuito dal datasheet del MOC361

 

In altri termini non hai fatto alcune calcolo ne verifica. Quanto pensi che dissiperanno quei 2 resistori?

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...