INICIO /  APRENDE /  BLOG /  GUÍA
Guía7 min·

RS485: qué es, cómo se cablea y cómo conectarlo a Arduino o a un PC

RS485 es el estándar de comunicación serial que usan medidores de energía, variadores de frecuencia, PLC y sensores industriales para hablar entre ellos por un mismo par de cables. Llega a 1.200 metros, conecta hasta 32 equipos en una sola línea y aguanta el ruido eléctrico de una sala de tableros.

Qué es RS485 y en qué se diferencia de RS232

RS485 (su nombre formal es TIA/EIA-485) define solo la parte eléctrica: niveles de voltaje, cableado y cuántos equipos caben en la línea. Los datos los ordena un protocolo que va encima; en medidores y PLC suele ser Modbus RTU. RS232, el puerto serial de los computadores antiguos, mide cada señal contra tierra, conecta solo dos equipos y funciona bien hasta unos 15 metros. RS485 transmite cada bit como la diferencia de voltaje entre dos cables, A y B, y permite varios equipos en la misma línea.

Por qué RS485 llega tan lejos

Como el receptor lee la diferencia entre A y B, el ruido que entra por igual a los dos cables se cancela. El receptor detecta diferencias de apenas 200 mV y tolera que los equipos tengan tierras distintas, dentro de un rango de −7 V a +12 V. Con cable de par trenzado de 120 Ω, la guía de diseño de Texas Instruments indica unos 1.200 metros a 100 kbit/s. A mayor velocidad, menor distancia: a 10 Mbit/s el tramo baja a unos 12 metros. Los medidores suelen trabajar a 9.600 o 19.200 bit/s, lejos de esos límites.

Dos hilos y cuatro hilos

La versión de dos hilos es la más común. Todos los equipos comparten el mismo par, así que la comunicación es half-duplex: en cada momento transmite uno solo y los demás escuchan. La versión de cuatro hilos usa un par para transmitir y otro para recibir, y permite hablar y escuchar a la vez. En los dos casos conviene llevar un tercer conductor de referencia (GND o «común») entre los equipos. La especificación de Modbus lo exige.

Cómo cablear un bus RS485

Conecta los equipos en cadena, uno tras otro, con derivaciones lo más cortas posible. Evita el cableado en estrella, porque cada rama genera reflexiones que corrompen los datos. Pon una resistencia de 120 Ω entre A y B en los dos extremos del bus, y en ningún otro punto. En tramos cortos a 9.600 bit/s la línea muchas veces funciona sin ellas, pero en tramos largos o a más velocidad son necesarias. Muchos módulos y medidores traen esa resistencia integrada, activable con un jumper o un switch: revisa que quede activada solo en los extremos. Usa par trenzado, apantallado si el cable pasa cerca de motores o variadores, y no lo lleves junto a cables de potencia.

Polarización del bus y el lío de A y B

Cuando nadie transmite, la línea queda flotando y el receptor puede leer basura. La polarización lo evita con una resistencia de A a positivo y otra de B a GND, puestas en un solo punto del bus. La especificación de Modbus recomienda ponerlas en el maestro, con valores entre 450 Ω y 650 Ω. Muchos conversores y transceptores modernos ya la resuelven por dentro; revisa su ficha antes de agregarla. Otro problema frecuente es que los fabricantes no rotulan A y B igual: lo que un equipo llama A, otro lo llama B, D0 o «−». Si un equipo no responde y el resto del cableado está bien, intercambia A y B; invertirlos no daña los equipos.

Cómo conectar RS485 a Arduino con el módulo MAX485

Arduino no trae RS485. Para conectarlo necesitas un transceptor como el MAX485, que convierte la señal serial TTL del microcontrolador al par diferencial. El módulo tiene cuatro pines del lado de Arduino: DI (datos que salen), RO (datos que llegan), DE (habilita el transmisor) y RE (habilita el receptor, activo en LOW). Une DE y RE y llévalos a un pin digital: en HIGH el módulo transmite y en LOW escucha. Conecta RO a D10 y DI a D11 si usas SoftwareSerial, para dejar libre el puerto USB del Uno; VCC a 5 V y GND a GND. Del otro lado, A y B van al par del bus. El MAX485 funciona a 5 V; para placas de 3,3 V, como ESP32, usa un transceptor de 3,3 V.

Código para enviar datos por RS485

Este sketch envía un mensaje cada segundo por el bus. Antes de escribir pone DE/RE en HIGH y, al terminar, en LOW para volver a escuchar. Con SoftwareSerial, write() no devuelve el control hasta enviar el último bit, así que puedes cambiar a recepción en la línea siguiente. Si usas un puerto serial por hardware, llama a flush() antes de bajar DE/RE: si no, cortas el último byte. Para leer un medidor Modbus no armes las tramas a mano; usa una librería de Modbus RTU y configura la misma velocidad, paridad y dirección de esclavo que tiene el equipo.

#include <SoftwareSerial.h>

const int RX_PIN = 10;  // RO del módulo
const int TX_PIN = 11;  // DI del módulo
const int DE_RE = 3;    // DE y RE unidos

SoftwareSerial rs485(RX_PIN, TX_PIN);

void setup() {
  pinMode(DE_RE, OUTPUT);
  digitalWrite(DE_RE, LOW);  // parte escuchando
  rs485.begin(9600);
}

void loop() {
  digitalWrite(DE_RE, HIGH);  // transmitir
  rs485.println("hola bus");
  digitalWrite(DE_RE, LOW);   // volver a escuchar
  delay(1000);
}

Cómo conectar RS485 a un computador

Para leer un medidor o un PLC desde un PC, usa un conversor USB a RS485. Aparece en el computador como un puerto COM; con un software de Modbus defines la velocidad, la paridad, la dirección del equipo y los registros que quieres leer. Antes de revisar el cableado, confirma esos tres parámetros en el manual del equipo. Con la paridad o la dirección mal configuradas, el equipo no responde, igual que con un cable cortado. Si el equipo está lejos y no hay cable posible, puedes llevar los datos de RS485 a la nube por radio: un controlador LoRaWAN lee el equipo Modbus y envía sus registros a un gateway, y un convertidor celular los manda directo a un servidor por 4G.

Errores comunes con RS485

No responde ningún equipo: revisa velocidad, paridad y dirección, y prueba invertir A y B. Responde a veces o llegan datos corruptos: revisa las resistencias de 120 Ω en los extremos, la polarización y que el cable no vaya junto a la potencia. Funciona con un equipo y falla al sumar más: puede ser una derivación larga, una estrella o dos equipos con la misma dirección Modbus. El Arduino no recibe nada después de transmitir: el pin DE/RE se quedó en HIGH y no volvió a LOW para habilitar el receptor.

Preguntas frecuentes sobre RS485

¿Cuántos equipos puedo conectar? El estándar asegura 32 cargas unitarias por bus; con transceptores de 1/8 de carga caben hasta 256. ¿RS485 y Modbus son lo mismo? RS485 es el cableado y la señal; Modbus RTU es el protocolo que viaja por él. ¿Puedo usar cable de red? El par trenzado de un cable UTP funciona en tramos cortos y medianos; usa un par para A y B y otro conductor como común. ¿Qué velocidad elijo? La que tenga configurada el equipo que vas a leer. Si puedes elegir, 9.600 bit/s es la más compatible.

Fuentes técnicas

PRODUCTOS RELACIONADOS
Conversor RS485 a Serial TTL (MAX485)Conversor USB a RS485/RS232 industrialControlador Modbus RS485 a LoRaWAN UC100Convertidor RS485 a LTE RS485-KN de DraginoTransmisor RS232/RS485 por radio LoRa E90-DTURS485Conversor Modbus RS485 a LoRaWAN: leer un medidor con Dragino
¿NECESITAS AYUDA?

Habla con un especialista IoT.

Contactar