Skocz do zawartości

Sterowana masa z pinu I/O


Pomocna odpowiedź

Ok, układ jest w porządku. Teraz spróbuj policzyć oporniki i pokaż wyniki - bez tego nie możesz kupić elementów (nie bez pokazywania tylko bez policzenia..).

Jak chcesz to zmontować? Jakaś płytka uniwersalna, tekturka czy na pająka w powietrzu? Jeśli ma to być pokazywane, nie budzić litości i jeszcze zasługiwać na ocenę, powinno wyglądać schludnie. Co planujesz?

Pamiętaj, że Arduino Uno ma na pokładzie całkiem fajny stabilizator 5V, którego napięcie jest wyprowadzone na którąś szpilkę złącza. Niestety z zasady jego pracy wynika, że im wyższe napięcie zapodasz z zewnątrz, tym mniejszy prąd możesz wyciągnąć do układów dodatkowych. Wydaje się, że Twoje 49 (niestety marnych) diodek będzie potrzebowało do fajnego świecenia prawie 1A prądu przy założeniu, że każdej wpuścisz średnio te katalogowe 20mA. Możesz co prawda zrobić eksperyment na powiedzmy 10mA, ale wtedy i tak masz 0.5A przy wszystkich zapalonych a to także przekracza możliwości wbudowanego stabilizatora Arduino. Najlepszym wyjściem byłoby zasilanie całości z gotowych 5V - jeśli masz taki zasilacz w szkole, wtedy nie musisz niczego dorabiać. Samodzielne dospawanie własnego stabilizatora napędzającego tylko matrycę też jest możliwe. Nie musi to być impulsowy ani tym bardziej buck-boost czyli umiejący obniżać i podwyższać. Coś takiego jest bardzo fajne, ale wystarczy też poczciwy 7805 za 2 zł przykręcony do kawałka blachy jako radiatora.

Co to za bateria? Akumulator żelowy? Gdyby miało to pracować dłużej na jakiejś wystawie i być zasilanym z akumulatora/baterii, wtedy stabilizator impulsowy opłaca się, bo przy przejściu 12V->5V oszczędza mnóstwo prądu (i nie można się sparzyć - BHP).

BTW: Dlaczego akurat 7x7?

Mam zamiar zmontować to na płytce uniwersalnej. I teraz dylemat z opornikiem, jak to liczyć bo zazwyczaj przy połączeniu równoległym zapodawało się rezystory każdej diodzie osobno 🙁

Bardzo prosto, od góry czyli zasilania +5V masz szeregowo:

- tranzystor pnp

- diodę LED

- opornik

- tranzystor npn

Możesz założyć, że na tranzystorach pnp spada powiedzmy 0.1V a na npn 0.2V, na zielonej diodzie LED 2.2V a reszta na oporniku.

Masz więc na nim napięcie 5-(0.1+0.2+2.2) czyli 2.5V.

Prąd diody musisz przyjąć taki, by dobrze ją było widać mimo multipleksowanego zapalania z wypełnieniem 1/7. Zamiast 20mA proponuję dać jej 80mA. To tylko 4x więcej, ale sterowanie impulsowe robi użytek z pewnych własności naszego oka i diodka nie musi świecić 7x jaśniej. Masz więc R=2.5V/0.08A czyli ok. 33Ω.

Pewne niebezpieczeństwo takich układów jest takie, że gdy podczas prób programu coś pójdzie nie tak, np. program zwiśnie i zatrzyma multipleksowanie na jednej włączonej kolumnie, wszystkie zapalone w niej diody dostaną po 80mA 🙁 a to nie wygląda dobrze. Dlatego proponuję wstawić na początek większe oporniki szeregowe, np. 220 lub 470Ω a potem, gdy już układ będzie uruchomiony i obrazki będą śmigać, można będzie eksperymentować ze zwiększaniem jasności.

Tranzystorom możesz założyć wzmocnienie rzędu 50 - to bezpieczne. Każdy pnp będzie załączał na raz tylko jedną diodę. Skoro jego Ic=80mA, to Ib powinien być 80mA/50=1.6mA. Baza będzie sterowana z potencjału -5V względem emitera więc jej opornik to (5V-0.6V)/1.6mA. Możesz przyjąć 2.2k. W przypadku npn jest dużo gorzej, bo każdy z nich załącza cała kolumnę 7 diodek na raz, czyli 560mA. Z tego prąd bazy 560mA/50=11mA. To już dużawo, choć wciąż w granicach możliwości portu procesora. Ponieważ port przy takim obciążeniu nie podciągnie się do 5V to możesz przyjąć, że wystawi zaledwie 4V.Mamy więc (4V-0.6V)/11mA czyli w bazie npn wstawiasz 330Ω.

Jeśli z jakiegoś powodu zapragniesz odwrócić sterowanie (bo układ jest symetryczny) i to pnp będą włączały cały wiersz a npn pojedyncze w nim diody, prądy będą inne i musisz przeliczyć oporniki w bazach. Ważne, by kupione tranzystory spełniały z dużym nadmiarem wymagania prądowe Twojej matrycy.

Właśnie z powodu różnic w prądach kolektorów przyjąłem różne spadki napięcia Uce tranzystorów przy liczeniu opornika dla diody LED.

Oczywiście to tylko szacunki. Kupując lepsze tranzystory (np. wyższych grup wzmocnienia) możesz założyć wyższe wzmocnienia (np. 100). Wyjdą wtedy mniejsze prądy baz i trochę większe rezystory, ale ogólnie tak to wygląda.

