Inhaltsverzeichnis:

PCF8591 (i2c Analog I/O Expander) Schnelle einfache Bedienung - Gunook
PCF8591 (i2c Analog I/O Expander) Schnelle einfache Bedienung - Gunook

Video: PCF8591 (i2c Analog I/O Expander) Schnelle einfache Bedienung - Gunook

Video: PCF8591 (i2c Analog I/O Expander) Schnelle einfache Bedienung - Gunook
Video: Mit Raspberry Pi über SPI Daten auslesen in C | AD-Wandler | Max9814 Mikrofon 2024, Juli
Anonim
PCF8591 (i2c Analog I/O Expander) Schnelle und einfache Bedienung
PCF8591 (i2c Analog I/O Expander) Schnelle und einfache Bedienung

Bibliothek zur Verwendung von i2c PCf8591 IC mit Arduino und esp8266.

Dieser IC kann (bis zu 4) analoge Eingänge und/oder 1 analogen Ausgang steuern, wie Spannung messen, Thermistorwert lesen oder eine LED ausblenden.

Kann mit nur 2 Drähten Analogwerte lesen und Analogwerte schreiben (perfekt für ESP-01).

Ich versuche, die Verwendung dieses ICs mit einem minimalen Betriebsaufwand zu vereinfachen.

Sie finden die aktualisierte Version auf meiner Website

Schritt 1: Wie I2c funktioniert

So funktioniert I2c
So funktioniert I2c

I2C arbeitet mit seinen zwei Drähten, SDA (Datenleitung) und SCL (Taktleitung).

Beide Leitungen sind Open-Drain, werden aber mit Widerständen hochgezogen.

Normalerweise gibt es einen Master und einen oder mehrere Slaves an der Leitung, obwohl es mehrere Master geben kann, aber darüber werden wir später sprechen.

Sowohl Master als auch Slaves können Daten senden oder empfangen, daher kann sich ein Gerät in einem dieser vier Zustände befinden: Master senden, Master empfangen, Slave senden, Slave empfangen.

Schritt 2:

Hier finden Sie meine Bibliothek.

Herunterladen.

Klicken Sie oben rechts auf die Schaltfläche DOWNLOADS, benennen Sie den unkomprimierten Ordner PCF8591 um.

Überprüfen Sie, ob der Ordner PCF8591 PCF8591.cpp und PCF8591.h enthält.

Legen Sie den Bibliotheksordner PCF8591 in Ihren Ordner /libraries/.

Möglicherweise müssen Sie den Unterordner Bibliotheken erstellen, wenn es sich um Ihre erste Bibliothek handelt.

Starten Sie die IDE neu.

Schritt 3: Verwendung

Konstruktor: Sie müssen die Adresse von i2c angeben (um die Adresse zu überprüfen, verwenden Sie diese Anleitung I2cScanner)

PCF8591(uint8_t-Adresse);

für esp8266, wenn Sie den SDA- und SCL-Pin angeben möchten, verwenden Sie dies:

PCF8591(uint8_t-Adresse, uint8_t sda, uint8_t scl);

Schritt 4: Wert lesen

Wert lesen
Wert lesen

IC wie Sie im Bild sehen können, hat 4 analoge Eingänge und 1 analogen Ausgang.

Um alle analogen Eingänge in einer Übertragung zu lesen, können Sie Folgendes tun (der Wert liegt zwischen 0 und 255):

PCF8591::AnalogInput ai = pcf8591.analogReadAll();

Serial.print (ai.ain0); Serial.print (" - "); Serial.print (ai.ain1); Serial.print (" - "); Serial.print (ai.ain2); Serial.print (" - "); Serial.println (ai.ain3);

Wenn Sie einen einzelnen analogen Eingang oder Kanal lesen möchten:

int ana = pcf8591.analogRead(AIN0); // Analog 0 lesen

Schritt 5: Vale vom Kanal lesen

Vale vom Kanal lesen
Vale vom Kanal lesen

Dieser IC hat mehrere Lesearten und Sie können den Analogeingang oder den Analogkanal verwenden (wenn Sie einen einzelnen Lesekanal verwenden, sind der Analogeingang und der Kanal in den Bildern zu sehen).

Um beispielsweise den Wert von Kanal 0 in Zwei Differenzeingänge zu lesen, müssen Sie Folgendes tun:

int ana = pcf8591.analogRead (CHANNEL0, TWO_DIFFERENTIAL_INPUT); // Analog 0 lesen

Schritt 6: Wert schreiben

Wenn Sie einen analogen Wert schreiben möchten, müssen Sie Folgendes tun (der Wert liegt zwischen 0 und 255):

pcf8591.analogWrite(128);

Schritt 7: Zusätzliche Funktionen

Eine zusätzliche Funktion ist das Lesen einer Schreibspannung: Für die Berechnung der Spannung müssen Sie einige Parameter übergeben:

  • microcontrollerReferenceVoltage: Spannung von Mikrocontrollerspannung erhalten (nur AVR kein esp8266 für esp 3.3v behoben)
  • referenceVoltage: Wenn der MikrocontrollerReferenceVoltage false ist, nehmen Sie diesen Wert anDie Befehle sind:

void voltageWrite (float value, bool microcontrollerReferenceVoltage = true, float referenceVoltage = 5.0);

float voltageRead (uint8_t analogPin, bool microcontrollerReferenceVoltage = true, float referenceVoltage = 5.0);

Ein Beispiel ist:

pcf8591.voltageWrite(2.7); // 2,7 Volt Ausgang

Verzögerung (3000);

float ana0V = pcf8591.voltageRead(AIN0); // Spannung von Analog 0 lesen

Serial.println (ana0V);

Schritt 8: Beispiele für Verbindungsdiagramme

Beispiele Anschlussdiagramm
Beispiele Anschlussdiagramm

Schritt 9: Danke

i2c-Projektreihe (Sammlung):

  • Temperatur-Feuchtesensor
  • Analoger Expander
  • Digitaler Expander
  • LCD Bildschirm

Empfohlen: