PCF8574: Über I2C I / O Expander für Arduino

PCF8574 TI CHIP

Sie haben sicherlich von der gehört IC PCF8574Ein Chip, der separat erworben oder wie viele andere bereits auf einem Modul montiert werden kann Elektronische Bauteile um Ihre Integration mit Ihrem Arduino-Board zu erleichtern. In diesem Fall ist es ein Extender der Ein- und Ausgänge für der I2C-Bus.

Sie können denken, dass Arduino bereits seine eigene hat integrierter I2C-Busund es ist wahr. Der PCF8574 kann jedoch dazu beitragen, diesen Bus über die Grenzen Ihres Entwicklungsboards hinaus zu erweitern. Dies kann für einige Hersteller eine große Hilfe sein, die mehr als nur das benötigen, was Arduino bietet.

Was ist der I2C-Bus?

Arduino UNO Millis-Funktionen

Der Name I2C stammt von Interintegrierte Schaltung oder interintegrierte Schaltungen. Die Version 1.0 wurde 1992 von Philips erstellt. Dann würde eine zweite 2.1 im Jahr 2000 kommen und heute ist sie zum Standard geworden (bei 100 kbit / s, obwohl sie maximal 3.4 Mbit / s zulässt), als das Patent 2006 auslief und frei verwendet werden kann.

Derzeit ist es in der Industrie weit verbreitet Für die Kommunikationund auch von den Herstellern für ihre Projekte zur Kommunikation verschiedener Mikrocontroller und Peripheriegeräte, die in einem IC integriert sind, sehr geschätzt.

El I2C ist ein Bus bekannte serielle Kommunikation. Es verwendet ein synchrones Kommunikationsprotokoll mit nur 2 Kanälen (es gibt einen dritten, der jedoch an Referenz oder GND gekoppelt ist). Tatsächlich wird es auch als TWI (Two Wire Interface) bezeichnet:

  • Eine für die Uhr (SCL).
  • Sonstiges für Daten (SDA).
Beide sind Open-Drain-CMOS-Verbindungen und erfordern Pull-up-Widerstände. Wenn ein Gerät eine 0 und ein anderes eine 1 sendet, kann es außerdem zu Problemen kommen. Deshalb wird die Leitung immer auf 1 (hoher Pegel) gesetzt und die Geräte senden immer 0 (niedriger Pegel).

Das bedeutet, dass die Meister und Sklave Sie senden Daten über dasselbe Kabel oder dieselbe Spur, die von dem ersten gesteuert wird, das das Taktsignal erzeugt. Jedem an den I2C-Bus angeschlossenen Peripheriegerät wird eine eindeutige Adresse zugewiesen, um die Übertragungen zu steuern. Es ist jedoch nicht erforderlich, dass der Lehrer immer derselbe ist (Multi-Lehrer), sondern immer derjenige, der die Übertragung initiiert.

Wie ich bereits im Artikel erklärt habe Arduino I2C Ich habe bereits erwähnt, dass jede Karte diese I2C-Verbindungen an verschiedenen Stellen hat. Es ist etwas, das Sie beachten müssen, um es in jeder Plattenversion richtig verwenden zu können:

  • Arduino UNO: SDA ist in A4 und SCK in A5
  • Arduino Nano: das gleiche wie das vorherige.
  • Arduino Mini Pro: gleich.
  • Arduino Mega: SDA ist an Pin 20 und SCK an 21.
  • Weitere Informationen zu Platten.

Sie wissen bereits, dass Sie das I2C problemlos für Ihre Skizzen verwenden können, da das Wire.h Bibliothek mit verschiedenen Funktionen für diese serielle Kommunikation:

  • begin (): Starten Sie die Wire-Bibliothek und geben Sie an, ob es sich um Master oder Slave handelt
  • Anfrage von (): Wird vom Master verwendet, um Daten vom Slave anzufordern.
  • beginTransmission (): Starten Sie die Übertragung mit dem Slave.
  • endTransmission (): Übertragung beenden.
  • schreibe ()- Schreiben Sie Daten von einem Slave als Antwort auf eine Anfrage des Masters, oder Sie können die Übertragung eines Masters in die Warteschlange stellen.
  • verfügbar (): gibt die Anzahl der zu lesenden Bytes zurück.
  • lesen(): Lesen Sie ein von einem Slave an einen Master übertragenes Byte oder umgekehrt.
  • onReceive (): Ruft eine Funktion auf, wenn ein Slave eine Übertragung von einem Master empfängt.
  • auf Anfrage (): Ruft eine Funktion auf, wenn ein Slave Daten von einem Master anfordert.

zu Weitere Informationen Über Arduino-Programmierung und -Funktionen können Sie unsere herunterladen PDF-Tutorial.

Was ist der PCF8574?

PCF8574-Modul

Der PCF8574 ist ein Expander für digitale Ein- und Ausgänge des I2C-Busses (E / A). Es kann von verschiedenen Herstellern hergestellt werden und ist nicht nur in ICs und Modulen erhältlich. In jedem Fall ist es sehr praktisch, es an Ihr Arduino-Board anzuschließen und mehr Geräte zu steuern, als das Motherboard zulässt.

El Pinbelegung PCF8574 Es ist einfach, da es nur enthält 8 Kiefern quasidirektional (P0-P7, wo die zu kommunizierenden Chips verbunden sind), und andererseits haben Sie den SDA und die SCL, die Sie an die Arduino-Karte anschließen müssen, sowie VCC und GND, um auch das Modul mit Strom zu versorgen. Und vergessen Sie nicht die drei Adressierungsstifte A0, A1, A2, um auszuwählen, an welches der Geräte die Kommunikation gerichtet ist ...

Pinbelegung PCF8574

Es besitzt andere Funktionen das solltest du wissen:

  • Seine Verbindungen, die ein offener Abfluss sind, können sein wird sowohl als Ein- als auch als Ausgänge verwendet.
  • La Spitzenstrom Sie beträgt 25 mA, wenn sie als Ausgang fungiert (Senke, wenn Strom in Richtung PCF8574 fließt) und 300 µA (Quelle, Strom fließt von PCF8574).
  • La Spannung Die Stromversorgung beträgt 2.5 und 6V. Der Standby-Verbrauch ist mit nur 10 µA sehr gering.
  • Alle Abfahrten Riegel haben, um den Staat ohne die Notwendigkeit externer Maßnahmen aufrechtzuerhalten. Sie müssen nur handeln, wenn Sie den Status ändern möchten.
  • Sie können 8 bekommen mögliche Richtungen, Das heißt, bis zu 8 Geräte für die Kommunikation mit oder die Verwendung von 8 Modulen für die Erweiterung auf bis zu 64 Geräte. Die Adressen (Pins A0, A1, A2) lauten:
    • 000: Adresse 0x20
    • 001: Adresse 0x21
    • 010: Adresse 0x22
    • 011: Adresse 0x23
    • 100: Adresse 0x24
    • 101: Adresse 0x25
    • 110: Adresse 0x26
    • 111: Adresse 0x27
  • Gibt zu Unterbrechung (INT) durch eine spezielle Leitung zum Erkennen von Daten ohne ständige Überwachung.

Integration mit Arduino

Screenshot der Arduino IDE

Die Verbindung mit Arduino ist sehr einfach. Sie müssen nur Vcc mit dem 5-V-Pin der Arduino-Platine und GND mit GND von Arduino verbinden. Andererseits können die Pins des PCF8574 SDA- und SCL-Moduls sein mit Stiften verbinden 14 (A5 SCL) und 15 (A4 SDA). Nur damit würde es anfangen zu funktionieren, natürlich können Sie den Px verwenden, um die Geräte zu verbinden, die Sie kommunizieren möchten ...

Dann würde es nur noch fehlen Beginnen Sie mit einer Beispielskizze in Arduino IDE. Sie können dies tun, ohne eine zusätzliche Bibliothek zu verwenden, wie zum Beispiel ...

#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 Eingabe:

#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 auch Verwenden Sie Bibliotheken, wie der PCF8574, den Sie können Hier herunterladen und verwenden Sie ähnlichen Code aus dem Beispiel selbst, das mit dieser Bibliothek geliefert wird:

#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() 
{
}


Der Inhalt des Artikels entspricht unseren Grundsätzen von redaktionelle Ethik. Um einen Fehler zu melden, klicken Sie auf hier.

Schreiben Sie den ersten Kommentar

Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * gekennzeichnet

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.