www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

razsvetljava in bascomAVR - fade in/out

 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
malci
Član
Član



Pridružen-a: Sob 15 Sep 2007 21:05
Prispevkov: 871
Aktiv.: 4.03
Kraj: Polhov Gradec

PrispevekObjavljeno: Ned Jan 02, 2011 9:34 pm    Naslov sporočila:  razsvetljava in bascomAVR - fade in/out Odgovori s citatom

Ojla!

Pri projektu novoletne razsvetljave (ki ga delam od miklavža dalje, in upam da ne bo počakal naslednje novo leto Very Happy ) 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
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Stran 1 od 1

 
Pojdi na:  
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: 493 dni


Powered by phpBB © 2001, 2005 phpBB Group