Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 25 kwi 2024, o 01:51


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 
Autor Wiadomość
PostNapisane: 27 cze 2016, o 22:57 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Witam

Niedawno dostałem w prezencie taśmę LED. Diody podobne do WS2812 ale nieco inne.
Nazywają się APA102C i poza bardzo podobnym wyglądem mocno różnią się od WS'ów.
Pierwszą, główną różnicą jest sposób sterowania. W WS'ach mamy własnościowy protokół NZR, używający tylko jednej linii danych.
APA102 używa okrojonego SPI... Tak właśnie SPI. Czyli mamy linię danych (MOSI) oraz linię zegarową (SCK).
Na pierwszy rzut oka to komplikacja. Ale za tym idą poważne implikacje.
Otóż AP102 kompletnie jest niewrażliwa na zaburzenia czasów podczas transmisji. W WS'ach jest to kluczowe zagadnienie i ich protokół jest dość wymagający. Pierwszą rzeczą jest to, że nie można ani na chwilę (dłuższą niż 10 us) przerwać transmisji, więc na czas wykonywania transmisji do taśmy led muszą zostać wyłączone przerwania.
APA102 nie ma na tym polu problemów. Ponieważ dane z linii MOSI są zapisywane do rejestru tylko w chwili gdy na wejściu SCK pojawia się zbocze narastające. Powoduje to, że można przerwać transmisję w trakcie a za chwile ją wznowić. Co więcej, możemy nawet w trakcie zmieniać częstotliwość pracy SPI.
Co więcej. Częstotliwość sygnału SCK może być właściwie dowolna. Ograniczona rozmywaniem się sygnału przez działanie pojemności pasożytniczych. Ostatnie testy wykonywałem na SCK pracującym z częstotliwością 10 MHz i pasek radzi sobie z tym doskonale. W sieci znajdują się doniesienia o poprawnym sterowaniu diod przy częstotliości SCK nawet 60 MHz i to przy logice 3,3 V, Np. Sterowanie z Raspberry czy BeagleBone lub innych ARMOwych systemów używających systemu operacyjnego.

Kolejną rzeczą, która jest novum w tych diodach to protokół trasmisji.
WSy używały 24 bitowej reprezentacji w organizacji GRB.
APA używa 32 bitowej w kolejności BGR. Kolory są kodowane na 3 bajtach ale pozostaje nam jeszcze jeden bajt (pierwszy w kolejności).
Jego funkcją jest oznaczenie początku transmisji danych pojedynczej diody, (trzy najstarsze bity ustawione na 111) oraz zawiera na najmłodszych 5 bitach (32 wartości) ustawienie globalnej luminancji diody. Mamy więc normalnie sterowane 256 poziomów PWM dla każdego koloru składowego, oraz globalnie dla całej diody jeszcze 5 bitową reprezentacje jasności ogólnej jednocześnie dla 3 kanałów.
Różnice w protokole jednak się na tym nie kończą.
Otóż paczka danych (komplet ramek dla całej taśmy) też ma oznaczony początek i koniec. Dzięki temu możliwa jest całkowita odporność na opóźnienia w transmisji.
Paczka danych musi zaczynać się od 4 bajtów o wartości zero następnie dopiero możemy wysyłać do diod kolejne 4 bajtowe ramki opisane powyżej.
Koniec ramki to nieco inna sprawa. Dokumentacja mówi o wysłaniu 4 bajtów złożonych z samych jedynek, jednak nie jest to do końca prawda...
Tak na prawdę wartości bitów ramki końcowej mogą być dowolne. Ja wysyłam zera.... Natomiast liczba bitów końca jest nieco źle opisana w dokumentacji. Nalezy bowiem wysłać tyle bitów ile wynosi liczba diod w pasku podzieloną przez dwa.
Dziwne... Ale wynika to ze sposobu działania tych diod. Każda dioda na swoim wyjściu neguje sygnał zegarowy, co powoduje przesuniecie się zbocza narastającego o pół okresu. Zadaniem ramki końcowej jest wysłać tyle impulsów zegarowych, żeby rejestry przesuwające w sterownikach diod mogły wprowadzić wszyskie ramki danych. Wydaje się to może zawiłe i jakby sztucznie skomplikowane, jednak ma to poważne uzasadnienie. Dzięki rozwiązaniu z negacją nie ma potrzeby odtwarzania przez sterowniki sygnału zegarowego co gwarantuje niezależność pracy w zakresie różnych częstotliwości sygnału zegarowanego.

Ciekawostką jest zawrotna szybkość PWM - ponad 19 kHz !

Minusem tych diod jest ich cena (nawet 5 większa niż WS'ów), oraz słaba dostępność w Polsce. WS2812b jednak króluje :)

Zamieszczam bardzo wstępną wersję biblioteki (wzorowanej na bibliotece Mirka do Ws'ów) z dodaną obsługą HSV.
Używam sprzętowego SPI, choć oczywiście można zrobić to programowo.
Na pewno da się to jeszcze zoptymalizować. Przedewszystkim funkcje liczące wektory RBG z przestrzeni HSV są nieoptymalne bowiem używają
zmiennych 16 bitowych. Co w praktyce przy takich zastosowaniach jak animacje jest zbytkiem.
Obiecuje sobie, ale ciągle bark czasu, że przerobię bibliotekę FASTLED do Arduino, która zawiera bardzo szybkiej funkcje HSV pracujące na wyłącznie na zmiennych 8 bitowych.
Może ktoś zetknął się z tymi diodami... Może ma jakieś sugestie.


Załączniki:

Aby zobaczyć załączniki musisz się zalogować. Tylko zalogowani użytkownicy mogą oglądać i pobierać załączniki.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 cze 2016, o 03:48 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27225
Lokalizacja: Szczecin
Pomógł: 1041

W scalakach WS2801 oraz WS2803 jest również transmisja SPI chociaż oczywiście całkiem inny protokół ale wcale nie uważam, żeby to było coś gorszego niż NZR właśnie wręcz przeciwnie ... a to ze względu na to, że z SPI jest po stokroć łatwiej a, że jedna linia sprzętowa więcej ? cóż ;) praktycznie żaden problem. Przy okazji można wtedy działać i na SPI sprzętowym i programowym ....

O diodach APA już było słychać jakiś czas temu ale znowu tak jak mówisz - na razie cena jest co nieco kosmiczna w porównaniu do WSów i stąd pewnie na razie ich mniejsza popularność ...

Nie mniej jednak SUPER, że już ktoś z "naszych" ;) mam na myśli forumowiczów pomiział się z tymi diodami i podzielił się nie tylko wrażeniami ale i takim fajnym praktycznym opisem a do tego kawałkiem kodu

Przez ciebie aż chyba kupię gdzieś sobie kawałek chociaż taśmy z tymi diodami, żeby przy jakiejś okazji się pobawić ... eeeeh te świecidełka - od dzieciństwa mam bzika na punkcie diod LED :lol:

------------------------ [ Dodano po: 5 minutach ]

sq8dsr napisał(a):
funkcje HSV pracujące na wyłącznie na zmiennych 8 bitowych.

Chodziło tobie może o coś takiego ?

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 cze 2016, o 21:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Tak Mirku, SPI to dobra sprawa. Teoretycznie przy tych prędkościach transmisji i przy szybkim PWM może nawet dało by się przy ich użyciu zrobić wyświetlacz POV...
WSy mają ten ogromny plus, ze są generalnie łatwo dostępne i tanie. Bo cena diody zaczyna osiągac poziom cen zwykłych diod RGB.

Co ciekawe istnieją wersje tych diod APA które mają dodatkowo kolor biały (RGBW) co już musi bardzo miodnie dawać możliwość delikatnych odcieni.

Co do funkcji HSV to siąde za chwile i spróbuję. Porównam czasy wykonywania się. To zresztą są bardzo ciekawe doświadczenia gdy można zobaczyć czas wykonywania czegoś w zalezności od użytych zmiennych, stosowania specyfikatora inline itd.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 paź 2016, o 07:50 
Offline
Nowy

Dołączył(a): 26 lip 2015
Posty: 1
Pomógł: 0

To ja mam jeszcze pytanie, bo czytając opisy tych diod na polskich forach, widzę, że pisze się o jakiś adresach diod. Jeśli tak jest, to na czym to polega? Jeśli mam 4 diody szeregowo, to mogę sobie wysłać jedną ramkę, która zmienia mi kolor 1szej diody, a potem ramkę, która zmieni mi kolor 3ciej? Jeśli tak, to który bajt danych za to odpowiada?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 paź 2016, o 07:52 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27225
Lokalizacja: Szczecin
Pomógł: 1041

