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.

Sterownik oświetlenia - Sterownik diod RGB

phrozen 12 Mar 2010 05:50 25575 24
  • Sterownik oświetlenia - Sterownik diod RGB
    Witam kolegów
    Jest to moja pierwsza konstrukcja jaką chciałbym zaprezentować na łamach DIY - mam nadzieję że się spodoba.

    Przedstawiam zbudowany przeze mnie sterownik 40 diod RGB. Konstrukcja sterownika jest dość prosta, na płytce mamy garść elementów m.in:
    -Stabilizator LM7805 + radiatorek + kondensatory filtrujące napięcie
    -Mikrokontroler Atmega8,
    -ULN2803AG,
    -Kwarc 16Mhz,
    -Na taśmie podłączony układ MAX232,

    Sterownik oświetlenia - Sterownik diod RGB Sterownik oświetlenia - Sterownik diod RGB Sterownik oświetlenia - Sterownik diod RGB

    Sterownik ma sterować w sumie 40 diodami RGB (diody na wspólnych żyłach). Sterowane diody będą znajdować się w kasetonie podsufitowym w łazience - będą schowane tak by ich nie było widać a ładnie podświetlały sufit.

    Jako założenia podczas prac nad projektem przyjąłem:
    -Możliwość podłączenia 40 diod RGB,
    -Zdalne sterowanie przez program z panelu dotykowego,
    -Różne programy oświetleniowe w tym:
    --Tryb PWM (stopniowe przechodzenie kolorów),
    --Możliwość zaświecenia pojedynczego koloru diody - z wysterowaniem jej jasności,
    --Światła policyjne,
    --Wszystkie kolory po kolei,
    --Możliwość zmiany prędkości efektów (czasów przechodzenia między kolorami, migania itp)
    -Możliwość podłączenia różnych diod dostępnych na rynku (w układzie znajduję się inna dioda niż ta która znajdzie się w kasetonie - wykorzystywałem ją podczas testów)
    -Możliwość awaryjnego sterowania za pomocą przycisków,

    Na płytce niewykorzystane porty wyprowadziłem na Goldpiny - ze względu na to iż w niedalekiej przyszłości prawdopodobnie zostanie dodany czujnik zmierzchowy i czujnik temperatury (jako gadżet).





    W sterowniku wykorzystałem układ ULN2803 (uprzedzam pytania czemu nie tranzystory itp. ) do sterowania diodami ze względu na to że:
    -Mam ich od diabła ;]
    -Bardzo proste podłączenie,
    -Szybka wymiana w przypadku uszkodzenia (zastosowałem podstawkę),
    -Max. pobór prądu 500mA (na wszelki wypadek w ULN zostały zmostkowane kanały przez co wydajność prądowa wzrosła do 1000mA - z dwóch kanałów)

    Płytkę sterownika wykonałem metodą termotransferową, płytka została pocynowana chemicznie. Na zdjęciach pokazana jest płytka przed i po cynowaniu.
    Następnie za pomocą wiertarki stołowej zostały powiercone otwory, przylutowane elementy no i w końcu wgrany program sterownika.
    Sterownik oświetlenia - Sterownik diod RGB Sterownik oświetlenia - Sterownik diod RGB Sterownik oświetlenia - Sterownik diod RGB Sterownik oświetlenia - Sterownik diod RGB Sterownik oświetlenia - Sterownik diod RGB


    Program znajdujący się w sterowniku został napisany w Bascomie, natomiast program po stronie komputera w C++ Builderze - Poniżej screen z uruchomionego programu sterującego.

    Sterownik oświetlenia - Sterownik diod RGB

    Największe problemy podczas prac nad sterownikiem miałem z użyciem wyjścia OCR2 w atmedze 8. Cały czas coś się "kiełbasiło" na szczęście odpowiedź znalazłem na elektrodzie :] Mój problem wynikał z nieprawidłowo zadeklarowanego Timera2, po jego poprawieniu wszelkie problemy znikły. Dla potomności zostawiam poprawną konfigurację Timer2 - tak aby móc sterować PWMem z wyjścia OCR2.

    Code:
    Config Timer1 = Pwm , Prescale = 1 , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
    
    Config Timer2 = Pwm , Pwm = On , Prescale = 1 , Compare Pwm = Clear Down

    'Wyjścia PWM:
    Pwm1a = 0
    Pwm1b = 0
    Ocr2 = 255



    Ze względu że jest to projekt w fazie rozwojowej nie udostępniam kodów źródłowych ani schematów - jednakże w razie pytań służę wszelką pomocą.

    Film z działania sterownika (niestety troszkę słabo widać zmiany kolorów):

    Link



    Zgodnie z obietnicą z jednych postów przedstawiam kilka zdjęć już podpiętych diod z sufitu łazienki do sterownika. Zdjęcia są trochę rozmyte ze względu na to iż robiłem je z ręki. Efekt w rzeczywistości jest nieporównywalnie lepszy. W czasie robienia zdjęć była podłączona tylko 1 z 4 listw podsufitowych.

    Zdjęcia z testów w łazience (od lewej przed włączeniem i z włączonymi kolorami):
    Sterownik oświetlenia - Sterownik diod RGB Sterownik oświetlenia - Sterownik diod RGB Sterownik oświetlenia - Sterownik diod RGB Sterownik oświetlenia - Sterownik diod RGB


    Pozdrawiam
    Michał "Smutny" Gałka


    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
  • Mitronik
  • #2 12 Mar 2010 10:01
    Duch__
    Poziom 31  

    Witam. Pomysł ciekawy jednak... po co w toalecie efekt policyjny :D :?:
    Widać po zdjęciach płytki że trochę za długo odbijałeś płytkę, bo ci się toner lekko rozlał. Na tym zdjęciu to doskonale widać. Dodatkowo zrobiła ci się przerwa przy złączu w prawym dolnym rogu zdjęcia.

    Mógłbyś coś więcej opisać o sterowaniu z panelu dotykowego? Co to za panel, czym sterowany?

    Pozdrawiam Duch__

  • #3 12 Mar 2010 11:22
    DmZ
    Poziom 17  

    docelowo zamiast rs232 zastosuj rs485. jesli chcesz tym stertować z pc to kup/zrob przejsciowke rs485-usb.
    Ja sie kiedys wzbranialem przed rs485 ze wzgledu na "prostote", jednak poza biurko ten (232)standard sie nie nadaje. 2m kabla i transmisja bedzie pełna błędów/wolna.

  • #4 12 Mar 2010 14:44
    phrozen
    Poziom 20  

    Duchu ty mój up...... kolego :]
    Jako panel dotykowy zostanie zastosowany 9 calowy monitor dotykowy z allegro (ze względu na regulamin nie podaje linku - jak coś to pw).

    Przykładowy panel dotykowy (będzie wykorzystany bardzo podobny):
    Sterownik oświetlenia - Sterownik diod RGB

    Do panelu będzie podłączony mały komputerek typu AllInOne - wszystko zintegrowane z płytą główną, dysk twardy w postaci karty CF.
    Efekty np policyjny są dodane jako zupełny bajer - klient sobie tak zażyczył to tak ma, możliwe że dojdą inne efekty jak już podłącze wszystko u niego.


    Odnośnie transmisji, docelowo mam zamiar wstawić rs485 - dlatego max232 jest na kablu a nie na bezpośrednio na płytce. Sprawdzałem transmisje na taśmie takiej jak mam przy złączu ISP na odległości 4m i wszystko jest jak najbardziej cacy. Ze względu na to że sterownik będzie się znajdował w specjalnie do tego przygotowanej szafie obok komputerka w łazience problem długości kabla odpada, jednakże testowałem już rs485 i w niedalekiej przyszłości trafi on do projektu.

    Bardzo możliwe że na dniach dodam zdjęcia z łazienki od klienta - jak się prezentuje sterownik w akcji.

  • Mitronik
  • #5 12 Mar 2010 15:04
    profesorek_96
    Poziom 16  

    Przepraszam że zbaczam z tematu ale jak się nauczyłeś c++?
    Jakich książek lub materiałów użyłeś?
    I jak długo trwała nauka?

  • #6 12 Mar 2010 15:48
    phrozen
    Poziom 20  

    C++ liznąłem trochę w liceum (jestem po mat-infie) a dalszą zabawę z C++ miałem w czasie studiów na Politechnice Opolskiej (Automatyka i Robotyka). Co prawda głównie bawiliśmy się w statystykę i pisanie programów z dziedziny systemy wizyjne (obróbka grafiki) to ta wiedza się przydała, a że jestem w głównej mierze samoukiem wiele rzeczy nauczyłem się podczas zabaw z pisaniem programów.

    Do samego C++ polecam książki Symfonia C++, odnośnie pisania w Builderze to jako przydatny link polecam:
    http://cyfbar.republika.pl/api.html oraz serwis:
    http://4programmers.net

  • #7 12 Mar 2010 15:54
    manekinen
    Poziom 29  

    Nie widzę tylko gdzie tu się odbywa sterowanie 40 diodami RGB? Sterujesz jednym wyjściem czyli można powiedzieć że jedną diodą RGB - a ile sobie ich podłączysz równolegle to od tranzystorów w ULN zależy ;)

    Dla przykładu, tutaj:
    https://www.elektroda.pl/rtvforum/viewtopic.php?t=1249129
    sterownik 40 diod RGB ;)

  • #8 12 Mar 2010 15:54
    dir3ctor
    Poziom 27  

    Robisz jeden błąd - rezystor nie powinien być na wspólnej katodzie (czy też anodzie - w zależności od rodzaju diody RGB), a na każdej anodzie z osobna. Zauważ że każdy kolor potrzebuje innego prądu do działania, poza tym w tym momencie czy świeci R, RG czy RGB, to zawsze płynie stały prąd. Oznacza to że dość szybko mogą ci paść diody.

    Poza tym zauważ jak jasno świeci B w porównaniu z R - dając osobny rezystorek dla każdego koloru będziesz mógł wykalibrować sobie kolory tak, aby jeden drugiego nie przygłuszał.

    Mam nadzieję że jakoś w miarę zrozumiale to opisałem.

  • #9 12 Mar 2010 16:00
    phrozen
    Poziom 20  

    manekinen napisał:
    Nie widzę tylko gdzie tu się odbywa sterowanie 40 diodami RGB? Sterujesz jednym wyjściem czyli można powiedzieć że jedną diodą RGB - a ile sobie ich podłączysz równolegle to od tranzystorów w ULN zależy ;)

    Dla przykładu, tutaj:
    https://www.elektroda.pl/rtvforum/viewtopic.php?t=1249129
    sterownik 40 diod RGB ;)


    W opisie założeń napisałem że sterowanie będzie się odbywać dla wszystkich diod razem (z jednych liniii). Ze względu na projekt oświetlenia w łazience i życzeń klienta diody są spięte razem tak aby wszystkie świeciły razem. Fajnie by było osiągnąć taki efekt jak z twojego linku (zresztą czytałem o tym podczas tworzenia sterownika) jednakże klient chciał tak a nie inaczej, mam nadzieję że u siebie będę mógł tak kiedyś zrobić.

    dir3ctor napisał:
    Robisz jeden błąd - rezystor nie powinien być na wspólnej katodzie (czy też anodzie - w zależności od rodzaju diody RGB), a na każdej anodzie z osobna. Zauważ że każdy kolor potrzebuje innego prądu do działania, poza tym w tym momencie czy świeci R, RG czy RGB, to zawsze płynie stały prąd. Oznacza to że dość szybko mogą ci paść diody.

    Poza tym zauważ jak jasno świeci B w porównaniu z R - dając osobny rezystorek dla każdego koloru będziesz mógł wykalibrować sobie kolory tak, aby jeden drugiego nie przygłuszał.

    Mam nadzieję że jakoś w miarę zrozumiale to opisałem.


    Dziękuję za uwagę :) Jak widać po godzinie wstawienia już nie myślałem do końca trzeźwo - zgadzam się z tym, że powinny być rezystory na każdy kanał - u klienta na listwach już są zrobione.

  • #10 12 Mar 2010 16:39
    dir3ctor
    Poziom 27  

    Tak coś mi się wydaje że albo masz bardzo kasiastego albo bardzo głupiego klienta. Przecież zamiast ładowania tam komputera z ekranem dotykowym, to można to zrobić na mikroprocku. Mało tego, nawet obsługę kolorowego LCD z warstwą dotykową też można by na uP odpalić :-)

    Moich uwag tyle. Ciekawi mnie jak się to będzie prezentowało po zamontowaniu.

  • #11 12 Mar 2010 17:06
    ShEvU_elektro
    Poziom 25  

    W jakim programie projektujesz płytki?

  • #12 12 Mar 2010 17:26
    phrozen
    Poziom 20  

    dir3ctor napisał:
    Tak coś mi się wydaje że albo masz bardzo kasiastego albo bardzo głupiego klienta. Przecież zamiast ładowania tam komputera z ekranem dotykowym, to można to zrobić na mikroprocku. Mało tego, nawet obsługę kolorowego LCD z warstwą dotykową też można by na uP odpalić :-)

    Moich uwag tyle. Ciekawi mnie jak się to będzie prezentowało po zamontowaniu.


    LCD będzie zajmowało się nie tylko sterowaniem tych diodek, również będzie sterował oświetleniem żarówkowym, czujnikami temperatury, czujnikami wilgotności, barierami świetlnymi itp i kilkoma innymi rzeczami. Klient chce wyświetlacz LCD bo lubi bajery - nie mój wybór tylko jego ;]

    ShEvU_elektro napisał:
    W jakim programie projektujesz płytki?

    Schemat zrobiony w programie Eagle + dodatek PovRay do wygenerowania obrazka 3D.

  • #13 12 Mar 2010 18:02
    popiol667
    Poziom 15  

    Na Atmega128 możesz zrobić programowy PWM na Timerze i wykorzystać jako wyjścia PWM wszystkie dostępne nogi. Na dowolnej Atmedze taktowanej 8MHz i posiadającej odpowiednią ilość nóg możesz zrobić sterownik DMX 32-kanałowy. Mowa oczywiście o PWM rzędu 120Hz max, do LED wystarczy :) i "szkolnych" procedurach w C, bez żadnych strasznych optymalizacji czy wstawek assemblerowych. Na diabła Atmega8 do czegoś takiego? Wystarczy Attiny2313... Wiem, czepiam się, moje zboczenie, ale przy 500 sztukach to czy wpakujesz kwarc i większy procesor (droższy) ma już wymierne znaczenie (cena). Układ można by wpakować w Attiny13 - 1 noga na przyciski, 1 do RX (programowego) i 3 x PWM, bez kwarcu - sprawę załatwia wysłanie bajtu kalibrującego o postaci ramki 010101 - układ może z "automatu" dostosować się do dowolnej prędkości transmisji...
    przyciski z wykorzystaniem ADC i dzielnika napięcia :).

    Moją wypowiedź proszę potraktować ulgowo - bynajmniej nie krytykuję, a tylko zrzędzę :) - ogólnie konstrukcja bardzo ładna i starannie wykonana

    A teraz już bez zrzędzenia - warto zaimplementować konwersję z modelu HSV na RGB - możesz sobie regulować jasność świecenia bez zmiany barwy.

    Pozdrawiam!

  • #14 13 Mar 2010 01:20
    phrozen
    Poziom 20  

    Witaj,
    Atmege 8 wykorzystałem ze względu na to że je mam w tej chwili, attiny nie miałem więc taki a nie inny procesor - a ze względu że dla klienta 5 zł w te czy we wte wszystko jedno to nie miałem ochoty gibać do elektronicznego po inny uP ;]
    (Odnośnie programowego Timera - w 1 wersji taki właśni był wgrany sposób sterowania diodami ale się nie do końca sprawdzał dlatego przeszedłem na sprzętowy PWM)

    BTW.
    Każdy przydatny komentarz wnosi poprawki do kolejnych wersji sterownika - nie mam nic przeciwko konstruktywnej krytyce/zrzędzeniu :)

  • #15 13 Mar 2010 01:24
    markovip
    Poziom 34  

    Co to jest "dióda"? Popraw w filmiku. ;)

  • #16 13 Mar 2010 03:33
    phrozen
    Poziom 20  

    Ehhh a to się porobiło, do tej pory byłem przekonany że dioda odmienia się w liczbie mnogiej na "diód" a nie diod, przynajmniej się nauczyłem czegoś nowego :)
    (Filmu już nie będę poprawiał, jednakże poprawiłem jego nazwę)
    Pozdrawiam!

  • #17 13 Mar 2010 21:34
    dominon
    Poziom 18  

    Fajny efekt, ale co do płytki to przydało by się żeby miała pole masy:

    - Po pierwsze wygląda lepiej (ale to może być tylko moje odczucie).

    - Po drugie oszczędza się wytrawiacz.

    - A trzecie i chyba najważniejsze, nie ma się plątaniny ścieżek które czasem muszą iść miedzy nóżkami układów. Przy tak dużej powierzchni dookoła, połączenia mogły by spokojnie się zmieścić w formie "polygon-u" i panował by większy porządek.

  • #18 14 Mar 2010 00:45
    phrozen
    Poziom 20  

    dominon napisał:
    Fajny efekt, ale co do płytki to przydało by się żeby miała pole masy:

    - Po pierwsze wygląda lepiej (ale to może być tylko moje odczucie).

    - Po drugie oszczędza się wytrawiacz.

    - A trzecie i chyba najważniejsze, nie ma się plątaniny ścieżek które czasem muszą iść miedzy nóżkami układów. Przy tak dużej powierzchni dookoła, połączenia mogły by spokojnie się zmieścić w formie "polygon-u" i panował by większy porządek.


    Witaj
    Wiem jak robić pola masy w Eaglu (dzięki duchowi - parę rzeczy mi kiedyś podpowiedział) jednakże mam problem później z termotransferem, papier lub toner jaki mam nie nadaje się do dużych pól masy bo papier mimo bardzo długiego moczenia nie chce zejść z dużych pól masy. Jak znajdę sposób na to by przy obecnym papierze/tonerze mi wychodziły jak należy to na pewno je będę robił bo znacząco usprawniają wytrawianie.
    Pozdrawiam!

  • #19 14 Mar 2010 14:53
    dominon
    Poziom 18  

    Mogę Ci polecić papier kredowany o gramaturze 200. W moim przypadku zdał egzamin bardzo dobrze. No i ważne jest żeby zacząć odmaczać papier od płytki w ciepłej wodzie (np: z płynem do mycia naczyń) jak jest jeszcze dobrze ciepła (nie gorąca). Sprawdziłem to kilkukrotnie i wtedy papier lepiej odchodzi a do tego jest mniejsza szansa że odejdzie nam ze ścieżką oczywiście po odpowiednim wygrzaniu. To tyle z moich doświadczeń w tym temacie, może komuś się przydadzą.

  • #20 16 Mar 2010 11:39
    narasta
    Poziom 21  

    Czytając tytuł "Sterownik oświetlenia - Sterownik 40 diod RGB" pomyślałem, "o fajnie pewnie gość zrobił sterownik np do matrycy gdzie sterowana jest każda dioda z osobna" a tu się okazuje to zwykły sterownik dla jednej diody RGB.

    To co mi się podoba, to że fajnie to zintegrowałeś driver z aplikacją PC i to jeszcze z graficznym api. :)

  • #21 08 Sie 2010 11:14
    profesorek_96
    Poziom 16  

    Jakich bibliotek użyłeś do pisania programu w c++. Czy do kompa podłączasz przez wtyczkę com czy usb?

  • #22 09 Sie 2010 16:02
    dominon
    Poziom 18  

    profesorek_96 napisał:
    Jakich bibliotek użyłeś do pisania programu w c++. Czy do kompa podłączasz przez wtyczkę com czy usb?


    Podłączenie do kompa widoczne jest na zdjęciach jest to konwerter / symulator portu com pod USB. Czyli po podłączeniu pod USB w komputerze urządzenie wykrywane jest jako dodatkowy port COM.

  • #23 02 Wrz 2010 14:30
    profesorek_96
    Poziom 16  

    Jakich bibliotek Pan użył?

  • #24 08 Wrz 2010 17:17
    phrozen
    Poziom 20  

    Witam,
    Wykorzystałem komponent ComPort do obsługi RS232 - bardzo fajny i wygodny w użyciu.
    Do laptopa miałem podłączoną przejściówkę USB<->RS232 która bardzo fajnie emuluje fizycznie port RS232 w komputerze i nie miałem z nią żadnych problemów z obsługą pod C++Builderem.
    Pozdrawiam
    Smutny

  • #25 14 Mar 2011 21:21
    phrozen
    Poziom 20  

    profesorek_96 napisał:
    Czy mógłby Pan zamieścić schemat i wzór pcb konwertera napięć rs232?
    Dziękuje.


    Lekkie lenistwo się kłania czyż nie?
    Pełno jest schematów konwerterów w internecie, choćby warto zajrzeć do noty układu MAX232 gdzie wszystko jest pięknie rozrysowane.

    W razie dalszego "lenistwa" polecam stronę kolegi mirleya:
    Link
    Na której wszystko jest pięknie opisane odnośnie konwertera wraz z schematami płytek do wytrawienia.

    Pozdrawiam
    phrozen