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

Oświetlenie RGB, sterownik w oparciu o AVR

19 Paź 2011 22:12 3050 9
  • Poziom 22  
    Witam

    Chcę sobie zrobić 4 reflektory z diodami 3W na imprezy.
    Pomysł padł aby wykorzystać jakiś mikrokontroler AVR.
    Czy zna ktoś projekt sterownika diodami RGB w rytm basu ?
    Chodzi o to żeby mikrofon zbierał dźwięki z otoczenia przepuszczał poprzez filtr dolnoprzepustowy a następnie podawał na wejście uC, który przykładowo będzie zmieniał kolor na losowy przy każdym uderzeniu basu.
    Ostatnio wykonałem płytkę testową i mogę na niej zbudować próbny układ lecz nie czuję się na siłach aby napisać program do losowego zmieniania koloru diod przy każdym uderzeniu basu.
    Czy znalazła by się osoba która napisała by chociaż część programu w BASCOM aby przykładowo dioda RGB zmieniała kolor przy naciśnięciu np. jakiegoś switcha ?
    Był bym bardzo wdzięczny a z resztą bym już sobie poradził.

    Ogólnie to mam na myśli skonstruowanie czegoś takiego:

    Oświetlenie RGB, sterownik w oparciu o AVR

    Z góry dziękuję i pozdrawiam.
  • Pomocny post
    Admin grupy Projektowanie
    Czy kolorami RGB chcesz sterować włącz/wyłącz czy płynnie,
    zmieniając ich jasność na PWM ?

    W przypadku włącz wyłącz najprościej zrobić tak:


    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod


    Nazwa bass może być aliasem dla pinu na którym pojawia się stan wysoki (np. pind.1),
    lub wynikiem bardziej złożonego warunku.

    Nazwa Red itd. może być aliasem na porty sterujące diodami (np portc.1).

    Przy sterowaniu PWM mamy do wykorzystania wartość N-bitową
    (w zależności od rozdzielczości PWM) od której wartości zależy jasność świecenia.

    Z bardziej zaawansowanych rzeczy, można zastanawiać się nad implementacją
    DFT, FFT do wykrywania pulsowania amplitudy na określonym paśmie częstotliwości.


    Link



    Link
  • Poziom 22  
    Dziękuję za odpowiedź lecz nie wiem czy coś źle zrobiłem ale program nie nie działa.
    Dodam jeszcze że switch po naciśnięciu u mnie na płytce testowej ma stan iski i stanem niskim również są załączane diody rgb.
    Co do sterowania PWM to było by super gdyby program losowo po naciśnięciu np dawał, fioletowy, pomarańczowy, zielony, żółty, biały, niebieski itd, a nie tylko niebieski lub zielony lub czerwony.

    Program (nie działa):

    Code:
    Config Portb = 255
    
            Portb = 255
    Config Portd = &B0000000
            Portd = &B1111111


    DIM tmp as byte

    Do

     If Pind.0 = 0 Then

      Tmp = Rnd(2)           '50% szans trafienia

      If Tmp = 0 Then
       set portb.0
      else
       Reset Portb.0
      End If

      Tmp = Rnd(3)           '33% szans trafienia

      End If


     If Pind.0 = 0 Then

      Tmp = Rnd(2)           '50% szans trafienia

      If Tmp = 0 Then
       Set Portb.1
      else
       Reset Portb.1
      End If

      Tmp = Rnd(3)           '33% szans trafienia

      End If

       If Pind.0 = 0 Then

      Tmp = Rnd(2)           '50% szans trafienia

      If Tmp = 0 Then
       Set Portb.2
      else
       Reset Portb.2
      End If

      Tmp = Rnd(3)           '33% szans trafienia

     End If

    Loop

    End


    Z całym oświetleniem chodzi mi o uzyskanie efektu reflektorów PAR.

    Z góry dziękuję za odpowiedź.
  • Pomocny post
    Admin grupy Projektowanie
    Nie mam obecnie kompilatora,
    ale na początek sprawdź najprostszy test
    dla portb.3 czyli negacja stanu pind.0
    PWM warto się zainteresować.


    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod
  • Poziom 22  
    Sprawdziłem właśnie powyższy program i działa na zasadzie zapalenia diody przy włączeniu i gdy nacisnę i trzymam switch PD.0 zwarty do masy to dioda gaśnie, zapala ponownie się po puszczeniu switcha.
  • Pomocny post
    Admin grupy Projektowanie
    Może to przez brak opóźnienia w pętli głównej o którym zapomniałem.

    Można także zastosować wykomentowany kod oczekiwania na "zanik basu".

    Czy możesz pokazać schemat układu testowego ?

    Kod: basic4gl
    Zaloguj się, aby zobaczyć kod
  • Pomocny post
    Poziom 37  
    Krychol rc napisał:
    Sprawdziłem właśnie powyższy program i działa na zasadzie zapalenia diody przy włączeniu i gdy nacisnę i trzymam switch PD.0 zwarty do masy to dioda gaśnie, zapala ponownie się po puszczeniu switcha.


    Podłącz diodę w odwrotnej polaryzacji, będziesz miał odwrotny skutek...
    Zdaje się że o to ci chodzi. Robisz próby statyczne z przyciskiem, to tak mniej więcej będzie. W praktyce zmiany/impulsy są o charakterze bardziej dynamicznym więc i zmiany bardziej częste.
    Rozważ możliwośc zastosowania interruptu i timera, ewentualnie PWM dla łagodniejszej zmiany efektów oświetlenia zaniast raptownych błysków.
    Jeżeli docelowo będą to diody większej mocy to zajdzie potrzeba wstawienia/wbudowania w układ stosownego dla nich drivera.


    e marcus
  • Poziom 22  
    Postanowiłem dać sobie spokój i zastanawiam się czy nie lepiej by było sterować tym poprzez program komputerowy i interfejs USB -> DMX.
    Scheamat zaczerpnął bym z tej strony:

    http://www.hypex.sk/index.php?action=Konstrukcie/DMX2RGB/DMX2RGB.htm

    Czy mógł by mi ktoś przekompilować program na HEX w asemblerze na ATtiny2313 ustawiając porty tak (do samych testów bo posiadam płytkę testową na ATtiny2313 i chciał bym to sprawdzić):

    -P1.0 = PB.0
    -P1.1 = PB.1
    -P1.2 = PB.2
    -P1.3 = PB.3
    -P1.4 = PB.4
    -P1.5 = PB.5
    -P1.6 = PB.6
    -P1.7 = PB.7

    -P3.0 = PD.0
    -P3.1 = PD.1
    -P3.2 = PD.2
    -P3.3 = PD.3
    -P3.4 = PD.4
    -P3.5 = PD.5
    -P3.7 = PD.6

    oraz przekompilować na AT89C2051 bo oficjalnie na nich będę wykonywał ten projekt gdyż są tańsze.

    Proszę o to kogoś gdyż nie znam się na asemblerze.

    Głównie zależy mi mw. na takim efekcie (patrz tylko na reflektory PAR):

    http://www.youtube.com/watch?v=0liGU2x4cZU&feature=fvwrel

    Więc nie będę kombinował tak jak na początku bo to nie da takiego efektu.

    I jeszcze jedno pytanie czy za pomocą jednego interfejsu DMX USB będzie można podłączyć 4 PAR-y LED a każdy będzie wykonywał swoje polecenia jak na filmiku ?

    Z góry dziękuję i pozdrawiam
  • Admin grupy Projektowanie
    ATtiny2313 i AT89C2051 to dwie różne architektury,
    kod w asm potraktowałbym jako schemat rozwiązania,
    jest bardzo przejrzyście napisany i dobrze skomentowany.

    Można by się pokusić o poszukanie programu tłumaczącego
    asm 8051 na C i analizować program w C.
    Jednak myślę że bardziej efektywne będzie wydrukowanie
    sobie listy rozkazów i rejestrów 8051 i przeanalizowanie programu,
    a następnie napisanie go od nowa na AVR.

    PWM w ATtiny2313 możesz obsługiwać w całości sprzętowo,
    są dwa wyjścia na liczniku 8b i dwa na 16b.
  • Poziom 22  
    Wybieram się jutro do sklepu po 2051 i będę na nim przeprowadzał testy.
    Czy mógł bym jednak prosić o przkompilowanie tego programu na hex ponieważ mi podczas kompilacji wyskakują błędy i nie wiem jak je poprawić, a nie mam zbytnio teraz ochoty na naukę asemblera po to by przekompilować na szybko program.
    Wiem, że dla kogoś kto się zna na asm to dla niego jest to minuta roboty, i będę za to bardzo wdzięczny.

    Pozdrawiam