Witam, jednym z elementów mojego projektu jest regulacja fazowa mocy oddawanej do obciążeń rezystancyjnych (Oświetlenie), mniej indukcyjnych, problem polega na tym, że po wstępnym napisaniu fragmentu kodu już widzę, wyzwalanie triaka jest nieprecyzyjne, teraz moje pytanie dlaczego? Załączam fragment kodu i schemat obwodu triaka i detekcji przejścia przez zero. Domyślam się, że ten drugi układ (jako odniesienie do odliczania czasu włączania triaka zmieniając fazę, jest mało precyzyjny, powodując mruganie, nierówne przerwania zera sieci). wartości licznika są w odpowiedniej tablicy i za pomoca switchy zmieniam ich wartość powodując zmianę fazy, żarówka ściemnia się itd, ale problem właśnie w tym mruganiu (nierówne włączanie triaka względem przeciwnych połówek sinusa), czy można wykluczyć jako powód poniższy kod?
Przerwania od timera 0 co 100us, rozdzielczość regulacji fazy +- od 1 do 100, przerwanie timera 0 nie powinno blokować przerwania od zera sieci (co 10ms). Za komentarze jestem wdzięczny;)
a jeszcze dodam, że impuls sterujący trwa 200us.
https://obrazki.elektroda.pl/73_1272617102.png
ISR(INT2_vect)
{
triac_time=*(power+indeks_tab);
triac_timer=1;
TIFR=2;
}
ISR (TIMER0_COMP_vect, ISR_NOBLOCK)
{
TCNT0=0;
preskala--;
if(triac_timer==1)
{
triac_time--;
if(!triac_time)
{
TRIAC_ON;
triac_timer=2;
}
}
if(triac_timer==2)
{
triac_pulse--;
if(!triac_pulse)
{
TRIAC_OFF;
triac_pulse=2;
triac_timer=0;
}
}
dalsza część przerwania
}
Przerwania od timera 0 co 100us, rozdzielczość regulacji fazy +- od 1 do 100, przerwanie timera 0 nie powinno blokować przerwania od zera sieci (co 10ms). Za komentarze jestem wdzięczny;)
a jeszcze dodam, że impuls sterujący trwa 200us.
https://obrazki.elektroda.pl/73_1272617102.png