PCF8574: Iwwer I2C I / O Expander fir Arduino

PCF8574 TI CHIP

Dir hutt sécher vun der héieren IC PCF8574 Fotoen, en Chip deen separat kaaft ka ginn oder schonn op engem Modul wéi vill anerer montéiert ass Elektronesch Komponenten fir Är Integratioun mat Ärem Arduino Board z'erliichteren. An dësem Fall ass et en Extender vun den Inputs an Outputs fir den I2C Bus.

Dir kënnt denken datt den Arduino scho seng eegen huet integréiert I2C Bus, an et ass richteg. Awer de PCF8574 kann hëllefen dee Bus iwwer d'Grenze vun Ärem Entwécklungsplang ze verlängeren, wat ka vu groussen Hëllef fir e puer Hiersteller sinn, déi méi brauchen wéi just dat wat Arduino bitt.

Wat ass den I2C Bus?

Arduino UNO Millis Funktiounen

Den Numm I2C kënnt vun Inter-Integréiert Circuit oder interintegréiert Circuiten. Seng Versioun 1.0 gouf 1992 vu Philips erstallt. Da géif en zweeten 2.1 am Joer 2000 kommen an haut ass et e Standard ginn (mat 100 kbit / s, och wann et bis zu 3.4 Mbit / s maximal erlaabt) wann de Patent 2006 ofgelaf ass a fräi ka benotzt ginn.

Momentan gëtt et vill an der Industrie benotzt fir Kommunikatioun, an och ganz vill appréciéiert vun den Hiersteller fir hir Projeten fir verschidde Mikrocontroller a Peripherieger an engem IC integréiert ze kommunizéieren.

El I2C ass e Bus gutt bekannt Serienkommunikatioun. Et benotzt en synchronen Kommunikatiounsprotokoll mat nëmmen 2 Kanäl (et gëtt en Drëttel, awer et ass mat Referenz oder GND gekoppelt), tatsächlech ass et och als TWI (Two Wire Interface) bekannt:

  • Ee fir d'Auer (SCL).
  • Aner fir Daten (SDA).
Béid sinn oppe drain CMOS Verbindungen a erfuerderen Pull-Up Widderstänn. Och wann een Apparat en 0 weiderginn an en aneren en 1, da kéint et Problemer ginn, dofir ass d'Linn ëmmer op 1 (héijen Niveau) gesat an d'Apparater weiderginn ëmmer 0 (nidderegen Niveau).

Dat implizéiert datt den Meeschter a Sklave si schécken Daten iwwer dee selwechte Kabel oder d'Streck, déi vum éischten kontrolléiert gëtt deen d'Auer Signal generéiert. Jidd vun de peripere Geräter, déi mam I2C Bus verbonne sinn, kréien eng eenzegaarteg Adress, fir d'Transmissiounen ze dirigéieren. Awer et ass net néideg datt den Enseignant ëmmer dee selwechten ass (Multi-Enseignant), et ass ëmmer deen deen den Transfer initiéiert.

Wéi ech schonn am Artikel erkläert hunn op Arduino I2C Ech hu virdru referenzéiert, all Board huet dës I2C Verbindungen op verschiddene Plazen. Et ass eppes wat Dir am Kapp hutt fir et an all Plack Versioun richteg ze benotzen:

  • Arduino UNO: SDA ass an A4 an SCK an A5
  • Arduino Nano: d'selwecht wéi déi virdrun.
  • Arduino Mini Pro: selwecht.
  • Arduino Mega: SDA ass um Pin 20 an SCK op 21.
  • Méi Informatioun iwwer Platen.

Dir wësst schonn datt Dir den I2C fir Är Skizzen einfach benotze kënnt, well den Wire.h Bibliothéik mat verschiddene Funktiounen fir dës seriell Kommunikatioun:

  • ufänken (): start d'Draadbibliothéik a präziséiert ob et Master oder Sklave ass
  • requestFrom (): vum Meeschter benotzt fir Date vum Sklave ze froen.
  • beginTransmission (): Start Iwwerdroung mam Sklave.
  • endTransmission (): Enn Transmissioun.
  • schreiwen ()- Schreift Daten vun engem Sklave als Äntwert op eng Ufro vum Meeschter oder Dir kënnt e Meeschter seng Iwwerdroung stoen
  • verfügbar (): gëtt d'Zuel vu Bytes zréck fir ze liesen.
  • liesen (): liest e Byte vun engem Sklave un e Meeschter iwwerdroen oder ëmgedréint.
  • onReceive (): Nennt eng Funktioun wann e Sklave eng Iwwerdroung vun engem Meeschter kritt.
  • op Ufro (): Nennt eng Funktioun wann e Sklave Date vun engem Master ufreet.

Para méi Informatiounen iwwer Arduino Programméierung a Funktiounen kënnt Dir eis eroflueden PDF Tutorial.

Wat ass de PCF8574?

PCF8574 Modul

De PCF8574 ass e I2C Bus digital Inputs an Outputs (I / O) Erweiterer. Et kann vu verschiddenen Hiersteller hiergestallt ginn, zousätzlech datt et an ICen a Moduler verfügbar ass. Op jiddfer Fall ass et ganz praktesch et mat Ärem Arduino Board ze verbannen an d'Kapazitéit méi Geräter ze kontrolléieren wéi de Motherboard erlaabt.

