Wróć do informacji o e-podręczniku Wydrukuj Pobierz materiał do PDF Pobierz materiał do EPUB Pobierz materiał do MOBI Zaloguj się, aby dodać do ulubionych Zaloguj się, aby skopiować i edytować materiał Zaloguj się, aby udostępnić materiał Zaloguj się, aby dodać całą stronę do teczki

Multipleksacja i demultipleksacja – teoria

W poprzedniej części tego e‑materiału spotkaliśmy się z problemem, w którym liczba  dostępnych w płytce pinów GPIO może być ograniczeniem dla naszego projektu. Jak wówczas wspomnieliśmy, jednym z rozwiązań takiej sytuacji jest skorzystanie ze zwielokrotnienia liczby dostępnych pinów. Taki proces – w zależności od tego, w którą stronę się odbywa – nazywamy multipleksacją (dla wyjść) lub demultipleksacją (dla wejść).

Obie te metody, poza ich podstawowym zadaniem, jakim jest zwiększenie liczby dostępnych pinów, pozwalają na uproszczenie siatki połączeń oraz zmniejszenie liczby elementów potrzebnych do wykonania danego projektu (np. rezystorów).

Pojęcie multipleksacji w ogólnym sensie znaczy „zwielokrotnienie”. Proces ten może odbywać się na kilka sposobów, jak choćby przez układ scalony, który przyjmuje instrukcję w wybranym protokole komunikacyjnym, np. IIndeks górny 2C,  a następnie odpowiednio konfiguruje wszystkie dostępne wyjścia. Z kolei demultipleksacja jest odwrotnością multipleksacji, czyli w sposób analogiczny dotyczy wejść podpiętych do jednego układu scalonego. Układ ten po odczytaniu ich stanu przesyła w danym protokole stan wszystkich wejść.

W świecie mikrokontrolerów znacznie częściej spotkamy się z własnym implementowaniem multipleksacji, niż korzystamy z tzw. ekspandera wyjśćekspander wyjśćekspandera wyjść. Chodzi o takie podłączenie elementów wyjściowych, aby można było sterować nimi z wykorzystaniem mniejszej liczby pinów.

Przeanalizujmy to na konkretnym przykładzie. Jak pamiętamy, w pierwszej części tego e‑materiału posłużyliśmy się matrycą dwukolorowych diod LED o wymiarze 3x3, co oznaczałoby użycie łącznie 18 pinów GPIO do ich obsługi oraz 18 rezystorów. Stosując multipleksację, czyli układając diody w formie wierszy i kolumn, wykorzystaliśmy łącznie 9 pinów GPIO oraz 9 rezystorów. Zysk wyniósł w tym przypadku 50%! Dodatkowo dzięki łatwiejszym połączeniom ograniczyliśmy liczbę wykorzystanych przewodów połączeniowych.

Porównajmy schematy elektryczne matrycy LED bez multipleksacji oraz wersji z multipeksacją.

Na pierwszym schemacie widzimy wariant bez multipleksacji. Zapalenie diody odbywa się tu przez wystawienie odpowiedniego stanu na zadanym pinie. Na przykład aby zapalić na czerwono diodę numer 4, należy na pinie 4_R wystawić stan wysoki. Pozostałe stany są obojętne.

RKCTm5bt0E9SK

A teraz spójrzmy na schemat matrycy diod LED z ułożeniem do multipleksacji:

RJiAxb8q7dgwn

W tym przypadku zapalenie diody odbywa się przez wystawienie odpowiednich stanów na skrzyżowaniu linii sterujących. Jednocześnie możemy sterować tylko jednym wierszem, zapalając w nim dowolną liczbę kolumn. Przykładowo, w celu zapalenia diody numer 4 na kolor czerwony należy na pinie sterującym 2KR wystawić stan wysoki, natomiast na pinie 2W stan niski, a zarazem na pinie 1W oraz 3W stan wysoki.

Skoro jednak nie możemy sterować więcej niż jednym wierszem jednocześnie, to jak zapalić wszystkie diody? Korzystamy tu z bezwładności ludzkiego oka, które nie jest w stanie nadążyć za bardzo szybkimi zmianami. Jeśli będziemy odpowiednio szybko odświeżać stan diod w każdym wierszu, nasze oko odbierze je jako obraz statyczny i dzięki temu zobaczymy równomiernie świecącą matrycę LED.

Ciekawostka

Przez zastosowanie multipleksacji do sterowania przy nagrywaniu źródeł światła (np. matrycy LED) w obrazie kamery widzimy miganie poszczególnych elementów.

Słownik

ekspander wyjść
ekspander wyjść

potoczna nazwa układu umożliwiającego zwiększenie liczby wyjść mikrokontrolera

I2C
I2C

jeden z podstawowych typów magistrali szeregowej służącej do przesyłania danych między dwoma układami