PCF8574: ottieni più pin di connessione per Arduino

pcf8574

Potresti esserti trovato in una situazione in cui vorresti espandere il numero di input e output a tua disposizione scheda arduino, poiché stai realizzando un progetto che necessita di più dispositivi del previsto. In questi casi potresti fare solo una cosa, e cioè pensare di acquistare una scheda di modello superiore con più di queste connessioni. Ma ora con Il PCF8574 può espandere gli I/O di Arduino in modo facile ed economico.

Qui ti mostreremo cos'è il PCF8574 nel caso non lo sapessi, oltre a mostrarti come può essere collegato alla tua scheda Arduino spiegato passo dopo passo e come funziona...

Cos'è il PCF8574?

pcf8574

El PCF8574 è un espansore di ingressi e uscite digitali (I/O) per il bus I2C1. Questo dispositivo, prodotto da Philips, consente di collegare un processore come Arduino per controllare più dispositivi utilizzando meno pin2. Il PCF8574 incorpora 8 pin quasi direzionali basati su uscite CMOS in configurazione open drain.

Inoltre, il PCF8574 è un dispositivo a basso consumo che supporta operazioni VCC da 2.5 V a 6 V. È dotato di una porta I/O quasi bidirezionale a 8 bit, uscite bloccate, uscita di interruzione drain aperto e capacità di pilotaggio di corrente elevata per i LED. D'altro canto, il consumo in stand-by è molto basso, inferiore a 10 µA.

È molto utile per Espandi le capacità della tua scheda Arduino oltre i suoi limiti, che può essere di grande aiuto per i creatori che hanno bisogno di qualcosa di più di ciò che offre Arduino. La corrente massima che ciascun pin può fornire dipenderà dalla configurazione:

  • Quando funziona come uscita, è 25mA quando funziona come dissipatore, cioè quando la corrente elettrica scorre al PCF8574. Questa è la configurazione predefinita.
  • Quando funge da sorgente è 300μA, cioè quando la corrente scorre dal PCF8574. Allo stesso modo, devi sapere che tutte le uscite hanno Latch, cioè mantengono da sole lo stato in un registro. Dobbiamo agire solo quando vogliamo modificare lo stato di una delle uscite.

La comunicazione è fatta tramite bus I2C, quindi è facile ottenere dati dai dispositivi ad esso collegati. Allo stesso modo, va notato che dispone di 3 pin di indirizzo, che offrono 8 possibili connessioni allo stesso bus I2C. Ciò significa che è possibile controllare 64 dispositivi utilizzando solo 2 pin.

Impostazioni dell'indirizzo

Alcuni modelli di questo modulo PCF8574 solitamente includono pin di configurazione e ponticelli come quelli che vedi nell'immagine sopra. D'altra parte, altri modelli includono un interruttore che facilita le cose con i tre microinterruttori... Comunque sia, sono abituati a configurare gli indirizzi di pin I/O:

A0 A1 A2 Direzione
0 0 0 0x20
0 0 1 0x21
0 1 0 0x22
0 1 1 0x23
1 0 0 0x24
1 0 1 0x25
1 1 0 0x26
1 1 1 0x27

Prezzo e dove acquistare

Si trova a pochi euro. È un dispositivo abbastanza economico per quanto può essere pratico per alcuni modelli di Arduino che hanno un numero inferiore di I/O. Quindi, se stai cercando un PCF8574, puoi trovarlo nei negozi specializzati o anche sulle grandi piattaforme online come Amazon, Aliexpress o eBay. Ad esempio, qui te ne consigliamo uno:

Collegare il PCF8574 ad Arduinno

a collega l'espansore PCF8574 alla tua scheda Arduino, Lo schema di collegamento è abbastanza semplice. Dovrai solo connetterti:

  • Il pin SCL contrassegnato sulla scheda PCF8574 al pin SCL di Arduino. Questo pin può cambiare a seconda del modello, ma di solito si trova sull'A5 sui modelli più popolari come l'ONU.
  • Il pin SDA dell'espansore deve connettersi con il pin SDA di Arduino. La stessa cosa che ho detto sopra, può cambiare a seconda del modello, ma generalmente è l'A4. In caso di dubbi, controlla la piedinatura del tuo modello.
  • Il pin GND del PCF8574 sarà ovviamente collegato a quello contrassegnato GND sull'Arduino, cioè è la connessione di terra.
  • Il pin Vcc dell'espansore è collegato ai 5V di Arduino, in questo modo con GND e Vcc abbiamo già alimentato la scheda espansore affinché possa iniziare a funzionare.

Operazione

Una volta collegato il PCF8574 alla scheda Arduino, è il momento di saperlo Come funziona. Per fare questo, devi tenere presente che potrai avere 8 pin extra, in cambio di aver utilizzato due pin Arduino, oltre a quelli di alimentazione. D'altra parte, devi tenere a mente una cosa, e cioè che su ciascuno di questi 8 pin del PCF8574 hai un transistor MOSFET insieme a un resistore pull-up a resistenza molto bassa. Ciò presuppone un'intensità di corrente di 100 microA quando il transistor è attivo.

E questo ci lascia con il seguente panorama:

  • Configurazione come output- Quando il pin viene utilizzato come uscita, agisce come un dissipatore di corrente, come ho discusso in precedenza, ovvero la corrente scorre dentro.
    • BASSO: A bassa tensione non conduce corrente, carico = Vdd.
    • ALTO: quando ad alta tensione possono passare correnti fino a 25 mA, il carico sarà collegato a GND.
  • Configurazione come input: deve essere sempre impostato su ALTO, ed in questo caso farà da sorgente, cioè la corrente defluisce.
    • chiuso: Quando il carico esterno non viene fornito, la tensione sul pin va a GND.
    • Aperto: Quando si verifica un carico esterno, la tensione del pin diventa Vdd.

Codice IDE di Arduino

Arduino IDE, tipi di dati, programmazione

Se quello che desideri sono alcuni esempi di come creare codice per utilizzare questo PCF8574 su Arduino, è semplice come usare questi esempi di codice che puoi modificare in base alle tue esigenze:

  • Configurazione come output:
#include <Wire.h>

const int pcfAddress = 0x38;

void setup()
{
  Wire.begin();
  Serial.begin(9600);
}

void loop()
{
  for (short channel = 0; channel < 8; channel++)
  {
    // Escribir dato en canal 'channel'
    Wire.beginTransmission(pcfAddress);
    Wire.write(~(1 << channel));
    Wire.endTransmission();
    
    // Leer dato de canal
    delay(500);
  }
}
  • Configurazione come input:
#include <Wire.h>

const int pcfAddress = 0x38;

void setup()
{
  Wire.begin();
  Serial.begin(9600);
}

void loop()
{
  short channel = 1;
  byte value = 0;

  // Leer dato de canal 'channel'
  Wire.requestFrom(pcfAddress, 1 << channel);
  if (Wire.available())
  {
    value = Wire.read();
  }
  Wire.endTransmission();

  // Mostrar el valor por puerto serie
  Serial.println(value);
}

Ricorda che puoi anche usare il file libreria creata appositamente per il PCF8574 che include anche esempi pratici…


Puoi essere il primo a lasciare un commento

Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.