Witam,
Chcę zrobić fazową regulacje napięcia, aby sterować żarówką.
Schemat:
Kod:
Regulacja jasności odbywa sie z rozdzielczością 190 kroków.
Przerwanie na TIMER1 jest co 50us
Na poczatek, jako obciązenie podłaczylem zwykle diody(dwie) czerwone przez rezystor 1k, jako zasilanie diod napiecie za transformatora TS2/14(ok 10VAC).
Diody nie swieca sie w ogole. Moim zdaniem podowdem tego jest to, ze transystor ciagle jest zatkany => g_licznik = 0;
PORTA = 0x00;
Wiec optotriak nie jest w ogole właczany.
Jak poprawic ta detekcje zera?
Chcę zrobić fazową regulacje napięcia, aby sterować żarówką.
Schemat:
Kod:
#include <avr/io.h>
#include <avr/interrupt.h>
volatile uint8_t g_licznik = 0;
volatile uint8_t wart = 100; //190 krokow
SIGNAL(TIMER1_COMPA_vect)
{
if(!(PIND & 0x80)) //sprawdzenie, czy tranzystor jest zatkany => napiecie sieci przechodzi przez zero
{
g_licznik = 0;
PORTA = 0x00;
}
else
{
if(g_licznik++>wart) //opoznienie dla zalaczenie triaka
{
PORTA = 0x01;
}
else
{
PORTA = 0x00;
}
}
}
int main(void)
{
DDRA = 0xff; //wyjscia
DDRD = 0x00;
// PORTD = 0xff;
TCCR1B |= (1 << WGM12); // Ustawia timer w tryb CTC
OCR1A = 100; // Ustawia wartość pożądaną na 20kHz(50us) dla preskalera 8
TCCR1B |= (1 << CS11); // Ustawia timer z preskalerem Fcpu/8
TIMSK |= (1 << OCIE1A); // Zezwolenie na przerwania dla CTC
sei();
while(1)
{
}
}
Regulacja jasności odbywa sie z rozdzielczością 190 kroków.
Przerwanie na TIMER1 jest co 50us
Na poczatek, jako obciązenie podłaczylem zwykle diody(dwie) czerwone przez rezystor 1k, jako zasilanie diod napiecie za transformatora TS2/14(ok 10VAC).
Diody nie swieca sie w ogole. Moim zdaniem podowdem tego jest to, ze transystor ciagle jest zatkany => g_licznik = 0;
PORTA = 0x00;
Wiec optotriak nie jest w ogole właczany.
Jak poprawic ta detekcje zera?
