 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
malci Član


Pridružen-a: Sob 15 Sep 2007 21:05 Prispevkov: 871 Aktiv.: 4.03 Kraj: Polhov Gradec
|
Objavljeno: Ned Jan 02, 2011 9:34 pm Naslov sporočila: razsvetljava in bascomAVR - fade in/out |
|
|
Ojla!
Pri projektu novoletne razsvetljave (ki ga delam od miklavža dalje, in upam da ne bo počakal naslednje novo leto ) sem hotel z AVR mikrokontrolerjem krmilit 3 barvne žarnice 220v/60W, ki bi se med seboj "prelivale" - fade in/ fade out.
Hardversko sem zadevo kolikortoliko rešil (Atmega8 - optospojnink, triac...), program - ki ga prilagam -pa mi dela preglavice in sem skoraj obupal.
Z INT0 tipam zreocross, potem pa z TIMER1 zakasnim vklop tirac-a.
Toda, problem nastane pri časovnih zamikih zaradi izvajanja programa. Pri priloženem programu je to že cca 2 ms, če pa bom v do-loop zanko dodal še nekaj kode za izvajanje določenega programa se pa verjetno ne bo izšlo.
Sam nimam več idej, kako bi program spremenil. Mogoče z uporabo še enega interrupta? ali pa dodatenga timerja?
Je sploh kdo že izdelal kasični dimmer z bascomAVR?
Ali pa je mogoče bolje da opustim ta način in poskusim z enosmerno napetostjo ter PWM regulacijo?
Hvala za kakršnokoli idejo in spodbudo
lp
uroš
Koda: |
Dim S As Byte , Takt As Byte , Takt2 As Integer
Const Timed1 = 61536 '57536 1ms - 61536 0,5ms
Const Timed0 = 60 'določa hitrost fade in/out
Enable Interrupts
Enable Int0
Config Int0 = Rising
On Int0 Zero
On Timer0 Time0 ' določa hitrost fade in/out
On Timer1 Time1
Config Timer0 = Timer , Prescale = 1024
Config Timer1 = Timer , Prescale = 1
Enable Timer0
Enable Timer1
Declare Sub Program1 : Declare Sub Program2 : Declare Sub Pov : Declare Sub Zman
S = 0
Takt = 1
Takt2 = 1
Takt2inv = 20
Clock = 0
Do
Toggle Portc.5
Debounce Pind.0 , 0 , Pov , Sub
Debounce Pind.1 , 0 , Zman , Sub
If Pind.3 = 0 Then
Takt2 = 0
End If
If Takt2 > 19 Then
Takt2 = 19
Elseif Takt2 < 0 Then
Takt2 = 0
End If
Program1
Loop
'*******************************************************************************
'*******************************************************************************
Sub Pov
Incr Takt2
Toggle Portc.4
End Sub
'*******************************************************************************
Sub Zman
Decr Takt2
Toggle Portc.4
End Sub
'*******************************************************************************
Sub Program1
If S > Takt2 Then ' ko je S (1-20 v eni polperiodi) večji se sproži triac
Reset Portc.2
Else
Set Portc.2
End If
End Sub
'*******************************************************************************
Zero: 'vsake pol periode (10ms)
Toggle Portc.0 'zaradi indikacije na osciloskopu
Stop Timer1
Timer1 = Timed1 '0,5ms
Start Timer1
Return
Time1:
Toggle Portc.1 'zaradi indikacije na osciloskopu
Stop Timer1
Timer1 = Timed1 '0.5ms
Start Timer1 'S se 20x poveča in je vrednost 1-20
Incr S 'in če se triak vklopi pri vrdnosti 10 sveti 50%
'če se vklopi pri 15 sveti 25%
'20x=10ms=1 perioda
If S > 19 Then
S = 0
End If
Toggle Portc.1
Return
Time0: ' nadzira, kako hitro bo deloval fade in/out
Stop Timer0
Timer0 = Timed0
Start Timer0
Incr Takt
Toggle Portc.3 'zaradi indikacije na osciloskopu
Return
|
_________________ Elektronika za hobi |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 494 dni
Powered by phpBB © 2001, 2005 phpBB Group
|