Jak kontrolować kilkaset pojedynczych diod LED za pomocą Arduino (s)?

10

Pracuję nad projektem elektronicznym, który obejmuje setki diod LED. (Mówiąc w górę od sześciu do siedmiuset diod LED ... dużo, wiem.) Czy jest jakiś sposób, aby kontrolować tak wiele diod LED za pomocą jednego lub kilku Arduinos? Chciałbym mieć dostęp do każdej diody LED / kontrolować ją osobno, ponieważ chcę, aby diody LED były narysowane na ściennej mapie świata. Następnie połączę Arduino z Google Analytics, a kiedy ktoś przejdzie do mojej witryny z określonego miejsca na świecie, dioda LED najbliżej swojego regionu zaświeci się prawie w czasie rzeczywistym.

Każda pomoc będzie mile widziana. Dzięki! Próbowałem trochę zbadać i poczytać o multipleksowaniu i charlie-pleksowaniu, ale te wydają się osiągać maksimum na poziomie 100? Zakładam, że potrzebowałbym zewnętrznego sprzętu / komponentów, aby móc kontrolować tak wiele diod LED, ale co dokładnie musiałbym, aby tak się stało? Czy ktoś jeszcze stworzył tak dużą matrycę LED?

kaffolder
źródło

Odpowiedzi:

9

Kiedy multipleksujesz dużą liczbę diod LED indywidualnie, powszechnym sposobem jest użycie matrycy N x M. Czas jest podzielony na N kroków, w każdym kroku aktywujesz jedną z N linii wiersza, a linie kolumn odpowiadają diodom LED, które chcesz włączyć. Zauważ, że każda linia rzędu może przenosić M razy prąd diody LED, co wymaga pewnego buforowania. Każda dioda LED świeci tylko 1 / N czasu, więc aby utrzymać normalną jasność, musisz zwiększyć bieżący N-krotnie. Większość diod LED tego nie lubi. Charlieplexing nie jest w tej sytuacji praktyczny z powodu dużych prądów.

Z twojego pytania rozumiem, że chcesz włączyć tylko 1 diodę LED na raz? W takim przypadku nie ma nic złego w Charlieplexing. UC z 31 pinami I / O może zasilać 900 diod LED. Wygląda na to, że budowa będzie koszmarem ...


Aktualizacja 5 lat później: normalne multipleksowanie lub Charlieplexing jest miłe, gdy masz za dużo czasu, ale kiedy musiałem kontrolować 100 diod LED teraz kupiłbym długi pasek diod WS2801.

Wouter van Ooijen
źródło
Myślę, że mam coś do dodania. Cóż, jeśli problemem jest wysoki prąd, użyj wysokiego napięcia. jak 9 V, ale przez bardzo krótki czas 10 ms i poprawnie obliczony cykl pracy. Ponieważ wykorzystuje również zwiększenie żywotności lamp LED.
Standard Sandun
Napięcie spadające przez diodę LED jest stałe, podobnie jak napięcie wyjściowe Arduino (prawdopodobnie 5 V, dla niektórych typów 3,3 V). Zastosowanie wyższego prądu przy mniejszym cyklu pracy ogólnie skraca żywotność diod LED.
Wouter van Ooijen
9

Możesz użyć taniego i łatwo dostępnego rejestru przesuwnego 74HC595 (lub podobnego) do łatwego sterowania setkami diod LED za pomocą zaledwie kilku pinów z arduino.

Na stronie Arduino jest nawet samouczek na ten temat!

Przełączanie szeregowe na równoległe z 74HC595

Shifting Out i układ 595

W pewnym momencie możesz zabraknąć pinów na swojej płycie Arduino i musisz rozszerzyć ją o rejestry przesuwne. Ten przykład oparty jest na 74HC595. Arkusz danych odnosi się do 74HC595 jako „8-bitowy rejestr przesuwny szeregowy, szeregowy lub równoległy z zatrzaskami wyjściowymi; 3-stanowy”. Innymi słowy, możesz go użyć do sterowania 8 wyjściami jednocześnie, jednocześnie zajmując tylko kilka styków mikrokontrolera. Możesz połączyć wiele rejestrów razem, aby jeszcze bardziej zwiększyć wydajność.

