Sommario:

Applicazione di MCP-23008 Utilizzo dell'interfaccia relè (I2C):: 6 passaggi
Applicazione di MCP-23008 Utilizzo dell'interfaccia relè (I2C):: 6 passaggi

Video: Applicazione di MCP-23008 Utilizzo dell'interfaccia relè (I2C):: 6 passaggi

Video: Applicazione di MCP-23008 Utilizzo dell'interfaccia relè (I2C):: 6 passaggi
Video: Output DC or AC Voltage using MCP4725 DAC with LCD and PWM to Voltage Converter with Arduino 2024, Dicembre
Anonim
Applicazione di MCP-23008 utilizzando l'interfaccia relè (I2C)
Applicazione di MCP-23008 utilizzando l'interfaccia relè (I2C)

Ciao

Buoni saluti..!!

I (Somanshu Choudhary) per conto di Dcube tech ventures andando a controllare i relè tramite il protocollo I2C utilizzando Arduino nano e MCP23008.

Passaggio 1: Panoramica

Panoramica
Panoramica
  • Il dispositivo MCP23X08 fornisce espansione I/O parallela a 8 bit per uso generico per bus I2C o applicazioni SPI.
  • L'MCP23X08 è costituito da più registri di configurazione a 8 bit per la selezione di input, output e polarità. Il master del sistema può abilitare gli I/O come ingressi o uscite scrivendo i bit di configurazione degli I/O. I dati per ogni ingresso o uscita sono conservati nel registro di ingresso o uscita corrispondente. La polarità del registro Input Port può essere invertita con il registro Polarity Inversion. Tutti i registri possono essere letti dal master di sistema.
  • LINK SCHEDA TECNICA:

Passaggio 2: cosa ti serve / link

Cosa ti serve / Link
Cosa ti serve / Link

1. Arduino Nano LINK:

2. Shield per Arduino Nano LINK:

3. Cavo USB da tipo A a micro tipo B lungo 6 piedi

4. COLLEGAMENTO del cavo I²C:

5. Otto relè controllati I²C SPDT

6. Collegamento adattatore:

Passaggio 3: schema elettrico

Schema elettrico
Schema elettrico
Schema elettrico
Schema elettrico

Fase 4: Programmazione - I

Programmazione - I
Programmazione - I
Programmazione - I
Programmazione - I
  • In questo codice, utilizzo il paradigma di programmazione delle funzioni
  • Ho usato diverse schede per la definizione delle funzioni e la chiamata di funzioni

CODICE SOTTO TAB q:

// Semplice codice di chiamata di funzione

#include void setup()

{

// Indirizzo I2C dell'MCP23008

#define MCP_ADDR 0x20

// Unisciti a I2C Bus come master

Wire.begin();

// Avvia la comunicazione seriale e imposta la velocità di trasmissione

Serial.begin(9600);

// Inizia la trasmissione con un dato dispositivo sul bus I2C

Wire.beginTransmission(MCP_ADDR);

// Seleziona IODIR – REGISTRO DIREZIONE I/O registrati

Wire.write(0x00);

// Seleziona l'operazione richiesta (output)

Wire.write(0x00);

// Seleziona CONFIGURAZIONE registro

Wire.write(0x05);

// Seleziona l'operazione richiesta

Wire.write(0x0E);

// termina la trasmissione

Wire.endTransmission();

}

ciclo vuoto()

{

a1_on();

ritardo(1000);

a1_off();

ritardo(1000);

a2_on();

ritardo(1000);

a2_off();

ritardo(1000);

a3_on();

ritardo(1000);

a3_off();

ritardo(1000);

a4_on();

ritardo(1000);

a4_off();

ritardo(1000);

a5_on();

ritardo(1000);

a5_off();

ritardo(1000);

a6_on();

ritardo(1000);

a6_off();

ritardo(1000);

a7_on();

ritardo(1000);

a7_off();

ritardo(1000);

a8_on();

ritardo(1000);

a8_off();

}

CODICE SOTTO TAB q1:

// Questo codice serve per attivare e disattivare il relè 1 a bordo

void a1_on() {

// Inizia la trasmissione

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x01);

ritardo (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uscita sullo schermo

Serial.print("Valore GPIO:");

Serial.println(GPIO, BIN);

}

void a1_off()

{

// Inizia la trasmissione

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x00);

ritardo (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uscita sullo schermo

Serial.print("Valore GPIO:");

Serial.println(GPIO, BIN);

}

CODICE SOTTO TAB q2:

// Questo codice serve per attivare e disattivare il relè 2 a bordo

void a2_on() {

// Inizia la trasmissione

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x02);

ritardo (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uscita sullo schermo

Serial.print("Valore GPIO:");

Serial.println(GPIO, BIN);

}

void a2_off()

{

// Inizia la trasmissione

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x00);

ritardo (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uscita sullo schermo

Serial.print("Valore GPIO:");

Serial.println(GPIO, BIN);

}

CODICE SOTTO TAB q3:// Questo codice serve per attivare e disattivare il relè 3 a bordo

void a3_on()

{

// Inizia la trasmissione

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x04);

ritardo (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uscita sullo schermo

Serial.print("Valore GPIO:");

Serial.println(GPIO, BIN);

}

void a3_off()

{

// Inizia la trasmissione

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x00);

ritardo (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uscita sullo schermo

Serial.print("Valore GPIO:");

Serial.println(GPIO, BIN);

}

Passaggio 5: Programmazione - II

Programmazione - II
Programmazione - II

CODICE SOTTO TAB q4:

// Questo codice serve per attivare e disattivare il relè 4 a bordo

void a4_on()

{

// Inizia la trasmissione

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x08);

ritardo (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uscita sullo schermo

Serial.print("Valore GPIO:");

Serial.println(GPIO, BIN);

}

void a4_off()

{

// Inizia la trasmissione

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x00);

ritardo (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uscita sullo schermo

Serial.print("Valore GPIO:");

Serial.println(GPIO, BIN);

}

CODICE SOTTO TAB q5:

// Questo codice serve per attivare e disattivare il relè 5 a bordo

void a5_on()

{

// Inizia la trasmissione

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x10);

ritardo (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uscita sullo schermo

Serial.print("Valore GPIO:");

Serial.println(GPIO, BIN);

}

void a5_off()

{

// Inizia la trasmissione

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x00);

ritardo (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uscita sullo schermo

Serial.print("Valore GPIO:");

Serial.println(GPIO, BIN);

}

CODICE SOTTO TAB q6:// Questo codice serve per attivare e disattivare il relè 6 a bordo

void a6_on()

{

// Inizia la trasmissione

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x20);

ritardo (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uscita sullo schermo

Serial.print("Valore GPIO:");

Serial.println(GPIO, BIN);

}

void a6_off()

{

// Inizia la trasmissione

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x00);

ritardo (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uscita sullo schermo

Serial.print("Valore GPIO:");

Serial.println(GPIO, BIN);

}

CODICE SOTTO TAB q7:// Questo codice serve per attivare e disattivare il relè 7 a bordo

void a7_on() {

// Inizia la trasmissione

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x40);

ritardo (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uscita sullo schermo

Serial.print("Valore GPIO:");

Serial.println(GPIO, BIN);

}

void a7_off()

{

// Inizia la trasmissione

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x00);

ritardo (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uscita sullo schermo

Serial.print("Valore GPIO:");

Serial.println(GPIO, BIN);

}

CODICE SOTTO TAB q8:// Questo codice serve per attivare e disattivare il relè 8 a bordo

void a8_on() {

// Inizia la trasmissione

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x80);

ritardo (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uscita sullo schermo

Serial.print("Valore GPIO:");

Serial.println(GPIO, BIN);

}

void a8_off()

{

// Inizia la trasmissione

Wire.beginTransmission(MCP_ADDR);

Wire.write(0x09);

Wire.write(0x00);

ritardo (1800);

Wire.requestFrom(MCP_ADDR, 1);

int GPIO = Wire.read();

Wire.endTransmission();

// Uscita sullo schermo

Serial.print("Valore GPIO:");

Serial.println(GPIO, BIN);

}

Passaggio 6: video

Per ulteriori domande Non esitate a visitare il nostro sito:

www.dcubetechnologies.com

Consigliato: