Desde una simple lámpara o un relé hasta una discoteca completa o un sistema de proceso industrial. A través del puerto serie (COM1) de tu ordenador puedes aprovechar los beneficios que te brinda el estándar RS485 para conectarte al mundo real, de manera física, y poder así manejar dispositivos y procesos remotos. Operar una cámara de vigilancia, automatizar las luminarias de la casa o las aberturas de puertas y ventanas, todo manejado desde tu escritorio. Del RS485 a la casa domótica hay un solo paso: tus ganas.
¿Qué es el bus RS485?
Podemos resumirlo como un sistema de interconexión para transmisión de datos a grandes distancias y apto para operar en ámbitos eléctricamente ruidosos. Su conexión es muy sencilla: a partir del puerto serie (COM1) de cualquier ordenador utilizando tan sólo dos circuitos integrados muy económicos y fáciles de obtener: MAX232 y MAX485. En el caso del último IC mencionado se lo suele reemplazar por el SN76156, que cumple la misma función y es de menor coste. Si se construye un sistema pequeño de pocas terminales que utilizan este IC la diferencia monetaria es poca, pero al emplearlo en grandes cantidades el ahorro es importante.
El bus permite una velocidad de datos de 10 y hasta 20 Mbps (a 12 metros de distancia), y de 100 Kbps cuando se conectan terminales o módulos separados 1200 metros entre sí. El sistema permite “colgar” del bus hasta 32 terminales, aunque en la actualidad ya se están utilizando sistemas de 128 y hasta 256 dispositivos conectados entre sí a una misma red de sólo dos hilos trenzados. En el mejor de los casos, es preferible que el par de cables que transporta la información sea blindado, pero si este montaje no es posible, y debemos utilizar cables individuales, será bueno tener un tercer cable que oficie de referencia de tierra o GND. Un cable blindado ayudaría a atenuar los ruidos eléctricos que pueden filtrarse entre los datos del sistema diferencial que utiliza el estándar RS485. Disponer de un cableado con estas características sería lo mejor.
Las especificaciones del estándar RS485 (cuyo nombre oficial es TIA/EIA–485-A) no determinan claramente cómo debe ser el correcto cableado de una red. Sin embargo, algunas recomendaciones pueden interpretarse dentro del texto de la norma y han sido estudiadas y ensayadas por ingenieros, tanto en forma conceptual como en función del método de prueba y error. Dichos ingenieros han llegado a delinear los conceptos que se utilizan hoy en día y que trataremos de resumir en esta sección de la nota. Dejamos bien aclarado que el método de interconexión que utilizaremos y el cable elegido no son los ideales sino que han demostrado funcionar de manera muy satisfactoria en ámbitos muy adversos y hostiles para la interconexión de sistemas de datos entre sí. Es por ello que te los recomendamos en este artículo.
Debido a que altas frecuencias intervienen en el intercambio de datos, que las distancias entre las terminales siempre son inciertas, y que los cables apropiados a utilizar no se determinan en el estándar, se acepta el uso de un par de cables trenzados comunes que tienen una impedancia aproximada de 120 Ohms. Las terminaciones inapropiadas de la línea a utilizar se traducen en reflexiones no deseadas de la señal, tal como muestran los ejemplos de los gráficos.
En las imágenes (extraídas de la Web oficial de MAXIM) se puede apreciar claramente la distorsión sufrida en la señal, cuando el final de una línea no tiene una terminación adecuada. La reflexión ocasionada puede llevar a distorsionar y perder por completo los datos transmitidos. En el sitio Web de MAXIM, hay un artículo muy interesante y esclarecedor que te será muy útil para aclarar todas las dudas que puedas plantearte acerca del apropiado uso de las líneas de transmisión en el estándar RS485. Otro artículo muy interesante, y de lectura recomendada de la empresa antes mencionada, es el que habla del MAX485 y sus variantes, en donde se resalta su versatilidad de uso en redes half y full duplex.
La base del sistema, como dijimos antes, se fundamenta en la transmisión de datos en forma diferencial. Es decir, por ambos cables viaja la misma información, pero desfasada 180° en un cable respecto al otro. De esta forma, cualquier interferencia que pueda introducirse en el cableado lo hará en ambos hilos por igual, con la misma polaridad y amplitud. En el destino de la terminal, sea en el ordenador o en el dispositivo colocado a la distancia, las señales se restituyen en polaridad y los picos de ruidos que se habían introducido con la misma polaridad en ambos cables, al invertirse las señales, se neutralizan y eliminan entre sí, y se recupera de esta forma la señal útil que se desea transmitir.
Cuando el cableado recorre un ambiente ruidoso y hostil, como puede suceder en una instalación industrial, el tercer cable que oficia de tierra o GND también se transforma en un elemento que recepciona y lleva hasta las terminales o módulos los ruidos inducidos en él. Por este motivo siempre es recomendable colocar una resistencia de 100 Ohms en la conexión a GND en cada uno de los circuitos de las terminales.
Entre las múltiples diferencias fundamentales que existen respecto al estándar RS232 es que el RS485 se maneja con niveles TTL de tensión, mientras que el RS232 maneja tensiones de ambas polaridades con valores absolutos de 3 a 15 Volts. RS232 permite comunicaciones “full-duplex” (ambos terminales transmiten y reciben datos en forma simultánea), pero su distancia de trabajo es de tan sólo 12 metros; además, se requieren al menos 8 cables para una comunicación full y es muy propenso a ser afectado por el ruido eléctrico.
Protocolo de comunicación (Terminales charlando entre sí)
Debido a que el tipo de comunicación que desarrollaremos en el bus es considerada “half-duplex” (semiduplex) mientras un dispositivo transmite, los demás terminales o módulos que se encuentren conectados al sistema (a la red) recibirán la mencionada transmisión, es decir, todos escucharán el llamado. Dicho de otro modo, uno “hablará” y los demás “escucharán”. Debemos tener en claro que será muy importante organizar el protocolo de comunicación para que sólo un terminal o módulo “entienda y/o comprenda” que es a él a quién está llamando el transmisor. Esta situación de llamar – escuchar- actuar suele darse en ambas direcciones y entre múltiples terminales, lo que significa que el ordenador puede transmitir una instrucción, y que nuestro termómetro, al escucharla, puede responder o cumplir alguna función específica en el lugar de destino. Cualquiera de los terminales puede ser transmisor o receptor. Nunca deberá haber dos transmisores simultáneos ya que ocurrirá una inevitable colisión de datos que hará ilegible la interpretación de las instrucciones por parte de quienes están a la espera en “escucha”. Receptores pueden ser todos, pero transmisor debe haber uno solo por vez.
No necesariamente la comunicación será siempre ordenador – terminal y viceversa. Habrá oportunidades en que las terminales o módulos intercambien datos entre sí, si bien éste no es al caso. Aquí solo conectaremos el ordenador con un termómetro y un relé a la distancia. Hacer funcionar una red elemental de estas características puede ser una tontería para algunos y toda una proeza para otros.
Un dato importante a tener en cuenta es que no existe una forma universal de colocar sentencias en un programa que comunicará dos dispositivos entre sí. El desarrollador del software deberá tomar idea de otras aplicaciones y adaptar la que más convenga y se adecue al diseño que está llevando a cabo. Aunque esto sea algo sencillo de explicar, en la práctica adquiere cierto grado de dificultad.
A cada terminal se le otorga un “nombre”, que sencillamente podemos asignar con un número comprendido entre 0 y 255. Por ejemplo: el circuito maestro (el ordenador) puede llamarse “0”, y el esclavo (el termómetro) puede llamarse “1”. En cuanto a las instrucciones, también podemos utilizar la misma técnica para solicitarle al termómetro que nos transmita el valor de temperatura en el momento deseado, por citar un ejemplo.
En este caso podemos elegir arbitrariamente el número “33” para tal acción, y el termómetro nos responderá (si escucha e interpreta nuestro llamado) con la información que tenga disponible. A todo el conjunto de datos que envía el transmisor o el receptor en cada momento de actividad lo llamaremos “trama” de datos, y necesitamos saber que siempre deben terminar con un carácter identificable como “fin de transmisión”. Por lo tanto, la conversación entre los dispositivos se regirá por un orden que puede ser parecido al siguiente:
- Todos los dispositivos están a la escucha y esperando recibir instrucciones.
- Cuando el dispositivo que oficiará de transmisor comprueba la inactividad del bus envía la secuencia: “nombre del receptor – instrucción – fin de transmisión”.
- Algunos diseñadores reenvían varias veces la trama para asegurar la comunicación.
- El dispositivo transmisor pasa a recepción, y aquel que fue receptor de sus instrucciones actuará en consecuencia a la orden escuchada, lo que puede ser una acción autónoma o una respuesta a su interlocutor.
- Si debe responder con una entrega de datos, asumirá el rol de “maestro” y observará en primera instancia que el bus esté inactivo. Luego, responderá con el mismo protocolo con el que fue interrogado: “nombre del receptor – datos – fin de transmisión”
- Todos quedarán en modo recepción, y el destinatario de los datos (en nuestro caso el ordenador) procesará la información recibida desde el termómetro.
Si analizamos la estructura sugerida y pensamos en que podemos llegar a colocar los 31 terminales adicionales al ordenador, los nombres podrían reservarse y enumerarse de esta forma: del 0 al 32. Por otro lado, si optamos también por un número para la instrucción a enviar, tenemos en nuestro caso la posibilidad de enviar más de 200 instrucciones distintas al termómetro. Por supuesto que no sucederá esto, ya que con una sola instrucción será suficiente para nuestro propósito. Podemos interrogar al termómetro para que nos devuelva el valor de temperatura donde esté instalado a través de una aplicación hecha por nosotros mismos en Visual Basic 2008 o el lenguaje de programación que elijamos para trabajar con el puerto serie.
El circuito.
Todos los ordenadores de mesa poseen una salida RS232 que viene identificada en el motherboard como puerto I/O COM1 y que constituye el puerto serie. Tal vez algunas no lo traigan expuesto con su conexión al exterior, pero en cualquier tienda de accesorios para el ordenador podremos adquirir por muy poco dinero el conector o alguna pequeña placa PCI que nos permitirá salir al exterior y poder allí conectar nuestra red.
El circuito utilizado es muy sencillo y cuenta con sólo dos circuitos integrados, como dijimos anteriormente: un MAX232 y un MAX485 o un SN76156 (para abaratar costos). La alimentación deberá ser independiente del puerto ya que la corriente que éste puede suministrarnos no alcanzará a activar el SN76156, el cual requiere unos 70 mA en Tx (transmisión). Con muy pocos componentes alrededor de estos IC tendremos la interfaz adecuada para crear, en nuestro ordenador, el punto de partida de una red que puede incluir desde un simple termómetro hasta el completo control de una discoteca, contando su consola de sonido, luces y efectos especiales.
Entre las características destacadas del diseño podemos apreciar un filtro diferencial de entrada de tensión formado por C10, T1 y C12, para minimizar ruidos eléctricos provenientes de la tensión de alimentación. El diodo (D3) se utiliza para prevenir al sistema de accidentales inversiones de polaridad en la entrada. Por su parte, el regulador serie 7805 no necesitará de disipador de calor por estar alimentado con tensiones que no representan una gran diferencia de potencial entre entrada y salida. Es decir, cuanto menor sea la diferencia entre las tensiones de entrada y salida, menor será la disipación de potencia en forma de calor en el regulador. D1 y D2 serán dos leds que mostrarán la actividad de transmisión y recepción de datos sirviéndonos de ayuda al momento de tratar de identificar problemas. Podemos destacar la presencia también de R3 en la parte inicial de la red RS485 para adaptar impedancias en toda su extensión. La misma resistencia deberá repetirse al final del recorrido, en el último terminal. Los terminales intermedios no requieren la resistencia ya mencionada en el texto; sólo los extremos de la red llevan la resistencia adaptadora de impedancias, tal como muestra la primera imagen del artículo. La resistencia de 100 Ohms que conecta la línea de GND a la placa de la interfase no figura en el circuito, pero no debes olvidar su inclusión al momento de comprar los materiales.
Un conector DB9 hembra será el nexo con nuestro ordenador. Es muy importante que pongas toda la atención y los cinco sentidos al construir una eventual prolongación del cable para conectar la interfaz. Cualquier error de conexiones aquí resultará en que el sistema no funcione y hasta en una posible rotura en el interior del puerto en el ordenador.
Para nuestro desarrollo hemos decidido utilizar cable telefónico sencillo de cuatro conductores (dos para señal y dos para GND), pero tú puedes cambiarlo por cable UTP, por conductores de energía eléctrica o por cualquier otro cable que se te cruce por el camino. Para agilizar el montaje hemos dotado a la placa de la interfaz, y a la del termómetro de conectores RJ11, para un rápido montaje y/o desarme del sistema.
En las imágenes puedes ver el impreso ya dibujado y listo para ser transferido al PCB; también se observa el PCB recién terminado, y en la tercera imagen se ve un intervalo en plena construcción de la interfaz. Recuerda que la red puede tomar las dimensiones que tu imaginación determine. Por ahora sólo la utilizaremos en el próximo artículo para conectar el termómetro que ya hemos desarrollado en el capítulo anterior. Pero puedes darte cuenta que la interfaz al ordenador te servirá para cualquier otro desarrollo futuro que decidas hacer. Por cierto, ¿ya has pensado qué es lo que conectarás a la red una vez que terminemos con el termómetro? ¿Qué tan cerca estás de automatizar toda tu casa?