Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[AVR] PWM, Led, tranzystor

sztcz 03 Gru 2007 21:41 6423 7
  • #1 03 Gru 2007 21:41
    sztcz
    Poziom 2  

    Witam forumowiczow!

    Otoz mam nastepujacy problem, wymarzylo mi sie stworzyc cos w rodzaju reflektora led ktorym bedzie sterowal uC. Potrafie sterowac jasnoscia ledow poprzez tranzystor (2n3906), kostke zwana (7805, nie wiem co to jest, bazowalem na schemacie znalezionym w internecie) oraz potencjometr analogowy. Jednak nie jest to to co chcialbym osiagnac, zalezy mi na sterowaniu przy pomocy jakiegos avrka (najlepiej attiny2313) i PWM. PWM potrafie oprogramowac, ale jak to polaczyc z ukladem, nie mam pojecia. Dodam ze do dyspozycji mam zasilanie +5V (uC) i +12V ktorym chcialbym zasilac diody. Diod na jeden uklad ma byc docelowo 16 (matryca 4x4). I tutaj mam prosbe, czy ktos moglby nakierowac mnie w jakim kierunku powinienem budowac uklad? Czy ten tranzystor bedzie dobry? Jesli tak to jak to polaczyc z PWM.

    PS. Jestem programista, nie elektronikiem, prosilbym o wmiare lapotologiczna odpowiedz :)

    Pozdrawiam, Sz.

    0 7
  • #2 03 Gru 2007 22:54
    autoservice
    Poziom 20  

    ...sorki ale :D...rejestry PWM w palcem w nosie oprogramuje ale co to jest 7805 to nie wie :D to chyba "joke" miesiaca :D

    0
  • #3 04 Gru 2007 00:10
    sztcz
    Poziom 2  

    Stabilizator napiecia (akurat wygooglowalem przed zlozeniem sobie tego czegos :] ) Pisalem tego posta w pospiechu (w pociagu), i nie bardzo moglem sobie przypomiec co to jest, a schematu nie mialem przy sobie :] W kazdym razie, w zyciu nie tworzylem jakis urzadzen od strony hardware'u, tylko od strony softu, wiec akurat pwm nie sprawia mi problemu.

    0
  • #4 04 Gru 2007 01:09
    nouki
    Poziom 25  

    hmmm a moze Kolego piszesz w Bascomie pewnie nie:)
    Ale skoro nie sprawia Ci problemów to kiedyś pytałem o takie coś i nikt nie był w stanie napisać nic:) a mianowicie
    chciałem by po podaniu stanu 1 na jakieś wejscie tranzystor sterowany pwm rozjaśnił mi płynnie żarówkę od o do 90.... % w czasie 10 sek a jeśli bedzie stan zero to spadnie z 90...% do zera w czasie 10sek.

    0
  • #5 04 Gru 2007 11:03
    seba_x
    Poziom 31  

    może tak :

    [AVR] PWM, Led, tranzystor

    r41 daj 3.3k , tranzystor mosfet może być irfz44 , r42 dobierz tak żeby nie przekroczyć prądu leda , 2n3906 obawiam się że będzie za słaby do 16 ledów

    0
  • #6 04 Gru 2007 12:36
    intertom
    Poziom 11  

    NIE MOŻĘ BYĆ IRFZ44!!!
    - wymaga ok 10V do pełnego otwarcia kanału!!! a nie 4v jak ten na schemacie. A poza tym to sterowanie PWM jest proste. Jedyny kłopot to przy dużych prądach i sporych częstotliwościach może sprawiać grzanie tranzystorka spowodowane faktem przełączania bramki (lub nie pełnego otwarcia-małe napięcie sterujące). Jeśli ktoś będzie potrzebował sprawdzonego prostego układu do przełączania dowolnego MOSFETa (nie tylko takich sterowanych poziomem TTL) to jest tu: https://www.elektroda.pl/rtvforum/viewtopic.php?t=885095&highlight=

    Ten układzik działa tak: Gdy na pinie PWM jest stan 1 to tranzystorek Q5 załącza bramkę MOSFETa a gdy stan się zmieni na 0 to Q4 powoduje rozładowanie pojemności bramki MOSFETa (przez opornik 10om) i tranzystor się 'szybko' wyłącza.
    Oczywiście w profesjonalnych układach stosuje się scalone drivery MOSFETów.

    PS: a ten problem z płynnym rozjaśnianiem 0..90%jest banalny np:
    w pętli (powiedzmy 100 krokór) umieszczasz opóźnienie na 99ms i instrukcję inkrementacji zmiennej PWM o 1, i już masz płynne zwiększanie PWM w 100 krokach i w ciągu ok 10 sek. A zmniejszanie analogicznie. Reszta to tylko kwestia fantazji.:D

    0
  • #7 04 Gru 2007 19:49
    nouki
    Poziom 25  

    Może ja jej nie mam bo sie ucze bascoma jak wstawisz przykład to moze zakapuje i moja fantazja sie rozbudzi:)

    0
  • #8 05 Gru 2007 08:13
    intertom
    Poziom 11  

    Kiedyś popełniłem taki programowy PWM x 3 do sterowania RGB (ot tak dla fantazji :D)

    Code:
    Config Timer1 = Timer , Prescale = 1                        'dla prescale=8 przerwanie co ok 4 ms dla 256 co 15 ms dla 1024 co 64 ms
    
    Config Int0 = Falling
    'Config Portb.6 = Input
    'Set Portb.6                                                 ' Końcówka Dla Int0
    Ddra = &B01111111                                           ' ustawienie portu a jako wyjście
    Config Rc5 = Pinb.6
    Pwm_r Alias Porta.0                                         ' porty podpięcia led RGB
    Pwm_g Alias Porta.1
    Pwm_b Alias Porta.2
    Redled Alias Porta.6
    Relay Alias Pina.7
     Enable Interrupts
     Enable Timer1
     On Timer1 Int_timer1
     Enable Int0
     On Int0 Odbierz
     Set Redled                                                 ' zgaś leda
     Speed = 1                                                  'Początkowa Deklaracja Prędkości Zmian
     Max_r = 255                                                ' deklaracja zakresów zmian kolorów
     Min_r = 0
     Max_g = 255
     Min_g = 0
     Max_b = 255
     Min_b = 0

    Do                                                          ' główna pętla
    If C > 255 Then C = 0


    If R > C Then Set Pwm_r Else Reset Pwm_r                    ' pwm dla red
    If G > C Then Set Pwm_g Else Reset Pwm_g                    ' pwm dla green
    If B > C Then Set Pwm_b Else Reset Pwm_b                    ' pwm dla blue

    C = C + 1
    Loop

    End


    Int_timer1:
      Disable Timer1

     If Pom > 510 Then Pom = 0

     If Pom < 255 Then Flag_r = 1                               'Regulacja wypełnienia od 0 do 255 i od 255 do 0




     If Pom > 255 Then Flag_r = 0
     ' ##########  regulacja RED
     If Flag_r = 1 Then If R < Max_r Then R = R + 1
     If Flag_r = 0 Then If R > Min_r Then R = R -1

     ' ##########  regulacja GREEN
     If Flag_r = 1 Then If G < Max_g Then G = G + 1
     If Flag_r = 0 Then If G > Min_g Then G = G -1

     ' ##########  regulacja BLUE
     If Flag_r = 1 Then If B < Max_b Then B = B + 1
     If Flag_r = 0 Then If B > Min_b Then B = B -1

     Pom = Pom + 1

    '#########################################
    'teraz zpodamy sobie jakieś kolorki!!!
     If Pom1 >= Speed Then
     If Licz <= 35 Then Licz = Licz + 1 Else Licz = 0

       If Licz > 0 Then
           Min_r = 100
           Max_r = 255
           Min_g = 0
           Max_g = 0
           Min_b = 0
           Max_b = 0
        End If
       If Licz > 5 Then
           Min_r = 0
           Max_r = 0
           Min_g = 0
           Max_g = 0
           Min_b = 0
           Max_b = 0
        End If
        If Licz > 7 Then
           Min_r = 0
           Max_r = 0
           Min_g = 100
           Max_g = 255
           Min_b = 0
           Max_b = 0
        End If
        If Licz > 12 Then
           Min_r = 0
           Max_r = 0
           Min_g = 0
           Max_g = 0
           Min_b = 0
           Max_b = 0
        End If
        If Licz > 14 Then
           Min_r = 0
           Max_r = 0
           Min_g = 0
           Max_g = 0
           Min_b = 100
           Max_b = 255
        End If
        If Licz > 21 Then
           Min_r = 0
           Max_r = 0
           Min_g = 0
           Max_g = 0
           Min_b = 0
           Max_b = 0
        End If

        If Licz > 25 Then
           Min_r = 0
           Max_r = 0
           Min_g = 20
           Max_g = 50
           Min_b = 10
           Max_b = 20
        End If
        If Licz > 30 Then
           Min_r = 10
           Max_r = 150
           Min_g = 0
           Max_g = 0
           Min_b = 20
           Max_b = 50
        End If
       Pom1 = 0
     Else
      Pom1 = Pom1 + 1
     End If
     Enable Timer1
     Return





                                               ' Obsługa pilota
      Odbierz:

    Enable Interrupts
    Disable Int0
    Disable Timer1
    Reset Redled                                                ' zapal leda
    Getrc5(adres , Komenda)
    Komenda = Komenda And &B00111111
    If Komenda = Rc_komend Then Toggle Relay
    Waitus 100
    Set Redled                                                  ' zgaś leda
    Enable Int0
    Enable Timer1
    Return


    o i jeszcvze RC5 obsługuje. Te kolumny ze zmiennymi min i max to już nie jest ważne. Cały PWM jest realizowany w petli powyżej, częstotliwość zależy od preskalera.

    0
  Szukaj w 5mln produktów