[100] Wyświetlacze multipleksowane cz. 1
![[100] Wyświetlacze multipleksowane cz. 1](/_next/image?url=https%3A%2F%2Farduino.pl%2Fimgproxy%2FR9ArDrYvkbX1ubHxeW0mzPO6e46VhTo0f6nvxmi_Ipk%2Ff%3Awebp%2Fw%3A1200%2FbG9jYWw6Ly8vaW1hZ2VzLzAtNjdlL2FmZmU2LzRmNGExLzAtNjdlYWZmZTY0ZjRhMTk3MjA5MDI5Mi5wbmc%3D.webp&w=3840&q=75)
Nawet w elektronice są takie rzeczy, które nigdy się nie zestarzeją. Ich przedstawicielem jest niewątpliwie wyświetlacz multipleksowany. O czym mowa? O tym za chwilę. Najpierw – o bohaterze artykułu słówko.
Wyświetlacz widoczny nieco niżej pochodzi z kalkulatora Brda, produkowanego w Polsce od 1976 roku jako kopia – trudno rzec czy licencyjna, czy nie – modelu amerykańskiego NSC. Kiedy tamten pojawił się na świecie? Zapewne wcześniej. Bardzo podobny mogliśmy zobaczyć w pierwszym kieszonkowym kalkulatorze Packarda z roku 1972. A więc można przyjąć, że technologia ma już ponad pół wieku, a idea jeszcze więcej, bo multipleks uprawiano także na wyświetlaczach żarnikowych i wyładowczych. I oczywiście powszechnie stosuje się nią obecnie.

Niestety cyferki tego wyświetlacza są maleńkie i z punktu widzenia wygody jego używanie nie ma sensu. Ale jest śliczny i do retro zabaw nadaje się bardzo dobrze, a treść artykułu jest jak najbardziej współczesna i zamiast tego zabytku można używać obecnie produkowanych cyferek. Gdyby jednak ktoś chciał pobawić się z technologią retro, zalecam zdobywać takie wyświetlacze z innych źródeł niż oryginalne, działające kalkulatory, bo szkoda ich psuć tylko dla pozyskania świecidełka. Ale nie o ten czy inny konkretny wyświetlacz tutaj chodzi, a o sposób sterowania wyświetlaczy siedmiosegmentowych połączonych w tak zwany multipleks.

Wyświetlacze siedmiosegmentowe, jak sama nazwa wskazuje, składają się z siedmiu diod albo grup diod świecących ułożonych w charakterystyczny kształt. A właściwie ośmiu, bo prawie zawsze towarzyszy im dodatkowa świecąca kropka. Zatem gdybyśmy chcieli zbudować zegar z sekundnikiem, potrzebowalibyśmy połączyć sześć takich cyferek czterdziestoma dwoma przewodami, więc w grę wchodziłoby tylko Arduino Mega. Ale tak się wyświetlaczy nie łączy, bo jest to nieoszczędne i niepraktyczne.
Istnieje kilka metod sensowniejszej współpracy zestawów wyświetlaczy z mikrokontrolerami. Najpopularniejsza wykorzystuje bezwładność ludzkiego oka. W rzeczywistości naraz świeci się tylko jedna cyfra, przez krótki czas, po czym gaśnie i włącza się kolejna – aż do ostatniej w zestawie. Jeśli cały cykl odbywa się kilkadziesiąt razy na sekundę, obserwator będzie widzieć wszystkie cyfry, bo ludzkie oko takich szybkich zmian nie widzi.

Po co tak? Otóż w takiej sytuacji można połączyć te same segmenty każdej z cyfr ze sobą. Mamy ich zatem znowu siedem, bez względu na ilość pozycji takiego wyświetlacza. Jak wiadomo, w każdej cyfrze drugie wyprowadzenia diod świecących łączone są ze sobą. Te już musimy poprowadzić do osobnych portów. Sześć cyfr to sześć linii, z siedmioma segmentami będzie tego już 13 albo 14 – z kropką, a tyle potrafi obsłużyć nawet Arduino Uno.
Zaleta więc jest konkretna. A wada? Wyświetlacz jednak mruga. Przy szybkim ruszaniu głową widać efekt stroboskopowy. Drugi problem: trzeba cały czas „uprawiać” proces wyświetlania, nie można po prostu wysłać danych i zająć się innymi sprawami. Jakiekolwiek zatrzymanie procesu zatrzyma wyświetlanie, pokazując tylko jedną, przypadkową cyfrę.
Jest jeszcze trzeci problem. Przy sześciu cyfrach prąd średni maleje sześciokrotnie. Zatem albo należy się godzić z tym, że będzie ciemniej, albo należy zwiększyć prąd tak, by jasność była zadowalająca, ale wtedy jest ryzyko, że gdy proces z jakiegoś powodu się zatrzyma, świecąca się cyfra będzie przeciążona.

O tym za chwilę, wróćmy teraz do naszego wyświetlacza. Zawiera on 9 cyfr, już połączonych w strukturze ze sobą tak, że na nóżkach pojawiają się wspólne segmenty oraz wspólne katody kolejnych pozycji. Wyświetlacze ze wspólną katodą są dziś mniej popularne od tych ze wspólną anodą i były popularne w latach siedemdziesiątych. Na szczęście dla Arduino nie ma to znaczenia, gdyż porty pracują tu symetrycznie.

Do połączenia wyświetlacza użyłem kawałka taśmy łączącego dysk twardy z kontrolerem z czasów interfejsów równoległych. Wykorzystałem tylko parzyste wyprowadzenia, do których przylutowałem goldpiny. Segmenty mają dodatkowo w szeregu rezystory ograniczające prąd do 5 mA. Jak je policzyć? Z prawa Oma oczywiście: napięcie wynosi 5 woltów, pomniejszamy o 2 wolty, bo taki jest spadek na wyświetlaczu i dzielimy przez 5 mA. Wychodzi 600 omów, dałem 560.
I teraz dygresja: ten wyświetlacz może przyjąć maksymalnie 5 mA na segment. Jeśli wykorzystam sześć pozycji, średni prąd spadnie poniżej miliampera. Będzie trochę ciemniej, ale gdyby w czasie eksperymentów program się zatrzymał, nie przeciążymy świecącej się wtedy cyferki.
Trzeba też pamiętać, że maksymalny prąd portów Arduino nie powinien być większy od 40 mA, a najlepiej nie powinien przekraczać połowy tej wartości. W najgorszym wypadku prąd ten wyniesie 40 mA, ale tylko gdy zaświeci się ósemka wraz z kropką i odświeżanie przestanie działać. Tak więc wszystko jest pod kontrolą i nie trzeba się tutaj obawiać zawieszeń, jak to bywało dawno temu, gdy multipleks zamarzał, a właściciel drogich wtedy wyświetlaczy wpadał w przerażenie.
Podsumowując, cała zabawa będzie nas kosztować osiem rezystorów i starą taśmę od dysku. No i sam wyświetlacz oczywiście. Wyprowadzenia podłączamy gdziekolwiek, z tym że ja jak zwykle użyję płytki edukacyjnej TME, na której mam też klawiaturkę – przydatną do ustawiania zegara, zatem trzy porty mam już zarezerwowane dla niej. No i oczywiście wyświetlacz ma 9 pozycji, a ja użyję tylko sześciu. Co nie znaczy, że tak ma być, każdy może sobie rozbudować program, wyświetlając na rozdzielających pozycjach kropki albo kreski.
W kolejnym artykule przyjrzymy się programowej realizacji idei multipleksu i w ten sposób nasz zegar ożyje.