Comunicación Arduino RS485 con conversor MAX485

Autor: Oscar Gonzalez

Comunicación Arduino RS485 con conversor MAX485

Tiempo de lectura: 6 minutos

En este tutorial verás cómo realizar una conexión RS485 entre varios dispositivos con Arduino y MAX485

Comunicación Arduino RS485 con conversor MAX485

  • 0

0 Principiante

Introducción

¿Qué es el protocolo RS485?

El protocolo RS485 es un estándar de comunicación de datos que se utiliza en sistemas de control y automatización industrial. Fue desarrollado por la Asociación de Industrias Electrónicas (EIA) para permitir la comunicación entre dispositivos electrónicos en una red de área local (LAN).

El protocolo RS485 se utiliza para la transmisión de datos serie en sistemas de comunicación de corto y largo alcance, con una velocidad de transmisión de hasta 10 Mbps y una distancia de hasta 1200 metros en condiciones ideales. Es especialmente adecuado para entornos ruidosos y de alta interferencia electromagnética debido a su capacidad para detectar y corregir errores de transmisión.

La principal ventaja del protocolo RS485 es su capacidad para soportar comunicaciones multipunto, lo que significa que varios dispositivos pueden conectarse a la misma línea de comunicación y transmitir datos en ambas direcciones. Además, también permite la transmisión de datos en modo semi-dúplex y dúplex completo.

Para utilizar el protocolo RS485, se requiere un transceptor RS485, que convierte los datos de formato serie en una señal de voltaje diferencial que se transmite a través de la línea de comunicación. Los dispositivos en la red deben estar conectados en paralelo a la línea de comunicación y configurados con direcciones únicas para que puedan ser identificados y accedidos por otros dispositivos en la red.

El protocolo RS485 es una solución de comunicación fiable y eficiente para entornos industriales y de control. Sus capacidades de comunicación multipunto, corrección de errores y alta velocidad de transmisión lo convierten en una opción popular para una variedad de aplicaciones, incluyendo el control de procesos, la automatización de fábricas y la supervisión de edificios.

Ejemplo de esquema de conexión de dispositivos en un bus RS485

Ejemplo de esquema de conexión de dispositivos en un bus RS485

¿Cómo funciona un RS485?

La conexión RS485 utiliza una diferencia de potencial para transmitir datos a través de la línea de comunicación. En una conexión RS485 típica, se utilizan dos cables para la transmisión de datos, llamados A y B. En lugar de utilizar un solo cable de señal, como en la conexión RS232, la señal se transmite en forma de una diferencia de voltaje entre los cables A y B.

La diferencia de potencial entre los cables A y B se conoce como voltaje diferencial. El voltaje diferencial es utilizado por el transceptor RS485 para codificar los datos de entrada y transmitirlos a través de la línea de comunicación. Cuando se reciben los datos, el receptor del transceptor utiliza la misma diferencia de potencial para decodificar los datos y recuperar la señal original.

La ventaja de utilizar una conexión RS485 es que el voltaje diferencial minimiza los efectos de las interferencias electromagnéticas y el ruido en la línea de comunicación. Esto es posible porque las interferencias electromagnéticas y el ruido afectan a ambos cables A y B por igual, lo que significa que la diferencia de potencial se mantiene constante y se puede recuperar la señal original con mayor precisión.

La conexión RS485 utiliza una diferencia de potencial entre dos cables para transmitir datos. Esta diferencia de potencial se conoce como voltaje diferencial y minimiza los efectos de las interferencias electromagnéticas y el ruido en la línea de comunicación. 

Esto hace que la conexión RS485 sea especialmente adecuada para entornos ruidosos y de alta interferencia electromagnética, como los entornos industriales y de control.

Ejemplo MAX485 con Arduino

Para poder realizar una comunicación RS485 entre una o varias placas Arduino, puedes utilizar el clásico conversor MAX485, ya que como veremos a continuación, es muy económico y fácil de utilizar.

Módulo convertidor MAX485 RS-485 TTL 5V

Módulo convertidor MAX485 RS-485 TTL 5V

Convertidor MAX485 de bus serie a bus RS-485 para comunicaciones a largas distancias con solo 2 cables.

1,60€

Comprar


Esta placa te va a permitir conectar varios dispositivos, aunque también existe la posibilidad de hacerlo desde el puerto USB utilizando esta otra placa:

