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.

Mała biurkowa choinka z płynnie wędrującym dookoła światłem

Sam Sung 24 Gru 2010 01:06 7529 5
  • Mała biurkowa choinka z płynnie wędrującym dookoła światłem
    Przedstawione tu oświetlenie choinki to kompromis między drażniącym miganiem a nudnym ciągłym świeceniem, mianowicie lampki są płynnie rozświetlane i gaszone.
    Zarówno układ, jak i program są proste - uzyskany efekt w sumie też. Jest to 8-kanałowy sterownik PWM zbudowany na mikrokontrolerze AT89C2051 i ULN2803A zasilający 8 pionowych rzędów czerwonych diód LED, po 3 w każdym rzędzie. Program jest krótki (56 bajtów po skompilowaniu). Po włączeniu robi test - wszystkie lampki włączone przez ok. 0,5 sekundy, a następnie działa wg następującej koncepcji:
    • w każdej kolejnej fazie świeci tylko jeden z ośmiu rzędów lampek
    • przejście między kolejnymi fazami polega na stopniowym zwiększaniu jasności następnego rzędu i zmniejszaniu jasności poprzedniego rzędu
    • suma czasu świecenia lampek z obydwu kolejnych rzędów (w ramach cyklu PWM) jest stała
      Koncepcja ta jest zrealizowana poprzez:
    • odpowiednią inicjację masek dla danej fazy (maska lampek świecących stale- 1 bit zapalony, oraz maska cyklu PWM - 2 bity zapalone)
    • realizowanie cykli PWM z użyciem masek odpowiednich dla danej fazy (xor)
    • modulację podziału cyklu w celu płynnego przechodzenia między fazami
    Załączam kod źródłowy, który można zasemblować przy pomocy ASEM-51. Rozszerzenie asm jest na tym forum niedozwolone, dlatego zmieniłem je na txt.

    W działaniu:


    Płytka sterownika:
    Mała biurkowa choinka z płynnie wędrującym dookoła światłem

    Diody na choince:
    Mała biurkowa choinka z płynnie wędrującym dookoła światłem

    Schemat sterownika:
    Mała biurkowa choinka z płynnie wędrującym dookoła światłem Mała biurkowa choinka z płynnie wędrującym dookoła światłem
    Uwaga: brakuje na nim rezystorów (4,7k) podciągających do 1 na nóżkach P1.0 i P1.1 (te 2 są niezbędne).

    Listing programu jest na tyle krótki, że go tu wkleję.
    Code:
    ; Ośmiokanałowy sterownik lampek choinkowych
    
    ;
    ; Budowa systemu:
    ; - mikrokontroler AT89C2051 z kwarcem 20 MHz
    ; - 8 kanałów wyjściowych dla ULN2803A (lampki włączane jedynką) na porcie P1

    $nomod51
    $include (89c2051.mcu)

    using   0

    cseg

    org RESET
    ;   test świecenia wszystkiego przez ok. 0,5 sek.
       mov P1, #00000000b
       mov P1, #11111111b
       mov R7, #0
       mov R6, #0
       mov R5, #6
    test_loop:
       djnz R7, test_loop
       djnz R6, test_loop
       djnz R5, test_loop

    ;   inicjalizacja
       mov R2, #00000001b   ; stan lampek świecących na stałe
       mov R3, #10000001b   ; maska lampki rozjaśnianej/ściemnianej
       mov R4, #0      ; współczynnik jasności lampki rozjaśnianej/ściemnianej

    main_loop:
       ; R4 musi być równe 0
       mov R5, #4

    pwm_loop:
       mov P1, R2      ; 12 cykli; początek fazy 1
       mov A, R4      ; 12 cykli
       djnz ACC, $      ; R4 * 24 cykli

       mov A, R3      ; 12 cykli
       xrl P1, A      ; 12 cykli; początek fazy 2
       clr A         ; 12 cykli
       clr C         ; 12 cykli
       subb A, R4      ; 12 cykli
       jz skip_loop      ; 24 cykle
       djnz ACC, $      ; (256 - R4) * 24 cykli
    skip_loop:

       ; powtarzanie tego samego poziomu jasności
       djnz R5, pwm_loop   ; 24 cykle

       ; zmiana podziału cyklu świecenia/nieświecenia
       djnz R4, main_loop   ; 24 cykle

       ; zmiana stanu lampek zaświeconych na stałe (R2) i maski lampki rozjaśnianej/ściemnianej (R3)
       mov A, R3      ; 12 cykli
       xrl AR2, A      ; 12 cykli
       rr A         ; 12 cykli
       mov R3, A      ; 12 cykli

       jmp main_loop      ; 24 cykle

    END
    Załączniki:

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • #2
    xtreme69
    Poziom 13  
    Projekt ogólnie ciekawy, ale przydało by się więcej Led-ów ciaśniej upakowanych i możliwość zmiany trybów świecenia.
    Można by też zamiast zwykłych Led dać diody RGB.
    Czym jest to zasilane i ile prądu to zjada?
  • #3
    misiekan854
    Poziom 17  
    A mi się bardzo podoba, diód jest w sam raz - nie za mało, nie za dużo. To ma w końcu być ozdoba do choinki, a nie lampa. Jedyne co bym zmienił to głębiej wcisnąłbym diodki - wg mnie trochę za bardzo wystają i to psuje efekt. Wystarczyłoby kilka cm głębiej, i efekt naprawdę byłby świetny.

    Pozdrawiam
  • #4
    SylwekK
    Poziom 30  
    Hmmm, a nie lepiej żeby to światełko wędrowało z góry na dół (lub odwrotnie) niż zachowywało się jak kogut służb drogowych :)
    Oczywiście samo sterowanie diodami z użyciem PWM mi się podoba :)
    Pozdrawiam
  • #5
    kokodin
    Poziom 21  
    Fajny radar. Zastanawiałeś się nad ułożeniem światełek z przesunięciem? Chodzi mi o przesunięcie całego piętra względem sąsiednich. To by stworzyło taki fajny efekt "wiru" a i choinka mniej by mrugała, światło było by bardziej jednorodne i nie takie męczące po dłuższym czasie.
    Zdecydowanie brawa za sterownik, ja bym nie potrafił zrobić :]