Diody LED różnią się też napięciem przewodzenia. Marne zielone (te wykonane z GaP) zwykle potrzebują ok. 2.2V - tak założyłem, ale na tych lepszych (z InGaN) będzie spadać ponad 3V i prąd będzie dużo mniejszy niż założyłeś. To akurat nie przeszkadza, bo te akurat świecą lepiej i to im wystarczy. Po prostu weź swoją diodę, daj jej szeregowo opornik i podłącz do zasilacza tak żeby płynęło np. 20mA i zmierz na niej napięcie gdy świeci. Dodaj potem z 0.2V (bo prąd w multipleksowaniu będzie większy) i to przyjmij do obliczeń opornika w układzie.

A mógłbyś to podać w formie wzoru wdg którego moge to obliczać gdybym chciał potem robić większe matryce np. 7x50 czy 10x50 etc. Tu już pewnie wyjście procesora byłoby za słabe prądowo... wtedy musiałbym baze tranzystora sterować innym tranzystorem czy jak?

Musze przyznać, że dowiedziałem się od Ciebie więcej niż od uczącego mnie profesora, ale on nawet nie wiedział co to PWM do sterowania silnikami i wedłóg niego każdy tranzystor pasuje do wszystkiego kiedy każe nam coś składać, rozróżnia tylko pnp i npn, a parametry z dateshoota nie istnieją...

Cieszę się, że jakoś tę wiedzę spożytkujesz. Przy dużych matrycach na pewno nie ma sensu iść w bardzo niskie współczynniki wypełnienia. Ekranu z biegającymi napisami (np. 128x8) nie ma sensu sterować kolumnami, bo wtedy każda z nich będzie zapalała się raz na 128 komutacji. Wychodzą wtedy makabrycznie duże prądy impulsowe a diody LED nie są już liniowo jaśniejsze przy dużych gęstościach prądów w strukturach. Tak więc coraz więcej mocy idzie wtedy na ciepło we wszystkim: w kluczach, w LEDach, w ścieżkach, kablach itd. Trzeba załączać na raz cały wiersz - to jasne. Większe matryce zwykle buduje się segmentami z osobną "inteligencją" sterującą każda swoją częścią i oczywiście "przemiatane" w kierunku mniejszego wymiaru. Chcąc zrobić wspomniane 128x8 zastanowiłbym się nad zaprojektowaniem modułu np. 64x8 a potem powieleniem go w kilku sztukach. Jeżeli każdemu z nich dasz sensowny interfejs, można ich będzie podłączyć do jednego centralnego procesora dużo i zestawić dowolny wymiar w pionie i w poziomie. Opłaca się np. wstawić tam mały kontroler typu ATmega z zestawem kluczy tranzystorowych i wyciągnąć UART lub SPI jako interfejs.

Co do tranzystorów: możesz oczywiście iść w stronę bipolarnych i pompować prąd ze stopnia pośredniego ale zauważ, że cały prąd bazy ostatniego, największego tranzystora idzie w straty. Moim zdaniem warto przejść na MOSFETy. Bramka pobiera prąd tylko w czasie przełączania a przy multipleksowaniu częstotliwości nie są powalające. Generalnie całość konstrukcji powinna być optymalizowana. Trzeba się zastanowić jakie wymiary, jakie diody, w jakich warunkach będzie to oglądane itd.. i do tego dobrać klucze, zasilanie, sterowanie.

Do średnich projektów mogą przydać się rejestry przesuwające z wyjściami mocy. Z jednej strony mają wygodny i bardzo szybki SPI a drugiej dostajesz 8 wyjść typu otwarty dren zwierający do masy prąd do 150mA:

http://www.tme.eu/pl/details/tpic6b595dw/rejestry-przesuwne/texas-instruments/

Jeżeli połączysz takich 8 szeregowo do 3 linii procesora masz gotowe sterowanie 64 liniami katod przyłączanych do masy. Dodajesz jeszcze 8 driverów anod z pnp lub MOSFETów i masz matrycę 64x8. To tylko przykład, ale pokazuje, że jest wiele możliwości. Trzeba się tylko rozejrzeć. Drivery diod LED to cała osobna klasa scalaków. Mają przeróżne interfejsy wejściowe (I2C, SPI) i czasem bardzo fajnie zrobione wyjścia do wielu LEDów.

Drugi pomysł to diodki adresowane - już o tym na Forum było. Każdy LED ma trzy niezależnie sterowane struktury RGB (24 bitowy!), dwa piny zasilania +5V, wejście i wyjście cyfrowe. Łączysz je szeregowo w praktycznie dowolnie długie łańcuchy. Możesz sobie zrobić ścieżkę, matrycę albo kupić gotową tasiemkę lub płytkę:

http://botland.com.pl/wyswietlacze-led/2420-adafruit-neopixel-neomatrix-8x8-64-rgb-led.html

http://botland.com.pl/650-paski-led-adresowane

http://www.tme.eu/pl/katalog/#search=2812&s_field=accuracy&id_category=100684

Nie musisz tu niczego multipleksować. Kawałek programu w procesorze, jeden pin wyjściowy podłączony do pierwszej diody w szeregu i tyle. LEDy świecą same a wysyłasz informacje o kolorach tylko wtedy gdy zmieniasz zawartość ekranu/taśmy. Jasne, kolorowe i coraz tańsze - przynajmniej same diodki, bo ceny gotowych modułów w sklepach jednak powalają. Może ten wygląda sensownie(?):

http://allegro.pl/modul-neopixel-ws2812b-shield-arduino-matryca-8x5-i5687656842.html

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...