Conversor USB a RS-485

Conversor USB a RS-485

Conversor de USB a puerto RS-485 SP3485 con hasta 10 Mbps de velocidad

22,95€

Comprar


El MAX485 es un transceptor de línea RS485 que se utiliza comúnmente para implementar comunicaciones RS485 en sistemas de control y automatización industrial. Es compatible con muchos microcontroladores, incluyendo Arduino o ESP.

Un ejemplo de uso del MAX485 con Arduino sería para conectar varios sensores a una red RS485 y enviar los datos a un controlador central. Para hacer esto, se podría utilizar un módulo de interfaz RS485 con el MAX485 integrado y conectarlo a un puerto UART de la placa Arduino.

A continuación, se podrían conectar los sensores a la red RS485 utilizando cables de par trenzado y conectores RJ45. Cada sensor tendría un transceptor RS485 que se conectaría a la línea de comunicación y se configuraría con una dirección única para que pudiera ser identificado por el controlador central.

En el código de Arduino, se utilizaría una librería de comunicación RS485 para enviar y recibir datos a través de la línea de comunicación. El controlador central enviaría una solicitud de datos a cada sensor, y cada sensor respondería con los datos solicitados.

Una vez que se recibieran los datos, se podrían procesar y mostrar en una pantalla LCD, guardar en una base de datos o enviar a través de una conexión inalámbrica a un sistema de monitoreo remoto.

Ahora veamos un ejemplo de código. Ten en cuenta que, para simplificarlo, vamos a utilizar un código para el emisor y otro código para el receptor.

Además, y para poder disponer del puerto de comunicación USB libre, usaremos la librería SoftSerial para crear un puerto virtual sobre otro pin.

Lectura recomendada

Si no sabes cómo instalar librerías en Arduino, te recomiendo esta guía:

Código Arduino MAX485 para el Emisor:

#include <SoftwareSerial.h>

#define RE_485  2  // habilita la transmisión en modo TX

SoftwareSerial RS485Serial(0, RE_485); // RX, TX

void setup() {
  Serial.begin(9600);   // inicia la comunicación serial por USB
  RS485Serial.begin(9600);  // inicia la comunicación serial por RS485
}

void loop() {
  RS485Serial.write("Hola desde el emisor");  // envía un mensaje
  delay(1000);  // espera un segundo
}

Código Arduino MAX485 para el Receptor:

#include <SoftwareSerial.h>

#define RE_485  2  // habilita la recepción en modo RX

SoftwareSerial RS485Serial(0, RE_485); // RX, TX

void setup() {
  Serial.begin(9600);   // inicia la comunicación serial por USB
  RS485Serial.begin(9600);  // inicia la comunicación serial por RS485
}

void loop() {
  if (RS485Serial.available() > 0) {  // si hay datos disponibles
    String data = RS485Serial.readString();  // lee los datos
    Serial.println(data);  // muestra los datos recibidos
  }
}

El esquema de conexiones con Arduino es muy sencillo y depende si estás conectando el emisor o el receptor. Básicamente, se trata de conectar o bien el pin RX o bien el pin TX según el caso.

Pines de conexión MAX485

Pines de conexión MAX485

En este ejemplo, se utiliza la librería SoftwareSerial para crear una comunicación serial por software en los pines 0 y 2 de Arduino. Se utiliza el pin 2 para habilitar la transmisión (TX) en el emisor y la recepción (RX) en el receptor. La comunicación se inicia a una velocidad de 9600 baudios.

En el bucle principal del emisor, se envía un mensaje "Hola desde el emisor" a través de la línea de comunicación RS485 cada segundo utilizando el método RS485Serial.write().

En el bucle principal del receptor, se verifica si hay datos disponibles en la línea de comunicación RS485 utilizando el método RS485Serial.available(). Si hay datos disponibles, se leen y se muestran en el monitor serial de Arduino utilizando el método RS485Serial.readString() y Serial.println().

Espero que este ejemplo te ayude a entender cómo se puede utilizar una placa MAX485 con Arduino para enviar y recibir datos a través de una línea de comunicación RS485. Ten en cuenta que este es solo un ejemplo básico y que se pueden realizar muchas otras tareas con una red RS485 y un transceptor MAX485.