Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Konwerter PWM -> analog -> WS281x

Marek_Ertew 22 Apr 2017 12:36 7041 0
  • Konwerter PWM -> analog -> WS281x
    Konwerter powstał z potrzeby chwili. Po pozytywnych wrażeniach z taśmami RGB i systemem MiLight postanowiłem zaszaleć i kupiłem taśmę typu WS2811 12V. O ile sterowanie taśmą (uC + soft) nie stanowi dla mnie problemu, to niestety przejechałem się na pilocie. Poniższy projekt stanowi prowizoryczne obejście tego problemu. Oczywiście całość będzie działać z dowolnym sterownikiem taśm LED z wyjściem PWM, MiLight podaję jako przykład.

    Krótki wstęp teoretyczny:
    Spoiler:
    Ekosystem MiLight zawiera 3 podstawowe piloty:
    1. Mono / CCT - regulacja jasności i temperatury światła białego
    2. RGB / RGBW - wybór odcienia i jasności (bez nasycenia) lub jasności światła białego
    3. RGB + CCT - wybór temperatury i jasności światła białego lub odcienia i jasności RGB lub możliwość miksowania biały + RGB.

    Każdy pilot ma dedykowane odbiorniki (sterownik taśm LED i żarówki) jednak pewne kombinacje pomiędzy sterownikiem a pilotem są dozwolone. O ile odbiorniki RGB+CCT działają wyłącznie z pilotem 3, to eksperymenty pokazują że odbiorniki RGB i RGBW bezproblemowo działają z pilotami 2 i 3, a pilot 3 daje znacznie większe możliwości sterowania niż dedykowany pilot 2.

    Ponieważ ceny obu pilotów są zbliżone, wybrałem pilot który daje większe możliwości.


    Dlaczego nie użyję pilota MiLight i odbiornika 2.4GHz?
    W internecie krąży kilka niezależnych projektów opisujących protokół i schemat ramki danych w systemie MiLight. Większość z nich opiera się na Arduino (AVR) i układach radiowych nRF24L01. Niestety wszystkie projekty obsługują stary standard RGBW a nikomu jeszcze nie udało się rozszyfrować nowego protokołu RGB+CCT.
    Oczywiście w najbliższym czasie planuję zająć się hakowaniem tego nowego protokołu. Tymczasem stworzyłem obejście problemu w postaci tego konwertera. Urządzenie pobiera sygnał z wyjść sterownika RGB i przekazuje go dalej na taśmę RGB typu WS2811 lub WS2812.


    Zasada działania:
    -> Kontroler taśmy RGB posiada 3 wyjścia typu otwarty dren. Wraz z rezystorem 270Ω podciągającym do 5V tworzą 3 wyjścia zbliżone do standardu TTL.
    -> Rezystor 2k7 i kondensator 22µF tworzą prosty filtr dolnoprzepustowy wygładzający sygnał.
    -> Co kilkadziesiąt milisekund mikrokontroler odczytuje 3 sygnały analogowe i po niewielkiej obróbce wysyła je do układów WS281x umieszczonych na taśmie LED.
    Żeby taśma 'pikselowa' odróżniała się od klasycznej RGB, w każdym kroku sygnał jest przesuwany o jeden piksel dalej a odczytane wartości trafiają na początek taśmy. W połączeniu z opóźnieniem generowanym przez obwód RC daje to dodatkowy efekt dynamiczny.

    Oto schemat oraz kod programu, napisany na szybko w Arduino.

    Konwerter PWM -> analog -> WS281x



    Edit
    Code: c
    Log in, to see the code



    Prezentacja prototypu:
    Konwerter PWM -> analog -> WS281x Konwerter PWM -> analog -> WS281x Konwerter PWM -> analog -> WS281x Konwerter PWM -> analog -> WS281x
    Oraz film demonstrujący działanie konwertera - porównanie z taśmą RGB i odbiornikiem RGBW.

    https://filmy.elektroda.pl/93_1492617607.mp4


    Możliwości rozwoju:
    -> Dodanie buforów wejściowych umożliwiających jednoczesne podłączenie do sterownika zwykłej taśmy RGB 12/24V i konwertera.
    -> Przeróbka programu tak by odczytywał wygnały PWM zamiast uśrednionych wartości analogowych.
    -> Dodanie odbiornika 2.4GHz i obsługi pilotów MiLight RGBW, a w przyszłości może RGB+CCT.
    -> Miniaturyzacja urządzenia i przesiadka na mniejszy mikroprocesor np. ATTiny85 na płytce Digispark lub Trinket.


    Ostatnią modyfikację chciałem wykonać ale odpuściłem ponieważ nie mam w zapasach gołego procesora ATTiny85 a płytka prototypowa którą dysponuję ma tylko jeden wolny kanał ADC (jeden zabiera reset, pozostałe dwa są zepsute przez rezystory i diody zenera przyłączone do USB).

    Cool! Ranking DIY
    Can you write similar article? Send message to me and you will get SD card 64GB.
    About Author
    Marek_Ertew
    Level 16  
    Offline 
    Marek_Ertew wrote 151 posts with rating 157, helped 9 times. Been with us since 2008 year.