Inyectar una señal de comunicación a través de las líneas de alimentación de CC

Me gustaría poder conectar en cadena varios dispositivos usando solo los cables de la fuente de alimentación y luego inyectar una señal de comunicación a través de las líneas eléctricas para convertirla en una red semidúplex.

¿Hay algún método común para lograr esto? Cuanto más simple, mejor y sería genial si usara el UART en el microcontrolador.

Editar: en realidad, hay dos proyectos en los que estoy trabajando que creo que se beneficiarían de esto: uno es una red de sensores de baja potencia. El otro es un proyecto de iluminación LED. En ambos casos, el objetivo es simplificar el cableado, pero si la solución es demasiado compleja, probablemente tenga más sentido utilizar tres cables (alimentación, tierra, comunicaciones).

¿Fuente de alimentación de CA o CC? ¿Cuál es el voltaje de la fuente de alimentación?
La disposición de capacitor + inductor mencionada en algunas respuestas tiene un nombre: bias-T .

Respuestas (11)

¿Ha investigado el protocolo Dallas 1-Wire ? Es realmente de baja velocidad y si su dispositivo toma relativamente poca corriente, entonces puede salirse con la suya usando energía parásita y alimentar el dispositivo con las líneas de datos.

Gracias por eso: parece que 1-Wire es bastante popular y muy adecuado para redes de sensores de baja potencia.
Hola Peter, ya que solicitaste específicamente UART. Logré encontrar notas máximas de la aplicación para usar UART como maestro de bus de 1 cable. (consulte maxim-ic.com/app-notes/index.mvp/id/214 ).

Básicamente, necesita empujar las señales de CA a la línea de alimentación de CC y separarlas nuevamente. Esto es común en hogares con antenas de TV: el amplificador de potencia se coloca cerca de la antena y la alimentación de CC se empuja hacia arriba por el cable de la antena mientras las señales de TV bajan por el cable de la antena.

No proporciona suficientes detalles para un circuito de ejemplo, pero estos son los conceptos básicos:

La fuente de alimentación debe tener un inductor en serie que vaya a la salida para bloquear las señales de alta frecuencia que alimentan la fuente de alimentación y posiblemente causen problemas de regulación.

La entrada de energía de cada unidad debe estar protegida de manera similar con un inductor para filtrar las señales de CA. Introducir eso en un diodo y un condensador asegurará que las señales de CA no pongan en peligro la potencia de su módulo.

Antes del inductor, también conectará un condensador. Probablemente será un valor bajo para que la mayoría de las señales de CA en la línea pasen el capacitor, pero ninguna de las de CC lo hará.

La salida de este capacitor PODRÍA usarse directamente en un microcontrolador (con abrazadera de diodo) si tiene las habilidades para implementar el software necesario para leer los datos ahora mutilados fuera de la línea. Del mismo modo, puede enviar pulsos directamente al condensador con el pin de E/S.

Mire cómo se ve eso en un osciloscopio: la onda cuadrada que ingresa al capacitor se verá como un pico en descomposición en la línea de alimentación. Cuando salga otro condensador en la red, se cambiará aún más, solo un pico en la línea.

La lectura de estos picos puede ser difícil, y filtrar el ruido puede ser difícil, por lo que si está ejecutando líneas largas, tiene una fuente de alimentación ruidosa o está ejecutando líneas cerca de otras fuentes de ruido, tendrá que implementar un procesamiento de señal significativo. Por lo general, esto toma la forma de AM (ASK - modulación por desplazamiento de amplitud) o FM (FSK - modulación por desplazamiento de frecuencia) en la línea, con cortadores de datos, comparadores, generadores de tonos y detectores, etc. O el procesamiento equivalente en software.

Puede parecer mucho trabajo, pero comience con un detector de pulso simple en el extremo receptor y envíe ondas cuadradas al transmitir. Use un osciloscopio para comprender lo que está sucediendo y, si necesita una solución más compleja, pregunte nuevamente acerca de la detección ASK o FSK.

Un detector de pulsos puede ser una simple interrupción de software al cambiar el pin de entrada, o un 555 configurado como extensor de pulsos.

Estoy de acuerdo con Adam aquí, excepto que creo que toda la comunicación debe hacerse FM y puedes construir algunos filtros realmente buenos para recuperar tu señal casi perfectamente. Ha mencionado esto, pero pensé en agregar una nota para aclarar que una señal ruidosa puede volver a ser hermosa con el filtro adecuado y la modulación FM.
FM es significativamente mejor que AM o muchos otros esquemas de modulación simples, pero exige un costo ligeramente más alto en términos de hardware y/o software, y si la calidad de la señal es buena, puede ser excesivo.

He construido algo como esto para un sistema de control de trenes (modelo de tren, por supuesto).

Era un protocolo monodireccional de baja velocidad (una sola entidad envía datos, todos los demás son solo receptores) y la transmisión se realizaba simplemente invirtiendo la polaridad del riel.

En cada "cliente" había un circuito simple hecho con una foto (¡16C54, hace años!), un rectificador y algunos interruptores DIP para configurar la dirección.

Ya no tengo códigos fuente, pero el sistema fue realmente fácil y funcionó sin problemas durante años, lo que permitió un control fácil de cada locomotora, barrera de ferrocarril, semáforo, etc. desde el panel de control principal sin cables adicionales.

Axeman, no tengo nada que decir sino que me ha impresionado señor/señora. Esa solución me hace reír.
Kortuk, espero que "risitas" signifique "pulgares arriba" (soy italiano y no muy fuerte en inglés, como puedes ver :-)) De todos modos, años antes de mi "invento" (pero lo descubrí después de mi proyecto se completó) fábricas de maquetas de ferrocarril diseñadas, estandarizadas e implementadas (de la misma manera) DCC: Digital Command Control, para el mismo propósito: en.wikipedia.org/wiki/Digital_Command_Control
Protocolo DCC: "1" = 58 microsegundos alto y luego 58 uSec bajo. "0" = 100uSec alto y luego 100uSec bajo. El sesgo +ve total es igual al sesgo total -ve, por lo que obtiene una distribución de energía de CA que se puede rectificar a CC

Recomendaría pensar en ello como una señal de que está agregando y eliminando una compensación de CC. Puede usar condensadores para bloquear CC colocándolos en serie con su circuito.

Más allá de eso, es difícil decir qué necesitará hacer porque dependerá de su aplicación. Es posible que deba usar un opamp para separar su capacitor de acoplamiento de lo que sea que esté recibiendo su señal. Si su voltaje de compensación de CC es grande en comparación con el voltaje de su señal, es posible que ni siquiera necesite hacer ningún acondicionamiento de energía para eliminar la ondulación, sin embargo, todo esto depende de su aplicación.

Tengo un par de parlantes que usan esta misma técnica para encender un LED de encendido en un parlante secundario. Si subo el volumen lo suficiente, puedo notar que el LED se vuelve más brillante. En esta aplicación en particular, deberían preocuparse por qué tipo de filtro RC se está creando.

He considerado tratar de modular RS232 con una señal de alta frecuencia acoplada a un suministro de 12 V. Supongo que sería importante aislar la capacitancia de la fuente de alimentación para que no intente suavizar las ondas.

Sé que este es un hilo bastante antiguo, pero aquí está mi valor de 2 centavos...

Todavía no tengo nada funcionando, pero estaba buscando hacer algo similar usando un Arduino + VirtualWire (configurado a una velocidad de transmisión realmente baja). Como dice Adam Davis arriba, usted transmite/recibe sus datos desde la línea de 12V a través de un capacitor de bajo valor. Significa que esencialmente obtienes 0V con pequeños picos, que VirtualWire puede (probablemente) decodificar. La buena noticia sobre este método es que, en teoría, cualquier dispositivo en la línea de 12 V puede hablar y cualquiera puede recibir. He tenido esto funcionando con un trozo de cable común entre los dos dispositivos en una placa de prueba, pero no estoy seguro de si funcionará a distancia o con una línea eléctrica real.

Si la transmisión es siempre desde el mismo lugar, entonces quizás sea mejor usar algo como el método Hornby, es decir. haga que el transmisor cambie la línea de alimentación entre +12 V y -12 V para crear la señal. Cada receptor tiene un rectificador en su conexión a la línea de alimentación, por lo que siempre recibe un suministro de +12V. Podría decirse que simplemente podría pulsar +12 V y hacer que cada dispositivo use un condensador grande para suavizar los golpes. Cualquiera de estos métodos es probablemente más confiable porque la señal en la línea de alimentación será mucho más fuerte y, por lo tanto, más fácil de decodificar (todavía usaría VirtualWire para hacerlo, pero un UART también podría funcionar).

Para un proyecto de iluminación LED, es muy probable que tenga que reducir un par de amperios en la línea de 12 V. Eso hace que cambiarlo sea un poco más difícil, por lo que podría estar mejor con el método de RF sobre capacitor. Sin embargo, la altura de los picos que recibe se reducirá considerablemente con una corriente más alta, por lo que es posible que deba amplificar la señal que escribe en la línea (por ejemplo, use uno o dos transistores de alta frecuencia para 'amplificar' la señal TTL a 12V antes empujándolo a través del capacitor hacia la línea de 12V).

