[ m51 @ 18.11.2012. 13:41 ] @
Zdravo, imam jedan problem pa rekoh možda ovde nađem pomoć. Da napomenem da sam prethodno detaljno proučio literaturu i internet. Hoću da regulišem intenzitet osvetljenja sijalice dobro poznatom faznom regulacijom pomoću mikrokontrolera i trijaka. Principi su poznati, za detekciju prolaska kroz nulu koristim pin 7 mikrokontrolera ATTINNY25. Kad mrežni napon prođe kroz nulu generiše se spoljni prekid. Šema je u prilogu. Problem je da pri regulaciji osvetljaja napon na sijalici ne raste kontinualno kao što zelim već je to nešto nedefinisano. Vizuelni efekat je da osvetljaj podrhtava dok se sijalica potpuno ne upali. Nemam ideju u čemu je problem, a sumnjam u izbor trijaka-bio mi je pri ruci BTA16 pa sam uzeo njega. Program je: Code: $regfile = "attiny25.dat" $hwstack = 32 Declare Sub Kontrola_vremena Dim I As Byte Dim K As Byte Dim Kontrola As Bit Dim Vreme_sek As Byte Config Pinb.0 = Output 'gate signal Config Pinb.2 = Input 'SPOLJNI PREKID Config Int0 = Change On Int0 Prekid 'prekidna rutina Reset Kontrola K = 45 Vreme_sek = 10 Enable Interrupts 'dozvoli prekide Enable Int0 'i spoljni INT0 ' u glavnoj petlji se vrsi provera da li je ostvaren fazni pomeraj ' kroz celu poluperiodu.znaci sijalica od nula do maksimunma Do If Kontrola = 1 Then Disable Int0 'zabrani prekid ako je sijalica na maksimumu osvetljaja Kontrola = 0 Portb.0 = 1 Call Kontrola_vremena End If Loop Sub Kontrola_vremena 'ovim potprogramom se ostvaruje uslov da sijalica svetli jos 10 sekundi 'od trenutka kada postigne maksimalni osvetljaj For I = 0 To Vreme_sek Wait 1 Next I Portb.0 = 0 ' i onda se ugasi End Sub Kontrola Vremena Prekid: Disable Int0 'zabrani prekid Decr K 'korak je 200 uS a K je umnozak For I = 0 To K Waitus 200 Next I 'kad prodje vreme faznog pomaka Set Portb.0 'setuj gejt trijaka Waitus 50 'sacekaj 50 uS Reset Portb.0 'resetuj gejt If K = 0 Then 'ako je ostvaren fazni pomeraj kroz celu poluperiodu Kontrola = 1 'setuj kontrolni fleg K = 45 'priprema promenljive za novi ciklus pomeraja faze End If Enable Int0 Return End Unapred zahvalan za svaku pomoć. Koliko vidim pretragom tema ima iskusnih po ovom pitanju. |