Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Dimmer per lampada con PIC

Elettronica lineare e digitale: didattica ed applicazioni

Moderatori: Foto Utentecarloc, Foto Utenteg.schgor, Foto UtenteBrunoValente, Foto UtenteIsidoroKZ

1
voti

[71] Re: Dimmer per lampada con PIC

Messaggioda Foto Utentericello9 » 27 mag 2014, 22:19

Ho provato a diminuire l'eccitazione del gate del triac fino a 200uS e adesso il delay riesco ad aumentarlo fino a 7.6mS
Avatar utente
Foto Utentericello9
195 1 3 7
Stabilizzato
Stabilizzato
 
Messaggi: 360
Iscritto il: 16 mar 2009, 0:13

0
voti

[72] Re: Dimmer per lampada con PIC

Messaggioda Foto UtentePietroBaima » 27 mag 2014, 22:30

magistrale.

Però adesso, se non mi mandi al diavolo :D, mi mandi una schermata dell'oscilloscopio così:

Canale 1: gate del moc
Canale 2: sinusoide lampada

il tutto al nuovo ritardo massimo.

Così ti calcolo la tabella e ti scrivo magari anche uno snippet di codice.

Ciao,
Pietro.
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
90,7k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12206
Iscritto il: 12 ago 2012, 1:20
Località: Londra

1
voti

[73] Re: Dimmer per lampada con PIC

Messaggioda Foto UtentePaolino » 28 mag 2014, 8:09

Foto Utentericello9, puoi mostrare il setup del timer2? Altra domanda (mi sono perso...): stai usando quale PIC? Con quale valore di FOSC?

Ciao.

Paolo.
"Houston, Tranquillity Base here. The Eagle has landed." - Neil A.Armstrong

-------------------------------------------------------------

PIC Experience - http://www.picexperience.it
Avatar utente
Foto UtentePaolino
32,6k 8 12 13
G.Master EY
G.Master EY
 
Messaggi: 4226
Iscritto il: 20 gen 2006, 11:42
Località: Vigevano (PV)

0
voti

[74] Re: Dimmer per lampada con PIC

Messaggioda Foto Utentericello9 » 28 mag 2014, 8:20

Però adesso, se non mi mandi al diavolo :D, mi mandi una schermata dell'oscilloscopio così:

Canale 1: gate del moc
Canale 2: sinusoide lampada

il tutto al nuovo ritardo massimo.


Non ti preoccupare, è il minimo che posso fare visto l'aiuto che mi stai dando.
Comunque ecco la schermata:
2014-05-28 08.10.07.jpg


Grazie
Marcello
Avatar utente
Foto Utentericello9
195 1 3 7
Stabilizzato
Stabilizzato
 
Messaggi: 360
Iscritto il: 16 mar 2009, 0:13

0
voti

[75] Re: Dimmer per lampada con PIC

Messaggioda Foto Utentericello9 » 28 mag 2014, 8:28

ricello9, puoi mostrare il setup del timer2


Per il setup del timer2 uso questi valori:
Codice: Seleziona tutto
PR2=25;    //all'incirca equivale a 100 uS
IPR1bits.TMR2IP=0;    // Abilito le interruzioni del Timer2 come bassa priorità
T2CONbits.T2CKPS0=1;   // Prescaler 16
T2CONbits.T2CKPS1=1;
T2CONbits.TMR2ON =1;   //Abito il timer 2
PIE1bits.TMR2IE=1;        //abilito l'interrupt sul timer2



? Altra domanda (mi sono perso...): stai usando quale PIC? Con quale valore di FOSC?


Sto usando un PIC18F26K22 con l'oscillatore interno a 16MHz.

Grazie
Marcello
Avatar utente
Foto Utentericello9
195 1 3 7
Stabilizzato
Stabilizzato
 
Messaggi: 360
Iscritto il: 16 mar 2009, 0:13

0
voti

[76] Re: Dimmer per lampada con PIC

Messaggioda Foto UtentePietroBaima » 28 mag 2014, 9:58

credo tu mi abbia mandato il ritardo minimo, che continua ad essere sui 2ms.
Avrei bisogno del ritardo massimo, a lampada praticamente spenta.
Grazie

Ciao
P
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
90,7k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12206
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[77] Re: Dimmer per lampada con PIC

Messaggioda Foto Utentericello9 » 28 mag 2014, 16:41

credo tu mi abbia mandato il ritardo minimo, che continua ad essere sui 2ms.
Avrei bisogno del ritardo massimo, a lampada praticamente spenta.


Hai ragione, questa è la misura con il ritardo massimo impostato a 7,5mS.
le3.jpg
le3.jpg (33.36 KiB) Osservato 9159 volte

cde.jpg
cde.jpg (36.79 KiB) Osservato 9159 volte


Ho dovuto rifare la scheda perché questa mattina ho sbagliato un collegamento è ho portato il 220 V al micro, è finito tutto nel cestino.
Dalla precedente scheda a quest'ultima ho perso un millisecondo di ritardo massimo impostabile.
Infatti da 7,6mS sono dovuto passare a 7,5mS per far spegnere completamente la lampada.

Grazie
Marcello
Avatar utente
Foto Utentericello9
195 1 3 7
Stabilizzato
Stabilizzato
 
Messaggi: 360
Iscritto il: 16 mar 2009, 0:13

0
voti

[78] Re: Dimmer per lampada con PIC

Messaggioda Foto UtentePietroBaima » 28 mag 2014, 16:59

0.1ms

Adesso sono di corsa, stasera mi metto a fare qualche conto.

ciao,
Pietro.
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
90,7k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12206
Iscritto il: 12 ago 2012, 1:20
Località: Londra

2
voti

[79] Re: Dimmer per lampada con PIC

Messaggioda Foto UtentePietroBaima » 29 mag 2014, 11:11

Allora allora...

Il ritardo minimo che riusciamo a dare è 1.6ms, che corrisponde (come dicevo) ad una luminosità massima del 95.6%. Non male e probabilmente nemmeno visibile ad occhio nudo.

Il ritardo massimo, dalle foto che ho visto, è praticamente 9.8ms.
Su questo punto devo dire che siamo arrivati a limare al massimo, perché se l'impulso di eccitazione del TRIAC è 0.2ms non possiamo aspettarci davvero di più senza scavalcare lo zero crossing ed eccitare il TRIAC nella semionda successiva.

Mi è quindi chiaro che se imposti il contatore a 0 abbiamo un ritardo di 1.6ms, mentre se imposti il contatore a 7.5ms abbiamo un ritardo di 9.8ms.

Quindi il ritardo che imposti, programmando il contatore per 7.5ms vale 7.5ms+1.6ms=9.1ms
Qui non mi torna completamente, perché dato che il ritardo reale vale 9.8ms (misurato dalle tue foto), il tuo contatore risente di un errore pari a 700 microsecondi.
Non è poco.

Comunque sia sono imprecisioni che alla vista non si vedono, anche se io andrei a vedere come mai questo avviene.

Anyway, se voglio partire da una luminosità pari a quella che ottengo con un ritardo di 1.6ms e voglio arrivare fino a 9.8ms devo riscalare la tabella, che quindi vale:

Codice: Seleziona tutto
const unsigned char DelayCorrection[]=255,199,191,185,181,177,174,171,169,166,164,162,161,159,157,156,154,153,151,150,149,148,146,145,144,143,142,141,140,139,138,137,136,135,135,134,133,132,131,130,130,129,128,127,126,126,125,124,124,123,122,121,121,120,119,119,118,117,117,116,116,115,114,114,113,112,112,111,111,110,109,109,108,108,107,107,106,105,105,104,104,103,103,102,102,101,101,100,100,99,98,98,97,97,96,96,95,95,94,94,93,93,92,92,91,91,90,90,89,89,88,88,87,87,86,86,85,85,84,84,83,83,82,82,81,81,81,80,80,79,79,78,78,77,77,76,76,75,75,74,74,73,73,72,72,71,71,70,70,70,69,69,68,68,67,67,66,66,65,65,64,64,63,63,62,62,61,61,60,60,59,59,58,58,57,57,56,56,55,55,54,54,53,53,52,52,51,51,50,50,49,48,48,47,47,46,46,45,45,44,44,43,42,42,41,41,40,40,39,38,38,37,37,36,35,35,34,33,33,32,31,31,30,29,29,28,27,27,26,25,24,24,23,22,21,20,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,2,1,0};


Devi implementare una variabile che valga 0 quando vuoi la luminosità minima e valga 255 quando vuoi la luminosità massima (per esempio due pulsanti, un trimmer su un canale dell'ADC e così via).
Quel valore lo dai alla tabella qui sopra e lei ti restituisce un ritardo tra 0 e 255.
0 significa che il tuo ritardo varrà 1.6ms, che è quello che avresti ottenuto mettendo a zero il tuo contatore,
255 significa che il tuo ritardo varrà 9.8ms, che è quello che avresti ottenuto mettendo a 7.5ms il tuo contatore.

La legge di compensazione è già implementata nella tabella, non devi fare nulla se non usarla.

Ciao,
Pietro.
Generatore codice per articoli:
nomi
Sul forum:
[pigreco]=π
[ohm]=Ω
[quadrato]=²
[cubo]=³
Avatar utente
Foto UtentePietroBaima
90,7k 7 12 13
G.Master EY
G.Master EY
 
Messaggi: 12206
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[80] Re: Dimmer per lampada con PIC

Messaggioda Foto Utentericello9 » 30 mag 2014, 11:00

Quindi il ritardo che imposti, programmando il contatore per 7.5ms vale 7.5ms+1.6ms=9.1ms
Qui non mi torna completamente, perché dato che il ritardo reale vale 9.8ms (misurato dalle tue foto), il tuo contatore risente di un errore pari a 700 microsecondi.
Non è poco.

Ho verificato le impostazione del timer2 e ho un impulso ogni 104uS e non 100uS, questo può portare ad un errore di 75*4= 300uS. Il resto dell'errore non saprei da dove salta fuori.


Devi implementare una variabile che valga 0 quando vuoi la luminosità minima e valga 255 quando vuoi la luminosità massima (per esempio due pulsanti, un trimmer su un canale dell'ADC e così via).
Quel valore lo dai alla tabella qui sopra e lei ti restituisce un ritardo tra 0 e 255.
0 significa che il tuo ritardo varrà 1.6ms, che è quello che avresti ottenuto mettendo a zero il tuo contatore,
255 significa che il tuo ritardo varrà 9.8ms, che è quello che avresti ottenuto mettendo a 7.5ms il tuo contatore.


Dimmi se sto sbagliando il ragionamento:
Prima avevo una variabile che andava da un valore di 0 a un massimo di 75, questa variabile la gestivo con l'overflow del timer2 che corrispondeva a 100us.
Di conseguenza al massimo valore della variabile (75) corrispondeva un ritardo di 7,5mS (75x100uS).

Adesso devo ampliare il range del mio contatore per andare da un minimo di 0 ad un massimo di 255, quindi devo diminurie il valore del timer2 in modo che ha 255 abbia un ritardo di 7,5mS. In pratica devo impostare l'overflow del timer2 a circa 29uS.
Giusto?

Codice: Seleziona tutto
if(!timer_delay)              //RITARDO PER L'ACCENSIONE DEL TRIAC
  {
     trigger=0;
     timer_delay=DelayCorrection[incremento];                 
     GATE=1;
  }

if(!timer_delay_2)      //TEMPO PER PASSARE DAL MINIMO AL MASSIMO
  {
      if(inversione==0)
         incremento=incremento--;
      if(inversione==1)
         incremento=incremento++;
      timer_delay_2=lettura_canale_AN    ;     // timer_delay_2=1000 equivale a 30 secondi
}


In pratica il software va a leggere il valore dal canale analogico e regola la velocità della lampada per passare dal minimo al massimo della luce.
Infatti maggiore sarà il valore del timer_delay_2 più sarà lento l'incremento o il decremento della variabile "incremento" (scusa il gioco di parole) e viceversa; che andrà ad influire sul ritardo dell'accensione del Gate del triac.

Grazie
Marcello
Avatar utente
Foto Utentericello9
195 1 3 7
Stabilizzato
Stabilizzato
 
Messaggi: 360
Iscritto il: 16 mar 2009, 0:13

PrecedenteProssimo

Torna a Elettronica generale

Chi c’è in linea

Visitano il forum: Nessuno e 52 ospiti