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

Uniwersalny sterownik DMX LED RGB [M8] - Projekt rozwijany

DjDaniel11 05 Sty 2015 23:15 8874 17
  • Uniwersalny sterownik DMX LED RGB [M8] - Projekt rozwijany Uniwersalny sterownik DMX LED RGB [M8] - Projekt rozwijany

    Witam wszystkich serdecznie. :)
    Jakiś czas temu opublikowałem temat z przeróbką para 36 na para diodowego. Głównym założeniem było udostępnienie wzoru płytki pod diody oraz pierwowzoru sterownika. Tym razem chciałem zaprezentować sam sterownik, jednak nie tylko poprawiony, ale i dużo bardziej uniwersalny, wraz z opcjonalnymi przystawkami do niego, które z czasem będę tutaj zamieszczał.

    Uniwersalny sterownik DMX LED RGB [M8] - Projekt rozwijany Uniwersalny sterownik DMX LED RGB [M8] - Projekt rozwijany
    (a tutaj z "przystawką wpiętą zamiast dip switcha") - niestety przystawka w pająku :)

    I. STEROWNIK:
    Sercem jego jest najpopularniejsze i jeden z najtańszych ogólnodostępnych mikroprocesorów - atmega8 w wersji DIP. Jest to poprawiona i bardziej zunifikowana wersja pierwszego sterownika. Napięcie zasilania układu mieści się w przedziale od 5 do 18V, jednak bez obaw można je podnieść do 30V, dokładając radiator do stabilizatora napięcia Lm7805, oraz zmieniając rezystor przy diodzie (płytka EAGLE) sygnalizującej działanie układu, na 2kOhm. Układ taktowany jest za pomocą zewnętrznego rezonatora kwarcowego 8MHz, jednak nie wykluczam podniesienia częstotliwości na 16MHz, jeśli będzie taka konieczność. Należy pamiętać, aby przestać fusebity na zewnętrzny rezonator kwarcowy.
    Moduł wyjściowy jest oparty na najpopularniejsze w tym segmencie tranzystory darlingtona TIP122 pracujące do 60V i 4A.

    Uniwersalny sterownik DMX LED RGB [M8] - Projekt rozwijany

    II. Soft
    Program piszę w basicu, w bascomie.
    Versja V01 - zajmuje 23% pamięci procesora

    Pierwsze 4 kanały zostały bez zmian, czyli sterowanie jasnością koloru czerwonego, następnie zielonego, niebieskiego oraz dimmer ze stroboskopem na kanale czwartym. PWM sprzętowy, pracujący z f>1kHz. Na kolejnych czterech kanałach w tej wersji zrobione jest załączanie wyjść on/off np. do sterowania halogenami lub innymi urządzeniami przez przekaźniki czy triaki z opotriakami (z detekcją zera). Jeśli komuś potrzebny jedynie sterownik RGB, po prostu nie musi się przejmować kolejnymi 4 kanałami, i może zapomnieć, że one istnieją. :)

    ::::::CHANNEL LIST::::::::::::::
    :: CH1 = RED LED PWM
    :: CH2 = GREEN LED PWM
    :: CH3 = BLUE LED PWM
    :: CH4 = MASTER/STROB LED
    :: CH5 = CH1 ON/OFF
    :: CH6 = CH2 ON/OFF
    :: CH7 = CH3 ON/OFF
    :: CH8 = CH4 ON/OFF
    ::::::::::::::::::::::::::::::::::::

    ::::::::STAND ALONE::::::::::::
    :: P0 = ON/OFF RED FADE
    :: P1 = ON/OFF GREEN FADE
    :: P2 = ON/OFF BLUE FADE
    :: P3 = ON/OFF Halogen_1 (złącze J2 patrz 3d)
    :: P4 = ON/OFF Halogen_2 (złącze J3 patrz 3d)
    :: P5 = ON/OFF Halogen_3 (złacze J4 patrz 3d)
    :: P6 = ON/OFF Halogen_4 (złącze J4 patrz 3d)
    :: P7 = COLOUR LOCK
    :: P8 = NONE
    :: P9 = DMX/STONE_ALONE
    ::::::::::::::::::::::::::::::::::::
    Dzięki płynnemu rozjaśnianiu i ściemnianiu w trybie "stand alone" oraz opcji blokowania koloru P7, można ustawić naprawdę dowolny kolor, a nie tylko 6 podstawowych. :)

    W momencie publikacji tematu, układ posiada jedynie podstawowe opcje, czyli :
    1. Tryb manualny (załączenie dowolnego koloru)
    2. Tryb sterowany DMX (sterowanie ze sterownika DMX)



    II. Możliwości rozwojowe :
    - Urządzenie w trybie ręcznej pracy steruje pozostałymi urządzeniami - nadanie DMX (wszystkie niezbędne piny, Tx, Rx, oraz kierunek, podłączone są do mikroprocesora, kwestia tylko softu)
    - Urządzenie posiada parę wbudowanych programów
    (również kwestia tylko softu, i fantazji)
    - Raz nawet podpięte miałem czujniki PIR, które zmieniały ustawiony kolor, na biały, gdy ktoś szedł.
    - Wszystko zależy od fantazji i potrzeby :)


    III. Przystawki :

    Uniwersalny sterownik DMX LED RGB [M8] - Projekt rozwijany

    - Przystawka do adresowania z wyświetlaczem LED i dwoma przyciskami na TINY13 wpinana w standardowe piny zamiast dipswitcha. Bardzo prosta konstrukcja z 7 elementów, zapis/odczyt ustawionego kanału do eeprom itd. (zrobiona, w fazie testów)
    - Przystawka do adresowania z wyświetlaczem LED i dwoma przyciskami na TINY13 dołączana do jednego z wolnych złączy na płytce (3pin). Bardzo prosta konstrukcja z 6 elementów, zapis/odczyt ustawionego kanału do eeprom (zasilana z tego złącza oraz komunikująca się przez nie ze sterownikiem)
    - Złącza DMX oraz diodami LED sygnalizującymi działanie urządzenia oraz sygnał DMX (zrobiona, niewytrawiona)
    - Złącza DMX, diodami LED sygnalizującymi działanie oraz układami zabezpieczeń magistrali DMX (transile; w fazie budowy)
    - Źródło stałoprądowe 3*350mA(do 3*1A) 6-30V, do diod LED mocy, oparta na stabilizatorach PT4115 (w fazie finalizacji PCB)

    PS: Zastanawiam się nad przerzuceniem obsługi wyświetlacza 7segm. i przycisków bezpośrednio przez Atmegę, jednak boję się, że multipleksowanie wyświetlaczy może opóźniać mi działanie "stroboskopu" albo powodować błędy przy nadawaniu sygnału DMXa.

    W załączeniu:
    1. Schemat
    2. Wzór PCB do wydruku (PCB_V02.pdf)
    3. Obraz 3d PCB (3d_V02.pdf)
    4. Bonusowa płytka PCB wykonana w Eaglu (moja pierwsza płytka w eaglu)
    5. Skompilowany program, oraz kod programu do edycji (V01_DMX..)


    Wszelkie uwagi, pomysły, prośby, kondolencje, proszę składać poniżej. :) Pozdrawiam

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    DjDaniel11
    Poziom 27  
    Offline 
    DjDaniel11 napisał 1337 postów o ocenie 96, pomógł 38 razy. Mieszka w mieście Łańcut. Jest z nami od 2007 roku.
  • Relpol przekaźniki
  • #2
    nsvinc
    Poziom 35  
    DjDaniel11 napisał:
    trybie "stone alone"

    Nie chodziło przypadkiem o standalone?....
  • Relpol przekaźniki
  • #3
    Freddy
    Poziom 43  
    Przecież to samo jest na stronie TUTAJ , tylko trochę starsza wersja procesora.
    Całe darmowe wersje DMX512 i wszystkiego typu i możliwości sterowniki DMX.
  • #4
    DjDaniel11
    Poziom 27  
    Nsvinc , tak kolego, wkradła się literówka. Już poprawiam. Tak to jest jak po nocach się pisze posty. Hehe

    Freddy, gdybym odkrył coś nowego, czego nigdzie nie ma, to gwarantuje Ci, że nie po to, żeby wrzucać jako projekt edukacyjne od razu. Nie jest to samo, bo jest to moja wersja, co więcej nawet się nie wzorowałem na tamtej stronie. :) Wielu osobą się przyda, tym bardziej, że tam wszystkie układy są adresowane tylko z dip switcha.
  • #5
    Freddy
    Poziom 43  
    DjDaniel11 napisał:
    ... Freddy, gdybym odkrył coś nowego, czego nigdzie nie ma, to gwarantuje Ci, że nie po to, żeby wrzucać jako projekt edukacyjne od razu. Nie jest to samo, bo jest to moja wersja, co więcej nawet się nie wzorowałem na tamtej stronie. :) Wielu osobą się przyda, tym bardziej, że tam wszystkie układy są adresowane tylko z dip switcha.
    OK, oczywiście, dałem tylko stronkę dla porównania, może trochę źle to ująłem. :)
  • #6
    DjDaniel11
    Poziom 27  
    Hehe nom, poprzedni post zabrzmiał, jak byś co najmniej liczył tutaj na nobla :d A nie zwykłe układy :d

    Im większe będzie zainteresowanie tematem, tym postaram się wrzucać więcej "dodatków" ;)
  • #7
    Jogesh
    Poziom 28  
    Witam
    Bardzo się cieszę, że projekt się rozwija.
    Czy dało by się zrobić sterownik z funkcjami:
    1) 4 kanałowy,
    2) z wyświetlaczem 4 cyfrowym,
    3) 4 przyciskami,
    4) funkcją stand Allone z nie tylko dowolnym kolorem ale również kilkoma sekwencjami,
    5) możliwością sterowania jednym PARem innych,
    6) na procesorze Atmega16?

    Pozdrawiam
    S
  • #8
    perlon
    Poziom 19  
    Jogesh napisał:
    Witam
    Bardzo się cieszę, że projekt się rozwija.
    Czy dało by się zrobić sterownik z funkcjami:
    1) 4 kanałowy,
    2) z wyświetlaczem 4 cyfrowym,
    3) 4 przyciskami,
    4) funkcją stand Allone z nie tylko dowolnym kolorem ale również kilkoma sekwencjami,
    5) możliwością sterowania jednym PARem innych,
    6) na procesorze Atmega16?

    Pozdrawiam
    S

    Również zainteresował mnie ten projekt. Wprawdzie pytania są do autora, ale pytanie 2 i 3 mi wydały się nieco bez sensu. Po co wyświetlacz 4 cyfrowy? Jeżeli dobrze zrozumiałem moduł adresowy z wyświetlaczem zastępuje dipa, a DMX512 jak sama nazwa wskazuje obsługuje do 512 adresów więc 3 cyfry wystarczą. 4 przyciski? góra dół a dwa dodatkowe do czego?
    Mnie zaciekawiła przystawka do adresowania podłączana przez złącze 3pinowe. Mógłbym prosić o jakieś szczegóły. Jakiś protokół tam chodzi czy jest ograniczona przestrzeń adresowa?
  • #9
    DjDaniel11
    Poziom 27  
    Witam :)

    ad 1) 4ty kanał musiał by działać na programowym PWM, z niską częstotliwością, bez względu czy to to przy atmedze8 czy atmedze16. Możliwe by było za to zastosowanie Atmegi328 która ma 6 sprzętowych kanałów PWM i wystarczającą ilość pamięci :) Albo zastosować jakiś dedykowany driver np. coś z MBI.

    ad 2) Dołożyć jeden wyświetlacz to najmniejszy problem, pytanie jaki to ma mieć sens, poza podniesieniem kosztów :)

    3) Sterowanie czterema przyciskami, można zrobić gdy w sofcie pojawią się już wbudowane programy, sterowanie muzyką itd. Puki co, nie ma to sensu :)

    ad 4) Jak pisałem wcześniej, planuję dopisać parę sekwencji, odtwarzanych w trybie stand alone.

    ad 5) Aktualnie powstał program, jednak męczę się ze zmuszeniem sprzętowego SPI to takiej pracy jak potrzebuje standard.

    Co do przystawki, jest to praktycznie ta sama, lekko zmodyfikowana wersja. Komunikacja ma odbywać się (w praktyce jeszcze nie przetestowane) za pomocą jednokierunkowej transmisji po programowym uarcie. Dodaje schemat dla wyobrażenia sobie tego :) (I od razu wiem, że posypie się masa krytyki, czego Anody/katody sterowane bezpośrednio z wyprowadzeń itd.
    Uniwersalny sterownik DMX LED RGB [M8] - Projekt rozwijany
  • #10
    perlon
    Poziom 19  
    To ja do tej przystawki. tzn że tiny13 będzie w kółko nadawał nastawę adresu do megi? Jakąś komendą AT, ramka, etc? Może warto wykorzystać reset do jednorazowej transmisji adresu a potem ustawić TX w jakiś stan ustalony. Biedna mega będzie w kółko słuchała czy przypadkiem coś tiny nie nada. mega RX'a ma przynajmniej na jakimś przerwaniu zewnętrznym czy w poolingu?
  • #11
    Jogesh
    Poziom 28  
    Z tego co widzę w datasheet atmega16 ma 4 kanały PWM więc starczy.
    W miejscu pierwszej cyfry wyświetlało by się: 'A' podczas ustawiania dresu i 'S' podczas ustawiania stand alone, czyli wybierania wewnętrznych efektów. Przyciski menu: 1 MENU, 2 OK, 3 UP, 4 DOWN. menu wybierało by się pomiędzy 'A' i 'S'. UP DOWN wybierało by się adres/sekwencję i zatwierdzało OK. W celu ustawienia jednego koloru wybierało by się sekwencję 'kolor' (powiedzmy numer 001) i wciskało OK wtedy kolor by się sam płynnie zmieniał. Kolejne wciśnięcie OK zatrzymywało by zmianę kolorów i zapisywało wartość do eepromu.

    Zatem zastosowanie 4 przycisków i 4 wyświetlaczy ma sens. Myślę, że byłby to świetny projekt. Co o tym myślicie?
  • #12
    DjDaniel11
    Poziom 27  
    perlon, przystawka będzie nadawać cały czas adres, aby w trakcie pracy urządzenia można było zmieniać jego adres :) Jak często będzie nadawany do atmegi, to już zależy od mojej fantazji.
    Natomiast przy atmedze chce zbudować programowy bufor przychodzący, i odczytywać go w przerwaniu pochodzącym od "wirtualnego" portu uart. Choć szczerze, nie wiem jeszcze czy to wypali :)

    Jogesh, odpisałem Ci już na pw :) Atmega16 faktycznie ma 4PWM sprzętowe, choć zawsze byłem święcie przekonany, że tylko 3 (od T1 i T2). Dołożenie kolejnego wyświetlacza, to jakieś 2% zajętości programu więcej, oraz 1 pin procesora. Podobnie z dodatkowymi przyciskami. Więc to nie problem. Obawiam się tylko, że może braknąć Timerów przy obsłudze rozbudowanego menu, sterowaniu wyświetlaczem, PWM, odbiorze DMX. Odbiór dźwięku planuję zrobić wykorzystując przerwanie zewnętrzne z "przystawki audio".
  • #13
    Hetii
    Poziom 15  
    Witam i gratuluje projektu.

    Mam pytanie odnośnie realizacji samego sposobu nadawania.

    Powiedzmy, że mam parę urządzeń o adresach 0, 100, 200, 300, 400, oraz 500.

    Czy przy zaadresowaniu tych urządzeń atmega będzie nadawać puste ramki pomiędzy poszczególnymi adresami, czy też jest konkretnie adresowane finalne urządzenie ?

    Jakiś czas temu popełniłem sobie parę kostek RGBW sterowanych za pomocą uDMX ale można było zauważyć opóźnienie np gdy wysyłałem komendę wyczyszczenia wszystkich kostek.
  • #14
    DjDaniel11
    Poziom 27  
    Dzięki za miłe słowa :)
    Co do nadawania* chodziło, mi o to, że jednym urządzeniem będzie można sterować kolejne, ale w taki sam sposób jak "płyta matka". Czyli nie będę nadawał pełnych 512 kanałów a jedynie pierwsze powiedzmy 8 kanałów na podstawie jakiegoś standardu, np tak najczęściej jest to w parach LED, jednak za pomocą normalnego protokołu DMX.
    Choć zastanowić się mogę nad opcją, że będzie kodowane na "płytce matce" pod jakimi adresami znajdują się pary i wtedy wysyłanie na konkretne adresy. Wtedy kanały "pomiędzy" będą nadawane z wartościami zerowymi. Jednak to już w innej wersji na Atmedze328, nad którą pracuje :)
  • #15
    iphonek
    Poziom 15  
    W jakim programie zrobiłeś tą wizualizacje płytki drukowanej wraz z elementami?.
    Projekt bardzo fajny
  • #16
    DjDaniel11
    Poziom 27  
    WinCircuit2003 w nim też powstał projekt PCB. :) Dzięki :)
  • #17
    Justyniunia
    Poziom 32  
    Witam.

    Świetna robota, zrobił Kolega może drivery prądowe?
    Plik HEX działa elegancko, ale mam pytanie...
    Na jakiej wersji Kolega autor pisał program?
    Mam BASCOM Ver 2.0.7.8 i nie mogę skompilować kodu.
    Problem pojawia się już tu:
    Uniwersalny sterownik DMX LED RGB [M8] - Projekt rozwijany
    Czy to co podkreślone na czerwono nie powinno świecić się na niebiesko?
    Mój program chyba nie zna takich komend.

    Pozdrawiam.
  • #18
    DjDaniel11
    Poziom 27  
    Hej :)
    Pisałem w BASCOMie Ver 2.0.7.5 więc w nowszej wersji tym bardziej nie powinno być problemu ze skompilowaniem. Posiadasz oryginalny program?

    Nie, to podkreślone powinno być "czarne". Aktualnie wykonuje dużo bardziej rozbudowane sterowniki, jednak ta linia kodu pozostaje dalej bez zmian i kompiluje się bez problemu.