expertup napisał(a):
To ja mam jeszcze pytanie, bo czytając opisy tych diod na polskich forach, widzę, że pisze się o jakiś adresach diod. Jeśli tak jest, to na czym to polega? Jeśli mam 4 diody szeregowo, to mogę sobie wysłać jedną ramkę, która zmienia mi kolor 1szej diody, a potem ramkę, która zmieni mi kolor 3ciej? Jeśli tak, to który bajt danych za to odpowiada?


A może jednak warto obejrzeć kilka z tych poradników ? ;)

https://www.youtube.com/watch?v=rAXTInMgJvM
https://www.youtube.com/watch?v=CVNPBltHfoI
https://www.youtube.com/watch?v=Z2J3FM4IBe8
https://www.youtube.com/watch?v=YNUtcP1JjDA
https://www.youtube.com/watch?v=dANsWZ2awww
https://www.youtube.com/watch?v=yY2bqPcTEsk
https://www.youtube.com/watch?v=sQ2BujrzGkE
https://www.youtube.com/watch?v=JoPCxp1rM9I
https://www.youtube.com/watch?v=GdW1LKKQCVU
https://www.youtube.com/watch?v=ZAm7uZOPBrw
https://www.youtube.com/watch?v=SJpJluCJmmg
https://www.youtube.com/watch?v=pKI1B_jlWS4
https://www.youtube.com/watch?v=xujEupk1s-E
https://www.youtube.com/watch?v=bYiGIH5fafA
https://www.youtube.com/watch?v=UCzE3Ep3Dmk
https://www.youtube.com/watch?v=nj_vZTQAO7k

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 26 paź 2016, o 16:12 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 05 sie 2013
Posty: 1154
Lokalizacja: Lublin / Kraków
Pomógł: 72

Diody jako takie adresów NIE mają. Niezależnie od tego czy są to WS2812 czy APA102/105. APA różnią się tylko tym, ze posiadają linię zegarową, co czyni je niewrażliwe na ewentualne opóźnienia w transmisji. Ale podejście do programowania taśmy takich ledów jest dokładnie takie samo jak w przypadku WS'ów.
Trzeba zrobić "adresację" wirtualną w pamięci MCU. Tak jak to jest zresztą bardzo ładnie opisane w poradnikach Mirka, do których linki są w poście powyżej.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 paź 2016, o 09:00 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2562
Pomógł: 126

W skrócie to kazda z diod polyka konkretna ilosc bitow i wypluwa do kolejnej pomniejszona paczke. Reszta w powyzszych poradnikach.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 paź 2016, o 09:35 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27225
Lokalizacja: Szczecin
Pomógł: 1041

Jeszcze jeden przykład ;) np dla 12 diod żeby było klarownie i konkretnie

1. wyobraź sobie długi taśmociąg ;)
2. wyobraź sobie że kładziesz na jego początku 12 smakowitych pączków
3. włączasz taśmociąg i jadą one w rządku
4. na drugim końcu ustawiło się 12 grubasów przy taśmociągu w szeregu jeden za drugim, ale każdy może zjeść tylko jednego pączka
5. pierwszy grubas zjada pierwszego pączka z 12-t ;) i odchodzi
6. drugi grubas zjada 1-go pączka z 11-tu jakie widzi już tylko na taśmociągu
7. trzeci grubas zjada 1-go pączka z 10-ciu które już tylko zostały i jadą do niego na taśmociągu
....

n. ostatni grubas - zjada ostatniego pączka

LEGENDA:

1. jeden pączek to paczka trzech bajtów RGB
2. jeden grubas do dioda MAGIC LED

jak zaadresować pączki ? ;) np chciałbyś żeby pierwszych 6-ciu grubasów dostało pączki z ajerkoniakiem ;) to na taśmociągu najpierw ustawiasz 6 takich pączków. Później jeden grubas ma dostać pączka z marmoladą. Więc dokładasz kolejnego 7-go pączka (adresujesz go do 7-go grubasa na końcu taśmociągu) ... do tego dokładasz jeszcze 5 pączków bez marmolady za to ze śliwką. Dzięki temu wiesz który grubas co zje. :lol: :lol:

