Inhaltsverzeichnis:

Anwendung von MCP-23008 mit Relais-Schnittstelle (I2C): - Gunook
Anwendung von MCP-23008 mit Relais-Schnittstelle (I2C): - Gunook

Video: Anwendung von MCP-23008 mit Relais-Schnittstelle (I2C): - Gunook

Video: Anwendung von MCP-23008 mit Relais-Schnittstelle (I2C): - Gunook
Video: Atom Hydrogen - Universal Smart Home Controller, Übersicht, Funktionen, ESP Home, Home Assistant 2024, Juli
Anonim
Anwendung von MCP-23008 mit Relais-Schnittstelle (I2C)
Anwendung von MCP-23008 mit Relais-Schnittstelle (I2C)

Hallo

Schöne Grüße..!!

Ich (Somanshu Choudhary) im Auftrag von Dcube Tech Ventures werde Relais über das I2C-Protokoll mit Arduino nano und MCP23008 steuern.

Schritt 1: Übersicht

Überblick
Überblick
  • Das MCP23X08-Gerät bietet eine 8-Bit-Universal-I/O-Erweiterung für I2C-Bus- oder SPI-Anwendungen.
  • Der MCP23X08 besteht aus mehreren 8-Bit-Konfigurationsregistern zur Auswahl von Eingang, Ausgang und Polarität. Der Systemmaster kann die E/As entweder als Eingänge oder als Ausgänge aktivieren, indem er die E/A-Konfigurationsbits schreibt. Die Daten für jeden Eingang oder Ausgang werden im entsprechenden Eingangs- oder Ausgangsregister gespeichert. Die Polarität des Input Port Registers kann mit dem Polarity Inversion Register invertiert werden. Alle Register können vom Systemmaster gelesen werden.
  • DATENBLATT-LINK:

Schritt 2: Was Sie brauchen / Links

Was Sie brauchen / Links
Was Sie brauchen / Links

1. Arduino Nano-LINK:

2. Schild für Arduino Nano LINK:

3. USB-Kabel Typ A zu Micro Typ B 6 Fuß lang

4. I²C-Kabel LINK:

5. Acht SPDT I²C-gesteuerte Relais

6. Adapter-LINK:

Schritt 3: Schaltplan

Schaltplan
Schaltplan
Schaltplan
Schaltplan

Schritt 4: Programmierung - I

Programmierung - I
Programmierung - I
Programmierung - I
Programmierung - I
  • In diesem Code verwende ich das Function Programming Paradigm
  • Ich habe verschiedene Registerkarten für die Funktionsdefinition und den Funktionsaufruf verwendet

CODE UNTER TAB q:

// Einfacher Funktionsaufrufcode

#include void setup()

{

// I2C-Adresse des MCP23008

#define MCP_ADDR 0x20

// I2C Bus als Master beitreten

Wire.begin();

// Serielle Kommunikation starten und Baudrate einstellen

Serial.begin (9600);

// Beginnen Sie die Übertragung mit dem angegebenen Gerät auf dem I2C-Bus

Wire.beginTransmission(MCP_ADDR);

// Wählen Sie IODIR – I/O DIRECTION REGISTER-Register

Wire.write (0x00);

// Gewünschte Operation auswählen (Ausgabe)

Wire.write (0x00);

// Wählen Sie das CONFIGURATION-Register

Wire.write (0x05);

// Gewünschte Operation auswählen

Wire.write(0x0E);

// Übertragung beenden

Wire.endTransmission();

}

Leere Schleife ()

{

a1_on();

Verzögerung (1000);

a1_off();

Verzögerung (1000);

a2_on();

Verzögerung (1000);

a2_off();

Verzögerung (1000);

a3_on();

Verzögerung (1000);

a3_off();

Verzögerung (1000);

a4_on();

Verzögerung (1000);

a4_off();

Verzögerung (1000);

a5_on();

Verzögerung (1000);

a5_off();

Verzögerung (1000);

a6_on();

Verzögerung (1000);

a6_off();

Verzögerung (1000);

a7_on();

Verzögerung (1000);

a7_off();

Verzögerung (1000);

a8_on();

Verzögerung (1000);

a8_off();

}

CODE UNTER TAB q1:

// Dieser Code dient zum Ein- und Ausschalten von Relais 1 an Bord

void a1_on() {

// Übertragung beginnen

Wire.beginTransmission(MCP_ADDR);

Wire.write (0x09);

Wire.write (0x01);

Verzögerung (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Ausgabe auf den Bildschirm

Serial.print ("GPIO-Wert:");

Serial.println (GPIO, BIN);

}

void a1_off()

{

// Übertragung beginnen

Wire.beginTransmission(MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

Verzögerung (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Ausgabe auf den Bildschirm

Serial.print ("GPIO-Wert:");

Serial.println (GPIO, BIN);

}

CODE UNTER TAB q2:

// Dieser Code dient zum Ein- und Ausschalten von Relais 2 an Bord

void a2_on() {

// Übertragung beginnen

Wire.beginTransmission(MCP_ADDR);

Wire.write (0x09);

Wire.write (0x02);

Verzögerung (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Ausgabe auf den Bildschirm

Serial.print ("GPIO-Wert:");

Serial.println (GPIO, BIN);

}

void a2_off()

{

// Übertragung beginnen

Wire.beginTransmission(MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

Verzögerung (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Ausgabe auf den Bildschirm

Serial.print ("GPIO-Wert:");

Serial.println (GPIO, BIN);

}

CODE UNTER TAB q3:// Dieser Code dient zum Ein- und Ausschalten von Relais 3 an Bord

void a3_on()

{

// Übertragung beginnen

Wire.beginTransmission(MCP_ADDR);

Wire.write (0x09);

Wire.write (0x04);

Verzögerung (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Ausgabe auf den Bildschirm

Serial.print ("GPIO-Wert:");

Serial.println (GPIO, BIN);

}

void a3_off()

{

// Übertragung beginnen

Wire.beginTransmission(MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

Verzögerung (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Ausgabe auf den Bildschirm

Serial.print ("GPIO-Wert:");

Serial.println (GPIO, BIN);

}

Schritt 5: Programmierung - II

Programmierung - II
Programmierung - II

CODE UNTER TAB q4:

// Dieser Code dient zum Ein- und Ausschalten von Relais 4 an Bord

void a4_on()

{

// Übertragung beginnen

Wire.beginTransmission(MCP_ADDR);

Wire.write (0x09);

Wire.write (0x08);

Verzögerung (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Ausgabe auf den Bildschirm

Serial.print ("GPIO-Wert:");

Serial.println (GPIO, BIN);

}

void a4_off()

{

// Übertragung beginnen

Wire.beginTransmission(MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

Verzögerung (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Ausgabe auf den Bildschirm

Serial.print ("GPIO-Wert:");

Serial.println (GPIO, BIN);

}

CODE UNTER TAB q5:

// Dieser Code dient zum Ein- und Ausschalten von Relais 5 an Bord

void a5_on()

{

// Übertragung beginnen

Wire.beginTransmission(MCP_ADDR);

Wire.write (0x09);

Wire.write(0x10);

Verzögerung (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Ausgabe auf den Bildschirm

Serial.print ("GPIO-Wert:");

Serial.println (GPIO, BIN);

}

void a5_off()

{

// Übertragung beginnen

Wire.beginTransmission(MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

Verzögerung (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Ausgabe auf den Bildschirm

Serial.print ("GPIO-Wert:");

Serial.println (GPIO, BIN);

}

CODE UNTER TAB q6:// Dieser Code dient zum Ein- und Ausschalten von Relais 6 an Bord

void a6_on()

{

// Übertragung beginnen

Wire.beginTransmission(MCP_ADDR);

Wire.write (0x09);

Wire.write (0x20);

Verzögerung (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Ausgabe auf den Bildschirm

Serial.print ("GPIO-Wert:");

Serial.println (GPIO, BIN);

}

void a6_off()

{

// Übertragung beginnen

Wire.beginTransmission(MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

Verzögerung (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Ausgabe auf den Bildschirm

Serial.print ("GPIO-Wert:");

Serial.println (GPIO, BIN);

}

CODE UNTER TAB q7:// Dieser Code dient zum Ein- und Ausschalten von Relais 7 an Bord

void a7_on() {

// Übertragung beginnen

Wire.beginTransmission(MCP_ADDR);

Wire.write (0x09);

Wire.write (0x40);

Verzögerung (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Ausgabe auf den Bildschirm

Serial.print ("GPIO-Wert:");

Serial.println (GPIO, BIN);

}

void a7_off()

{

// Übertragung beginnen

Wire.beginTransmission(MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

Verzögerung (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Ausgabe auf den Bildschirm

Serial.print ("GPIO-Wert:");

Serial.println (GPIO, BIN);

}

CODE UNTER TAB q8:// Dieser Code dient zum Ein- und Ausschalten von Relais 8 an Bord

void a8_on() {

// Übertragung beginnen

Wire.beginTransmission(MCP_ADDR);

Wire.write (0x09);

Wire.write (0x80);

Verzögerung (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Ausgabe auf den Bildschirm

Serial.print ("GPIO-Wert:");

Serial.println (GPIO, BIN);

}

void a8_off()

{

// Übertragung beginnen

Wire.beginTransmission(MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

Verzögerung (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Ausgabe auf den Bildschirm

Serial.print ("GPIO-Wert:");

Serial.println (GPIO, BIN);

}

Schritt 6: Video

Für weitere Fragen besuchen Sie gerne unsere Website:

www.dcubetechnologies.com

Empfohlen: