22 votos

Inyección de una señal de comunicación a través de líneas de alimentación de corriente continua

Me gustaría poder conectar en cadena varios dispositivos utilizando sólo los cables de alimentación y luego inyectar una señal de comunicaciones a través de las líneas de alimentación para convertirlo en una red semidúplex.

¿Existen métodos comunes para conseguirlo? Cuanto más sencillo mejor y sería estupendo que utilizara la UART del microcontrolador.

Edición: 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, entonces probablemente tiene más sentido utilizar tres cables (pwr, gnd, comunicaciones).

16voto

Hunter Puntos 2827

¿Ha investigado el Dallas 1-Wire ¿Protocolo? Es realmente de baja velocidad y si tu dispositivo toma relativamente poca corriente entonces puedes salirte con la tuya usando energía parásita y alimentar el dispositivo con las líneas de datos.

12voto

Federico Builes Puntos 1940

Básicamente, hay que introducir señales de CA en la línea de alimentación de CC y volver a separarlas. Esto es habitual en las casas con antenas de TV: el amplificador de potencia se coloca cerca de la antena y la corriente continua sube por el cable de la antena, mientras que las señales de TV bajan por el cable de la antena.

No das suficientes detalles para un circuito de ejemplo, pero aquí tienes lo básico:

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 se introducen en la fuente de alimentación y que podrían causar problemas de regulación.

La entrada de alimentación de cada unidad debe protegerse de forma similar con un inductor para filtrar las señales de CA. Si se introduce en un diodo y un condensador, las señales de CA no pondrán en peligro la alimentación del módulo.

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

La salida de este condensador PUEDE ser utilizable directamente en un microcontrolador (con el diodo de sujeción) si usted tiene las habilidades para implementar el software necesario para leer los datos ahora mutilados de la línea. Del mismo modo puedes enviar pulsos directamente al condensador con el pin de E/S.

Comprueba cómo se ve en un osciloscopio: la onda cuadrada que entra en el condensador se verá como un pico decreciente en la línea eléctrica. Cuando sale de otro condensador en la red será cambiado más - sólo 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 ejecutando líneas cerca de otras fuentes de ruido, entonces tendrá que implementar un procesamiento de señal significativo. Por lo general, esto adopta la forma de AM (ASK - Amplitude shift keying) o FM (FSK - Frequency shift keying) en la línea, con cortadores de datos, comparadores, generadores y detectores de tonos, etc. O el tratamiento equivalente en software.

Puede parecer mucho trabajo, pero empieza con un simple detector de impulsos en el extremo receptor y envía ondas cuadradas al transmitir. Utiliza un osciloscopio para entender lo que ocurre, y si ves que necesitas una solución más compleja vuelve a preguntar por la detección ASK o FSK.

Un detector de pulsos puede ser una simple interrupción de software en el pin de entrada de cambio, o un 555 configurado como un estirador de pulsos.

7voto

Shadow_x99 Puntos 10421

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

Se trataba de un protocolo monodireccional de baja velocidad (una sola entidad envía datos, todas las demás son sólo receptoras) y la transmisión se realizaba simplemente invirtiendo la polaridad de los raíles.

En cada "cliente" había un circuito simple hecho con un pic (16C54, ¡hace años!), un rectificador y algunos dip switches para ajustar la dirección.

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

6voto

Binarytales Puntos 1145

Yo recomendaría pensar en ello como una señal que está añadiendo y quitando un DC Offset. Puede utilizar condensadores para bloquear DC colocándolos en serie con su circuito.

Más allá de eso, es difícil decir qué tendrá que hacer porque dependerá de su solicitud. Es posible que tenga que utilizar un amplificador óptico para separar el condensador de acoplamiento de lo que está recibiendo la señal. Si el voltaje de desplazamiento de CC es grande en comparación con el voltaje de la señal, es posible que ni siquiera tenga que hacer ningún acondicionamiento de potencia para eliminar la ondulación.

Tengo un par de altavoces que utilizan esta misma técnica para encender un LED de encendido en un altavoz secundario. Si subo el volumen lo suficiente, noto que el LED se ilumina. En esta aplicación en particular tendrían que preocuparse por el tipo de filtro RC que se está creando.

4voto

soong Puntos 108

Sé que este hilo es bastante antiguo, pero aquí está mi opinión...

Todavía no he conseguido que funcione nada, pero estaba pensando en hacer algo parecido utilizando un Arduino + VirtualWire (configurado a una velocidad en baudios realmente baja). Como Adam Davis dice más arriba, transmitir / recibir los datos de la línea de 12V a través de un condensador de bajo valor. Esto significa que esencialmente obtienes 0V con pequeños picos, que VirtualWire puede (probablemente) decodificar. Lo bueno de este método es que en teoría cualquier dispositivo en la línea de 12V puede hablar, y cualquiera puede recibir. He conseguido que funcione con un trozo de cable normal entre los dos dispositivos en una protoboard, pero no estoy seguro de si funcionará a distancia o a través de una línea eléctrica real.

Si la transmisión se realiza siempre desde el mismo lugar, tal vez sería mejor utilizar algo parecido al método Hornby, es decir, hacer que el transmisor conmute la línea de alimentación entre +12V y -12V 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 +12V. También se podría pulsar +12V y hacer que cada dispositivo utilice un condensador grande para suavizar los saltos. Cualquiera de estos métodos es probablemente más fiable 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 (yo seguiría usando VirtualWire para hacerlo, pero una UART podría funcionar también).

Para un proyecto de iluminación LED, es muy probable que tengas que desplazar un par de amperios por la línea de 12 V. Eso hace que la conmutación sea un poco más difícil, por lo que podría ser mejor el método de RF sobre condensador. Sin embargo, la altura de los picos que recibes se reducirá considerablemente con una corriente más alta, por lo que puede que necesites amplificar la señal que escribes en la línea (por ejemplo, utilizar un transistor de alta frecuencia o dos para "amplificar" la señal TTL a 12V antes de empujarla a través del condensador a la línea de 12V).

De cualquier manera, algo como VirtualWire casi siempre funcionará mejor que una UART (y probablemente I2C etc). La razón es que utiliza un bucle de enganche de fase para "sincronizar" la transmisión y la recepción, 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 ;-)

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X