Skocz do zawartości
Komentator

Kurs Arduino II - #2 - diody RGB (tradycyjne oraz WS2812)

Pomocna odpowiedź

Czemu do diody RGB są podpięte oporniki aż 1k, skoro 330 a nawet mniejsze wedle obliczeń są wystarczające? Czy powodem jest, że w drugim zestawie forbotowym mniejszych nie ma, czy coś umyka mojej uwadze?

Udostępnij ten post


Link to post
Share on other sites

noniwoo, gdyby były potrzebne 330R, to na pewno takie pojawiły się w zestawie 🙂 Po prostu stosowanie 330R, to takie "modelowe zasilania" LEDów. Przynajmniej kiedyś zawsze liczyło się rezystory tak, aby przepuścić maksymalny prąd. Diody, które są dostępne na rynku w tej chwili świecą już bardzo dobrze również przy niższym prądzie, stąd 1k wystarcza. Oczywiście jeśli zależałoby Ci na maksymalnej jasności, to przyda się mniejszy rezystor (lub połączenie równoległe 2x1k), ale w roli "sygnalizacyjnej/testowej" takie 1k wystarcza. Nie ma po co świecić sobie po oczach 😉 Z drugiej strony często w konstrukcjach mobilnych ogranicza się też prąd płynący przez LEDy, bo po co obciążać tak mocno akumulator - wystarczy 5 kontrolek po 20mA i już ciągniemy 100mA 😉

Udostępnij ten post


Link to post
Share on other sites

Jak przez wszystkie lekcje kursu i tego i poprzedniego, leci się przyjemnie i szybko. Wszystko wytłumaczone, zrozumiałe, więc nie można się do niczego przyczepić. Niedługo będę się brał za kolejne lekcje i będę czekał na kontynuację kursu.

Tym razem natomiast postanowiłem się pochwalić i swoim projektem. 🙂

https://www.youtube.com/watch?v=0XhtEMdjEjk&feature=youtu.be

Udostępnij ten post


Link to post
Share on other sites

Jacenty, super, dobrze wiedzieć, że kursy się przydają. Powodzenia w dalszej nauce 🙂

Udostępnij ten post


Link to post
Share on other sites

Jak wygląda sprawa sterowania zwykłą taśmą LEDową RGB? Myślę, że w tej części przydałaby się taka informacja.

Póki co nie mam dostępu do użytych w kursie diod programowalnych, ani zwykłych matowych, więc użyłem chrupek-wypełniaczy z paczki od botlandu:

Dzięki za kolejną część kursu!

E: Przy okazji pytanie. Praktycznie, ile maksymalnie bajtów na sekundę mogę przesłać przez port szeregowy do Arduino?

Udostępnij ten post


Link to post
Share on other sites

Taśmy LEDowe są zwykle 12V więc nie możesz ich bezpośrednio sterować z Arduino. Na szczęście wystarczą trzy tranzystory i możesz podłączać 🙂

Port szeregowy w swoim standardowym ustawieniu przesyła jeden bajt "przy pomocy" 10 bitów. Prędkość transmisji jednego bitu zależy od zegara taktującego procesor i od dzielnika - liczby wpisanej do odpowiedniego rejestru:

BR = FCPU/(16*(DZIELNIK+1))

Jeżeli Arduino ma zegar np. 16MHz to po ustawieniu dzielnika np. na 103 dostaniesz szybkość 9615 bitów/s. Problem jest taki, że urządzenia mające port szeregowy pracują zwykle na pewnych standardowych prędkościach a dzielnik niestety musi być całkowity. Przy wolnej transmisji błąd spowodowany zaokrąglaniem dzielnika do najbliższej liczby całkowitej nie jest wielki. W moim przykładzie powinno wyjść 9600 bitów/s - bo tyle wynosi jedna z typowych prędkości, ale dla niej idealny dzielnik to 103.16666. Dla uzyskanej rzeczywiście prędkości masz błąd (9615-9600)/9600 czyli ok. 0.15% i jest to do przyjęcia. W zasadzie nie powinien on przekraczać 2%.

Typowe prędkości to szereg geometryczny z mnożnikiem 2:

300, 600, 1200, 2400, 4800, 9600, 19200, 38400 bitów/s, tu następuje przeskok na 57600, 115200 i 230400.

No i teraz gdybyś chciał porozumiewać się z komputerem na prędkości 230400 (czyli ok. 23kbajty/s, wystarczy podzielić przez 10) to musiałbyś użyć dzielnika 3.34. Nie możesz takiego wpisać więc wpisujesz 3, ale wtedy dostajesz prędkość 250000 a to już jest błąd -7.8% czyli za dużo. Znaki będą gubione lub przekłamane.

Teoretycznie - jeśli potrafisz zmusić to drugie urządzenie do pracy na dowolnie wybranej przez Ciebie prędkości transmisji, to port szeregowy 16MHz Arduino może pracować z prędkością do 1Mbit/s a po użyciu pewnego triku - do 2Mbit/s czyli do 200kbajtów/s.

Zadanie dopasowania prędkości transmisji jest znacznie łatwiejsze gdy chcesz połączyć ze sobą dwa Arduino. Wtedy - jeśli oba procesory pracują na tych samych zegarach to wystarczy wpisać dwa takie same dzielniki. Prędkość wyjdzie być może od czapy, ale co z tego? Ważne, by każdy port szeregowy miał ją taką samą.

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

Dzięki! Co do sterowania taśmą - jakie tranzystory będą do tego najodpowiedniejsze? Rozumiem, że należy wykorzystać unipolarne? Ale jakiś konkretny model do takiego zastosowania?

Udostępnij ten post


Link to post
Share on other sites

Nie ma czegoś takiego jak "najodpowiedniejsze". Gdybyś miał dziesięć wyrafinowanych wymagań to wtedy wśród 10000 typów produkowanych tranzystorów można poszukiwać jakiegoś optimum.

Port Arduino może wypuścić z siebie do 5V i max. 15-20mA. W przypadku MOSFETów włączanych rzadko prąd z portu jest mało istotny, więc zostaje tylko napięcie progowe bramki - musi być niskie by tranzystor pewnie załączał się już przy 2.5-3V no i prąd drenu - by wytrzymał zapotrzebowanie taśmy LED. Odpadają wszystkie stare i duże MOSFETy typu BUZ11 czy IRF540. Pokaż gdzie chcesz kupować (albo podaj kilka typów ze swojego sklepu) a coś dobierzemy.

Udostępnij ten post


Link to post
Share on other sites

Dzięki, skoro z grubsza wszystko jedno, to mając te parametry na uwadze coś sobie znajdę 😉

Udostępnij ten post


Link to post
Share on other sites

Witam mam problem z diodą rgb ponieważ jak jak podłącze wszystko to świeci się tylko zielony ;/ jak GND podłącze pod wyjście niebieskie to świeci sie niebieski jak tam gdzie powinno być to świeci się zielony jak tam gdzie zielony podłącze to dioda gaśnie a jak podłącze tam gdzie czerwony to świeci się czerwony ;/. Co jest nie tak?

#define czerwona 11
#define zielona 10
#define niebieska 9

void setup() {
 pinMode(czerwona, OUTPUT); 
 pinMode(zielona, OUTPUT);
 pinMode(niebieska, OUTPUT);
}


void loop() {
 digitalWrite(zielona, HIGH);
 digitalWrite(czerwona, HIGH);
 digitalWrite(niebieska, HIGH);
}

Udostępnij ten post


Link to post
Share on other sites

domi10052, tzn., że źle podłączyłeś diodę. Sprawdź, czy na pewno odpowiednie wyprowadzenia połączyłeś z odpowiednimi sygnałami. Przypominam, że masa nie jest na żadnej ze skrajnych nóżek.

Udostępnij ten post


Link to post
Share on other sites

Oczywiście 😉 wszystko na początku podłączyłem - najdłuższa nóżka - masa. ale nie działało dobrze bo tylko zielony się palił więc nie w tym problem.

Udostępnij ten post


Link to post
Share on other sites

domi10052, pokaż proszę w takim razie zdjęcie swojego układu, bo ciężko mi znaleźć przyczynę takiego błędu.

Udostępnij ten post


Link to post
Share on other sites

Witam. Chciałbym się spytać czym może być spowodowane to, że na listwie diód Led nie zapalają mi się 2 ostatnie diody? Model listwy to WS2812. Wszystko podłączone jak w kursie. Z góry dziękuję za odpowiedź i pozdrawiam 🙂

Udostępnij ten post


Link to post
Share on other sites

jankes1006, ciężko powiedzieć, bo nie wiemy jaki kod wgrywasz 🙂 Jeśli korzystasz z przykładów, które są w kursie (i na pewno nic nie zmieniłeś), to może Twoja listwa jest uszkodzona i należałoby ją zareklamować u sprzedawcy 😉 Do tej pory, jeśli dobrze pamiętam, to nikt jeszcze nie zgłaszał takiego problemu, więc może to być właśnie kwestia sprzętu.

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...