El PCF8574 pinout ass einfach, well et nëmmen enthält 8 Pinien quasi-Direktional (P0-P7 wou d'Chips fir ze kommunizéieren verbonne sinn), an op där anerer Säit hutt Dir den SDA an SCL datt Dir musst mat dem Arduino Board verbannen, souwéi VCC a GND fir och de Modul ze bedreiwen. An vergiesst net déi dräi Adresspinne A0, A1, A2 fir ze wielen op wéi eng Geräter d'Kommunikatioun geriicht ass ...

PCF8574 Ubidder

Besëtzer aner Funktiounen datt Dir sollt wëssen:

  • Seng Verbindungen, als en oppenen Drain, kënne sinn souwuel als Inputs an Outputs benotzt.
  • La Biergspëtzten Stroum et ass 25mA wann et als Ausgang handelt (ënnerzegoen, wann de Stroum a Richtung PCF8574 fléisst) an 300 µA (Quell, de Stroum leeft vu PCF8574).
  • La Stress Energieversuergung ass 2.5 a 6v. De Stand-by Konsum ass ganz niddereg, nëmmen 10 µA.
  • All Ausgänge latches hunn, fir de Staat ze erhalen ouni extern Handlungen ze brauchen. Dir musst nëmmen handelen wann Dir de Staat ännere wëllt.
  • Dir kënnt 8 kréien méiglech Richtungen, dat ass, bis zu 8 Geräter fir mat ze kommunizéieren oder 8 Moduler ze benotze fir se bis op 64 Geräter auszebauen. D'Adressen (Pins A0, A1, A2) sinn:
    • 000: Adress 0x20
    • 001: Adress 0x21
    • 010: Adress 0x22
    • 011: Adress 0x23
    • 100: Adress 0x24
    • 101: Adress 0x25
    • 110: Adress 0x26
    • 111: Adress 0x27
  • Zouginn Ënnerbriechung (INT) duerch eng speziell Linn fir Daten z'entdecken ouni dauernd ze iwwerwaachen.

Integratioun mam Arduino

Screenshot vun Arduino IDE

D'Verbindung mam Arduino ass ganz einfach, Dir musst just Vcc mat dem 5v Pin vum Arduino Board verbannen, a GND mat GND vun Arduino. Op der anerer Säit kënnen d'Stifter vum PCF8574 SDA an SCL Modul sinn verbannen mat Pins 14 (A5 SCL) an 15 (A4 SDA). Nëmme mat deem et géif ufänken ze schaffen, offensichtlech kënnt Dir de Px benotzen fir d'Apparater ze verbannen déi Dir kommunizéiere wëllt ...

Da feelt et just fänke mat engem Beispill Skizz un an Arduino IDE. Dir kënnt et maachen ouni eng zousätzlech Bibliothéik ze benotzen wéi ...

#include <Wire.h>
 
const int address = 0x38;
 
void setup()
{
   Wire.begin();
   Serial.begin(9600);
}
 
void loop()
{
   for (short channel = 0; channel < 8; channel++)
   {
      // Escribir dato en cada uno de los 8 canales
      Wire.beginTransmission(address);
      Wire.write(~(1 << channel));
      Wire.endTransmission();
      
      // Lee dato del canal
      delay(500);
   }
}

Als Input:

#include <Wire.h>
 
const int address = 0x38;
 
void setup()
{
   Wire.begin();
   Serial.begin(9600);
}
 
void loop()
{
   short channel = 1;
   byte value = 0;
 
   // Leer el dato del canal
   Wire.requestFrom(pcfAddress, 1 << channel);
   if (Wire.available())
   {
      value = Wire.read();
   }
   Wire.endTransmission();
 
   // Mostrar el valor leido por el monitor serie
   Serial.println(value);
}

Oder och benotzen Bibliothéiken, wéi zum Beispill den PCF8574 deen Dir kënnt hei eroflueden a benotzt Code ähnlech wéi dëst aus dem Beispill selwer dat mat dëser Bibliothéik kënnt:

#include <Wire.h>
#include "PCF8574.h"
 
PCF8574 expander;
 
void setup() 
{
  Serial.begin(9600);
  
  expander.begin(0x20);
  
  /* Setup some PCF8574 pins for demo */
  expander.pinMode(0, OUTPUT);
  expander.pinMode(1, OUTPUT);
  expander.pinMode(2, OUTPUT);
  expander.pinMode(3, INPUT_PULLUP);
 
  /* Blink hardware LED for debug */
  digitalWrite(13, HIGH);  
  
  /* Toggle PCF8574 output 0 for demo */
  expander.toggle();
  
  /* Blink hardware LED for debug */
  digitalWrite(13, LOW);
}
 
 
 
void loop() 
{
}


Den Inhalt vum Artikel hält sech un eis Prinzipie vun redaktionnell Ethik. Fir e Feeler ze mellen klickt hei.

Gitt d'éischt fir ze kommentéieren

Gitt Äre Kommentar

Är Email Adress gëtt net publizéiert ginn. Néideg Felder sinn markéiert mat *

*

*

  1. Responsabel fir d'Daten: Miguel Ángel Gatón
  2. Zweck vun den Donnéeën: Kontroll SPAM, Kommentarmanagement.
  3. Legitimatioun: Är Zoustëmmung
  4. Kommunikatioun vun den Donnéeën: D'Donnéeë ginn net un Drëttubidder matgedeelt ausser duerch legal Verpflichtung.
  5. Datenspeicher: Datebank gehost vun Occentus Networks (EU)
  6. Rechter: Zu all Moment kënnt Dir Är Informatioun limitéieren, recuperéieren an läschen.