Rozważam podjęcie projektu, który wymagałby indywidualnego adresowania 500 diod LED, optymalnie z obsługą PWM dla każdej z nich.
Planuję używać Arduino, ponieważ już go mam, ale jestem otwarty na sugestie, jeśli ktoś myśli, że inna platforma byłaby lepsza.
Konieczne byłoby zastosowanie rejestrów zmianowych. Jakiego rejestru przesuwnego należy używać w tej sytuacji? Jeśli PWM sprawia, że ten projekt jest znacznie droższy, to mogę się bez niego obejść. Chcę spróbować wydać mniej niż 100 USD. Kupiłbym masowo 500 diod LED w serwisie eBay.
Jak oceniasz najlepszy sposób kontrolowania tak dużej liczby diod LED? Ponadto, jak bym poszedł o dostarczaniu mocy? Byłbym wdzięczny za wszelką pomoc. Mam dość duże doświadczenie z elektroniką, nigdy nie robiłem nic na tak dużą skalę.
źródło
Po prostu skopiuj :-)
http://www.evilmadscientist.com/article.php/peggy2
źródło
W jakim układzie chcesz mieć diody LED? Możesz zaoszczędzić dużo pracy, jeśli kupisz niektóre matryce LED, możesz uzyskać jednokolorowe matryce LED 8x8 (64 diody LED) za grosze lub dwie .
Nie uzyskasz prawdziwego PWM z AVR i rejestrami przesuwnymi na wielu diodach LED, ale możesz być w stanie wycisnąć 2-4 poziomy jasności. Musiałbyś uruchomić liczby i zobaczyć, co jest możliwe.
Allegro tworzy kilka przydatnych rejestrów przesuwnych prądu stałego, specjalnie zaprojektowanych do kontrolowania układów diod LED, dzięki czemu nie potrzebujesz dodatkowych rezystorów, co również uprości sprawę. Być może nie będziesz mógł sterować diodami LED bezpośrednio z wyjścia AVR, jeśli nie może zapewnić wystarczającej mocy, więc musisz użyć tranzystorów. Możesz umieścić je w tablicach w jednym układzie scalonym , co również oszczędza trochę pracy.
źródło
Nie mam pojęcia, jaki zakres PWM potrzebujesz do diody LED, ale pracowałem nad 64-kanałowym kontrolerem PWM do aplikacji serwosterowania, która może dać mi impulsy między 600us a 2.4ms. Wykorzystuje CD74HCT238E (demultipleksery 3-8 linii) do generowania 64 kanałów z 8 pinów I / O na ATMega168 i można nim sterować za pomocą prostych poleceń szeregowych. Wydaje mi się, że możesz połączyć wiele wersji zmodyfikowanej wersji tego kontrolera razem na linii szeregowej i zaadresować wszystkie 500 diod LED ... Prawdopodobnie możesz użyć wersji kontrolera ATTiny2313, ponieważ wymagania dotyczące oprogramowania układowego byłyby prostsze.
Mój blog zawiera źródło montażu oraz schematy i szczegóły procesu projektowania.
źródło
Sprawdź układy scalone „LED driver” na mouser / digikey. Na przykład TI tworzy grupę sterowników z różnymi interfejsami (I2C, SPI), które z pewnością zaspokoją Twoje potrzeby. Większość tych sterowników zaprojektowano tak, aby były połączone szeregowo, dzięki czemu szeregowy sygnał wyjściowy z jednego jest wprowadzany do szeregowego drugiego.
Na przykład coś takiego jak TLC5940 oferuje 16-kanałową kontrolę PWM. Zasadniczo jest to 16-bitowy rejestr przesuwny o stałym natężeniu z 12-bitową kontrolą PWM w skali szarości. Mogę polecić ten konkretny układ scalony, ponieważ pomogłem zaprojektować z nim wyświetlacz 80x16.
źródło
Mondomatrix produkuje szeregowe, adresowalne tablice sterowników LED i jest oparty na platformie Arduino: http://www.displayduino.com/ Możesz być w stanie złożyć system przy użyciu tego sprzętu dość łatwo
źródło
Jeśli nie chcesz zbyt wielu bitów kontroli PWM dla każdej diody LED i chcesz uniknąć konieczności manipulowania procesorem z 500 diodami LED w każdym cyklu PWM, możesz kontrolować 8 diod LED o N bitach jasności za pomocą N 74HC595 lub równoważnych układów . Połącz wyjścia wszystkich N układów scalonych razem i połącz zezwól z niektórymi obwodami, które umożliwią tylko jeden na raz z odpowiednim taktowaniem. Rozmieść tak, aby pierwszy chip był włączony do połowy czasu, drugi do połowy pozostałej części itp.
Każde przeładowanie rejestrów przesuwnych powinno być zsynchronizowane z szybkością PWM, aby zminimalizować efekty aliasingu (np. Jeśli poziom jasności zmieniał się gwałtownie między 0111 a 1000, punkt w cyklu PWM, w którym nastąpiło przełączenie, może chwilowo zmienić jasność pozorną ).
Chociaż korzystanie z wielu wyjść 74HC595 dla każdej diody LED może być denerwujące, to podejście jest prawdopodobnie najprostsze, które może utrzymać różne poziomy jasności bez ciągłej interwencji CPU.
źródło
To nie odpowiada bezpośrednio na pytanie, ale kolejnym aspektem, który możesz wziąć pod uwagę, jest możliwa zmienność jasności wśród diod LED w 500 partii. Jest to szczególnie ważne, jeśli te diody LED są montowane blisko siebie, jak na matrycy lub w wyświetlaczach 7-segmentowych. Zobacz tę odpowiedź aby uzyskać więcej informacji na temat rozwiązania tego problemu, w szczególności za pomocą korekcji kropek w celu kompensacji zmian jasności diod LED.
Ten problem wystąpił, kiedy dostałem 200 1mm czerwonych diod LED dla zestawu dużych 7-segmentowych wyświetlaczy, które budowałem. Moje tanie rozwiązanie problemu polegało na:
źródło
Sugeruję użycie techniki modulacji kąta binarnego opisanej w tym artykule http://www.artisticlicence.com/WebSiteMaster/App%20Notes/appnote011.pdf
Lub sprawdź bibliotekę ShiftPWM http://www.elcojacobs.com/shiftpwm/
źródło
XMOS używa Macroblock MBI5026 z ich zestawami płytek LED. Myślę, że są one używane w większości innych profesjonalnych systemów.
Leon
źródło
Dedykowane układy sterownika z interfejsami szeregowymi rzeczywiście będą prawdopodobnie najlepszą drogą. Radzenie sobie z poszczególnymi rejestrami przesuwnymi będzie prawdopodobnie oznaczało bardzo złożony obwód. Przynajmniej robią to Maxim i TI. Nie pamiętam, czy któryś z nich ma do tego szczególnie odpowiedni model.
Nadal zajmie dużo sprzętu.
Jeśli chodzi o zasilanie, programowanie i magistrale, arkusz danych dla każdego sterownika będzie prawdopodobnie zawierał najwięcej informacji, których potrzebujesz.
źródło
W dziedzinie oprogramowania, jeśli liczba potrzebnych różnych ustawień jasności nie jest zbyt duża, pomocne może być przechowywanie danych w formacie „bit-planar” (jak opisano w mojej innej odpowiedzi sprzętowej), a następnie procedury wyjściowe używają operatorów logicznych do działania na 8 pikseli jednocześnie. Aby uzyskać maksymalną wydajność, będzie to wymagało posiadania wielu oddzielnych procedur wyjściowych, używanych dla różnych części cyklu PWM; na przykład, jeśli chce się użyć 4-bitowych wartości jasności, użyłby się ośmiu procedur postaci:
Można stosować różne kombinacje IORWF i ANDWF, w zależności od wartości porównania. Zauważ, że stosując to podejście, jak pokazano, można aktualizować wartości jasności pikseli w dowolnym punkcie cyklu PWM bez migotania, pod warunkiem że wszystkie cztery bity są zapisywane między wywołaniami procedury przesunięcia wyświetlania lub poprzez procedurę aktualizacji pikseli określającą, czy następne przesunięcie wyświetli „1” lub „0” dla piksela i albo ustawi lub usunie wszystkie bity piksela (dowolna operacja sprawi, że zrobi to, co zamierzał zrobić i tak), a następnie zapisze wszystkie bity, których wartość powinna być odwrotnie. Należy również zauważyć, że można osiągnąć dowolną nieliniową skalę jasności, zmieniając czas aktualizacji wyświetlacza lub stosując niektóre wartości porównania więcej niż raz w cyklu PWM.
źródło
Układy FPGA lub CPLD mogą być przydatne do takich zadań, ponieważ oferują wiele styków we / wy. Wybierz najprostszy i najtańszy. Jeśli jedno nie wystarczy, użyj pary.
źródło
Prawie na pewno możesz to zrobić z łatwością za pomocą PSoC3 lub PSoC5 .
Układy PSoC to mikrokontrolery, które zawierają rekonfigurowalny sprzęt cyfrowy, trochę podobny do FPGA lub CPLD. Oznacza to, że możesz tworzyć złożone obwody do wykonywania nietypowych czynności, takich jak sterowanie 500 diodami LED za pomocą PWM. Co więcej, prawdopodobnie możesz wszystko zaimplementować przy użyciu ponownie konfigurowalnych bloków cyfrowych, co oznacza, że część procesora układu musi tylko zapisać pożądane jasności LED w tablicy.
504 diody LED pasują do prostokąta 21 x 24. Jeśli miałbyś 24 kanały PWM i 21 GPIO, to możesz zacząć działać. Zgadnij co? PSoC ma więcej.
Możesz łatwo skonfigurować 24 kanały PWM na PSoC i skonfigurować 21 innych pinów, aby były częścią rejestru przesuwnego. Następnie skonfiguruj niektóre kanały DMA, aby pompowały bajty z pamięci do wyjść PWM, i się śmiejesz. Procesor musi teraz tylko wygenerować grafikę. PSoC3 ma 8-bitowy rdzeń 8051, a PSoC5 ma 32-bitowy ARM. Wybierz. Jedyne zewnętrzne układy scalone, których potrzebujesz, to niektóre ULN2803, aby zapewnić wysoki prąd napędu dla rzędów. Wyjścia PWM powinny mieć wystarczającą ilość prądu dla pojedynczych diod LED.
źródło
Wykorzystaj korzyści skali. Chińskie witryny takie jak Aliexpress sprzedają nici LED oparte na WS2811 za ~ 15 USD za 50 diod LED. Są indywidualnie adresowalne, jasne, zwykle wodoodporne i mają PWM do jasności. Żadnych rejestrów lutowania ani shiftów, które mogłyby zepsuć oba. Zrobię to wszystko sam, założę się, że będzie cię to kosztować więcej, zajmie ci więcej czasu i będzie bardzo frustrujące. Plus jesteś w Oz, więc wysyłka z Chin nie będzie zbyt droga.
Są one stworzone do tworzenia gigantycznych wyświetlaczy LED, więc wydają się być dość tanie. Upewnij się, że ponownie wstrzykujesz energię co około 50 diod LED, aby uzyskać najlepszą wydajność.
Istnieją również biblioteki Arduino, aby były łatwe w użyciu.
źródło