Multipleksowanie wielu wyświetlaczy LED

Multipleksowanie wielu wyświetlaczy LED

Niewielkie matryce LED oraz zwykłe wyświetlacze siedmiosegmentowe są chętnie stosowane w wielu urządzeniach. Prosty wygląd, niska cena, doskonała widoczność wyświetlanych znaków i trwałość – to atuty mogące przyciągnąć wielu nabywców. W przypadku jednego czy dwóch wyświetlaczy sterowanie nie wymaga specjalnych rozwiązań, ale w bardziej rozbudowanych konfiguracjach może znacznie skomplikować projekt. Jak sterować matrycami LED w sposób prosty i zoptymalizowany ekonomicznie?

W projektowanych przeze mnie urządzeniach od wielu lat stosuję niewielkie matryce LED o organizacji 5×7 pikseli. Kiedy są ułożone dłuższą krawędzią poziomo, można na nich zbudować dwa pola odczytowe o wielkości 5×3 pikseli. A w razie konieczności można użyć całej powierzchni matrycy, do sygnalizacji np. kodu błędu urządzenia lub ustawień serwisowych. Dla jednej takiej matrycy stosuję układ z rysunku 1.

Rysunek 1. Schemat ideowy prostego sterownika pojedynczej matrycy LED

Rejestry przesuwne typu 74HC595 pozwalają ograniczyć liczbę koniecznych wyprowadzeń mikrokontrolera do zaledwie 3...4. Pierwszy bajt, wpisywany do układu US2, załącza odpowiednie kolumny a drugi bajt zostaje zatrzaśnięty w US2 załączając odpowiedni wiersz. Do odświeżania zawartości rejestrów można użyć interfejsu SPI mikrokontrolera, bowiem wartości logiczne na linii DATA są zatrzaskiwane na narastającym zboczu sygnału na linii SHCP. Po zakończeniu transmisji należy wystawić zbocze narastające na linii STCP (nawet krótko trwającą szpilkę), aby zaktualizować zawartość rejestrów wyjściowych w układach 74HC595. Wejść SCL nie używam, są podłączone na stałe do dodatniej linii zasilania.

Czwarty sygnał sterujący

Opisana konfiguracja zajmuje trzy wyprowadzenia mikrokontrolera, a gdzie czwarte? Linia OE – Output Enable, kiedy przyjmuje stan niski, wyjścia QA…QH utrzymują zapisane stany logiczne. Stan wysoki na linii OE powoduje natychmiastowe przejście wszystkich tych wyjść w stan wysokiej impedancji (Hi-Z). Aż się prosi aby podać tam sygnał PWM sterujący jasnością diod matrycy. Tak właśnie robię: im mniejsze wypełnienie, tym jaśniej świeci wyświetlacz. Podając stale stan wysoki można diody po prostu wyłączyć. Zawartość rejestrów jest w tym czasie utrzymywana, zatem ich odświeżanie może przebiegać całkowicie asynchronicznie względem sygnału PWM regulującego jasność.

Mała uwaga ode mnie: warto wrócić myślami do początków techniki telewizji i przypomnieć sobie, w czym wybieranie międzyliniowe (najpierw linie nieparzyste, potem parzyste lub odwrotnie) było lepsze od kolejnoliniowego (wszystkie linie rysowane jedna po drugiej). Powodem było znacznie słabsze migotanie obrazu i efekt ten można zaobserwować również w przypadku tak prostych wyświetlaczy zwłaszcza, gdy częstotliwość odświeżania nie jest zbyt wysoka. Można w prosty sposób skonstruować funkcję generującą takie ciągi bitów, aby wybierany był co drugi wiersz matrycy. Będzie to miało pozytywny wpływ na jakość wyświetlanej treści.

Więcej wyświetlaczy

Co jednak zrobić, kiedy takich wyświetlaczy mamy więcej niż jeden, na przykład trzy? Układ US1 obsługujący wiersze może się zbuntować, bowiem przez jedno jego wyprowadzenie może płynąć prąd o natężeniu nie większym iż 35 mA, zaś przez linie zasilające 70 mA. Nietrudno zatem obliczyć, że w przypadku pojedynczej matrycy (schemat z rysunku 1) prąd poszczególnych pikseli nie może przekraczać 5 mA. Daje to wystarczającą jasność, ale rozbicie tych 35 mA, które może zaoferować 74HC595 sterujący wierszami, na większą liczbę wyświetlaczy spowoduje znaczny spadek jasności maksymalnej. Dlatego trzeba zastosować dodatkowy driver do obsługi wierszy.

Rysunek 2. Schemat ideowy sterownika wielu matryc LED

Pierwszy pomysł jaki się nasuwa to stary, dobry i tani ULN2003, który powinien wystarczyć. Na rysunku 2 znajduje się schemat ideowy takiego rozwiązania. Ma ono jednak dwie poważne wady. Jedną z nich jest znaczący spadek napięcia na kluczach drivera, co w połączeniu z napięciem przewodzenia diod LED daje niewielką ilość napięcia odkładającego się na rezystorach ograniczających prąd. Może to powodować nierównomierne świecenie poszczególnych pikseli, odczuwalne szczególne przy niskiej jasności. A druga wada?

Taka konfiguracja wymusza stosowanie wyświetlaczy połączonych w określony sposób: anodami na kolumnach i katodami w wierszach. Tymczasem od wielu miesięcy magazyny hurtowni elektronicznych są puste lub zapełniają się na krótko. Nikt nie wie, kiedy ten stan się skończy, dlatego warto być przygotowanym na różne konfiguracje sprzętowe. Przykładowo – wpłynęło zamówienie na partię urządzeń z matrycami świecącymi w kolorze bursztynowym. Udało się takie znaleźć: wymiary odpowiednie, układ wyprowadzeń zgodny, cena w porządku, tylko kierunek podłączenia diod jest przeciwny. Ich katody są doprowadzone do kolumn, a anody do wierszy. O ile oprogramowanie sterujące można łatwo zmienić, aby wystawiało bity o przeciwnej wartości, o tyle kierunku prądu płynącego przez wyjścia driverów układu ULN2003 się nie zmieni. Odpowiedniki z kluczami typu P są mało dostępne i drogie. Co robić?

Drivery tranzystorów MOSFET

Do sterowania wierszami stosuję drivery tranzystorów MOSFET. Każdy taki driver to prosty półmostek o bardzo szybkim czasie przełączania, niskiej rezystancji wyjściowej i dużej wydajności prądowej. Czego więcej trzeba? Jeżeli tylko napięcie zasilające układ jest odpowiednio wysokie dla takiego mostka, wówczas nie ma najmniejszych przeszkód w ich stosowaniu. Schemat ideowy takiego rozwiązania znajduje się na rysunku 3. Pisząc odpowiednio oprogramowanie można dopasować rodzaj sterowania do obu rodzajów konfiguracji matryc LED, ponieważ zarówno w wierszach, jak i w kolumnach mamy wyjścia typu totem-pole.

Rysunek 3. Schemat ideowy uniwersalnego sterownika wielu matryc LED

Używane przeze mnie do tego celu drivery typu MIC4423 mają dwa kanały odwracające w jednej obudowie SO8. Dlatego trzeba użyć trzech takich układów a wejście nieużywanego, szóstego kanału połączyć z masą – tak zaleca nota katalogowa tego układu. Ponadto, MIC4423 może zostać bardzo łatwo zastąpiony przez inny podwójny driver MOSFET, ponieważ ich układ wyprowadzeń jest zazwyczaj taki sam. Nie ma też większego znaczenia, czy będą one odwracające, czy też nie, ponieważ można to skorygować w oprogramowaniu. Trzeba zwrócić uwagę na impedancję wyjściową (dla MIC4423 wynosi ona 3,5 Ω) oraz minimalne napięcie zasilające: dla MIC4423 to 4,5 V, więc doskonale pracuje w układach zasilanych z 5 V. Napięcie o tej wartości jest również bezpieczne dla samych diod LED, ponieważ w stanie wygaszenia są one polaryzowane zaporowo, a najczęściej spotykana wartość napięcia zaporowego to właśnie 5 V.

Michał Kurzela, EP

Artykuł ukazał się w
Elektronika Praktyczna
lipiec 2022

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik kwiecień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio marzec - kwiecień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje marzec 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna kwiecień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich kwiecień 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów