Escáner I2C en un entorno de automatización industrial

Cómo saber la dirección I2C con la que estás trabajando
8 de septiembre de 2020 por
Escáner I2C en un entorno de automatización industrial
Boot & Work Corp. S.L., Marti Guillem Cura

Introducción

Un bus I2C es un sistema de comunicación ampliamente utilizado para la conexión interna entre diferentes dispositivos. Se basa en un dispositivo principal que funciona como un maestro que controla los otros dispositivos conocidos como esclavos. Para enviar datos a un esclavo específico, utiliza la dirección de su dispositivo proporcionada por el fabricante. En algunos casos el proveedor no da la dirección para trabajar, lo que complica la comunicación I2C. En este blog veremos cómo conocer las direcciones de los dispositivos que no conocemos en un principio.

Requisitos

  • Cualquiera de nuestros controladores PLC controllers

  • Un dispositivo I2C

  • Cables (opcional)

Escáner I2C en un entorno de automatización industrial

¿Cómo se conecta?

Si estás usando un PLC de la familia MDuino, no necesitas ninguna conexión extra aparte de la del PC para cargar el código, ya que se incluye un RTC (Conexión en Tiempo Real) con comunicación I2C.

Si no, tendrás que conectar otro dispositivo usando los pines de comunicación SCL y SDA. Además, es mejor conectar la misma tierra para una conexión adecuada. Ambos dispositivos deben estar correctamente alimentados, comprueba la información del dispositivo proporcionada por el fabricante.

En la imagen de la izquierda puedes ver un ejemplo donde un MDunio 21+ se conecta a un Arduino Uno usando los pines I2C. En el Arduino Uno puedes usar el A4 (SCL) y A5 (SDA), podría cambiar en otros dispositivos de Arduino.

Interfaz de software

Programaremos usando Arduino Ide, que es un software basado en el lenguaje C. Industrial Shields proporciona placas para programar los controladores industriales. Básicamente no es necesario definir los pines y si son entradas o salidas ya que todo se configura automáticamente usando las placas. 

Para instalar las placas de Industrial Shields, el siguiente enlace explica todo:

First steps using Arduino based PLCs

Después de haber configurado todas las placas, elija la placa y el modelo que utiliza y el puerto donde se conecta el dispositivo al PC en la sección de Herramientas de Arduino Ide. Usaremos un simple esquema que escanea el bus I2C en busca de dispositivos, mostrando los que se encuentran en el Serial Monitor de Arduino en el borde superior derecho de la pantalla. El código se muestra en la sección de abajo. Asegúrate de que el cable de la librería de Arduino está previamente instalado.  En este caso, estarás detectando, como hemos dicho antes, el dispositivo RTC mostrado como la dirección 0x68. Si hay otro dispositivo conectado, debería aparecer en este escaneo.

 Escáner I2C en un entorno de automatización industrial

Código

 

#include <Wire.h>
void setup()
{
  Wire.begin();
  Serial.begin(9600);
  while (!Serial);
  Serial.println("\nI2C Scanner");
}

void loop()
{
  byte error, address;
  int nDevices;
  Serial.println("Scanning...");
  nDevices = 0;
  for(address = 1; address < 127; address++ ) 
  {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16) 
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");
      nDevices++;
    }
    else if (error==4) 
    {
      Serial.print("Unknown error at address 0x");
      if (address<16) 
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");
  delay(5000);
}

¿Quieres saber más sobre la comunicación I2C?

Revisa nuestros posts y trata de implementar un pequeño sistema electrónico usando este protocolo.

Comparte en redes nuestros posts sobre dispositivos basados en Arduino industrial                


Buscar en nuestro blog

Escáner I2C en un entorno de automatización industrial
Boot & Work Corp. S.L., Marti Guillem Cura 8 de septiembre de 2020
Compartir

¿Estás buscando tu Controlador Lógico Programable ideal?

Echa un vistazo a esta comparativa de producto de varios controladores industriales basados en Arduino.

Comparamos entradas, salidas, comunicaciones y otras especificaciones con las de los equipos de otras marcas destacadas.


Industrial PLC comparison >>>