LAKI PINGVINI<>
052019<><>

Nuts and Bolts (1): IC PCF8574/PCF8574A

Produžena ruka ESP8266 modula

Do sada se nismo puno upuštali u same komponente koje čine strujna kola. Polje je ogromno, a prostor u časopisu nam ne dozvoljava da se ozbiljnije pozabavimo time. Iza jednog običnog otpornika stoji čitava nauka. Zato smo odlučili da započnemo mini-seriju tekstova više specifičnih komponenata. Samo odlike, način upotrebe i po koji primer u praksi, ali bez suve materije. Prvo na redu je Filipsovo integralno kolo PCF8574, koje najčešće srećemo u piggy-back rešenjima LCD modula koji od gomile pinova ka mikrokontroleru šalje samo dva izvoda.

 
PCF8574 je 8-bitni digitalni I/O proširivač, koji za komunikaciju sa mikrokontrolerom koristi I2C interfejs. Može da radi na naponima od 2,5 do šest volti. Zbog same prirode I2C komunikacije moguće je dodati više ovakvih čipova u paralelan niz, a limit su samo dostupne I2C adrese kojih osnovni čip ima osam. PCF8574A ima drugi set I2C adresa koji omogućavaju još veći niz, teoretski do 16 čipova sveukupno, i do 128 izvoda u krajnjoj liniji. Ovo integralno kolo pri dovođenju napona na GND i VCC postavlja IO izvode na HIGH, što dovodi do toga da, ako ćemo ih koristiti kao INPUT, moramo ih postaviti na HIGH da bismo imali potpunu kontrolu. Maksimalno opterećenje po izvodu je 25 miliampera (sinking), a ako se ukaže potreba, dva izvoda se mogu povezati, uz zbirnu struju do 50 miliampera. Pritom će u stand-by trošiti ispod deset miliampera. Čip dolazi u raznim pakovanjima, a nama je možda najzanimljivija PDIP varijanta sa 16 izvoda i njega ćemo koristiti u našim primerima.

Čip ima dijametralno postavljene naponske izvode (VCC i GND). Do VCC su I2C izvodi (SDA i SCL), a do njih je INT(erupt) izvod. Ispod imamo A0, A1 i A2 izvode preko kojih biramo I2C adresu. Kod PCF8574 biramo između 0x20 i 0x27, dok kod PCF8574A biramo između 0x38 i 0x3F. Recimo, ako na PCF8574 pomenute izvode povežemo na GND, izabrali smo 0x20, a tabela adresa se nalazi u specifikacijama. Izvodi od P0 do P7 se koriste za povezivanje sa periferijama.

 
Pored upotrebe kod LCD ekrana o kojima smo više puta pisali, na tržištu se mogu naći moduli koji su već konfigurisani za paralelno vezivanje, sa džamperima za izbor I2C adresa i izvodima samog čipa. Ovaj čip se može koristiti za banalne stvari, poput povezivanja osam LED, temperaturnih senzora ili tastera. Mi ćemo se pozabaviti barebone čipom i njegovom implementacijom u 4 x 4 matrix tastaturu. Od osam izvoda tastature, do Una je stiglo samo dva na I2C pinove. Povezivanje prema šemi, a skeč ispod će ispisati svaki dodirnut taster, bilo na Serial monitoru, bilo na LCD ekranu sa istim takvim čipom i uz par linija koda u skeču. Biblioteka Keypad_I2C je odlično poslužila, a ceo skeč ima minimalan broj linija koda. Od dodatnih komponenata, upotrebili smo samo po dva 10K otpornika na I2C linijama za pullup. Kada smo rekli na početku da su izvodi aktivno HIGH, to znači da kao OUTPUT mogu da imaju LOW iz razloga što su izvodi open drain (otvoreni kolektor). Da bismo imali HIGH, za OUTPUT koristimo pomenute otpornike.

#include <Keypad_I2C.h>

#include <Keypad.h>

#include <Wire.h>

const byte ROWS = 4;

const byte COLS = 4;

char keys[ROWS][COLS] = {

{’1’,’2’,’3’,’A’},

{’4’,’5’,’6’,’B’},

{’7’,’8’,’9’,’C’},

{’*’,’0’,’#’,’D’}

};

byte rowPins[ROWS] = {4, 5, 6, 7};

byte colPins[COLS] = {0, 1, 2, 3};

int i2caddress = 0x20;

Keypad_I2C kpd = Keypad_I2C( makeKeymap(keys), rowPins, colPins, ROWS, COLS, i2caddress );

void setup() {

Serial.begin(9600);

kpd.begin();

}

void loop() {

char key = kpd.getKey();

if (key){

Serial.println(key);

}

}

Za pristup funkcijama čipa se može koristiti i namenska biblioteka PCF8574_library. Preko ove biblioteke se lako pristupa izvodima čipa, a adresiramo ih po njihovim nazivima. Preko konstruktora i I2C adrese pristupamo izvodima čipa, na isti način kao da su izvodi samog mikrokontrolera. Recimo, Blink skeč u varijanti kroz PCF8574 bi išao ovako:

#include „Arduino.h”

#include „PCF8574.h”

PCF8574 pcf8574(0x20);

void setup() {

pcf8574.begin();

pcf8574.pinMode(P4, OUTPUT);

pcf8574.digitalWrite(P4,HIGH);

}

void loop() {

pcf8574.digitalWrite(P4, LOW); // palimo LED

delay(1000);

pcf8574.digitalWrite(P4, HIGH); // gasimo LED

delay(1000);

}

S tom razlikom da, kao i kod releja, struja ne ide od PCF8574, da bismo uključili LED, već ka njemu (sinking). Što će reći, LED uključujemo sa LOW.

Naravno, čipu se može pristupiti bez ikakve namenske biblioteke, uz Wire.h, što je neophodno. Tada koristimo funkcije same Wire biblioteke, ali smatramo da je uz gorepomenute biblioteke sve mnogo lakše. PCF8574 je svakako čip koji treba da bude na stolu svakog mejkera. Uz olakšavanje pri povezivanju raznih periferija, mikrokontroleri sa malim brojem GPIO u ovom čipu imaju spasioca. ESP8266 sa PCF8574 ostaje bez svojih stega, a nama ostavlja mogućnost implementacije malog Wi-Fi uređaja u mnogo kompleksnije projekte nego inače. Konkretno kod ESP8266, po preporuci autora, pri pravljenju konstruktora uz PCF8574_library potrebno je uz I2C adresu odrediti SDA i SCL pinove. O tome više u samoj dokumentaciji biblioteke.

Dejan PETROVIĆ

 
Buddi 3.4.1.16
Synchronicity
Arduino Due
Nuts and Bolts (1): IC PCF8574/PCF8574A
Šta mislite o ovom tekstu?
Senzori za pokret
Home / Novi brojArhiva • Opšte temeInternetTest driveTest runPD kutakCeDetekaWWW vodič • Svet igara
Svet kompjutera Copyright © 1984-2018. Politika a.d. • RedakcijaKontaktSaradnjaOglasiPretplata • Help • English
SKWeb 3.22
Opšte teme
Internet
Test Drive
Test Run
PD kutak
CeDeteka
WWW vodič
Svet igara



Naslovna stranaPrethodni brojeviOpšte informacijeKontaktOglašavanjePomoćInfo in English

Svet kompjutera