Serwisy partnerskie:
Close icon
Serwisy partnerskie

Wokół Arduino: wyświetlacze graficzne cz.5 - sterownik SSD1306

Obecnie największe zainteresowanie elektroników budzą małe kolorowe wyświetlacze i ekrany dotykowe. Budzą zainteresowanie, ale też liczne pytania, wątpliwości i obawy. Nic dziwnego, sytuacja rynkowa szybko się zmienia, dostępne są liczne mniejsze i większe wyświetlacze o różnych właściwościach i co ważne, mające różne, często niezbyt wygodne do wykorzystania interfejsy. W niniejszym kilkuczęściowym artykule przedstawione są różne aspekty zagadnienia, które osobom zainteresowanym rozjaśnią obraz sytuacji i pomogą praktycznie wykorzystać różne wyświetlacze i ekrany.
Article Image

W poprzednim odcinku omówiliśmy obwody wyjściowe sterownika, które obsługują rzędy i kolumny matrycy.

Inne obwody sterownika SSD1306

Sterownik otrzymuje dane z procesora. Wiemy już, choćby z wcześniejszego rysunku 1, że do transmisji wykorzystywane są standardowe interfejsy. Najmniejsze wyświetlacze graficzne mogą być obsługiwane przez stosunkowo powolne, dwuprzewodowe łącze I2C. Małe i średnie za pomocą szeregowego łącza SPI (3 lub 4 linie). Nadal popularne są równoległe łącza zawierające od 8 do 24 linii danych i kilka sterujących. Większe i nowsze wyświetlacze mają bardzo szybkie szeregowe, różnicowe łącza z rodziny LVDS.

Scalony sterownik w module wyświetlacza musi więc mieć obwody któregoś z wymienionych interfejsów. Sterownik ten jest tak skomplikowany i ma tak wiele końcówek, że nie stanowi żadnego problemu, by zawrzeć w nim kilka interfejsów do wyboru.

Rys.9 SSD1306 -  schemat blokowy 

Przykładem jest wspomniany SSD1306 obsługujący malutkie wyświetlacze PM OLED 128×64. Rysunek 9 pokazuje jego schemat blokowy. Mamy tu 192 linie wyjściowe, obwody zasilania, linie interfejsu, a także kilka końcówek pomocniczych. Jeden rzut oka sugeruje, że mamy do czynienia z równoległym ośmiobitowym interfejsem w standardzie I8080 lub M6800. Stany logiczne na trzech wejściach BS0... BS2 pozwalają dowolnie wybrać pożądany interfejs według tabeli 1.

Tabela 1 SSD1306 - interfejsy do wyboru

Jak widać, można wybrać interfejs I2C, dwie odmiany równoległego i dwie odmiany szeregowego SPI. Tabela 2 pokazuje, jaka funkcję pełnią poszczególne końcówki interfejsowe.

Warto zauważyć, że przy wybraniu interfejsu I2C należy zewrzeć wyprowadzenia D1, D2, które będą odgrywać rolę wejścia/wyjścia danych SDA. Końcówka D/C# pozwoli wybrać jeden z dwóch adresów systemu I2C, co umożliwi dołączenie do szyny dwóch takich wyświetlaczy. W każdym trybie dostępna jest też końcówka Reset, ale nie zawsze jest ona wykorzystywana.

Tabela 2 SSD1306 - funkcje poszczególnych końcówek interfejsowych 

Wspominamy o tym, ponieważ na rynku sa dostępne różne wersje wyświetlaczy OLED z tym sterownikiem. Interesujące są też inne szczegóły. I tak końcówka IREF pozwala wyznaczyć prąd segmentów za pomocą zewnętrznego rezystora według rysunku 10 (a potem zmiana jasności może też być realizowana programowo). Niepokojąca na rysunku 10 jest wartość napięcia zasilania VCC, aż 12V, podczas gdy moduły takich wyświetlaczy są zasilane napięciem co najwyżej 5V.

Rys.10 Wyznaczanie prądu segmentów za pomocą zewnętrznego rezystora

Według karty katalogowej SSD1306, napięcie zasilania obwodów cyfrowych VDD wynosi 1,65...3,3V, natomiast diody OLED wymagają dużo wyższego napięcia. Kostka ma końcówki zasilania OLED (VCC), gdzie może być podane zewnętrzne napięcie 7...15V. Ale w układ scalony wbudowany jest też dwustopniowy powielacz (pompa ładunku – Charge Pump), który z niskiego napięcia VDD wytworzy potrzebne podwyższone dla matrycy OLED i zwykle ten powielacz jest wykorzystywany.

