PCF8574P interfaccia i2C per display LCD

Qualche giorno fa Matteo Canetto mi ha scritto un’email raccontandomi il suo progetto e di alcuni test eseguiti con il PCF8574P interfaccia I2C per display LCD paralleli.

PCF8574P pinout

Ho chiesto a Matteo di raccontare e condividere la sua esperienza ed ho ricevuto via email la sua guida all’uso del PCF8574P, dei display LCD e tutte le foto che trovi in questo articolo.

Matteo sta lavorando ad un progetto ben più complesso del semplice controllo di un display LCD parallelo mediante connessione i2c, lo ha chiamato DomoticOne e spero presto possa ultimarlo e inviare foto, video e sketch del suo progetto.

Il progetto di Matteo con il PCF8574P

La guida scritta da Matteo è così ben fatta che la riporto senza interventi, buona lettura.

Oggi andremo a conosce l’integrato Pcf8574:

pcf8574

molto spesso sul nostro microcontrollore siamo a corto di pin.

Per risolvere questo problema ci sono vari modi,una buona soluzione è ricorrere a quei circuiti integrati chiamati IO Expander la cui funzione è quella di aumentare il numero di I/O a disposizione.

Il PCF8574 è un 8 bit e utilizza il protocollo I2C, che comunica utilizzando un’interfaccia a 2 fili seriale, in cui un filo è un clock seriale (SCL) e l’altro per i dati seriali (SDA).

Con questo IC, è possibile utilizzare solo 2 pin di Arduino per controllare fino a 8 ingressi o uscite digitali.

PCF8574P pinout

In questo tutorial vedremo come far comunicare il nostro display lcd ( io uso un 20×4  compatibile come  i classici 16×2 hd44780 )

PCF8574P 2004A-B-W102

Per fare tutto ciò abbiamo bisogno delle librerie appropriare chiamate  LiquidCrystal_I2C, dove all’interno troveremo tutto il necessario per collegare il display lcd dal datasheet dei componenti allo schema di montaggio, ad alcuni esempi per lo sketch.

Componenti:

  • di certo non deve mancare la nostra scheda arduino
  • l’integrato della famiglia PCF85743
  • un transistor BC557 con opportune resistenze ( la prima collegata al piedino b da 1KW e la seconda dipende dallo schema del lcd)
  • Il classico potenziometro usato per regolare il contrasto del display
Schema di montaggio:
questo è lo schema presente nella libreria, con una prova di montaggio fatta da me:
PCF8574 LCD
Mentre questo per semplificare ancora di più le cose l’ho creato io con Fritzing e con un editor di immagini:
PCF8574P i2c lcd schema
Come potete notare le due immagini sono nettamente differenti, ma portano allo stesso scopo.

Riassumendo lo schema vediamo che l’integrato ai pin 1-2-3-8 è collegato a GND, mentre 4-5-6-7 sono collegati al display ai pin 11-12-13-14, di seguito abbiamo pin 9-10-11 sempre collegati al display con i pin 6-5-4.

Colleghiamo il pin 12 alla resistenza da un 1KW, a sua volta collegata col transistor tramite il pin b con il pin c a +5V e il pin e col pin 15 del display. Per la comunicazione usiamo i pin 14 e 15 collegati ad arduino su gli ingressi analogici A5 e A4, il potenziometro collegato al pin 3 del display,e concludiamo con il pin 16 del PCF a +5v e pin 16 del display collegato a GND.

Con questa configurazione otterremo (con un classico PCF8574A) l’address 0x20, mentre con un PCF8574AP (come quello di questa guida) avremmo 0x38.

L’address ci serve per individuare il nostro integrato, perché volendo possiamo collegare 8 PCF tutti assieme ognuno con 8 ingressi o uscite, per un complessivo di ben 64 pin digitali I/O in più sul nostro arduino!!

Che ne dite?

Come integrato è molto utile.

Un piccolo consiglio per l’acquisto, troverete diverse sigle sui PCF a 16 pin come appunto A-AP-N-P ecc, praticamente sono tutti uguali, solo piccole variazioni tra costruttori riportati sui datasheet.

Un immagine che può tornare utile è quella qua sotto se si vuole conoscere i vari address, come noterete la nostra configurazione è L-L-L per ottenere 0x20 oppure 0x38 a seconda dell’integrato.

Faccio notare che L sta per GND mentre H sta per +5V.

PCF8574P configurazione indirizzo

Passiamo allo sketch, come detto prima abbiamo vari esempi all’interno della libreria, noi prenderemo quello chiamato “Hello World” e se necessario vi apporteremo varie modifiche come appunto l’address o il tipo del display, come noterete è assai semplice:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x20,16,2);  //    16x2 e il tipo del lcd - address 0x20 

void setup()
{
  lcd.init();                      // inizializza  lcd 

  // Stampa il messaggio su LCD.
  lcd.backlight();
  lcd.print("Hello, world!");
}
void loop()
{
}

Bene, siamo al termine di questo tutorial, come vedete il PCF8574 è un integrato molto versatile utile e compatto.

Ho realizzato una piccola shield per un mio progetto (il DomoticONE, progetto ancora da finire), l’intero circuito è racchiuso in appena 5x4cm ma volendo si fa può rimpicciolire:

DomoticOne

Spero di essere stato utile a tutti voi, mi resta solo che augurarvi di fare ancora una ottima esperienza col nostro arduino e con i PCF8574.

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: https://www.mauroalfieri.it/elettronica/pcf8574p-interfaccia-i2c-display-lcd.html

45 pings

Skip to comment form

  1. […] in passato ho pubblicato un articolo scritto da Matteo, un appassionato arduino, in cui un display lcd 1602 collegato ad un pcf8574p potevi controllarlo […]

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.