RS485: Domótica al alcance de tu mano

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.

Topología clásica de un Bus RS485

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.

Terminaciones apropiadas a los extremos de una Red RS485Terminaciones incorrectas provocan reflexiones indeseadas en la señalOscilogramas indicando terminaciones incorrectas (Izquierda)

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.

Picos de ruido inducidos en la Red

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.

¡Chiste interno!

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.

Diagrama completo de la interfaz RS232 / RS485

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?

Interfaz terminada y lista para usar

Deja tu voto

4 puntos
Upvote Downvote

Total votes: 20

Upvotes: 12

Upvotes percentage: 60.000000%

Downvotes: 8

Downvotes percentage: 40.000000%

  • fonfonete

    Demasiado interesante, aunque hacerlo debe costar tiempo del que no dispongo, en cuanto pueda lo haré. Excelente nota, sigue así. Y por cierto la carricatura me hizo reir.

    • Pedro

      #1 Una central domótica gratis basada en RS-485, este es el enlace
      Domótica sencilla, fácil y económica

  • Jobev Lee

    Es un tema muy interesante, y es parte básica de lo que son un tipo de Software a lo que se conoce como SCADAS.

    Para complementar un poco, seria interesante que se presentará información sobre un protocolo que es muy utilizado cuando manejas redes RS485, que se trata de un estandard conocido como MODBUS, que tiene sus dos variantes (ASCII y RTU).

    Seria muy interesante poder mostrar a futuro sobre este protocolo

    Sldos.

    JBV

    • Roberto

      #2 Si señor, Modbus, me encantaría aprender.
      Si lo explicáis así me meto de lleno.

      • Roberto

        #73 Muy buen enlace, le quise enviar un mail de agradecimiento al autor pero no lo encontré.

  • Saul

    Interesante articulo, cada vez que veo uno como estos lo colecciono, aunque por el momento no se mucho de electronica estoy estudiando para seguir aprendiendo.
    Por otro lado:
    Es sencillo de usar el RS485 ¿tu que opinas Max?. JAJAJA XD, esta buena la caricatura. XD.

    • Max Ferzzola

      ¡Igual sigo sin entender! XD

  • Ciul

    Wow, excelente nota, te pasaste de calidad, es decir, está demasiada buena esta nota.

    Imaginate si mezclas esto con Raphael(la mano robot), poder manejar una mano a distancia que está dentro de un cuarto manipulando elementos radiactivos o que se yo y uno con una cam y un par de estas montadas sobre un robot.

    Simplemente da mucho para imaginar.

    • Mario Sacco

      De eso se trata Ciul ! 🙂

      No existe límite para las aplicaciones que puede tener el circuito.
      Realizando apropiadamente la aplicación (programa) en el ordenador, se puede controlar cualquier dispositivo electromecánico exterior.
      Sólo es cuestión de imaginar, juntar las partes y conectar el ordenador al mundo exterior, al mundo físico.

      Saludos !

  • victor

    Excelente, felicitaciones por este aporte, esta muy interesante…. Gracias

  • dds

    Buenismo estaba esperando esto!
    Puedes enviarme al mail la lista de componentes y el archivo del PCB.? me gustaría intentar reducirlo un poco. Me quedo una duda : ¿cual es el valor de T1?
    Gracias excelente aporte!

    • Mario Sacco

      Hola dds !

      T1 es un arrollamiento de 10 vueltas de alambre de cobre esmaltado de 0,35 a 0,5 mm de díametro sobre un núcleo toroidal de ferrite. Su función en el circuito es suprimir los ruidos provenientes de la red eléctrica cuando al circuito se lo alimenta con una fuente de alimentación sencilla.
      Lo puedes ver bien en la última fotografía del circuito a la izquierda de la imagen.

      Saludos !

      • dds

        Gracias por la respuesta Mario

        Me preguntaba si podría sustituir la fuente de alimentación por por los 5V de la salida de la fuente conmutada de la PC

        Gracias saludos!

      • Mario Sacco

        La fuente del ordenador es muy ruidosa dds … 🙁

        Por eso propongo un sistema independiente de alimentación para que no haya posibilidades de ruidos que desemboquen en errores de interpretación de datos en la comunicación.

        De todas formas puedes intentarlo.

        Saludos !

  • Truko

    =O Interesante, e usado el MAX232 para programar, manejar y comunicarme con el PIC. No sabia que estaba con el MAX intercambiando entre protocolo, lo que entendía era que intercambia entre valores de tensión entre valores lógicos. Bueno como siempre muy interesante y e aprendido mucho =)
    Que posibilidades hay que comente sobre bluetooth y los micros-controladores ^_^

    • Mario Sacco

      Hola Truko !

      Sobre microcontroladores vamos a estar sacando cada semana un artículo al menos, y sobre bluetooth estoy trabajando en unas muestras que me llegaron de National (LMX9838SB) y apenas las haga funcionar armamos un artículo.

      Saludos !

  • Derkeshtai

    larga vida al puerto serial!!!

    Chupame los desos USB

  • dds

    seria interesante ver algo sobre zigBee entiendo q es lo ultimo q se usa en automatización del hogar

  • kk

    Max Hace ese chiste porque el programa se llama MAX485 es medio malo pero bueno

  • FenixHardware

    Muy interesante y completa la nota, la verdad que me dieron ganas de completar mi proyecto inconcluso.
    Saludos

    FenixHardware
    Diseño Web
    http://www.fenixhardware.com

  • sinai1

    buen dia no es por criticar ni nada pero me parece q esa placa no funcionara pues la tierra de la alimentacion no la ver conectada, podrian darle una checada??

    • WTF

      realmente no veo a que te refieres, lo he chequeado y a mi me parece q esta bien

    • Mario Sacco

      Hola sinai1 !

      En el circuito, T1 te indica que la alimentación pasa a través de él para ingresar al PCB. T1 es el el ferrite toroidal con 10 vueltas de alambre de cobre que se vé en la última fotografía, arriba a la izquierda. Tanto el negativo como el positivo pasan a través de él. Por la línea superior pasa el negativo (se vé incluso en el dibujo del circuito impreso) y el positivo viaja por el bobinado inferior. Tienes razón que falta la conexión desde el positivo de la ficha de entrada de tensión hasta el bobinado de T1, pero si agregaba esa vía se me cortaba el plano de masa y preferí hacer un puente por el lado inferior de la placa.
      Si quedan dudas de la explicación agrego una imagen del lado inferior de la placa a la nota para que se vea mejor lo que trato de decir.

      La placa está funcionando perfectamente y próximamente saldrán varios artículos donde utilizamos esta interfaz para aplicaciones a distancia operadas desde el ordenador.

      Saludos !

  • tierra

    No es por contestar!!!

    Pero cual crees tu que es la tierra de una pila de 9v????

  • FAH

    He intentado publicar mi comentario pero el sistema no lo publica 😛

  • FAH

    Les queria hacer una consulta, bueno desde una PC como servidor quiero controlar remotamente varios dispositivos (como solo tiene 1 salida serial, puedo utilizar varios convertidores USB-SERIAL y asi tengo varios puertos COM), haciendo la interfaz con un microcontrolador ATMEL, el esquema es el siguiente:

    SERVER—USB-SERIAL—Bus RS485—Microcontrolador 89C52

    Queria saber si puedo conectar directamente el ATMEL 89C52 (Que ya tiene implementada la interfaz serial de datos) al Bus RS485 ya que ambos manejan Niveles TTL (0-5.5V) y que se comuniquen.

    Por favor, ayudenme en este tema, se los agradeceria mucho, e incluso les comento acerca de mi proyecto.

    Saludos

    • Mario Sacco

      Hola FAH !

      No entiendo muy bien la participación de los convertidores USB-Serial en tu aplicación, pero si miras bien la primer imagen del artículo, verás y comprenderás que con la interfaz presentada puedes controlar hasta 31 módulos que contengan circuitos con microcontroladores !
      Muy pronto estaremos publicando un artículo donde utilizamos esta interfaz y la conectamos a un termómetro que utilizaremos para controlar la temperatura de un criadero de aves que está ubicado a más de 1000 metros del ordenador. Imagina que puedes tener hasta 31 termómetros conectados a la vez !

      El circuito sería : Tu Server — Interfaz de hoy — Microcontrolador

      El conversor USB – Serial no hace falta. Comprendes ?

      Saludos !

      • FAH

        Antes que nada, muchas gracias por responder!!

        Lo del convertidor USB SERIAL era para que cada microcontrolador tenga un puerto COM asignado en el servidor, ya que la mayoria de las PC’S solo tiene 1 salida RS232 (Serial).

        ( Server )- (USB-RS232)–RS485–89C52

        Yo pensaba que por cada microcontrolador se necesitaba un convertidor RS485 Y una coneccion al server.

        Esa era la idea, pero segun lo que veo se puede usar un bus en comun, utilizando una sola salida del server:

        ( Server )–(RS232)–RS485—-89C52

        Conectando todas las salidas y entradas de la interfaz serial (TxD, RxD) de los Microcontroaldores, asi me puedo comunicar con los Microcontroladores utilizando un canal en común, enviando mensajes como por ejemplo "M1=XXXX" donde M1 indica cual es el identificador del microcontrolador y XXXX las instrucciones o informacion , asi lo identifica el server, y cuando el server envia algo del tipo "M1=YYYY" solo el Microncontrolador nº1 va a a ejecutar alguna acción, y los otros van a ignorar el mensaje.

        Lo que tambien quisiera saber, es como se manejan las colisiones, o que pasan si 2 microcontroladores transmiten informacion por el mismo canal al mismo tiempo.

        Muchas gracias de antemano.

      • Mario Sacco

        Hola de nuevo FAH !

        La cosa es así:

        Server — MAX232-MAX485 —- Bus de datos del que se "cuelgan" todos los terminales o módulos (distancia hasta 1200 metros)— MAX485 — 89C52 (en tu caso)
        En la placa de cada microcontrolador irá un MAX485 para tomar los datos del bus y acoplarlos correctamente al microcontrolador.

        La colisión de datos la manejas tú al programar la aplicación en el server.
        Ningún módulo transmitirá cuando se le antoje. El servidor determinará cuándo interrogar, cuándo llegará la respuesta, cuándo volverá a interrogar al mismo módulo … es decir, nunca existirá la colisión de datos si el protocolo de comunicación que hagas es ordenado.
        Si el protocolo es una anarquía y cualquier módulo hace lo que quiere cuando quiere, la situación será un caos.
        Quien organiza en tráfico de datos es el server y el decide quién, cómo y cuándo habrá datos circulando por el bus.

        Saludos !

  • iPeter

    Muy interesante, la verdad la electronica no es mi fuerte, pero esto realmente me interesa, por eso me compre una placa Arduino, para programar algunas cosas con leds RGB, se me ah hecho muy facil sobre todo usando "Processing", lo mas complicado para mi fue la comunicacion atravez del puerto serial (USB), pero vaya que le voy tomando el gusto a esto, gracias por este articulo.

  • rem_1985

    Hola Mario, primero que nada, excelente articulo, de mucha utilidad y muy facil de entender.

    Solo que tengo una duda, en el diagrama del circuito solo aparecen 3 resistencias y el la foto del final, creo que hay 4, solo que no se ve de que valor, me podiras decir donde va en el diagrama y de cuanto es?

    • Mario Sacco

      Hola rem_1985 !

      La resitencia que falta en el diagrama esquemático es de 100 Ohms y está detallado su funcionamiento en el texto de la nota. Observa en el primer gráfico del artículo que están dibujadas en cada módulo.

      Saludos !

      • Mario Sacco

        Resistencia …. no resitencia jaja ! 🙂

  • Jorge

    Esta muy bien el circuito pero no me parece lo más adecuado para domótica, pero si para otras aplicaciones de automatizacion.
    Para domótica me parece que sería mejor implementar un circuito de comunicación y control con la tecnología PLC y más especificamente para domótica me parece perfecto el estandar UPB (Universal Power Bus) yo me encuentro desarollando un circuito para comunicar un PC con varios microcontroladores usando este protocolo.
    La velocidad de datos es de 240 bits por segundo aproximadamente a 100 metros de distancia, la informacion puede enviarse mediante paquetes de informacion (en cierta forma parecidos a paquetes IP) con un espacio de 8bits para direcciones (128 dispositivos individuales y 128 grupos de dispositivos).
    Las ventajas de PLC para la automatizacion de casas es evidente sobre esta u otras tecnologías, es por eso que muchos de los sistemas comerciales de domótica la utilizan.

    • Mario Sacco

      Hola Jorge !

      La prueba de que existen y conviven entre sí casi una decena de sistemas orientados a la automatización doméstica o domótica, hacen que nadie pueda asegurar que existe un sistema que sea el mejor respecto al resto. Mucho menos aún cuando se habla de PLC que son preferentemente utilizados en procesos industriales y no domésticos.
      Por otro lado, con RS485 podremos trabajar a velocidades de 38400 bps. @ 1200 metros de distancia en las aplicaciones que realicemos en próximas entregas, ¿mientras tú aseguras que es mejor una velocidad de 240 bps a 100 metros?
      El propósito final es que la arquitectura que implementes sea útil y funcional a tus necesidades. Por eso en Domótica no existe un estándar definido, ni asumido como "el mejor". Todo depende que cumpla con tus necesidades. Es como comparar entre dos sistemas operativos. Ninguno puede descalificar al otro, mientras logren satisfacer al usuario y cumplir su trabajo de manera eficaz.

      Saludos !

  • fabelo

    Considero que está muy interesante, interesantísimo, pero me quedé con las ganas de medir la temperatura, de apagar las luces, de apagar o encender un motor, etc. ¿Cómo se hace eso?. Parece ser que este artículo no está para la media, constructivamente desde el punto de vista electrónico es posible, real, pero de ahí a lograr lo que tú quieras hacer, esa información no la veo clara, asequible, fácil, como para una sección como esta. Si fuera posible, desearía tener la idea, ya que no soy especialista en la materia, pero estoy interesado en el tema. Gracias.

    • Mario Sacco

      Hola fabelo !

      Pronto, en el próximo artículo estará lo que estás buscando. Una aplicación específica. El tema es tan extenso que no puede publicarse en un sólo artículo.
      No dejes de visitarnos. Lo que deseas saldrá publicado pronto.

      Saludos !

  • frivas

    ¿Pódrías mandar el PCB para poder sacarlo en su tamaño por una impresora, o, en su defecto, decir el tamaño de la placa para ajustarlo a partir de la imagen?
    Gracias.

  • RFM

    Artículo muy bueno.
    Ahora; como accedo al puerto desde windows usando por ejemplo el lenguaje C con compiladores bajo windows.
    Gracias a quién me responda.

  • amancio

    eu que fazer um robote de control de automatico de portas abrir e fechar automaticamente nao sei como fazer . gostaria de ter o esquema electronico dele. e tambem gostaria de ter um esquema electronico de um emissor de ondas curtas a valvula e seu funcionamento. e ter conhecimento profundo do funcionanamento de uma valvula.seber tambem conerter uma valvula por um transistor.

    sem mais de momento subscrevo-me com estima consideracao.

  • ilber

    se ve bien y los costos son?

  • domotica

    rs485 es un protocolo de comunicación ampliamente utilizado en la industria pero NO es un ESTANDAR empleado para la gestión de inmuebles (viviendas, edificios, etc) como SI lo son KNX, LON, BACnet, etc

    • Mario Sacco

      ¿Y quién dijo que RS485 era un estándard para gestión de inmuebles? Si leés así, no quiero imaginar lo que deben ser tus trabajos … 🙁

  • jsam2008

    Mis saludos, hoy me entero y me parece que este proy tiene muchas aplicaciones por favor te solicito me informacion adicional para probar y opinar con mas criterio

  • cornejoso

    Hola, excelente articulo.
    Podrias hablar de como conviven, el control de las luces de una habitacion por medio de esta red rs485 y los controles manuales, que nunca estan de mas.
    Y si se puede añadir un control IR para comodidad.

    gracias… sigue así.

  • beto2kar

    Estimado en el diagrama las resistencias R1 R2 de los led son de 2k2, si la alimentacion es de 5 volts no deberian ser de 220 ohms, para que prendan?
    Atte.-
    Perdon si la pregunta es una tonteria.-

    • Mario Sacco

      No preguntar cuando hay una duda sería una tontería ! 😉

  • beto2kar

    perdon las resistencias no deberian ser de 470 ohms, el cometario anterior tiene ese error con r de 220 habra mucha corriente
    Saludos,

    • Mario Sacco

      Hola Beto !

      Es verdad. Con 470 Ohms los leds encenderían a pleno, pero la función no es precisamente esa. Están allí sólo para indicar actividad y con 2K2 ya alcanzan a encender. Además, si se le coloca esa "carga" a la línea de conexión entre el PIC y el SN75176, estaríamos alterando los tiempos de respuesta (inclinación de los flancos de subida y bajada de la señal), hecho que en situaciones de "tráfico intenso" pueden desembocar en error de datos.
      Como te dije antes, es sólo un monitoreo sencillo. No es que deba tener una luz indicadora con intensidad …. no, el sentido es que se vea, solo eso.

      Saludos Beto ! Gracias por estar !

  • Ciul

    "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."

    No entendí muy bien esa parte, ¿podrías explicarla?, te agradecería enormemente.
    Otra pregunta, ¿y si no me es posible "colgar" todos los dispositivos uno de tras de otro debido a su ubicación física en el entorno, puedo ponerlos en paralelo al mismo RS-485?

    Gracias por tu atención.

    • Mario Sacco

      Hola Ciul !

      Fíjate en la primera imagen y verás que el cable utilizado para montar el tendido de la red, suele ser de tres conductores. El tercero es la GND que no se conecta directamente a los circuitos de cada terminal, sino que se conectan a través de resistencias de 100 Ohms. Te repito, en la primer imagen se ven claramente.

      En realidad se conectan todos los módulos en paralelo. El término "colgar uno tras de otro" significa conectar a la red uno en una habitación, otro en el patio, otro en el baño y así con todos los dispositivos (o terminales) que quieras agregar a la red RS-485. Y todos estarán conectados en paralelo entre sí. Lo importante es que debes seguir un orden. No estás derivando una cañería de agua o un cable coaxil de TV. Debes salir de uno que tendrá una R de 120 ohms (como dice el artículo), pasarás por cada uno y lo harás de a uno hasta terminar en el último que tendrá la otra resistencia de 120 Ohms.
      O sea, NO PUEDES salir de uno, ir al segundo y allí derivar para un lado hacia un tercero y hacia otro lado hacia un cuarto … no, no, no. Primero sales de uno, vas a otro, luego a otro, luego a otro …. hasta terminar. No se aceptan derivaciones en RS-485.

      Espero me hayas comprendido.

      Saludos cordiales !

  • Ciul

    Saludos Mario, gracias por tu pronta respuesta.

    Lo de la resistencia si ya lo ví, ya lo tengo claro, gracias.

    La complicación es que digamos, dos dispositivos a colgar están de tal forma que podrían cablearse facilmente pero un tercero está al otro polo del lugar a unos 100 metros, entonces queda complicado y muy costoso el cableado, y sería fácil si se pudiese utilizar una ramificación, tipo la topología estrella. Mientras que con los otros dos no habría problema en usar topología de bus.

    No se puede en absoluto con Rs-485 hacer eso???, que me recomiendas?

  • Mario Sacco

    OK Ciul !

    Interpreto que quieres hacer lo que aparece en la figura 12 del siguiente enlace.

    http://www.maxim-ic.com/appnotes.cfm/an_pk/763

    Como ahí bien te dicen, eso está mal.
    Conexión en estrella está mal. Se "desadapta" la línea de transmisión y falla la comunicación.

    Ese enlace es muy esclarecedor sobre lo que se puede hacer y lo que NO SE DEBE hacer en RS485. (Google te puede ayudar en la traducción)

    Saludos !

    • Ciul

      Ok, ahora sí entendí todo con ese documento en el enlace.
      Me sale más económico entonces usar dos transmisores que maneje el PIC por independiente cada uno en diferentes pines que el cableado necesario para conectar las dos habitaciones a un único bus, sobretodo porque en http://www.jameco.com están los MAX1487 a 2.25 US dlrs, y el cable me cuesta como .5 US dlrs el metro, considerando que son más 100 metros de un punto a otro…50 dlrs vs 2.25 dlrs.

      Muchísisisimas gracias Mario.

  • Ciul

    Mario una consulta.

    En el diseño que muestras los capacitores del RS232 son de 10uF mientras que en la hoja del fabricante colocan capacitores de 1uF.

    ¿Afecta en algo la diferencia de valores de capacitancia?

    • Mario Sacco

      En absoluto Ciul.

      Valores entre 1 y 47uF funcionan sin problemas.

      Saludos amigo ! :))

      • Ciul

        Ah ok, porque estoy montando el circuito para implementarlo en una aplicación en la que actualmente están usando puerto paralelo pero es complicado a veces conseguirlo, y USB requeriría más componentes y más código del deseado. Por lo que puerto serial me parece estupendo.

        Gracias por la nota Mario, luego estaré comentando cómo me fue.

      • neofo

        Hola amigo necesito hacer un proyecto para la universidad como el tuyo pero necesito sensar mas de 5 termometros pero en honor a lal verdad no se como seria la programacion quizas con uno solo lo haria porque se algo de programacion en basic para pic y en visual basic 6, pero no se como se haria para sensar varios termometros simultanemente y me preguntaba si me podias ayudar en eso, mil gracias de antemano

  • Ciul

    Mario, una nueva consulta:

    Las resistencias de 470 ohmios en el bus, y pues no aparecen en el esquemático aquí propuesto ni tampoco en las hojas del fabricante de Maxim.

    ¿Para qué son?, ¿son necesarias?

  • Ciul

    Y que en las del termómetro son de 1K. Las que van del bus RS485 a VCC y otra que va del bus a Tierra.

    Gracias

  • Andres

    excelente y felicitaciones de todos los circuitos que he visto en la red este me parece el mas convincente, considerando que el interfase rs485 aki en mi ciudad se vende a 80 $us, tengo una duda es necesario colocar T1 ,no bastaria con el 7805 para la fuente ?

  • Andres

    perdon pero podrias explicar un poco mas:
    +5v 470R (A) 120R (B) 470R GND
    pense que la entrada del max485 en las patillas 6 y 7 se unia con una resistencia de 120 ohm ,pero en la grafica de mas arriba ademas de los 120 ohm estan los 470 ohm

  • Andres

    tengo mas dudas ,este circuito del la interfaz rs485 la comunicacion es reversible ? ,o sea RS232 a RS485 y viceversa RS485 a RS232

  • Nelson

    Estimado:
    Genial nota!!!
    Gracias a esto es que estoy tratando de sacarme un graaaaan dolor de cabeza que tenía de hace bastante tiempo xD
    y además de darte las gracias por mostrarnos la utilidad de la electrónica, tengo la siguiente consulta:
    Cuales son las potencias de las resistencias??? 1/2W o 1/4W??
    Influye que use de distintas potencias???
    Gracias por tu ayuda!

  • neofo

    Saludos excelente proyecto te felicito seria genial verlo trabajando, sigue adelante y muchos exitos

  • Humberto

    Tengo problemas mas relacionado con las tramas que con las conexiones, en verdad es algo sencilla esa parte.
    Bien en el articulo mencionas la forma en que se debe enviar esa trama y es algo parecido al I2C con la diferecia que nos se tiene un bit de inicio y que el final es un valor numerico, bien pues este valor puede ser cualquiera es lo que entiendo, entonces facilmente puedo mandar un valor 0xFF o un valor 0x0A o lo que sea mientras que todos en la red comprendan que ese valor es el fin de trama, si puedes aclararme si estoy bien.

    Encuento a la estructura en si, he leido que es propietaria es decir no depende de una unica forma y se pude usar como uno quiera siempre se respete el orden en que se envian las tramas (direccion, datos, fin de trama), en eso estare bien?

    Y ya como ultimo digamos pregunta XD, estaba viendo un ejemplo del RS485 del compilador CCS y es algo complejo las funciones porque basado en la idea general que se expone se estan enviando un dato de mas que todavia no entiendo bien a bien de que trata, el caso es que por trama que se envia se agrega un dato mas, ahi creo que si hiciera mi propia red no seria compatible, entonces en este caso cada fabricante que implementa el rs485 simplemente sera diferente, esto tambien entiendo que es verdad, pero ¿ese dato que envia de mas es "estandar" en el protocolo? el dato es la longitud del mensaje.

    //// int1 rs485_send_message(int to, int len, int* data) ////
    //// * Send a message over the RS485 bus ////
    //// * Inputs: ////
    //// to – Destination address ////
    //// len – Message length ////
    //// *data – Pointer to message ////
    //// * Returns TRUE if successful, FALSE if failed ////

    No se si me di a entender el caso es que no encuentro una relacion sobretodo a lo ultimo que di a entender, porque si es obligatorio entonces hay que implementarlo en el programa del microcontrolador aunque se piense que esta de mas.

  • Pedro
  • Lector

    Parece que mario se canso!, lo acribillaron a preguantass, JAJA.
    Saludos a todos los electronicos.!

  • dogflu66

    Magnifico articulo Mario. El articulo hará historia.

  • erick

    La nota está muy interesante, estoy usando equipos HMI con controladores que tienen comunicación RS485 pero por momentos se pierde la comunicación, estoy seguro que es por ruido en la red, los equipos los he montado en una fábrica de cerveza, por favor me podrías decir cómo se conecta esa resistencia de 100 Ohms en la línea GND, un cordial saludo.

    atte
    Erick

  • Eli

    Un proyecto de domótica muy interesante. Bueno un mega proyecto de centrales domóticas en http://www.alciro.org/alciro/domotica_2
    red domotica

  • geffry

    muy interesante la aplicacion para trasmision y recepcion de dato incluso estoy realizando una tesis acerca de adquisicion de datos atravez del protocolo rs-232 y rs-485 su trabajo y la facilidad de poder trasmitir a grandes distancia con ic’s que estan alcance del bolsillo eso una consulta estimados tengo una duda sobre todo para mario… el max485 su voltaje de diferencia esat especificado en caracteristicas tecnicas pero son niveles de voltaje que se usa en la parte industrial sabes cuanto son esos niveles de voltaje entre los terminales A-B no su diferencia si no el voltage antes de la diferencias ya que a grandes distancia no se podria trasmitir volatje pequeños por ej. 5VDc

  • jeremylf

    Creo que se confundieron en el articulo al poner SN76156 cuando era SN75176 no?

  • Niels

    Saludos! Muy bueno el trabajo que realizaste, me aclaró muchas dudas y estoy listo para comenzar a trabajar en una red de microcontroladores con RS-485 para un edificio de 16 pisos. Mi pregunta es la siguiente: Al principio hablas un poco sobre el cableado en sí, que no está muy especificado en el estándar pero que en esta página presentarás una sugerencia que funciona bien, recomiendas el blindaje, etc. pero si no me equivoco veo en tu placa finalizada un conector RJ-45… ¿UTILIZASTE CABLE UTP?, ¿O QUÉ CABLE EXACTAMENTE UTILIZASTE? Gracias!

    • Niels

      #76 Lo sienteo, leí todo menos tu explicación del RJ-11… muy buena idea por cierto. No tengo dudas entonces, buen trabajo!

  • Erick Medina

    que valor tiene T1?

  • Celso Domingues

    T1 es un supressor de corrientes transientes

    http://www.byknirsch.com.br/artigos/05-07-trafos6.gif