Pytanie:
Szeregowe sterowanie 25 diodami LED z jednego pinu
archgoon
2010-10-27 10:44:55 UTC
view on stackexchange narkive permalink

Mam mikrokontroler z jednym wolnym pinem cyfrowym.

Jak mogę sterować 25 diodami LED?

Czy diody LED można adresować oddzielnie, czy chcesz je wszystkie włączyć / wyłączyć w tym samym czasie?
Diody mają być oddzielnie dostępne. Mikrokontroler nie ma ich zasilać, a jedynie określać ich stan. Przez „port cyfrowy” rozumiem również pin.
Dziewięć odpowiedzi:
x4mer
2010-10-27 14:56:49 UTC
view on stackexchange narkive permalink

Shift Register i I2C są dobre, ale tylko wtedy, gdy są co najmniej 2 wolne piny. Sugeruję, że optymalnym rozwiązaniem będzie 1-przewodowy przedłużacz portu Dallas DS2408. Kod dostępu do urządzenia 1-wire Dallas nie jest tak skomplikowany i jest wiele przykładów w Internecie.

Możesz użyć kilku DS2408 podłączonych do jednego pinu lub zaimplementować więcej logiki po pojedynczym DS2408, w zależności od tego, co chcesz .

I2C może być użyte, jeśli nie ma wolnych pinów zerowych, zakładając, że twoja magistrala I2C jest używana jako taka i nie ma konfliktów adresów.
Connor Wolf
2010-10-27 11:00:08 UTC
view on stackexchange narkive permalink

I2C IO Expander: - Pewien narzut protokołu, ale powinien być rozszerzalny do bardzo dużej (tysięcy) liczby diod LED.

Prosty rejestr przesuwny - Martwy Prosty interfejs, diody LED mogą migać podczas aktualizacji, jeśli zegar rejestru przesuwnego nie jest dość szybki. Użycie podwójnie buforowanego rejestru przesuwnego rozwiązuje ten problem.

Dzięki, to jest dokładnie to, czego szukałem, ale nie wiedziałem, jak się nazywają.
Będzie to jednak wymagało co najmniej jednego szpilki. Czy rejestry przesuwne nie wymagają co najmniej dwóch pinów dla zegara i danych?
@blalor - Tak, ale te dwa piny są przeznaczone do współdzielenia przez wiele urządzeń I2C.
I2C to także dwie linie.
1-żyłowy Dallas wymaga tylko jednego styku, rozszerza się na N urządzeń.
Kevin Vermeer
2010-10-27 22:33:00 UTC
view on stackexchange narkive permalink

Mając tylko 1 pin IO, możesz użyć 1-przewodowego ekspandera / rejestru przesuwnego lub dodać kolejne urządzenie do magistrali I2C, jak już wspomniano. Jedyną rzeczą, o której jeszcze nie wspomniano, jest możliwość dodania kolejnego slave'a do twojego portu SPI.

SPI nazywa się protokołem 4-przewodowym - masz dwie linie danych, linię zegarową i wybierz linię (jak również wspólną podstawę, ale to zwykle się nie liczy). Jednak pierwsze trzy są współdzielone przez wszystkie urządzenia na magistrali, więc każde urządzenie po pierwszym zajmuje tylko jeden ślad / przewód. SPI również zwiększa twoją magistralę do pełnego dupleksu, ale to nie ma znaczenia dla tej aplikacji.

Tim
2010-10-27 10:56:09 UTC
view on stackexchange narkive permalink

Po prostu połączyłbym kilka rejestrów przesuwnych razem. (Zmniejsza to oczywiście częstotliwość, z jaką możesz przełączać diody LED ..)

stevenvh
2010-11-26 17:46:08 UTC
view on stackexchange narkive permalink

