Ekspander wyświetlacza LCD 2×16 z I2C i podświetleniem RGB

Ekspander wyświetlacza LCD 2×16 z I2C i podświetleniem RGB

Nie zawsze interfejs użytkownika musi zawierać duży wyświetlacz LCD, w wielu przypadkach wystarczy typowy wyświetlacz 2×16 znaków zgodny z HD44780. Ekspander wyświetlacza sterowany poprzez interfejs I2C umożliwia rozbudowę nawet niewielkiego układu z mikrokontrolerem o wyświetlanie różnych wskazań i komunikatów, a możliwość swobodnego sterowania kolorem podświetlenia RGB, podnosi atrakcyjność wizualną aplikacji.

Podstawowe parametry:
  • sterowanie poprzez I2C o napięciu 3,3 V,
  • współpraca z wyświetlaczami o zasilaniu 5 V pomimo zasilania modułu napięciem niższym: 3,3...5 V,
  • sterowanie podświetleniem RGB wyświetlacza LCD.

Do sterowania wyświetlaczem zgodnym z HD44780 potrzeba sporo pinów GPIO, nawet podczas pracy w trybie 4-bitowym. Dlatego w prezentowanym module wyświetlacz LCD podłączony jest przez ekspander I2C-IO typu PCF8574. Dodatkowo, można łatwo skonfigurować jego adres, co umożliwia współpracę do czterech wyświetlaczy na jednej magistrali. Jako wyświetlacz można zastosować tak, jak w prototypie, łatwo dostępny moduł ABC016002E87-FIS-R lub jego wersję negatywową ABC016002E88-DIS-R.

Budowa i działanie

Schemat modułu został pokazany na rysunku 1. Aplikacja układu U3 typu PCF8574 jest typowa, uzupełniają ją zwory A0, A1 konfigurujące adres układu na magistrali. Większość wyświetlaczy zgodnych z HD44780 wymaga zasilania 5 V, aby zapewnić zgodność z systemami 3,3 V moduł został wyposażony w przetwornicę U2 typu MCP1253 zapewniającą zasilanie 5 V dla wyświetlacza przy zasilaniu modułu napięciem 3,3...5 V.

Rysunek 1. Schemat ideowy układu

W dość nietypowej roli zastosowany jest układ izolatora I2C typu ADUM1251 (U1). Konieczność konwersji poziomów logicznych 3,3/5 V, w sytuacji gdy napięcie zasilania wynosi 5 V, nie pozwala spełnić warunku różnicy napięć pomiędzy stronami układu translatora. Większość translatorów poziomów pracuje w tej sytuacji niepoprawnie. Izolacja galwaniczna stron U1 pozwala uniknąć tego zagrożenia i ułatwia zastosowanie tylko jednego typu wyświetlacza w systemach 3,3/5 V, co jest szczególnie istotne podczas prototypowania z użyciem różnych platform. Jeżeli moduł będzie stosowany w systemach 5 V, można nie montować układów U1, U2, a w ich miejsce wlutować zwory ZW1...ZW3.

Do sterowania diodami RGB podświetlenia LCD wybrano układ U4 czterokanałowego modulatora PWM typu PCA9632 (jest zgodny programowo z PCA9633). Adresacja U4, jest wspólna z U3, adres bazowy ustalany jest także przy pomocy zwór A0, A1. Diody podświetlenia podłączone są do wyjść LED0...LED2 układu U4, rezystory R5, R6, R7 ograniczają prąd podświetlenia. Zwory A i R umożliwiają zastosowanie wyświetlaczy z innym sposobem podłączenia podświetlenia. Ich położenie oraz konieczność montażu rezystorów należy sprawdzić w karcie katalogowej wyświetlacza. Magistrala I2C oraz zasilanie doprowadzone są do modułu za pomocą złącz I2C1...I2C4 w standardach popularnych systemów uruchomieniowych. Potencjometr RV służy do ustawienia kontrastu.

Montaż i uruchomienie

Moduł zmontowano na dwustronnej płytce drukowanej, której schemat został pokazany na rysunku 2. Do połączenia z wyświetlaczem w zależności od upodobań, można użyć listwy i gniazda SIP, wtedy możliwe jest łatwe rozłączenie i wymiana współpracującego wyświetlacza. Zmontowany moduł nie wymaga uruchamiania, należy tylko skonfigurować adresację oraz połączenie podświetlania.

Rysunek 2. Schemat płytki PCB

Adres bazowy określa położenie zwór A0, A1. Przy zworach zwartych do masy PCF8574 znajduje się pod adresem 0x20, a PCA9632 pod adresem 0x60. Zmiana ustawienia zwór umożliwia adresację pod kolejnymi czterema adresami 0x20/0x60...0x23/0x63. W zależności o typu wyświetlacza ustalamy położenie zwór A, R, oraz konieczność montażu R5...R7. Dla ABC016002E87-FIS-R lub ABC016002E88-DIS-R, wyprowadzenie 16 jest wspólną anodą diody RGB, więc zworę A należy zalutować w położeniu 2–3, zworę R w położeniu 1–2. W przypadku innych typów wyświetlaczy oprócz konfiguracji zwór A/R konieczna może być zamiana w programie kanałów LED0...LED2 sterujących kolorami składowymi.

Listing 1. Modyfikacja pliku pca9633.h

void PCA9633::chipinit(void) { // setup chip with desired operating parameters
 uint8_t m1 = 0x00; // set sleep = 0, turn on oscillator, disable allcall and subaddrs
 //uint8_t m2 = ((INVRT) | (OUTDRV)); // output inverted, totem pole drivers enabled
 uint8_t m2 = 0x00; // output no inverted, totem pole drivers disabled
 uint8_t ldout = 0xFF; // all outputs under individual and group control
 _i2c_write(_pcaAddr, MODE1, m1);
 _i2c_write(_pcaAddr, MODE2, m2);
 _i2c_write(_pcaAddr, LEDOUT, ldout);
}

Dla szybkiego sprawdzenia działania wyświetlacza z Arduino użyto biblioteki LCD_I2C.h i pca9633.h. Korzystając z biblioteki pca9633 autorstwa Gordona McLellan’a w pliku nagłówkowym pca9633.h należy przed kompilacją zmienić sposób inicjacji rejestru MODE2 (uint8_t m2) na wyjścia typu OD i brak inwersji sterowania (listing 1). Krótki program testowy zmieniający kolor podświetlenia RGB (dla adresu 0x20/0x60) dla środowiska Arduino pokazano na listingu 2.

Listing 2. Program testowy

/* LCD_I2C - 16x2 LCD I2C PCF8574
PCA9632 backlight RGB
//uint8_t m2 = ((INVRT) | (OUTDRV));
//uint8_t m2 = 0x00;
//output no inverted,
//totem pole drivers disabled
*/
#include <LCD_I2C.h>
#include <pca9633.h>
PCA9633 rgbw;
LCD_I2C lcd(0x20, 16, 2);
void setup(){
 lcd.begin();
 lcd.backlight();
 rgbw.begin(0x60);
 rgbw.setrgbw(0,0,0,0);
 lcd.print(“RGB LCD”);
 lcd.setCursor(0, 1);
 lcd.print(“PCF8574/PCA9632”);
}

void loop(){
 rgbw.setrgbw(255,0,0,0); //R
 delay(1000);
 rgbw.setrgbw(0,255,0,0); //G
 delay(1000);
 rgbw.setrgbw(0,0,255,0); //B
 delay(1000);
 rgbw.setrgbw(255,255,255,0); //W
 delay(1000);
}

Jeżeli wszystko działa poprawnie, można moduł zastosować we własnej aplikacji.

Adam Tatuś, EP

Wykaz elementów:
Rezystory:
  • R1, R2, R3, R4: 4,7 kΩ 1% (SMD0805)
  • R5, R6: 110 Ω (SMD0805)
  • R7: 150 Ω (SMD0805)
  • RV: potencjometr 10 kΩ
Kondensatory: (SMD0805)
  • C1, C2, C6, C7, C8: 0,1 μF
  • C3, C4: 10 μF
  • C5: 1 μF
Półprzewodniki:
  • U1: ADUM1251ARZ (SO8)
  • U2: MCP1253-33x50 (MSOP8)
  • U3: PCF8574T (SO16W)
  • U4: PCA9632DP2 (TSSOP10)
Pozostałe:
  • I2C1: złącze SM 4 piny 1 mm
  • I2C2: złącze PH 4 piny 2 mm
  • I2C3: złącze SIP4 2,54 mm
  • I2C4: złącze Grove proste
  • LCD: wyświetlacz LCD z podświetleniem np. RGB ABC016002E87-FIS-R lub ABC016002E88-DIS-R
Artykuł ukazał się w
Elektronika Praktyczna
lipiec 2022
DO POBRANIA
Materiały dodatkowe
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik grudzień 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio listopad - grudzień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje listopad - grudzień 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna grudzień 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich grudzień 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów