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

Ruchoma belka BAR LED- oprogramowanie sterownika

RaFiX13 11 Paź 2015 15:59 1134 2
  • #1 11 Paź 2015 15:59
    RaFiX13
    Poziom 15  

    Witam wszystkich zainteresowanych.

    Od jakiegoś czasu chodzi mi po głowie pomysł zbudowania fajnego światełka na imprezy. Początkowo miała byc to zwykła belka Led'owa z ośmioma diodami LED RGB o mocy 3W. W internecie trafiłem na jeszcze lepszą konstrukcję z możliwością ruchu. Jest to efekt Sweeper Beam Quad LED na diodach 10W

    Ruchoma belka BAR LED- oprogramowanie sterownika

    Swoją konstrukcję chciałbym oprzeć na procesorze Atmega128A. Drivery LED oparte na PT4115 (schemat zaczerpnięty z AVT1848). Sterowanie silnikiem krokowym zrobione wg sprawdzonego sposobu kolegi gpm z projektu Kręciołka.

    Do sterowania silnikiem krokowym można użyc sprawdzonego programu z niemieckiej strony która krąży po Elektrodzie, po zmianach oczywiscie.

    Najważniejsza rzeczą której nie mam jest oprogramowanie uC. Sterownik musi miec możliwosc sterowania przez DMX, miec funkcje:
    -sterowanie krokowcem,
    -sterowanie kolorem każdej diody z osobna,
    -wspólny dimmer,
    -efekt stroboskopu,
    -praca w rytm muzyki

    Mam małą stycznośc z programowaniem i sam nie dam rady napisać programu do uC.

    Link do paczki ze schematami, rozpiską kanałów DMX itp...
    https://drive.google.com/folderview?id=0B3FOmlnqs6tMYy1KWmc1NGlaZ3c&usp=sharing

    Dzieki wszystkim zainteresowanym za pomoc w pisaniu programu do Atmegi :D


    Pozdrawiam

    0 2
  • Mitronik
  • Pomocny post
    #2 12 Paź 2015 10:26
    adambyw
    Moderator Akustyka

    @RaFiX13 pisał juź do mnie w tym temacie na PW, wkleję już to co mu przekazałem. Moja wypowiedzź bazuje na projekcie który sam popełniłem, i jest opisany tu:https://www.elektroda.pl/rtvforum/topic2914668.html

    Tak na dobrą sprawę masz tam gotowy program, który będzie wymagał dopasowania do Twojej płytki. Jest on chyba bogato opisany, nie będziesz miał z nim większych problemów. W ostatnim projekcie dla kolegi z zagranicy napisałem prototyp 3 kanałów z globalnym dimmerem i strobo. Nic tylko to powielić i będzie chodzić.

    Co musisz zrobić to zwiększyć liczbę odbieranych kanałów DMX, bo mój projekt zakłada 8:
    PLik lib_dmx_in.h

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Na
    Kod: c
    Zaloguj się, aby zobaczyć kod


    Kolejna sprawa to przypisanie portów do DIPów. Plik lib_dmx_in.c
    To już pod Twój projekt:
    Kod: c
    Zaloguj się, aby zobaczyć kod


    I dalej w kodzie trzeba do odpowiednich portów przypisać mnożnik, żeby odpowiednio zdekodować kanał DMX:

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Ja miałem jeszcze obsługę pracy standalone, bez DMX, oraz obsługę dźwiękiem. Te funkcje kodu można usunąć.

    Bibliotekę obsługi dmx już masz to teraz trzeba iść do głównego programu, plik DMX2.c
    Funkcja inicjacyjna init_pinouts tu trzeba wprowadzić zmiany bo masz więcej pinów wyjściowych i inny port wejścia DMX
    Kod: c
    Zaloguj się, aby zobaczyć kod


    I teraz masz pętlę główną. W niej trzeba dorobić tyle warunków ile masz ledów, i przypisać je do odpowiednich portów.
    DmxRxField[0] - red 1
    ...
    DmxRxField[23] - blue8

    DmxRxField[24] - dim red
    DmxRxField[25] - dim green
    DmxRxField[26] - dim blue
    DmxRxField[27] - strobo

    Pętlę masz dla pierwszych sześciu, później trzeba powielić warunki dla wszystkich ledów.
    W warunku:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    zmieniając wartość 16 możesz zmniejszyć lub zwiększyć mnożnik czasu stroboskopu.

    Kod: c
    Zaloguj się, aby zobaczyć kod


    Jeżeli nie przewidujesz pracy bez DMX, to trzeba wywalić funkcje obsługi dźwięku (przerwanie + timer), plus ustawianie pojedynczego koloru i powinno wszystko śmigać.

    Pasuje jeszcze tylko zwiększyć częstotliwość procesora. Ja używałem wewnętrznego oscylatora 8MHz. Przy większym projekcie 16MHz da lepsze efekty. Tylko w pliku biblioteki trzeba będzie zwiększyć:
    Kod: c
    Zaloguj się, aby zobaczyć kod





    na
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Jest to ważne do odbioru danych DMX.

    Zerknij jeszcze u siebie na schemat na wejście DMX. Wstawianie tam rezystora nie jest dobrym pomysłem. Bo przy kilku urządzeniach znacznie obciążysz linię. Warto dać do niego przełącznik, w tedy będzie on spełniał funkcję terminatora na końcu linii. A w środku będzie go można odłączyć.
    Zerknij na mój schemat. Jest tam zabezpieczenie wejścia diodami zenera, oraz podciągnięcie pinów wejścia rezystorami. Eliminuje to przypadkowe świecenie przy niepodpiętej linii. Czasami tak reaguje jak podłączasz kabel czy dotkniesz palcem wejścia.

    Nie wspominałeś wcześniej o ruchu. Nie programowałem nigdy krokowców to się tu nie wypowiem w kwestii sterowania. W każdym razie będziesz potrzebował jeszcze przynajmniej jeden port dla krańcówek.
    O ile przy silniku jesteś w stanie przesunąć się o konkretny kąt, to po włączeniu procesor nie wie w jakim punkcie jest silnik, i będziesz potrzebował krańcówki do weryfikacji. Tak samo trzeba przewidzieć że silnik może zgubić kroki, i robić weryfikację co jakiś czas.
    Obrót bez ograniczeń był by fajny, ale musisz jakoś przeciągnąć kable do elementu obrotowego.
    Tak głośno myślę, czy nie było by rozsądniej rozdzielić tego urządzenia na dwa lub więcej procesory. Jeden sterujący światłem i drugi sterujący ruchem. W tedy masz do przeprowadzenia tylko 3 kable (2 zasilania, 1 linii DMX już za układem SN). A wypas, jeżeli udało by się zrobić przesył bezprzewodowy do części ruchomej, w tedy po zastosowaniu pierścieni i szczotek masz możliwość nieograniczonego obrotu.
    Też żeby ograniczyć koszty można zastosować więcej mniejszych a tańszych procesorów do świateł, tylko trzeba będzie pomiędzy procesorami zsynchronizować strobo (przez przerwania zewnętrzne).

    0
  • Mitronik
  • #3 12 Paź 2015 20:27
    RaFiX13
    Poziom 15  

    adambyw dzięki za wypowiedź. Wykorzystałem Twój kod i zastosowałem poprawki. W głównej pętli dodałem sterowanie 8 diodami RGB, przypisałem im porty uC.
    Nie jestem pewny kilku rzeczy:
    - cześć kodu do sterowania dimm red, dimm green, dimm blue, strobo
    - przypisanie poszczególnych kanałów do funkcji i efektu
    - sterowanie muzyką

    W linku są wszystkie poprawione kody, schemat sterownika z obsługą 2 krańcówek, kody źródłowe ze sterownika silnika krokowego ze strony www.hoelscher-hi.de

    Wydaje mi się że gdyby poprawic ten kod sterownika krokowca to można by połączyc te 2 programy i powinno wszystko działac.

    W linku także pozwoliłem sobie dodać schemat i kod źródłowy(Bascom) do przystawki do adresowania DMX zrobiony przez jednego z kolegów z Elektrody. Przystawke wpina się w miejsce Dip-Switch'a i adresuje za pomocą 2 przycisków i wyswietlacza LED.
    Fajnie byłoby go wykorzystać w tym projekcie, ale bez użycia Attiny13. Cały program wrzucic do Atmegi128.

    Wszelkie propozycje mile widziane :D

    https://drive.google.com/folderview?id=0B3FOmlnqs6tMU3F4eEVjODBwZFk&usp=sharing

    0