Skocz do zawartości

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?

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 😉

  • 1 miesiąc później...
  • 5 tygodnie później...

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?

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

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?

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.

  • 4 tygodnie później...

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);
}

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.

  • 2 tygodnie później...

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.

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

  • 1 miesiąc później...

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 🙂

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.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...