Podobnie także i inne sterowniki pozwalają wybrać jeden z kilku dostępnych interfejsów i też zawierają powielacze, wytwarzające wszystkie potrzebne podwyższone napięcia z jednego napięcia zasilania.

Układ scalony tego i innych sterowników oferuje więc interesujące opcje. Jednak w praktyce jest on zamontowany albo na elastycznej, foliowej płytce pośredniczącej, co wyraźnie widać na fotografii 11. Albo jest zamontowany na szkle wyświetlacza (COG – Chip on Glass), jak wyraźnie widać na fotografii 12. W innych wyświetlaczach scalony sterownik montowany na szkle (COG), który ma grubość rzędu 0,3...0,3mm, może być praktycznie niewidoczny, bo zwykle jest pokryty klejem lub taśmą maskującą.

Fot.11 Układ scalony sterownika  SSD1306 na elastycznej foliowej płytce pośredniczącej
Fot.12 Układ scalony sterownika SSD1306 na szkle (COG – Chip on Glass)

W każdym razie do pracy całości wymagane są elementy pomocnicze, choćby jeden wspomniany rezystor oraz kondensatory. Rysunek 13 pokazuje konfigurację sterownika SSD1306 do współpracy z interfejsem równoległym Intel 8080, zasilaną dwoma napięciami VDD i wyższym VCC.

Rys.13 Konfiguracja sterownika SSD1306 do współpracy z interfejsem równoległym Intel 8080

Przy zasilaniu niskim napięciem pojedynczym VDD trzeba do wytworzenia na miejscu napięcia VCC wykorzystać powielacz – pompę ładunku, która wymaga dwóch dodatkowych zewnętrznych kondensatorów. Te kondensatory i rezystor, w przeciwieństwie do układu scalonego, nie mogą być zamontowane na szkle wyświetlacza. Czasami są montowane na elastycznej plastikowej płytce, jak pokazują przykłady na fotografii 14. Jednak w zdecydowanej większości przypadków pierwotny producent sprzedaje „gołe” moduły, zawierające tylko matrycę wyświetlacza i scalony sterownik.

Fot.14 Kondensatory i rezystor zamontowane na elastycznej plastikowej płytce

Fotografia 15 przedstawia obie strony takiego „surowego” modułu. Potrzebne elementy dodatkowe trzeba dołączyć z zewnątrz. Takie „surowe” moduły jak najbardziej można kupić i wykorzystać w autorskich konstrukcjach. W takim przypadku, projektując płytkę drukowaną, trzeba na niej umieścić odpowiednie gniazdo do dołączenia modułu oraz niezbędne elementy R, C. Zwykle takie „surowe” moduły mają około 30 wyprowadzeń, co pozwala dowolnie skonfigurować interfejs komunikacyjny i obwody zasilania.

Fot.15 Surowy moduł zawierający tylko matrycę wyświetlacza i scalony sterownik

Poważną zaletą jest więc możliwość wyboru dowolnej z dostępnych opcji konfiguracyjnych oraz minimalizacja objętości urządzenia. Jednak wykorzystanie takich „surowych” modułów wymaga samodzielnego zaprojektowania płytki drukowanej, nie mówiąc o wiedzy na temat możliwości konfiguracyjnych sterownika. „Surowe” moduły są stosowane w urządzeniach produkowanych seryjnie.

Przy realizacji pojedynczych egzemplarzy urządzeń ich wykorzystanie staje się kłopotliwe. Dlatego tak bardzo popularne, nie tylko wśród hobbystów, stały się moduły wyświetlaczy z płytką drukowaną. Ta płytka, mniej więcej wielkości wyświetlacza, zawiera niezbędne elementy dodatkowe: kondensatory, rezystor(-y), a zazwyczaj także stabilizator LDO 3,3V, ponieważ dopuszczalne napięcie zasilania sterownika zwykle nie przekracza 3,3V, a moduły bardzo często są zasilane napięciem 5V. Fotografia 16 prezentuje „płytkowy” moduł kolorowego wyświetlacza OLED 128×128 ze sterownikiem SSD1351, którego „surową” wersję widać na fotografii 11.

Fot.16 „Płytkowy” moduł kolorowego wyświetlacza OLED 128×128 ze sterownikiem SSD1351

Omówiliśmy ogólne zasady budowy współczesnych małych wyświetlaczy graficznych, a w następnym odcinku bardziej szczegółowo omówimy wyświetlacze OLED 128×64.

Tematyka materiału: OLED
AUTOR
Źródło
Elektronika dla Wszystkich marzec 2020
Udostępnij
UK Logo