Sterownik RGBW do latarki (Flagiusz)
Sterownik RGBW do latarki (Flagiusz)
Witam,
zainspirowany Quarkiem RGB postanowiłem zbudować larateczkę na diodzie MCE-RGBW i na wykonanym od podstaw sterowniku.
Oczywiście pierwszą myślą było moje ulubione ATTiny13v, ale z uwagi na tylko jeden timer zastanawiam się nad czymś większym (24/28/48).
Po kilku przemyśleniach i paru obliczeniach doszedłem do wniosku, że da się go zrobić na 13-tce i choć może nie w rozdzielczości True-Color, ale nieco niższej powinno dać się się uzyskać w miarę dobre mieszanie barw w różnych proporcjach.
Pomysł 1 jest taki (założenie, że bazujemy jednak na ATtiny13-tce):
- kolor biały - sprzętowy PWM, kanał A
- kolor niebieski (lub zielony z uwagi na czułość oka) - sprzętowy PWM, kanał B
- kolor zielony (lub niebieski) - programowy PWM
- kolor czerwony - programowy PWM
Pomysł 2 jest taki:
- wykorzystujemy 2 definiowane przerwania na liczniku ustawione na progach OCR0A i B
- w procedurze obsługi przerwania od TA i TB wstawiamy programową logikę "zapalania" i "gaszenia" danego kanału RGBW
- dzięki temu możemy z wysoką częstotliwością mieszać dowolne 2 barwy z rozdzielczością bliską 8 bitów - co da nam przy użyciu 2 składowych przestrzeń ok. 16 bitów, czyli całkiem sporo
- z uwagi na sporą rozdzielczość można by w ten sposób delikatnie "poprawiać" tint struktury białej, poprzez korekcję "bieli" jedną ze składowych RGB w odpowiedniej proporcji.
Pomysł 3 - najprostszy, jako odmiana 1-go:
- kolor biały - sprzętowy PWM, kanał A
- kolor R, G i B - programowy PWM
Natomiast sterowanie prądem struktur zrealizowałbym w oparciu o 4x AMC, gdzie każdy z nich byłby osobno sterowany i obsługiwał osobny kanał (RGBW).
Rozwiązanie to wydaje się być bardzo dobre, gdyż z jednej strony dość dobrze ogranicza prąd przypadający na każdą strukturę, a po drugie AMC-kami można bardzo ładnie cyfrowo sterować, tak jakby to były zwykłe MOSFET-y, co pozwala zaoszczędzić cenne miejsce.
Ok, to na razie tyle technicznie...
Spójrzmy zatem na to od drugiej strony.
1. do jakich zastosowań i w jakich kombinacjach RGBW miało by to służyć?
- światło białe - wiadomo
- światło czerwone i zielone - można znaleźć zastosowania
- mieszanie RGB - chyba tylko do nastrojowego podświetlania i "bajerowania"
2. jaka miała by być minimalna satysfakcjonująca rozdzielczość?
- IMHO 4 poziomy jasności na kanał RGB i 256 na W w zupełności powinny wystarczyć
(daje to 2 bity na kanały RGB - w sumie 6 bitów + 8 bitów na W = 14 bitów)
A zatem z samych tylko RGB dałoby się w ten sposób uzyskać różne 64 kolory.
- więcej jak 2-3 bity na kanał RGB będą komplikować sterowanie (nie będzie widać
różnic) oraz niekorzystnie rzutować na ich sterowanie (częstotliwość modulacji).
Tryby:
- pewnie z kilka białych o regulowanej jasności (opcjonalnie z korektą tintu)
- pojedyncze R,G lub B (ciągłe o reg.jasności i jakiś migaczyk)
- RGB mieszane (w proporcjach)
- i można by wymyślić pewnie z milion różnych dyskotek
. . . - policyjne B + R
. . . - płynne przejścia RGB (animacje)
. . . - sygnalizator świetlny (czerwone-żółte-zielone)
. . . - itd.
Sterowanie - a zawłaszcza ustawianie jasności, dla RGB musi być proste - a to oznacza, że nie może być zbyt wielu możliwości (poziomów) ustawień składowych RGB, bo nikt nad tym nie zapanuje - zatem 2 bity na kolor (4 poziomy) wydaje się być dobrym założeniem.
Do ustawiania mieszanego RGB podszedłbym tak, że w jednej sekwencji konfiguracyjnej ustawiałoby się po kolei R (w 4-ech poziomach od 0 do 100%), G (tak samo) i B (również).
Inny wariant to podejście typu HUE - czyli najpierw wybieramy barwę (z kręcącej się "karuzeli"), a następnie jasność już wybranego koloru.
Wersja najprostsza, to sama "karuzela" i założenie, że przestrzeń generująca RGB będzie zawierała co najmniej jedną barwę o jasności 100%.
A może ma ktoś jeszcze inny pomysł jak do tego najlepiej podejść i co jeszcze warto byłoby tu wziąć pod uwagę?
zainspirowany Quarkiem RGB postanowiłem zbudować larateczkę na diodzie MCE-RGBW i na wykonanym od podstaw sterowniku.
Oczywiście pierwszą myślą było moje ulubione ATTiny13v, ale z uwagi na tylko jeden timer zastanawiam się nad czymś większym (24/28/48).
Po kilku przemyśleniach i paru obliczeniach doszedłem do wniosku, że da się go zrobić na 13-tce i choć może nie w rozdzielczości True-Color, ale nieco niższej powinno dać się się uzyskać w miarę dobre mieszanie barw w różnych proporcjach.
Pomysł 1 jest taki (założenie, że bazujemy jednak na ATtiny13-tce):
- kolor biały - sprzętowy PWM, kanał A
- kolor niebieski (lub zielony z uwagi na czułość oka) - sprzętowy PWM, kanał B
- kolor zielony (lub niebieski) - programowy PWM
- kolor czerwony - programowy PWM
Pomysł 2 jest taki:
- wykorzystujemy 2 definiowane przerwania na liczniku ustawione na progach OCR0A i B
- w procedurze obsługi przerwania od TA i TB wstawiamy programową logikę "zapalania" i "gaszenia" danego kanału RGBW
- dzięki temu możemy z wysoką częstotliwością mieszać dowolne 2 barwy z rozdzielczością bliską 8 bitów - co da nam przy użyciu 2 składowych przestrzeń ok. 16 bitów, czyli całkiem sporo
- z uwagi na sporą rozdzielczość można by w ten sposób delikatnie "poprawiać" tint struktury białej, poprzez korekcję "bieli" jedną ze składowych RGB w odpowiedniej proporcji.
Pomysł 3 - najprostszy, jako odmiana 1-go:
- kolor biały - sprzętowy PWM, kanał A
- kolor R, G i B - programowy PWM
Natomiast sterowanie prądem struktur zrealizowałbym w oparciu o 4x AMC, gdzie każdy z nich byłby osobno sterowany i obsługiwał osobny kanał (RGBW).
Rozwiązanie to wydaje się być bardzo dobre, gdyż z jednej strony dość dobrze ogranicza prąd przypadający na każdą strukturę, a po drugie AMC-kami można bardzo ładnie cyfrowo sterować, tak jakby to były zwykłe MOSFET-y, co pozwala zaoszczędzić cenne miejsce.
Ok, to na razie tyle technicznie...
Spójrzmy zatem na to od drugiej strony.
1. do jakich zastosowań i w jakich kombinacjach RGBW miało by to służyć?
- światło białe - wiadomo
- światło czerwone i zielone - można znaleźć zastosowania
- mieszanie RGB - chyba tylko do nastrojowego podświetlania i "bajerowania"
2. jaka miała by być minimalna satysfakcjonująca rozdzielczość?
- IMHO 4 poziomy jasności na kanał RGB i 256 na W w zupełności powinny wystarczyć
(daje to 2 bity na kanały RGB - w sumie 6 bitów + 8 bitów na W = 14 bitów)
A zatem z samych tylko RGB dałoby się w ten sposób uzyskać różne 64 kolory.
- więcej jak 2-3 bity na kanał RGB będą komplikować sterowanie (nie będzie widać
różnic) oraz niekorzystnie rzutować na ich sterowanie (częstotliwość modulacji).
Tryby:
- pewnie z kilka białych o regulowanej jasności (opcjonalnie z korektą tintu)
- pojedyncze R,G lub B (ciągłe o reg.jasności i jakiś migaczyk)
- RGB mieszane (w proporcjach)
- i można by wymyślić pewnie z milion różnych dyskotek
. . . - policyjne B + R
. . . - płynne przejścia RGB (animacje)
. . . - sygnalizator świetlny (czerwone-żółte-zielone)
. . . - itd.
Sterowanie - a zawłaszcza ustawianie jasności, dla RGB musi być proste - a to oznacza, że nie może być zbyt wielu możliwości (poziomów) ustawień składowych RGB, bo nikt nad tym nie zapanuje - zatem 2 bity na kolor (4 poziomy) wydaje się być dobrym założeniem.
Do ustawiania mieszanego RGB podszedłbym tak, że w jednej sekwencji konfiguracyjnej ustawiałoby się po kolei R (w 4-ech poziomach od 0 do 100%), G (tak samo) i B (również).
Inny wariant to podejście typu HUE - czyli najpierw wybieramy barwę (z kręcącej się "karuzeli"), a następnie jasność już wybranego koloru.
Wersja najprostsza, to sama "karuzela" i założenie, że przestrzeń generująca RGB będzie zawierała co najmniej jedną barwę o jasności 100%.
A może ma ktoś jeszcze inny pomysł jak do tego najlepiej podejść i co jeszcze warto byłoby tu wziąć pod uwagę?
Flagiusz
Re: Sterownik RGBW do latarki (Flagiusz)
Prawie w ostatniej chwili zrezygnowałem z zakupu Quarka RGB po przeczytaniu recenzji i upewnieniu się że latarka nie ma mieszania RGB. Nie można ustawić dowolnego koloru i regulować jego jasności; o pamiętaniu tego nie wspomnę.df pisze: 1. do jakich zastosowań i w jakich kombinacjach RGBW miało by to służyć?
- mieszanie RGB - chyba tylko do nastrojowego podświetlania i "bajerowania"
Być może jest to specyficzne zastosowanie, bo duży producent 4Sevens oraz Ty nie bierzecie pod uwagę takiej ewentualności.
Dla mnie osobiście jest to najważniejsza rzecz której szukałbym w latarce RGB. Żadnych dyskotek, stroboskopów, sygnalizatorów ulicznych - tylko ustawienie koloru który w danej chwili jest mi potrzebny i regulacja jego jasności.
Może więc maleńki zakres takiego mieszania weźmiesz pod uwagę - światło białe z możliwością regulacji: białe-zimne - białe neutralne - białe ciepłe.
To chyba najprostsze rozwiązanie - bierzesz MC-E z zimnym białym chipem, a pozostałymi ustawiasz kolor świecenia:
1. biały neutralny
2. biały ciepły
Chociaż o tyle poproszę
Oczywiście, że planuję zrobić mieszanie RGB - inaczej zastosowanie diody RGB byłoby zmarnowaniem jej potencjału
Mam już nawet rozrysowane przebiegi przejścia po przestrzeni barwnej (tęczy) z przyjętym warunkiem zachowania pełnej jasności na co najmniej jednym kanale RGB.
R: 2 2 2 1 0 0 0 0 0 1 2 2
G: 0 1 2 2 2 2 2 1 0 0 0 0
B: 0 0 0 0 0 1 2 2 2 2 2 1
gdzie:
0 - brak koloru (kanał zgaszony)
1 - kolor częściowy (kanał zapalony na 30%)
2 - pełny kolor (kanał zapalony na 100%)
Co wyglądałoby +/- tak:
A zatem nawet nie 4, ale 3 poziomy na kolor mogą być w zupełności wystarczające.
Co doskonale upraszcza implementację oraz samo sterowanie (wybór koloru).
Przy zastosowaniu tylko 3 poziomów jasności (off, średni, on) dla każdego z kanału moja przestrzeń barwna będzie składała się z 12-tu pięknych kolorów.
W przestrzeni tej mieszane są co najwyżej 2 barwy podstawowe.
Zwiększając 3-krotnie przestrzeń można domieszać także 3-cią barwę, co da ok. 36-tu poziomów idących dodatkowo w kierunkach bieli itd.
2 bity na kolor (3 lub 4 poziomy każdej składowej) to jeszcze jedna zaleta - całość RGB (a nawet z W) da się upakować na jednym bajcie!
Pytanie, czy ktoś z forumowiczów bawił się diodą RGBW MCE?
Jedyne czego się obawiam, to to, że mieszkanie kolorów będzie prowadziło do psujących efekt artefaktów spowodowanych rozmieszczeniem poszczególnych struktur, a dokładniej ich wzajemnym przesunięciem.
Mam już nawet rozrysowane przebiegi przejścia po przestrzeni barwnej (tęczy) z przyjętym warunkiem zachowania pełnej jasności na co najmniej jednym kanale RGB.
R: 2 2 2 1 0 0 0 0 0 1 2 2
G: 0 1 2 2 2 2 2 1 0 0 0 0
B: 0 0 0 0 0 1 2 2 2 2 2 1
gdzie:
0 - brak koloru (kanał zgaszony)
1 - kolor częściowy (kanał zapalony na 30%)
2 - pełny kolor (kanał zapalony na 100%)
Co wyglądałoby +/- tak:
A zatem nawet nie 4, ale 3 poziomy na kolor mogą być w zupełności wystarczające.
Co doskonale upraszcza implementację oraz samo sterowanie (wybór koloru).
Przy zastosowaniu tylko 3 poziomów jasności (off, średni, on) dla każdego z kanału moja przestrzeń barwna będzie składała się z 12-tu pięknych kolorów.
W przestrzeni tej mieszane są co najwyżej 2 barwy podstawowe.
Zwiększając 3-krotnie przestrzeń można domieszać także 3-cią barwę, co da ok. 36-tu poziomów idących dodatkowo w kierunkach bieli itd.
2 bity na kolor (3 lub 4 poziomy każdej składowej) to jeszcze jedna zaleta - całość RGB (a nawet z W) da się upakować na jednym bajcie!
Pytanie, czy ktoś z forumowiczów bawił się diodą RGBW MCE?
Jedyne czego się obawiam, to to, że mieszkanie kolorów będzie prowadziło do psujących efekt artefaktów spowodowanych rozmieszczeniem poszczególnych struktur, a dokładniej ich wzajemnym przesunięciem.
Flagiusz
Witam.
Darku, pomysl zacny, oby nie skonczyl sie tak jak temat "forumowych latarek"
Sam chetnie pewno bym sie pisal na taki sterowniczek.
Ja bym widzial to tak:
Grupa A:
-3 poziomy jasnosci swiatla bialego-jasnosc definiowana przez uzytkownika,
Grupa B:
-3 tryby kolorowe(stale). Wybor koloru definiowany przez uzytkownika-wybor z palety XX kolorow,
Grupa C:
-Pierwszy tryb-plynne przejscia(powolne) miedzy 'zakodowana' paleta barw, nastepny tryb to jakies 'blyskacze' typu stroboskop-co blysk inna barwa. Chociaz w sumie blyskowe tryby mozna sobie odpuscic.
Mowiac o definiowaniu, mam na mysli wybor taki jak jest zrobiony w Waszym sterowniku 'df&Cali'.
Przejscia miedzy grupami-dwuklik, a definiowanie poprzez-trojklik, czyli tak jak do tej pory bylo to robione.
Co do uzytkowania diody RGBW to niestety nie mialem jej w lapkach, a co do artefaktow, bardzo fajnie je zaciera zmatowiona szybka! Szybke traktujemy bardzo drobnym papierem sciernym, tak by z przezroczystej zrobila sie taka polprzejzysta. Ale nie tak mocno jak po piaskowaniu
Pozdrawiam
DNF
Darku, pomysl zacny, oby nie skonczyl sie tak jak temat "forumowych latarek"
Sam chetnie pewno bym sie pisal na taki sterowniczek.
Ja bym widzial to tak:
Grupa A:
-3 poziomy jasnosci swiatla bialego-jasnosc definiowana przez uzytkownika,
Grupa B:
-3 tryby kolorowe(stale). Wybor koloru definiowany przez uzytkownika-wybor z palety XX kolorow,
Grupa C:
-Pierwszy tryb-plynne przejscia(powolne) miedzy 'zakodowana' paleta barw, nastepny tryb to jakies 'blyskacze' typu stroboskop-co blysk inna barwa. Chociaz w sumie blyskowe tryby mozna sobie odpuscic.
Mowiac o definiowaniu, mam na mysli wybor taki jak jest zrobiony w Waszym sterowniku 'df&Cali'.
Przejscia miedzy grupami-dwuklik, a definiowanie poprzez-trojklik, czyli tak jak do tej pory bylo to robione.
Co do uzytkowania diody RGBW to niestety nie mialem jej w lapkach, a co do artefaktow, bardzo fajnie je zaciera zmatowiona szybka! Szybke traktujemy bardzo drobnym papierem sciernym, tak by z przezroczystej zrobila sie taka polprzejzysta. Ale nie tak mocno jak po piaskowaniu
Pozdrawiam
DNF
Re: Sterownik RGBW do latarki (Flagiusz)
Tak myślę, że chyba powoli nadchodzi czas na złącze USB w sterowniku i programowanie z poziomu PC.df pisze:A może ma ktoś jeszcze inny pomysł jak do tego najlepiej podejść i co jeszcze warto byłoby tu wziąć pod uwagę?
Nie trzeba od razu USB - można dodać dodatkowy tryb, w którym jedna ze struktur (chyba najlepiej biała) działa na zasadzie fotodiody i sterownik mierzyłby panujące na niej napięcie. Na ekranie komputera byłby wyświetlany kwadracik i do tego miejsca należałoby przyłożyć latarkę. Następnie kwadracik zmienia kolor czarny/biały, sterownik to wykrywa i tak oto dane zero-jedynkowo dostają się z komputera do naszego sterownika.swietlik pisze:Tak myślę, że chyba powoli nadchodzi czas na złącze USB w sterowniku i programowanie z poziomu PC.
Tak jak tu:
http://www.aniomagic.com/examples/example12.php
zupełnie na dole strony jest link "Program your bracelet" - tu rolę "kwadracika" pełni żółty/brązowy kwiatek.
(http://www.aniomagic.com/schemer/)
pozdrawiam!
Midi custom @ XM-L :: RC-G2 @ 15880 1/2/3 AA :: UF C3 @własny driver :: Tank007 E06 :: UF A10 :: UF C1 :: Solarforce Skyline 2 @ 4xAMC :: Skyline 1 :: XTAR A01
No na pewno wygodniejsze niż USB - bo niby gdzie miałbyś to gniazdko wcisnąć?DNF pisze:Tylko troche to nie wygodne by bylo.
Kurcze, chyba coś takiego sobie spróbuję zrobić
Midi custom @ XM-L :: RC-G2 @ 15880 1/2/3 AA :: UF C3 @własny driver :: Tank007 E06 :: UF A10 :: UF C1 :: Solarforce Skyline 2 @ 4xAMC :: Skyline 1 :: XTAR A01