ale bym sobie pączka zjadł po tej opowieści :lol: ... z ajerkoniakiem ... kurdę tylko taśmociągu nie widzę !

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 paź 2016, o 09:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 16 mar 2014
Posty: 745
Lokalizacja: Warszawa
Pomógł: 32

mirekk36 napisał(a):
jak zaadresować pączki ? np chciałbyś żeby pierwszych 6-ciu grubasów dostało pączki z ajerkoniakiem...
No tym razem to ja oplułem swój ekran, aż się córka ze mnie śmiała :lol:
No musze przyznać Panie Mirku, że ma Pan rewelacyjne pomysły na przekazywanie wiedzy, no po prostu nie da się nie rozumieć :D

Może na warsztatach takie praktyczne ćwiczenie z pączuchami zrobimy :lol: To by dopiero były smaczne warsztaty :D

_________________
.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 paź 2016, o 11:07 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27225
Lokalizacja: Szczecin
Pomógł: 1041

MikieMan napisał(a):
Może na warsztatach takie praktyczne ćwiczenie z pączuchami zrobimy To by dopiero były smaczne warsztaty

:lol: :lol: no proszę! kolega też ma świetne pomysły, pomyślimy ...

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 paź 2016, o 11:22 
Offline
Użytkownik

Dołączył(a): 16 mar 2014
Posty: 47
Lokalizacja: Bochnia
Pomógł: 0

To w takim razie ja pierwszy zgłaszam swoją kandydaturę do roli grubasa, chociaż gruby nie jestem, ale co tam może jakoś przejdzie ; )



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 paź 2016, o 11:29 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27225
Lokalizacja: Szczecin
Pomógł: 1041

adkrzywda napisał(a):
To w takim razie ja pierwszy zgłaszam swoją kandydaturę do roli grubasa, chociaż gruby nie jestem, ale co tam może jakoś przejdzie ; )

Ja też się piszę na grubasa skoro będą pączki :lol:

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 paź 2016, o 12:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 16 mar 2014
Posty: 745
Lokalizacja: Warszawa
Pomógł: 32

mirekk36 napisał(a):
MikieMan napisał(a):
Może na warsztatach takie praktyczne ćwiczenie z pączuchami zrobimy To by dopiero były smaczne warsztaty

:lol: :lol: no proszę! kolega też ma świetne pomysły, pomyślimy ...
:D No cóż mogę powiedzieć na swoje usprawiedliwienie.
Lubię po prostu pączki i sam trochę tak wyglądam, więc do pierwszoplanowej roli grubasa się nadaję :lol:

_________________
.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 paź 2016, o 13:42 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27225
Lokalizacja: Szczecin
Pomógł: 1041

to już jest nas trzech - będziemy mogli utworzyć taśmociąg ;) albo taśmę MagicGrubas :lol: :lol:

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 paź 2016, o 14:08 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 16 mar 2014
Posty: 745
Lokalizacja: Warszawa
Pomógł: 32

mirekk36 napisał(a):
albo taśmę MagicGrubas
:lol: :lol: :lol: Tylko się zastanawiam na ilu bitach będziemy pracować. Myślę, że paczka powinna być max. 6 pączuchów na jednego bo przy większej ilości to się mogą MagicGrubasy zatkać i już nie wypuszczą bitów dalej :lol:

_________________
.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 paź 2016, o 14:22 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27225
Lokalizacja: Szczecin
Pomógł: 1041

No nie - ja chyba jak już to dam radę przyjąć co najwyżej JEDEN BIT ;) o ile jeden pączek to jeden BIT :D .... Najwyżej jeśli nikt nie będzie patrzył, to wciągnę cichcem jeszcze z pięć - a wtedy ostatniemu zabraknie ;) Będę symulował wrednego madżik leda :lol:

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 paź 2016, o 16:42 
Offline
Użytkownik

Dołączył(a): 25 lip 2013
Posty: 2562
Pomógł: 126

Jesli będziemy takie ilości pączków wciągać to na pewno bedzie nam jakiś jeden bit chciał wypaść ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 17 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 14 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO