- konstrukcja oparta na układzie PCA8561A,
- niewielki pobór prądu: 4,5 μA przy odświeżaniu 32 Hz, 1 μA przy wyłączonym wyświetlaczu,
- napięcie zasilania: 3...5 V,
- wbudowany 7-segmentowy, 4-pozycyjny ekran LCD.
Komunikacja z użytkownikiem nie zawsze wymaga „dużych” wyświetlaczy graficznych, w wielu przypadkach sprawdzi się prosty, siedmiosegmentowy wyświetlacz LED. Cechuje się on jednak znacznym poborem mocy. Gdy zależy nam na oszczędnym gospodarowaniu energią, warto przemyśleć zastosowanie znakowego ekranu LCD, a gdy dodatkowo poszukujemy rozwiązania o niewielkich rozmiarach, pozostają do wyboru tylko wyświetlacze multipleksowane. Wybór mikrokontrolerów z wbudowanym sterownikiem LCD jest ograniczony, sam interfejs zajmuje sporą liczbę wyprowadzeń, a nie zawsze chcemy rezygnować z własnych preferencji co do wyboru mikrokontrolera. Wtedy z pomocą przychodzą zewnętrzne układy driverów LCD, m.in. zastosowany w module PCA8561A, którego strukturę wewnętrzną ukazano na rysunku 1.
PCF8561A zawiera układ drivera i polaryzacji wyświetlacza LCD pracującego w trybie multipleksowym, umożliwiając wysterowanie do 18 segmentów (SEG) z maksymalnie czterema elektrodami wspólnymi (COM). Układ obsługuje tryb statyczny i multipleksowany 1:2/3/4 wraz z generowaniem napięcia zasilającego elektrody wspólne. PCA8561A ma wbudowany generator taktujący, układ resetu POR, rejestry pamięci przechowujące kształt wyświetlanego znaku oraz – oczywiście – kontroler interfejsu I²C 400 kHz. Dostępna jest też wersja PCA8561B z łączem SPI.
Schemat układu pokazano na rysunku 2. Układ U1 taktowany jest wbudowanym generatorem, magistrala I²C doprowadzona została do złącza I²C zgodnego ze standardem QWIIC. Zwora A0 umożliwia wybór adresu 0x38/0x39, pod którym widoczny jest moduł na magistrali, co umożliwia zastosowanie nawet dwóch wyświetlaczy na wspólnej szynie komunikacyjnej. Sam układ pozwala na przypisanie czterech adresów poprzez zmianę stanów wyprowadzeń A0, A1 (przy czym wyprowadzenie A1 nie zostało użyte w modelu). Układ wymaga zasilania 3...5 V; wbudowany w U1 układ resetu POR, aktywowany stanem wysokim wyprowadzenia PORE, zapewnia prawidłowy restart po włączeniu zasilania. Wbudowany stabilizator U2 zapewnia zasilanie 2,5 V ekranowi LCD i jest ono niezależne od napięcia zasilającego U1, co gwarantuje elastyczność aplikacji. Napięcie 2,5 V oferuje wystarczająco dobrą czytelność i margines zasilania dla LDO. Można też zastosować stabilizator o napięciu 2,8 V w celu zwiększenia kontrastu wyświetlacza. Do wyprowadzeń SEG0..7 podłączone są segmenty ekranu LCD, natomiast elektrody wspólne wyprowadzono na linie COM0..3. Model współpracuje z miniaturowym wyświetlaczem S401M16KR, umożliwiającym wyświetlenie czterech cyfr siedmiosegmentowych o wysokości 4,4 mm, wraz z przecinkami i dwukropkiem zegarowym.
Układ zmontowany został na niewielkiej dwustronnej płytce drukowanej, rozmieszczenie elementów pokazano na rysunkach 3a i 3b. Montaż jest typowy i nie wymaga opisu. Podczas prac montażowych należy zachować wymogi ESD, gdyż układ PCF i wyświetlacz mogłyby zostać uszkodzone ładunkami statycznymi. Przed przylutowaniem wyświetlacza warto ustalić mechanicznie jego położenie za pomocą paska samoprzylepnej, dwustronnej taśmy piankowej.
Zmontowany moduł zaprezentowano na fotografii tytułowej.
Sterowanie wyświetlaczem odbywa się poprzez rejestry układu PCA8561A, mapę rejestrów pokazano na rysunku 4.
Układ ma cztery rejestry sterujące pod adresami 0x00...0x03 i 12 rejestrów przechowujących kształt wyświetlonego znaku przypisanego do elektrody wspólnej 0x04...0x0F. W przypadku wyświetlacza S401 tryb multipleksowania oraz napięcia elektrod (MUX=1:4, BIAS=1/3) odpowiadają ustawieniom domyślnym PCA8561A. Aby uruchomić wyświetlanie, wystarczy określić częstotliwość odświeżania z zakresu 32 Hz...256 Hz: FF[2:0] domyślnie 64 Hz, załączyć oscylator OSC w rejestrze kontrolnym Device_Ctrl_1(0x02), skonfigurować tryb pracy podłączonego wyświetlacza: BOOST, MUX[1:0], B(BIAS) w rejestrze kontrolnym Device_Ctrl_2(0x03) oraz aktywować sterownik DE w rejestrze Display_ctrl_1(0x02). Dodatkowo można zastosować tryb automatycznego migania BL[1:0] w zakresie 0,5 Hz...2 Hz oraz określić tryb sterowania kompensujący składową stałą INV (linia/ramka). Szczegółowy opis rejestrów zamieszczono w karcie katalogowej PCA8561A.
Do sterowania segmentami LCD użyte zostały rejestry COM0..3, w związku z użyciem wyprowadzeń SEG0..7, aktywne są tylko rejestry pod adresami 0x04, 0x07, 0x0A, 0x0D. Przypisanie fizycznych segmentów LCD pokazano w tabeli 1.
Moduł LCD nie wymaga uruchamiania. W celu szybkiego sprawdzenia zmontowaną płytkę można podłączyć do Raspberry Pi lub Arduino. Adres bazowy ustalony zworą A0 określony jest na 0x38, co w przypadku Raspberry można sprawdzić poleceniem:
którego wynik działania pokazano na rysunku 5.
Jeżeli układ jest dostępny na magistrali, możemy określić parametry wyświetlania (MUX, BIAS, BL) w rejestrach konfiguracyjnych:
i2cset -y 1 0x38 0x02 0x01
i2cset -y 1 0x38 0x03 0x00
oraz wysterować w celu sprawdzenia wszystkie segmenty LCD:
i2cset -y 1 0x38 0x07 0xFF
i2cset -y 1 0x38 0x0A 0xFF
i2cset -y 1 0x38 0x0D 0xFF
można też wypróbować tryb migania:
Wszystkie polecenia jesteśmy w stanie wykonać skryptem pca8561a.sh z listingu 1 lub szkicem PCA8561A.ino z materiałów dodatkowych.
#PCA8561A test
echo "PCA8561 Test – 8.8:.8.8 blink"
i2cset -y 1 0x38 0x01 0x00
i2cset -y 1 0x38 0x02 0x01
i2cset -y 1 0x38 0x03 0x06
i2cset -y 1 0x38 0x04 0xFF
i2cset -y 1 0x38 0x07 0xFF
i2cset -y 1 0x38 0x0A 0xFF
i2cset -y 1 0x38 0x0D 0xFF
sleep 2
echo "PCA8561 Test – 12:45"
i2cset -y 1 0x38 0x03 0x00
i2cset -y 1 0x38 0x04 0xC4
i2cset -y 1 0x38 0x07 0xA6
i2cset -y 1 0x38 0x0A 0x7E
i2cset -y 1 0x38 0x0D 0xD8
echo "Quit"
Listing 1. Skrypt testowy PCA8561A
Efekt działania skryptu pokazano na fotografii 1.
Podczas testów pobór prądu modułu zasilanego napięciem 3,3 V, w którym wysterowano wszystkie segmenty, wynosił poniżej 4,5 μA przy odświeżaniu 32 Hz – wzrastając do 6,5 μA przy częstotliwości odświeżania 256 Hz. W trybie wyłączonego wyświetlania (DE=0) wynosił poniżej 1 μA, co sprowadza się praktycznie do prądu spoczynkowego stabilizatora U2. Niskie pobory prądu pozwalają zasilać wyświetlacz z niewielkiej baterii przez długi czas.
Jeżeli wszystko działa poprawnie, można moduł zastosować we własnej aplikacji. Powodzenia!
Adam Tatuś, EP
- R1, R2: 10 kΩ
- C1: 100 nF
- C2, C3: 1 μF
- U1: PCA8561AHN (QFN32_050)
- U2: AP2138N-2.5TRG1 (SOT-23)
- LCD: wyświetlacz LCD, typ S401M16KR
- I²C: złącze JST 1 mm