Tabla de contenido:

Aplicación de MCP-23008 usando la interfaz de relé (I2C) :: 6 pasos
Aplicación de MCP-23008 usando la interfaz de relé (I2C) :: 6 pasos

Video: Aplicación de MCP-23008 usando la interfaz de relé (I2C) :: 6 pasos

Video: Aplicación de MCP-23008 usando la interfaz de relé (I2C) :: 6 pasos
Video: Expansor E/S I2C MCP23008 con arduino 2024, Noviembre
Anonim
Aplicación de MCP-23008 usando la interfaz de relé (I2C)
Aplicación de MCP-23008 usando la interfaz de relé (I2C)

Hola

Buenos saludos.. !!

Yo (Somanshu Choudhary) en nombre de las empresas tecnológicas de Dcube, voy a controlar los relés a través del protocolo I2C utilizando Arduino nano y MCP23008.

Paso 1: descripción general

Visión general
Visión general
  • El dispositivo MCP23X08 proporciona expansión de E / S paralelas de uso general de 8 bits para aplicaciones de bus I2C o SPI.
  • El MCP23X08 consta de varios registros de configuración de 8 bits para la selección de entrada, salida y polaridad. El maestro del sistema puede habilitar las E / S como entradas o salidas escribiendo los bits de configuración de E / S. Los datos de cada entrada o salida se guardan en el registro de entrada o salida correspondiente. La polaridad del registro del puerto de entrada se puede invertir con el registro de inversión de polaridad. Todos los registros pueden ser leídos por el maestro del sistema.
  • ENLACE A LA HOJA DE DATOS:

Paso 2: Qué necesita / Enlaces

Lo que necesita / enlaces
Lo que necesita / enlaces

1. Arduino Nano ENLACE:

2. Shield para Arduino Nano LINK:

3. Cable USB tipo A a micro tipo B de 6 pies de largo

4. I²C Cable ENLACE:

5. Ocho relés controlados por SPDT I²C

6. Adaptador ENLACE:

Paso 3: diagrama de circuito

Diagrama de circuito
Diagrama de circuito
Diagrama de circuito
Diagrama de circuito

Paso 4: Programación - I

Programación - I
Programación - I
Programación - I
Programación - I
  • En este código, uso el paradigma de programación de funciones
  • Usé diferentes pestañas para la definición de funciones y la llamada de funciones.

CÓDIGO BAJO LA PESTAÑA q:

// Código de llamada de función simple

#include configuración vacía ()

{

// Dirección I2C del MCP23008

#define MCP_ADDR 0x20

// Únete al bus I2C como maestro

Wire.begin ();

// Inicie la comunicación en serie y configure la velocidad en baudios

Serial.begin (9600);

// Comenzar la transmisión con el dispositivo dado en el bus I2C

Wire.beginTransmission (MCP_ADDR);

// Seleccione IODIR - registro de REGISTRO DE DIRECCIÓN DE E / S

Wire.write (0x00);

// Seleccione la operación requerida (salida)

Wire.write (0x00);

// Seleccionar registro CONFIGURACIÓN

Wire.write (0x05);

// Seleccione la operación requerida

Wire.write (0x0E);

// finalizar la transmisión

Wire.endTransmission ();

}

bucle vacío ()

{

a1_on ();

retraso (1000);

a1_off ();

retraso (1000);

a2_on ();

retraso (1000);

a2_off ();

retraso (1000);

a3_on ();

retraso (1000);

a3_off ();

retraso (1000);

a4_on ();

retraso (1000);

a4_off ();

retraso (1000);

a5_on ();

retraso (1000);

a5_off ();

retraso (1000);

a6_on ();

retraso (1000);

a6_off ();

retraso (1000);

a7_on ();

retraso (1000);

a7_off ();

retraso (1000);

a8_on ();

retraso (1000);

a8_off ();

}

CÓDIGO BAJO LA PESTAÑA q1:

// Este código es para encender y apagar el relé 1 a bordo

void a1_on () {

// Iniciar transmisión

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x01);

