Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

interrupt zero crossing

Raccolta di codici sorgenti

Moderatore: Foto UtentePaolino

0
voti

[21] Re: interrupt zero crossing

Messaggioda Foto UtenteWALTERmwp » 31 ago 2015, 16:58

Ciao Foto Utentesorecaro io non ho "visto" come rilevi il passaggio dallo zero ma, in ogni caso, ti suggerirei di dare un'occhiata qui.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
22,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 6444
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[22] Re: interrupt zero crossing

Messaggioda Foto Utentesorecaro » 31 ago 2015, 18:55

WALTERmwp
grazie del consiglio. Ho già letto quel post ( più volte). Rilevo il passaggio con l'interrupt che ho sul piedino GP3 del pic12f675. Sto sbagliando qualcosa???

Codice: Seleziona tutto
void interrupt (void){
if (INTCON.GPIF){              //se c'è stato interrupt
if((gpio.f3==1) && (stato==0)) //se gp3 è 1 e stato 0 allora
{
  gpio^=porta;
  delay_us(250);
  gpio^=porta;
stato=1; //imposta stato a 1
}

if ((gpio.f3==0) && (stato==1)) //se c'è stato un fronte di discesa
{
  gpio^=porta;
  delay_us(250);
  gpio^=porta;
    ++i;
stato=0;
}
  INTCON.GPIF=0;

}

}

Ora sto testando questa routine. I triac vengono innescati ma con un tipo di lampada a led ho un piccolo sfarfallio fastidioso. Qualche consiglio?
Avatar utente
Foto Utentesorecaro
36 3 7
Frequentatore
Frequentatore
 
Messaggi: 233
Iscritto il: 26 feb 2013, 19:30

1
voti

[23] Re: interrupt zero crossing

Messaggioda Foto UtenteWALTERmwp » 31 ago 2015, 22:30

sorecaro ha scritto:(...) Qualche consiglio?
intanto ripeterei il controllo con la strumentazione, come correttamente avevi gia' fatto, invece di affidarmi ad un riscontro dell'effetto luci.
Come ho gia' scritto, indipendentemente dallo stato del codice, non mi pare di avere letto lo stato dell'arte per quanto riguarda l'interfacciamento hardware: mi pare una ovvieta' scriverlo ma e' fondamentale sapere "come" il segnale arriva su quel pin.
Tra un crossing e il successivo hai 10 ms e mi pare che di margine ce ne sia in abbondanza quindi, in teoria, non ci dovrebbero essere difficolta' nel rilevare i transiti.
Se "ogni tanto" qualcuno viene perso non si dovrebbe scrivere che funziona: di fatto non funziona.
Di cosa altro si deve occupare o preoccupare quel software non so ma spero che dopo ogni esecuzione del codice della routine di interrupt il GIE venga rigorosamente ripristinato.
Molto dipende dalla elaborazione del compilatore (che non conosco).
In difetto di altre informazioni formulare ipotesi e' un esercizio fine a se stesso.
Riscrivo, ancor prima del codice bisognerebbe essere certi dell'affidabilita' dell'interfaccia.

Saluti
W - U.H.F.
Avatar utente
Foto UtenteWALTERmwp
22,2k 4 8 13
G.Master EY
G.Master EY
 
Messaggi: 6444
Iscritto il: 17 lug 2010, 18:42
Località: le 4 del mattino

0
voti

[24] Re: interrupt zero crossing

Messaggioda Foto Utentesorecaro » 31 ago 2015, 23:15

WALTERmwp
prima cosa grazie per la risposta. Il pin gp3 é collegato direttamente alla tensione di rete tramite una resistenza da 10Mohm. Sto testando la routine e controllo l'innesco dei triac tramite oscilloscopio, fino ad ora tutto ok. Domani faró altri test.Comunque se hai qualche consiglio su come ottimizzare il codice te ne sarei grato . Il compilatore che sto usando é mikroC.
Avatar utente
Foto Utentesorecaro
36 3 7
Frequentatore
Frequentatore
 
Messaggi: 233
Iscritto il: 26 feb 2013, 19:30

0
voti

[25] Re: interrupt zero crossing

Messaggioda Foto UtenteIlGuru » 1 set 2015, 12:41

Sei sicuro che quello che stai implementando sia un rilevatore di zero crossing?
L'interrupt-on-change confronta il livello logico attuale con quello presente nel latch e se diverso scatta l'iterrupt, ma livello logico 0 in elettronica non significa sempre 0V, bensì tra 0V ed x V, come livello logico 1 non significa sempre 5V ma tra x V e 5V.
Io condizionerei il segnale alternato che arriva con un circuito a monte del pin di interrupt del PIC, eliminando le semi onde negative con diodo e trasformandole in onda quadra con un trigger.
In questo modo quando il segnale ottenuto è maggiore (o minore) di quei tot V, è molto meno in ritardo (o in anticipo) rispetto al vero 0 del segnale sinusoidale.
\Gamma\nu\tilde{\omega}\theta\i\ \sigma\epsilon\alpha\upsilon\tau\acute{o}\nu
Avatar utente
Foto UtenteIlGuru
4.134 1 10 13
Master
Master
 
Messaggi: 1373
Iscritto il: 31 lug 2015, 23:32

1
voti

[26] Re: interrupt zero crossing

Messaggioda Foto UtentePietroBaima » 1 set 2015, 13:56

direi che non ne valga la pena.
Un circuito minimal, quale una semplice resistenza che sfrutta i diodi di protezione degli ingressi va abbastanza bene per fare uno ZCD.
Non è molto importante che lo ZCD sia preciso perché una piccola perdita di fase non è significativa, perché il circuito "satura" alla Vdd del micro che è assolutamente trascurabile rispetto al massimo della tensione di rete.

Se poi si vuole proprio fare i pignoli si può implementare una piccola correzione software senza troppe difficoltà, ma direi che non sia il caso.

Per quanto riguarda lo sfarfallio delle lampade led, l'OP può postare la marca e il modello della lampada in questione?
Grazie

Ciao,
Pietro.
Generatore codice per articoli:
nomi
emoticon
citazioni
formule latex

Io capisco le cose per come le scrivete. Per esempio: K sono kelvin e non chilo, h.z è la costante di Planck per zepto o per la zeta di Riemann e l'inverso di una frequenza non si misura in siemens.
Avatar utente
Foto UtentePietroBaima
77,2k 6 12 13
G.Master EY
G.Master EY
 
Messaggi: 9415
Iscritto il: 12 ago 2012, 1:20
Località: Londra

0
voti

[27] Re: interrupt zero crossing

Messaggioda Foto Utentesorecaro » 1 set 2015, 19:19

IlGuru
Sei sicuro che quello che stai implementando sia un rilevatore di zero crossing?
Potresti spiegarmi meglio???





Per quanto riguarda la lampada a led purtroppo non c'è scritto nulla, ma propio nulla.
Come dicevo il circuito è già assemblato su PCB e non posso cambiare nulla.
Ho modificato la routine in questo modo, ora non ho nessun problema con lampade a led e lampade ad incandescenza. Sicuramente non è scritta "bene" ma non riesco a farla in modo diverso.

Codice: Seleziona tutto
void interrupt (void){
if (INTCON.GPIF){              //se c'è stato interrupt

if((gpio.f3==1) && (stato==0)) //se gp3 è 1 e stato 0 allora

{
for(imp=0; imp<=400; imp++) {
  gpio^=porta;
  delay_us(2);
  gpio^=porta;
   }
stato=1;

}

if ((gpio.f3==0) && (stato==1)) //se c'è stato un fronte di discesa
{
   for(imp=0; imp<=400; imp++){
  gpio^=porta;
  delay_us(2);
  gpio^=porta;
  }
    ++i;
stato=0;

}
  INTCON.GPIF=0;

}

}
Avatar utente
Foto Utentesorecaro
36 3 7
Frequentatore
Frequentatore
 
Messaggi: 233
Iscritto il: 26 feb 2013, 19:30

0
voti

[28] Re: interrupt zero crossing

Messaggioda Foto UtenteEcoTan » 2 set 2015, 15:11

Il rumore presente sulla sinusoide di rete, magari introdotto dalla stessa lampada, potrebbe rendere alquanto caotico l'attraversamento dello zero. Non conosco alcun filtro adatto a livello ISR, forse bisognerebbe ripetere la lettura per tot microsecondi per confermare l'attraversamento. Provato con un condensatorino? Per inciso, come è ricavata dalla rete la tensione per alimentare il micro?
Avatar utente
Foto UtenteEcoTan
5.350 4 10 13
Expert EY
Expert EY
 
Messaggi: 3227
Iscritto il: 29 gen 2014, 8:54

0
voti

[29] Re: interrupt zero crossing

Messaggioda Foto Utentelelerelele » 2 set 2015, 15:22

sorecaro ha scritto:Ho modificato la routine in questo modo, ora non ho nessun problema con lampade a led e lampade ad incandescenza.
.
Quindi il circuito funziona, non ho capito dove sta il problema.
Avatar utente
Foto Utentelelerelele
2.196 3 7 8
Expert EY
Expert EY
 
Messaggi: 2514
Iscritto il: 8 giu 2011, 8:57
Località: Reggio Emilia

0
voti

[30] Re: interrupt zero crossing

Messaggioda Foto Utentesorecaro » 2 set 2015, 20:25

Il PIC viene alimentato tramite tensione di rete con diodi condensatore e zener. Il circuito funziona, era solo per chiedere consigli se la routine di interrupt era scritta "bene"
Avatar utente
Foto Utentesorecaro
36 3 7
Frequentatore
Frequentatore
 
Messaggi: 233
Iscritto il: 26 feb 2013, 19:30

PrecedenteProssimo

Torna a Firmware e programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti