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.

[Atmega169p] [C] Sterowanie 32 diodami RGB

wery_88 12 Wrz 2011 18:03 1307 1
  • #1 12 Wrz 2011 18:03
    wery_88
    Poziom 2  

    Witam, próbuję wykonać vu meter na 32 diodach RGB. Aktualnie mam problem z samym sterowaniem wszystkich LEDów. Do zbudowania urządzenia użyłem atmegi 169p. Posiadam diody ze wspólna anodą. Są one podłączone jak na schemacie, czyli wszystkie katody danego koloru połączone są ze sobą i przez rezystor do mikrokontrolera do portów PWM, natomiast anody podłączone są bezpośrednio do mikrokontrolera.

    [Atmega169p] [C] Sterowanie 32 diodami RGB
    Uploaded with ImageShack.us

    Całość działa na zasadzie multipleksowania PWM, czyli w danym momencie czasu świeci się tylko 1 dioda. Każda dioda odświeżana jest z częstotliwością 60Hz. Wybór koloru i diody odbywa sie w przerwaniu od timera 0 w trybie CTC, który wywołuje przerwanie z częstotliwością 1920 Hz. Timer 1 i 2 generują sygnał PWM. Każdy PWM ma ustawiony preskaler na 1, co przy zastosowanym kwarcu 11,0592 MHz daje ok 21,68 kHz. Mój problem polega na tym, że gdy zaświecę dowolną diodę, niezależnie od koloru, to dioda następna w kolejności multipleksowania lekko się żarzy, a każda kolejna pracuje normalnie, czyli już nie świeci. Efekt ten widać na zdjęciu poniżej. Niestety zdjęcie jest robione telefonem przez co zdjęcie jest prześwietlone. W rzeczywistości diody nie świecą tak mocno.

    [Atmega169p] [C] Sterowanie 32 diodami RGB
    Uploaded with ImageShack.us

    Zmiana trybów PWM z fast PWM, na tryb korekcji fazy nie przynosi żadnych efektów. Dodam jeszcze, że PWM ustawione jest tak, że 100% wypełnienie wygasza diodę. Gdy PWM ustawione było odwrotnie tzn. przy 0% wypełnieniu wygaszał diodę, to efekt był taki sam dla trybu korekcji fazy, a w trybie fast PWM wszystkie diody żarzyły się delikatnie. Poniżej zamieszczam kod jakiego używam. Proszę o pomoc w rozwiązaniu mojego problemu. Próbowałem już różnych rzeczy, głównie ze zmianami w kodzie ale nie przyniosło to pożądanego efektu.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Pozdrawiam
    wery_88

    0 1
  • #2 13 Wrz 2011 08:19
    jarekz_2
    Poziom 15  

    wery_88 napisał:
    (...) Mój problem polega na tym, że gdy zaświecę dowolną diodę, niezależnie od koloru, to dioda następna w kolejności multipleksowania lekko się żarzy (...)

    Ten ból zna chyba każdy, kto robił sterowanie multipleksowe LEDów...
    Trzeba wprowadzić “czasy martwe“, czyli po wyłączeniu grupy LEDów odczekiwać pewien czas zanim zapali się następną.
    Rozważ programowe wytwarzanie przebiegów PWM zamiast robić to sprzętowo timerami.

    0