Jeśli naprawdę masz dostępny tylko 1 pin, 1-przewodowa magistrala Dallas wygląda na najbardziej oczywistą. Ponieważ jednak jest to tylko produkcja, istnieją tańsze rozwiązania. Szeregowa magistrala PWM, która przenosi zarówno dane, jak i zegar, jest łatwa do skonfigurowania; zobacz na przykład stronę Romana Blacka, o której również wspomniał davidcary. Potrzebujesz tylko szeregowo-równoległych rejestrów przesuwnych, takich jak 74VHC164, które możesz kaskadować dla dowolnej liczby wyjść (jedno '164 ma 8 wyjść).
W tym rozwiązaniu diody LED są napędzany statycznie.

Jeśli masz inne wejścia / wyjścia, które możesz udostępniać, na przykład SPI w I2C, możesz wybrać bardziej luksusowe rozwiązania, takie jak MAX6950 firmy Maxim. MAX6950 ma miganie i kontrolę jasności oraz ograniczenie szybkości narastania, żeby wymienić tylko kilka funkcji. Diody LED są multipleksowane, co oznacza, że ​​potrzebujesz tylko jednego 16-pinowego sterownika.

pingswept
2010-10-27 10:56:30 UTC
view on stackexchange narkive permalink

Odpowiedzią jest prawdopodobnie „seria rejestrów zmianowych”, ale czy możesz podać bardziej szczegółowe pytanie? Jaki mikrokontroler? Co rozumiesz przez „port cyfrowy”? Pojedynczy pin?

Dzięki, wyjaśniłem, a rejestry przesuwne są tym, czego szukam. Dziękuję Ci.
crasic
2010-10-27 11:11:44 UTC
view on stackexchange narkive permalink

25 diod LED, w zależności od rozmiaru, może pobierać dużo energii dla pojedynczego cyfrowego pinu IO w mikrokontrolerze. Zamiast sterować nimi bezpośrednio, prawdopodobnie powinieneś użyć prostego przełącznika FET (tak, aby IO było powiązane z bramką) do sterowania zasilaniem łańcucha diod LED.

W zależności od aplikacji istnieją inne bardziej niezawodne sposoby żeby tego dokonać. Ale wrzucenie fet prawdopodobnie sprawi, że będziesz pracował najszybciej.

Na przykład, jeśli chcesz bramkować zmienny sygnał, istnieją bardziej skomplikowane urządzenia, czasami nazywane przekaźnikami cyfrowymi, które umożliwiają cyfrowe przełączanie go.

Jak w przypadku indywidualnego sterowania 25 diodami LED za pomocą jednego portu IO. Jak sugerowali inni, możesz użyć kilku rejestrów przesuwnych. Istnieją bardziej skomplikowane rozwiązania polegające na komunikacji z innym układem scalonym przy użyciu protokołu szeregowego (na przykład I2C).

davidcary
2010-11-19 02:00:57 UTC
view on stackexchange narkive permalink

Roman Black opisuje system shift1, który umożliwia niezależne sterowanie dowolną liczbą diod LED z jednego pinu mikrokontrolera.

@ Fake Name, @Tim, @pingswept wszystkie sugerują łącząc razem kilka rejestrów przesuwnych, styk wyjściowy danych DO na jednym zasila styk wejściowy danych DI na kolejnym. 74HC595 działałby dobrze. (Być może inny układ działałby trochę lepiej).

(@reemrevnivek, z tego rodzaju połączonym łańcuchowo SPI, każde urządzenie po pierwszym nie wymagają więcej pinów w mikrokontrolerze, wbrew temu, co twierdzi wiele osób - dlaczego ich słuchasz? :-).

Zwykle wymaga to 4 pinów na mikrokontrolerze - MISO, MOSI, SCLK Ponieważ robisz tylko wyjście, nie potrzebujesz styku wejściowego MISO.

Roman Black odkrył, że przy bardzo ostrożnym ustawieniu czasu na pojedynczym wyjściu mikrokontrolera i przy niektórych Ostrożnie poprawiając obwód analogowy, pojedynczy pin mikrokontrolera może sterować prostym obwodem analogowym, który oddziela wspólny SCLK, pin DI pierwszego chipa w łańcuchu (MOSI) i wspólny sygnał zatrzasku.

Wtedy ten mikrokontroler może sterować 25 diodami LED z jednego pinu

avra
2010-11-19 13:46:14 UTC
view on stackexchange narkive permalink

Możesz podłączyć inny mikrokontroler przez ten pojedynczy pin i rozmawiać z nim przez 1wire (lub własny protokół, jeśli potrzebujesz dużej szybkości). Następnie ten drugi mikrokontroler zajmuje się diodami LED.



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 2.0, w ramach której jest rozpowszechniana.
Loading...