Chcę używać zwykłej tablicy Arduino do sterowania diodami LED - jakie jest najwięcej świateł, którymi mogę sterować indywidualnie z tablicy?
Czy istnieje samouczek, jak to podłączyć?
Chcę używać zwykłej tablicy Arduino do sterowania diodami LED - jakie jest najwięcej świateł, którymi mogę sterować indywidualnie z tablicy?
Czy istnieje samouczek, jak to podłączyć?
Odpowiedzi:
Wierzę, że za pomocą pleksowania N linii Charlie steruje diodami LED N * (N-1). Jest dobry artykuł na Wikipedii.
Mój przyjaciel, Jimmie P. Rodgers, umieścił 126 diod LED na tarczy Arduino. Używa charlie-plexingu do sterowania diodami LED. Niektóre informacje na jego tablicy znajdują się pod adresem - jimmieprodgers.com/2009/12/my-development-process/ (kopia archive.org)
Na ostatnim spotkaniu grupy użytkowników Arduino w Bostonie Jimmie P. Rodgers narysował schemat pleksowania Charliego jako matrycę z etykietowanymi sieciami. Rysowane w ten sposób schematy zdawały się dobrze przekazywać koncepcję. Stworzyłem kilka podobnych schematów - patrz http://wiblocks.luciani.org/FAQ/faq-charlie-plex.html
jimmieprodgers.com
Ogniwem w tej odpowiedzi jest ładowany z wirusami.
Możesz użyć rejestrów Shift ( http://en.wikipedia.org/wiki/Shift_register ), aby uzyskać tyle równoległych wyjść z jednego strumienia szeregowego, ile chcesz.
Musisz się martwić ograniczeniami mocy. Tak naprawdę nigdy nie korzystałem z Arduino, ale zakładam, że ma on aktualny limit, tak jak robią to PIC. Ponadto rejestry przesuwne same będą miały bieżący limit. Jeśli na to wpadniesz, będziesz musiał rozważyć użycie czegoś takiego jak MOSFET, aby umożliwić sterowanie diodami LED bez konieczności pobierania dużej mocy bezpośrednio z mikrokontrolera.
Dowolny dany pin mikrokontrolera AVR może pobierać prąd do 40 mA, a całkowity zasilacz pochodzący z układu scalonego (tj. Na ziemi i styki Vcc) musi być mniejszy niż 200 mA.
Charlieplexing to świetne rozwiązanie w sytuacjach, gdy potrzebujesz wielu diod LED, ale możesz sobie poradzić, gdy świeci tylko jedna dioda LED na raz. Standardowa tablica Arduino (jak Duemilanove) zapewnia 17 „wolnych” styków we / wy, nie licząc TX, RX, resetowania ani styku 13. Zatem możesz podłączyć 17 * 16 = 272 diod LED. Może to działać dobrze, zwłaszcza jeśli palisz jedną diodę LED lub szybko skanujesz tylko kilka. Ale jeśli próbujesz zapalić całą matrycę za pomocą wzoru, przekonasz się, że każda jest włączona (nieco mniej niż) w 1/272 czasu, więc jeśli twój prąd napędowy wynosiłby 30 mA w danym momencie, każda dioda LED średni prąd wyniósłby około 0,1 mA - dość słabo.
Jeśli nie potrzebujesz tak wielu diod LED, ale potrzebujesz większej jasności, lepszym rozwiązaniem może być tradycyjne multipleksowanie. W takim przypadku niektóre linie są używane jako wiersze, a niektóre jako kolumny w macierzy. Jeśli użyjesz prądu LED 10 mA, możesz zdefiniować macierz 4 kolumn i 13 rzędów, w których wszystkie 4 diody LED w jednym rzędzie mogą świecić jednocześnie, i skanujesz rzędy. Następnie każdy rząd ma 1/13 czasu przy prądzie 10 mA, więc średni prąd LED może wynosić nawet 0,76 mA, ALE dostajesz tylko 4 * 13 = 104 diody LED. (Zdecydowanie jaśniejsze na diodę LED niż przy charlieplexowaniu).
Ograniczeniem w ostatnim przykładzie jest 40 mA na pin na AVR - ponieważ każdy rząd pinów zasilających 4x10 = 40 mA. Jeśli zezwolisz na dodanie zewnętrznych tranzystorów (które mogą być tanie i małe) do wyjść szeregowych, możesz uniknąć tego konkretnego limitu i przejść jaśniej. Na przykład, możesz stworzyć tablicę 8x9, z 8 rzędami i 9 kolumnami, łącznie 72 diodami LED. Jeden z 8 rzędów jest włączony jednocześnie, wybierany przez tranzystor. Jednocześnie może świecić maksymalnie 9 diod LED w danym rzędzie, zasilanych prądem o wartości 20 mA, więc 180 mA pochodzi z tranzystora, a Ty pozostajesz poniżej obecnych limitów AVR. Średni prąd na diodę LED wynosi teraz 20 mA / 8 = 2,5 mA - zwykle dość jasny.
Jest tu bardzo ładny, szczegółowy samouczek , który zawiera sekcję dotyczącą używania Arduino do uruchamiania kostki LED 8x8x8. (Nie przegap filmu, który przygotowali)
Przy 17 pinach I / O, siedemnastu tranzystorach NPN (podążających za emiterem w celu zwiększenia prądu) nie powinno być szczególnego problemu z wyświetlaniem 272 diod LED w dowolnych kombinacjach przy cyklu pracy 1/17, ze średnim prądem lub 0,7mA (200mA / 272), ograniczone przez zdolność układu do obniżenia 200mA na raz. Dodanie diody, aby uzyskać spadek o 0,7 woltów, pozwoli na dodanie kolejnych 17 diod LED (skrócenie cyklu pracy do 1/18), chociaż jasność nie będzie dokładnie pasować do pozostałych.
Podczas gdy Windell Oskay dobrze argumentuje, że 104 diody LED to maksimum bez dodawania kolejnych tranzystorów, Tom Igoe opublikował zdjęcia matrycy 128 diod LED sterowanych bezpośrednio przez pojedynczy Arduino Mega - bez dodatkowych tranzystorów, dyskretnych lub zintegrowanych.
Czy Tom Igoe „oszukuje” przez chwilowe przekroczenie „absolutnego maksymalnego prądu na pin” wymienionego w arkuszu danych?