Michael Choi
źródło
To by było dużo rejestrów przesuwnych, ale zadziałałoby :) Potrzebujesz około 88 (700 diod / 8 diod na chip) rejestrów przesuwnych i tylko 1 mcu.
Johan
1
Nie zapomnij o dodatkowych sterownikach logicznych, ponieważ 88 danych wejściowych jest całkiem sporo do obsługi.
Ignacio Vazquez-Abrams
2

Zbudowałbym to w sposób modułowy. 6960 Maxima będzie napędzał dla ciebie 64 diody LED, choć jest to trochę drogie. Są one napędzane interfejsem szeregowym i można podłączyć do 256 z nich razem.

7218/7221 też by działał.

Eric Gunnerson
źródło
2

Trochę spóźniona odpowiedź na to pytanie, ale oto 528 diod LED Charlieplexed wyłączony pojedynczy PICAXE 40X2. Gdyby wszystkie piny były przeznaczone do tego zadania, wzrosłoby do 930 diod LED.

Kompilacja: http://www.picaxeforum.co.uk/entry.php?25-The-PICaxe-orrery

Wideo: http://www.youtube.com/watch?v=82LvqiaH-iA

Architektura PICAXE jest dość wolna, więc maksymalna liczba diod LED, które mogą świecić jednocześnie, jest ograniczona do około 15, zanim migotanie stanie się problemem. Szybszy procesor i sprytniejsze programowanie znacznie zwiększyłyby tę liczbę.

Buzby
źródło
1

Nie jestem pewien, czy moja odpowiedź jest dobra, czy nie ... ale dlaczego nie mówić o adresowalnych paskach led WS2811?

Chcemy zrobić matrycę LED, aby wyświetlić tekst. Jest tutaj projekt ( https://www.pjrc.com/teensy/td_libs_OctoWS2811.html ), wykonany na Teensy, który jest prawie taki sam jak Arduino.

Myślę, że wykorzystuje koncepcję PWM (modulacja szerokości impulsu), a tym samym pozwala przesyłać złożone dane do pasków diod za pomocą jednego drutu.

Ale znowu nie jestem pewien, czy moja odpowiedź jest dobra ...

Szymon
źródło
Problem polega na tym, że wymagany czas ogranicza liczbę diod LED, które można połączyć razem, a rozłożenie ich na wiele łańcuchów wydłuża ogólny czas przetwarzania.
Ignacio Vazquez-Abrams
0

W ostatnim pytaniu tutaj odbyliśmy miłą dyskusję na temat napędzania wielu diod LED. Moja odpowiedź wydaje się, że tutaj bezpośrednio dotyczy twojego problemu. Zobacz odpowiedź tutaj:

Prowadzenie diod LED na duże odległości

Michael Karas
źródło
4
Czy możesz przynieść odpowiednie informacje i dostosować je do tego pytania, jeśli twoja odpowiedź działa idealnie dla obu, jest to znak dokładnego duplikatu.
Kortuk
0

Na podstawie informacji pod adresem http://bildr.org/?s=shift+register w rejestrze przesuwnym 74H595 z Arduino Uno, które mówiły „jeśli masz 1000 takich połączonych razem”, projekt został rozpoczęty na wyświetlaczu LED z 320 diod LED. Kiedy osiągnąłem ponad 100 diod LED, źle migotałem i ostatecznie usmażyłem Arduino.

Rozmawiałem więc ze wsparciem technicznym w Sparkfun, który sprzedał mi płyty Breakout dla 74H595. Powiedział, że możesz mieć jednocześnie tylko pięć lub sześć diod LED. Więc wróciłem i ponownie przeczytałem artykuł w BLDR i zdałem sobie sprawę, że możesz kontrolować tysiące diod LED za pomocą 74H595 / Arduino, ale możesz mieć tylko kilkanaście naraz. (Ma to sens, ponieważ Arduino pozwoli na 200mA przez 5 woltów na wyjściu, a każda dioda pobiera 20mA, więc około dziesięć to wszystko, co będzie bezpiecznie zasilać)

Widziano tranzystory, które można włączyć za pomocą prądu 1mA. Jeśli jest to prawdą, gdyby można było zaprojektować obwód sterujący tranzystorami, które mają znacznie wyższy kolektor napięcia / prądu do emitera. Następnie można użyć kombinacji Arduino / 74H595 do sterowania tranzystorami w obwodzie o wyższym prądzie.

Allen w Dallas

Allen Pitts
źródło