De cualquier manera, algo como VirtualWire casi siempre funcionará mejor que un UART (y probablemente I2C, etc.). La razón es que utiliza un bucle de bloqueo de fase para 'sincronizar' la transmisión y la recepción juntas, lo que significa una mayor relación señal/ruido y menos errores. Eso debería hacerlo un poco más indulgente con el hardware menos que perfecto ;-)

¿Está seguro de que algún tipo de solución USB no funciona? Tienes alrededor de 2-2.5W disponibles.

Aquí hay un par de otras ideas:

Power over ethernet (POE) integra señales de energía y ethernet. Hay una variedad de semiconductores y convertidores CC/CC diseñados para estos dispositivos. Esta es probablemente su mejor opción, ya que hay piezas listas para usar para esto.

Creo que algunas de las empresas de automatización del hogar integran señales de comunicación y alimentación de CA. Tal vez algo de eso sea adaptable.

La gente de audio tiene alimentación "fantasma" de micrófonos. 48 V CC más audio a través de un cable de micrófono.

Deberá tener cuidado al extraer energía del USB. Cuando conecta un dispositivo por primera vez a un puerto USB, se le otorgan 100 mA a 5v = 0.5W. Luego, su dispositivo puede solicitar energía adicional y obtener 500 mA a 5v = 2.5W. También deberá asegurarse de que su dispositivo no tenga un gran tirón cuando lo conecte por primera vez. Wikipedia habla un poco sobre la alimentación USB en la sección 'Alimentación' en en.wikipedia.org/wiki/Universal_Serial_Bus#Power
Kellenjb, la enumeración no es exactamente lo mismo que solicitar más energía, me gusta pensar que verifica que eres un dispositivo inteligente. La mayoría de las personas también olvidan que si le dan su dispositivo a otra persona, es posible que esté enchufado a un concentrador sin alimentación, lo que resulta en una tensión máxima de 100 mA sin importar la situación.

Hay muchas preguntas que podría hacer antes de dar cualquier consejo. Supongo que lo primero que debemos tratar de entender es, ¿cuál es su objetivo aquí? Bajo costo de construcción, largos recorridos de comunicación, lo que ahorra cableado, prueba de concepto o algo más. Todos ellos tendrían diferentes recomendaciones. Por ejemplo, si no está preocupado por el costo, tal vez opte por una solución Zigbee o si se trata de tiradas largas, eso crea problemas con la mayoría de las transmisiones de un solo cable y ahora necesita buscar otras opciones. Supongo que lo que más me preocupa de tu pregunta es que dices "cuanto más simple, mejor". Lo que pides es posible en algunas situaciones, pero me atrevo a decir que no será sencillo. Principalmente debido a los problemas del mundo real que encontrará, como la pérdida de señal, el ruido y la gestión actual.

La mejor de las suertes.

Gracias, es bueno saber de los posibles problemas con los que me puedo encontrar en el futuro. He tratado de aclarar un poco mis necesidades en la publicación anterior.

El protocolo X-10 hace exactamente esto.

Además, algunas de las sugerencias anteriores no son seguras o ciertamente no se pueden usar en dispositivos aprobados (marca UL/CE).

Supongo que los "cables de suministro de energía" significan cables de bajo voltaje. Si son cables de alimentación de CA, entonces sí, la mayoría de las otras respuestas no son adecuadas sin tener esto en cuenta.
X10 asume por diseño una línea de alimentación de CA y necesita un transformador sintonizado específico. No creas que se ajusta a la parte de la pregunta "Cuanto más simple, mejor" :-)

Hay un semiconductor dedicado que obtiene un byte UART y lo transfiere a través de la línea eléctrica a velocidades de hasta 115,2 Kbps. Este dispositivo fue diseñado para automoción por lo que es resistente al ruido. Ver http://yamar.com/product/sig60/

Mira esto:

Y el hilo donde tomé esa información (la misma pregunta que tú).

Se realiza en sistemas telefónicos. Como sabes en telefonía disponemos de potencia y tono de marcación y voz en un sistema de dos hilos. Puede enviar sus comandos a través de la línea eléctrica generando un tono (como la marcación por tonos en un teléfono ordinario). Los circuitos integrados (Ic) para esta aplicación se usan comúnmente y, por lo tanto, son muy económicos.

Hice un proyecto como este para controlar válvulas de agua en una planta grande en Irán (hasta 99 válvulas). Puedo agregar un diagrama de bloques de mi circuito codificador decodificador si cree que puede ser útil.

Esto no responde la pregunta.
Saeed, al responder preguntas antiguas (2010) se acostumbra hacer una contribución significativa, especialmente porque ya hay otras buenas respuestas. Y no proponga un intercambio privado de información, ya que se supone que las respuestas son útiles para cualquiera que navegue aquí.