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

Sterownik USB do WS2812B by piotr_go

piotr_go 18 Gru 2014 14:36 10386 22
  • Sterownik USB do WS2812B by piotr_go

    Witam.
    Chciałbym zaprezentować prosty sterownik ledów WS2812B zbudowany na mikrokontrolerze LPC810. Maksymalna liczba sterowanych ledów na obecnej wersji softu to 256. Sterowanie jest realizowane sprzętowo za pomocą SPI połączonego z timerem SCT. Za komunikację z PC odpowiada układ FT230X(konwerter usb<>uart). 74HCT34 został zastosowany w celu konwersji poziomów 3,3v -> 5V. Podłączenie większej jak kilka szt. ilości ledów wymaga zastosowania dodatkowego zasilacza.

    Format pakietu: 0x50, 0x47, 0x4C, [liczba ledów - 1], dane do ledów......
    Prędkość transmisji: 3Mb/s

    Wciśnięcie przycisku włącza kompatybilność z AtmoLight (Ambilight) dostępnym w VLC.

    Sterownik USB do WS2812B by piotr_go
    Sterownik USB do WS2812B by piotr_go
    Sterownik USB do WS2812B by piotr_go
    Sterownik USB do WS2812B by piotr_go
    Sterownik USB do WS2812B by piotr_go

    Fajne! Ranking DIY
    Darmowe szkolenie: Ethernet w przemyśle dziś i jutro. Zarejestruj się za darmo.
    O autorze
    piotr_go
    Konstruktor DIY elektronika
    Offline 
    Specjalizuje się w: technika cyfrowa
    piotr_go napisał 1863 postów o ocenie 2023, pomógł 67 razy. Jest z nami od 2003 roku.
  • #2
    domints
    Poziom 13  
    Witam, ciekawy układ, prosty, acz funkcjonalny, choć nasuwa się pytanie, jak sformatowane są dane do ledów? Czy jest to system RRGGBB, czy może jakoś inaczej całość jest poukładana?
    Jest może jakaś możliwość zobaczenia tego w akcji (jakaś animacja, wideo z działania)?
    Te 3Mb/s to Mbity, MBajty, czy może MBaudy na sekundę?
    Jaka jest faktyczna przepustowość połączenia komputer-ledy, tzn z jaką częstotliwością można odświeżać całą taką matrycę?
  • #3
    piotr_go
    Konstruktor DIY elektronika
    Dane sformatowane są tak jak lecą do ledów + nagłówek na początku.
    3Mbaud/s to prędkość konwertera USB<>UART. Ledy wymagają prędkości 1Mbit/s.
    Obecna przepustowość (zakładana, nie zmierzona) to przynajmniej 0,5Mbit/s, co da około 80Hz przy 256 ledach.
    Najpierw dane są buforowane, potem wysyłane, stąd ograniczenie 256 led. Soft można by przerobić tak żeby od razu wysyłał jeżeli coś ma w buforze, wtedy zniknie ograniczenie i zwiększy się prędkość.
  • #4
    Freddy
    Poziom 43  
    domints napisał:
    Jaka jest faktyczna przepustowość połączenia komputer-ledy, tzn z jaką częstotliwością można odświeżać całą taką matrycę?
    Wystarczy przeczytać kartę katalogową.
    Cytat:
    Send data at speeds of 800Kbps.
  • #5
    piotr_go
    Konstruktor DIY elektronika
    Freddy napisał:
    Send data at speeds of 800Kbps.

    Racja, na szczęście sposób transmisji pozwala na niewielkie odchyłki więc dałem okrągły 1Mb :)

    Dodałem wideo na początku tematu ("00001.mp4").
  • #6
    Zuliczek
    Poziom 17  
    Zastanawiałem się kiedyś nad nimi w roli lampek choinkowych ;)
    Nie można by było bezpośrednio z FT230X pchać danych do ledów z pominięciem LPC?
    Może FT232H dał by radę w konfiguracji SPI?
  • #7
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #8
    krzysiek71
    Poziom 13  
    Witam.
    Nie abym reklamował czyjeś opracowania itp. ale wystarczy wpisać na YT magic led i jest cały kurs 4 lub 5 części jak wysterować te ledy.Wszystko opisane krok po kroku.Całość jest w naszym języku.Wstawiłbym link ale zapewne moderatorzy go usuną.Polecam ten kurs bo naprawdę wyjaśnia całą dosłowną magię tych ledów (ws2812b) oraz ich sterowanie.
    Pozdrawiam.
  • #9
    Freddy
    Poziom 43  
    Tak, ale tutaj piotr_go uprościł metodę sterowania.
  • #10
    piotr_go
    Konstruktor DIY elektronika
    Zuliczek napisał:
    Nie można by było bezpośrednio z FT230X pchać danych do ledów z pominięciem LPC?
    Może FT232H dał by radę w konfiguracji SPI?

    Bufor w ftdi mógł by się okazać za mały i powodować resety transmisji, ciężko powiedzieć.

    albertb napisał:
    Znacznie prostsza i tańsza opcja to pominąć FT a zastosować MCU ze wspomaganiem USB.
    Przy zastosowaniu PIC16F1454 cały hardware to procesor i kondensator blokujący i mieści się we wtyczce USB jeśli zastosujemy jakąś małą obudowę.

    LPC810 miałem akurat pod ręką i nie miałem innych pomysłów na wykorzystanie.
    Poza tym z PICami nie miałem doczynienia kiedy ten projekt powstawał. Zainteresowałem się nimi dopiero w tym miesiącu (wrzucę jakiś miniprojekt na pic10f200 na elektrodę jak przyjdą płytki).


    Na zdjęciach i na filmiku diody są dość mocno ściemnione przez co kolorowe tło napisów jest słabo widoczne. W rzeczywistości jest OK. Na pełnej mocy za to nieźle dają po oczach. Nagrał bym filmik z dyfuzorem położonym na ledach ale mi gdzieś zniknął :(


    =================== update ==================
    Był bym zapomniał. Wciśnięcie przycisku włącza kompatybilność z AtmoLight (Ambilight) dostępnym w VLC.
  • #11
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #12
    Seba_smd
    Poziom 15  
    krzysiek71 napisał:
    Witam.
    Nie abym reklamował czyjeś opracowania itp. ale wystarczy wpisać na YT magic led i jest cały kurs 4 lub 5 części jak wysterować te ledy.Wszystko opisane krok po kroku.Całość jest w naszym języku.Wstawiłbym link ale zapewne moderatorzy go usuną.Polecam ten kurs bo naprawdę wyjaśnia całą dosłowną magię tych ledów (ws2812b) oraz ich sterowanie.
    Pozdrawiam.


    Prosimy o link w celu edukacyjnym. Szukając nie znalazłem kursów.
  • #13
    kukid1
    Poziom 11  
    Seba_smd napisał:
    krzysiek71 napisał:
    Witam.
    Nie abym reklamował czyjeś opracowania itp. ale wystarczy wpisać na YT magic led i jest cały kurs 4 lub 5 części jak wysterować te ledy.Wszystko opisane krok po kroku.Całość jest w naszym języku.Wstawiłbym link ale zapewne moderatorzy go usuną.Polecam ten kurs bo naprawdę wyjaśnia całą dosłowną magię tych ledów (ws2812b) oraz ich sterowanie.
    Pozdrawiam.


    Prosimy o link w celu edukacyjnym. Szukając nie znalazłem kursów.

    wpisz " magic LED Kardaś" :)
    tu part 1, pozdrawiam :)
    https://www.youtube.com/watch?v=nj_vZTQAO7k
  • #14
    krzysiek71
    Poziom 13  
    Witajcie.
    To właśnie ten kurs p.Mirka Kardasia.
    Wyjaśnia dosadnie co i z czym się je....;).
    Pozdrawiam.
  • #15
    xdf0r
    Poziom 13  
    Mógłbyś opisać dokładniej ramkę danych?
  • #16
    piotr_go
    Konstruktor DIY elektronika
    xdf0r napisał:
    Mógłbyś opisać dokładniej ramkę danych?

    PDF ma 5 stron, tak ciężko zajrzeć?
    O samej transmisji jest może 1,5 strony z czego 90% to obrazki.

    W skrócie: wysyłasz po 24bity (impuls 0.4us = 0, 0.8us = 1, częstotliwość ~800kHz) na diodę po czym robisz pauzę żeby zacząć od początku.
  • #17
    Hetii
    Poziom 15  
    Projekt fajny, tylko zastanawia mnie czy ten lpc jest ogólnodostępny.

    Sam pewnie użył bym sprzętowego usb.

    Parę miesięcy temu kontaktowałem się z przedstawicielami tej firmy i z tego co mi wiadomo to mają wprowadzić diody z wbudowanym kontrolerem DMX i różnicową linią do transmisji danych.

    P.S.
    WS2812 świetnie nadawały by się w roli wyświetlacza widmowego.

    Pozdrawiam.
  • #18
    piotr_go
    Konstruktor DIY elektronika
    LPC810 to najmniejszy problem (mają w farnellu). 74hct34 (ostatecznie 74hct04 po zmianie w sofcie) w wersji 2 bramkowej jest trudniejszy do zdobycia.
  • #19
    michalko12
    Specjalista - Mikrokontrolery
    albertb napisał:
    Znacznie prostsza i tańsza opcja to pominąć FT a zastosować MCU ze wspomaganiem USB.
    Przy zastosowaniu PIC16F1454 cały hardware to procesor i kondensator blokujący i mieści się we wtyczce USB jeśli zastosujemy jakąś małą obudowę.

    Do tej pory wszyscy wszystko chcieli robić na 555, teraz jeden procesor lepiej zastąpić innym. Ciężko nadążyć za tymi nowymi trendami...

    piotr_go napisał:
    Za komunikację z PC odpowiada układ FT230X(konwerter usb<>uart).

    Jakbyś jeszcze napisał, że dzięki temu układowi mamy rozwiązany problem z ISP (dla niewtajemniczonych -> ISP = programowaniem procesora w układzie czyli nie trzeba żadnych programatorów ) to może co niektórzy zrozumieliby dlaczego warto zainwestować w takie rozwiązanie, a nie inne.

    piotr_go napisał:
    74hct34 (ostatecznie 74hct04 po zmianie w sofcie) w wersji 2 bramkowej jest trudniejszy do zdobycia.

    Można zastosować jeden tranzystor BSS138, tylko wtedy trzeba negować sygnał na wyjściu procesora.

    piotr_go napisał:
    Sterowanie jest realizowane sprzętowo za pomocą SPI połączonego z timerem SCT.

    Ja to wykonałem na UART, ale to nie ma znaczenia, ważne że działa. Szkoda, że procesor nie ma DMA i FIFO na SPI i UART, dopiero wersje LPC82x mają DMA, ale są jeszcze niedostępne w farnellu.
    Rozumiem, że SPI spiąłeś z SCT poprzez "wirtualne" porty?

    piotr_go napisał:

    LPC810 to najmniejszy problem (mają w farnellu).

    Ostatnio stało się coś dziwnego. Procesory te zdrożały o jakieś 100%, ale tylko w tej obudowie. Pokręciło kogoś nieźle.
  • #20
    piotr_go
    Konstruktor DIY elektronika
    michalko12 napisał:
    Jakbyś jeszcze napisał, że dzięki temu układowi mamy rozwiązany problem z ISP (dla niewtajemniczonych -> ISP = programowaniem procesora w układzie czyli nie trzeba żadnych programatorów ) to może co niektórzy zrozumieliby dlaczego warto zainwestować w takie rozwiązanie, a nie inne.

    Zgadza się, ISP włączane przyciśniętym przyciskiem przy włączaniu zasilania.

    michalko12 napisał:
    dopiero wersje LPC82x mają DMA, ale są jeszcze niedostępne

    Szkoda tylko że zmarnowali 2 piny na napięcie odniesienia i nie da się na nich nic innego włączyć co czyni je niekompatybilnymi z lpc81x :(

    michalko12 napisał:
    Rozumiem, że SPI spiąłeś z SCT poprzez "wirtualne" porty?

    Dokładnie, mam nadzieję że nie jest to tylko tymczasowy "feauture" i nie usuną tej możliwości w przyszłych prockach, mogli by ją nawet dodać do tych co są wszystkie piny wyprowadzone.
  • #23
    michalko12
    Specjalista - Mikrokontrolery
    I ja ogarnąłem to na SCT, ale przepchanie tego przez UART było większym wyzwaniem.

    Sprawdziłem przy okazji czy SWM nie ma przypadkiem więcej tych wirtualnych portów, niestety na 17 kończy się. Mam też opracowany transkoder SPI->WS2812 na jednym TTL więc w razie czego SCT można wykorzystać do innych funkcji.

    Jak znajdę chwilę czasu to gdzieś opiszę obydwa rozwiązania.
    Poniżej dla zachęty trochę kodu dla tych którzy będą chcieli powalczyć z LPC810 i WS2812B

    Kod: c
    Zaloguj się, aby zobaczyć kod