retraso (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Salida a la pantalla

Serial.print ("valor GPIO:");

Serial.println (GPIO, BIN);

}

anular a1_off ()

{

// Iniciar transmisión

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

retraso (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Salida a la pantalla

Serial.print ("valor GPIO:");

Serial.println (GPIO, BIN);

}

CÓDIGO BAJO LA PESTAÑA q2:

// Este código es para encender y apagar el relé 2 a bordo

void a2_on () {

// Iniciar transmisión

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x02);

retraso (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Salida a la pantalla

Serial.print ("valor GPIO:");

Serial.println (GPIO, BIN);

}

anular a2_off ()

{

// Iniciar transmisión

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

retraso (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Salida a la pantalla

Serial.print ("valor GPIO:");

Serial.println (GPIO, BIN);

}

CÓDIGO BAJO LA PESTAÑA q3: // Este código es para encender y apagar el relé 3 a bordo

vacío a3_on ()

{

// Iniciar transmisión

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x04);

retraso (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Salida a la pantalla

Serial.print ("valor GPIO:");

Serial.println (GPIO, BIN);

}

anular a3_off ()

{

// Iniciar transmisión

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

retraso (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Salida a la pantalla

Serial.print ("valor GPIO:");

Serial.println (GPIO, BIN);

}

Paso 5: Programación - II

Programación - II
Programación - II

CÓDIGO BAJO LA PESTAÑA q4:

// Este código es para encender y apagar el relé 4 a bordo

void a4_on ()

{

// Iniciar transmisión

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x08);

retraso (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Salida a la pantalla

Serial.print ("valor GPIO:");

Serial.println (GPIO, BIN);

}

anular a4_off ()

{

// Iniciar transmisión

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

retraso (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Salida a la pantalla

Serial.print ("valor GPIO:");

Serial.println (GPIO, BIN);

}

CÓDIGO BAJO LA PESTAÑA q5:

// Este código es para encender y apagar el relé 5 a bordo

void a5_on ()

{

// Iniciar transmisión

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x10);

retraso (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Salida a la pantalla

Serial.print ("valor GPIO:");

Serial.println (GPIO, BIN);

}

anular a5_off ()

{

// Iniciar transmisión

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

retraso (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Salida a la pantalla

Serial.print ("valor GPIO:");

Serial.println (GPIO, BIN);

}

CÓDIGO BAJO LA PESTAÑA q6: // Este código es para encender y apagar el relé 6 a bordo

void a6_on ()

{

// Iniciar transmisión

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x20);

retraso (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Salida a la pantalla

Serial.print ("valor GPIO:");

Serial.println (GPIO, BIN);

}

anular a6_off ()

{

// Iniciar transmisión

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

retraso (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Salida a la pantalla

Serial.print ("valor GPIO:");

Serial.println (GPIO, BIN);

}

CÓDIGO BAJO LA PESTAÑA q7: // Este código es para encender y apagar el relé 7 a bordo

void a7_on () {

// Iniciar transmisión

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x40);

retraso (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Salida a la pantalla

Serial.print ("valor GPIO:");

Serial.println (GPIO, BIN);

}

anular a7_off ()

{

// Iniciar transmisión

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

retraso (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Salida a la pantalla

Serial.print ("valor GPIO:");

Serial.println (GPIO, BIN);

}

CÓDIGO BAJO TAB q8: // Este código es para encender y apagar el relé 8 a bordo

void a8_on () {

// Iniciar transmisión

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x80);

retraso (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Salida a la pantalla

Serial.print ("valor GPIO:");

Serial.println (GPIO, BIN);

}

anular a8_off ()

{

// Iniciar transmisión

Wire.beginTransmission (MCP_ADDR);

Wire.write (0x09);

Wire.write (0x00);

retraso (1800);

Wire.requestFrom (MCP_ADDR, 1);

int GPIO = Wire.read ();

Wire.endTransmission ();

// Salida a la pantalla

Serial.print ("valor GPIO:");

Serial.println (GPIO, BIN);

}

Paso 6: video

Para más preguntas, no dude en visitar nuestro sitio:

www.dcubetechnologies.com

Recomendado: