Injetando um sinal de comunicação através de linhas de alimentação CC


22

Eu gostaria de poder conectar em cadeia vários dispositivos usando apenas os fios da fonte de alimentação e injetar um sinal de comunicação nas linhas de energia para transformá-lo em uma rede half duplex.

Existem métodos comuns para conseguir isso? Quanto mais simples, melhor e seria ótimo se ele usasse o UART no microcontrolador.

Edit: Na verdade, existem dois projetos em que estou trabalhando que acho que se beneficiariam disso - um é uma rede de sensores de baixa potência. O outro é um projeto de iluminação LED. Nos dois casos, o objetivo é simplificar a fiação, mas se a solução for muito complexa, provavelmente fará mais sentido usar três fios (pwr, gnd, comms).


1
Fonte de alimentação CA ou CC? Qual é a voltagem da fonte de alimentação?
mjh2007

3
O arranjo capacitor + indutor mencionado em algumas respostas tem um nome: polarização-T .
davidcary 31/03

Respostas:


15

Você já olhou para o protocolo Dallas 1-Wire ? A velocidade é realmente baixa e, se o dispositivo consumir relativamente pouca corrente, você poderá usar energia parasita e alimentar o dispositivo com as linhas de dados.


Obrigado por isso - o 1-Wire parece bastante popular e adequado para redes de sensores de baixa potência.
Peter Gibson

2
Olá Peter, já que você solicitou especificamente o UART. Consegui encontrar um máximo de notas de aplicativos para usar o UART como mestre de barramento de 1 fio. (consulte maxim-ic.com/app-notes/index.mvp/id/214 ).
Terry Chen

11

Você precisa essencialmente enviar sinais CA para a linha de energia CC e separá-los novamente. Isso é comum em residências com antenas de TV - o amplificador de potência é colocado próximo à antena e a energia CC é empurrada para cima do fio da antena enquanto os sinais da TV descem pelo fio da antena.

Você não fornece detalhes suficientes para um exemplo de circuito, mas aqui estão os princípios básicos:

A fonte de energia deve ter um indutor em série indo para a saída para bloquear sinais de alta frequência que alimentam a fonte de alimentação e possivelmente causando problemas de regulação.

A entrada de energia de cada unidade deve ser igualmente protegida com um indutor para filtrar os sinais CA. Alimentá-lo em um diodo e capacitor garantirá que os sinais CA não prejudiquem a energia do módulo.

Antes do indutor, você também conectará um capacitor. Provavelmente, será um valor baixo, de modo que a maioria dos sinais CA na linha passará pelo capcitor, mas nenhum do CC passará.

A saída deste capacitor PODE ser utilizável diretamente em um microcontrolador (com fixação de diodo) se você tiver a capacidade de implementar o software necessário para ler os dados agora mutilados da linha. Da mesma forma, você pode enviar pulsos diretamente para o capacitor com o pino de E / S.

Confira como isso se parece em um osciloscópio - a onda quadrada que entra no capacitor parecerá um pico de deterioração na linha de energia. Quando sair outro capacitor na rede, ele será alterado - apenas um pico na linha.

A leitura desses picos pode ser difícil e a filtragem de ruídos pode ser difícil; portanto, se você estiver executando longas filas, tiver uma fonte de alimentação ruidosa ou executando linhas próximas a outras fontes de ruído, precisará implementar um processamento de sinal significativo. Geralmente, isso assume a forma de AM (ASK - Key Shift de amplitude) ou FM (FSK - Key Shift de freqüência) na linha, com barras de dados, comparadores, geradores de tom e detectores, etc. Ou o processamento equivalente em software.

Pode parecer muito trabalhoso, mas comece com um simples detector de pulso na extremidade receptora e envie ondas quadradas ao transmitir. Use um osciloscópio para entender o que está acontecendo e, se achar que precisa de uma solução mais complexa, pergunte novamente sobre a detecção de ASK ou FSK.

Um detector de pulso pode ser uma simples interrupção de software na troca do pino de entrada ou um 555 configurado como maca de pulso.


Eu concordo com Adam aqui, exceto que acredito que toda a comunicação deve ser feita por FM e você pode criar alguns filtros realmente agradáveis ​​para recuperar o sinal quase perfeitamente. Ele mencionou isso, mas pensei em acrescentar uma nota para esclarecer que um sinal barulhento pode ser bonito novamente com o filtro certo e a modulação FM.
Kortuk

1
O FM é significativamente melhor que o AM ou muitos outros esquemas de modulação simples, mas exige um custo um pouco mais alto em termos de hardware e / ou software, e se a qualidade do sinal for boa, pode ser um exagero.
Adam Davis

7

Eu construí algo assim para um sistema de controle de trem (modelo de trem, é claro).

Era um protocolo monodirecional de baixa velocidade (uma única entidade envia dados, todos os outros são apenas receptores) e a transmissão era feita simplesmente revertendo a polaridade do trilho.

Em todo "cliente" havia um circuito simples feito com uma foto (16C54, anos atrás!), Um retificador e alguns interruptores DIP para definir o endereço.

Não tenho mais códigos-fonte, mas o sistema foi realmente fácil e funcionou perfeitamente por anos, permitindo o controle fácil de todas as locomotivas, barreiras ferroviárias, semáforos etc. de um painel de controle principal sem fios adicionais.


Axeman, não tenho mais nada a dizer, a não ser que você tenha me impressionado, senhor / senhora. Essa solução me faz rir.
Kortuk

Kortuk, espero que você "rindo" signifique "polegar para cima" (sou italiano e não sou muito forte em inglês, como você pode ver :-)) De qualquer forma, anos antes da minha "invenção" (mas descobri isso depois do meu projeto foi concluída) modelo de fábricas ferroviárias projetadas, padronizadas e implementadas (da mesma maneira) DCC: Digital Command Control, para o mesmo objetivo: en.wikipedia.org/wiki/Digital_Command_Control
Axeman

5

Eu recomendaria pensar nisso como um sinal de que você está adicionando e removendo um DC Offset. Você pode usar capacitores para bloquear CC, colocando-os em série com o seu circuito.

Além disso, é difícil dizer o que você precisará fazer, pois dependerá da sua aplicação. Pode ser necessário usar um opamp para separar seu capacitor de acoplamento do que já está recebendo seu sinal. Se a sua tensão de offset DC for grande em comparação com a tensão do sinal, talvez você nem precise fazer nenhum condicionamento de energia para remover a ondulação, tudo isso depende da sua aplicação.

Eu tenho um par de alto-falantes que usam essa mesma técnica para acender um LED de energia em um alto-falante secundário. Se eu aumentar o volume alto o suficiente, posso perceber que o LED fica mais brilhante. Nesse aplicativo em particular, eles precisariam se preocupar com o tipo de filtro RC que está sendo criado.


Eu considerei tentar modular o RS232 com um sinal oi freq acoplado a uma fonte de 12V - eu acho que seria importante isolar a capacitância da PSU para que não tente suavizar as ondulações?
Peter Gibson

4

Eu sei que este é um tópico bastante antigo, mas aqui estão os meus 2 centavos de dólar ...

Ainda não tenho nada funcionando, mas estava tentando fazer algo semelhante usando um Arduino + VirtualWire (definido com uma taxa de transmissão realmente baixa). Como Adam Davis disse acima, você transmite / recebe seus dados da linha de 12V por meio de um capacitor de baixo valor. Isso significa que você basicamente obtém 0V com pequenos picos, que o VirtualWire pode (provavelmente) decodificar. A boa notícia sobre esse método é que, em teoria, qualquer dispositivo na linha de 12V pode falar e qualquer um pode receber. Já trabalhei com um fio comum entre os dois dispositivos em uma placa de ensaio, mas não tenho certeza se funcionará à distância ou através de uma linha de energia real.

Se a transmissão for sempre do mesmo local, talvez seja melhor usar algo como o método Hornby - ie. faça com que o transmissor alterne a linha de alimentação entre + 12V e -12V para criar o sinal. Cada receptor possui um retificador na sua conexão à linha de energia, para que ele sempre receba + 12V de alimentação. Sem dúvida, você pode simplesmente pulsar + 12V e fazer com que cada dispositivo use um capacitor grande para suavizar os solavancos. Qualquer um desses métodos é provavelmente mais confiável, porque o sinal na linha de energia será muito mais forte e, portanto, mais fácil de decodificar (eu ainda usaria o VirtualWire para fazer isso, mas um UART também pode funcionar).

Para um projeto de iluminação LED, há uma boa chance de você precisar mudar alguns amplificadores na linha de 12V. Isso torna a troca um pouco mais difícil, para que você possa se sair melhor com o método de RF sobre capacitor. No entanto, a altura dos picos que você recebe reduzirá consideravelmente com a corrente mais alta, portanto, pode ser necessário amplificar o sinal que você escreve na linha (por exemplo, use um transistor de alta frequência ou dois para 'amplificar' o sinal TTL para 12V antes empurrando-o através do capacitor para a linha de 12V).

De qualquer forma, algo como o VirtualWire quase sempre funcionará melhor do que um UART (e provavelmente I2C etc). O motivo é que ele usa um loop de fase bloqueada para sincronizar a transmissão e a recepção juntas, o que significa uma maior relação sinal / ruído e menos erros. Isso deve torná-lo um pouco mais tolerante com hardware menos que perfeito ;-)


2

Há muitas perguntas que eu poderia fazer antes de dar algum conselho. Acho que a primeira coisa para tentarmos entender é: qual é o seu objetivo aqui? Baixo custo de construção, comunicação longa é executada, economizando fiação, prova de conceito ou outra coisa. Todos eles teriam recomendações diferentes. Por exemplo, se você não está preocupado com o custo, talvez opte por uma solução Zigbee ou se for longa, isso cria problemas com a maioria das transmissões por fio único e agora você precisa procurar outras opções. Acho que o que mais me preocupa na sua pergunta é que você diz "quanto mais simples, melhor". O que você está pedindo é possível em algumas situações, mas ouso dizer que não será simples. Principalmente devido aos problemas do mundo real que você encontrará, como perda de sinal, ruído e gerenciamento atual.

Boa sorte.


Obrigado - é bom saber de possíveis problemas que eu possa encontrar na pista. Tentei esclarecer um pouco minhas necessidades no post acima.
Peter Gibson

2

Tem certeza de que algum tipo de solução USB não é viável? Você tem cerca de 2-2,5W disponível.

Aqui estão algumas outras idéias -

O Power over Ethernet (POE) integra sinais de energia e Ethernet. Há uma variedade de semicondutores e conversores DC / DC projetados para esses dispositivos. Esta é provavelmente a sua melhor opção, pois existem peças prontas para isso.

Acredito que algumas das empresas de automação residencial integram sinais de energia e comunicações CA. Talvez um pouco disso seja adaptável.

O pessoal do áudio possui alimentação "fantasma" de microfones. 48VDC mais áudio através de um cabo de microfone.


1
Você precisará ter cuidado ao extrair energia do USB. Quando você conecta um dispositivo a uma porta USB pela primeira vez, você recebe 100mA a 5v = 0,5W. Seu dispositivo pode solicitar energia adicional e obter 500mA a 5v = 2,5W. Você também precisará garantir que seu dispositivo não sofra muito quando o conectar pela primeira vez. A Wikipedia fala um pouco sobre a energia USB na seção 'Energia' em en.wikipedia.org/wiki/Universal_Serial_Bus#Power
Kellenjb

Kellenjb, enumeração não é exatamente o mesmo que solicitar mais poder, eu gosto de pensar nisso como se você fosse um dispositivo inteligente. A maioria das pessoas também esquece que, se estiver entregando o dispositivo a outra pessoa, ele pode ser conectado a um hub sem energia, resultando em um consumo máximo de 100mA, independentemente da situação.
Kortuk

1

O protocolo X-10 faz exatamente isso.

Além disso, algumas das sugestões acima não são seguras ou certamente não podem ser usadas em dispositivos aprovados (marca UL / CE).


1
Estou assumindo que "fios da fonte de alimentação" significam fios de baixa tensão. Se forem cabos de alimentação CA, sim, a maioria das outras respostas não é adequada sem levar isso em conta.
Adam Davis

2
O X10 assume por projeto uma linha de energia CA e precisa de um transformador sintonizado específico. Não acho que se encaixa com o "O simples melhor" parte da pergunta :-)
Axeman

0

Existe um semicondutor dedicado que obtém um byte UART e o transfere pela linha de energia em velocidades de até 115,2 Kbps. Este dispositivo foi projetado para automóveis, por isso é robusto ao ruído. Consulte http://yamar.com/product/sig60/



-2

É feito em sistemas telefônicos. Como você sabe no telefone, temos poder e tom de discagem e voz em um sistema de dois fios. Você pode enviar seus comandos através da linha de energia gerando tom (como discagem por tom no telefone comum); os circuitos integrados (Ic) para esta aplicação são comumente usados ​​e, portanto, são muito baratos.

Eu fiz um projeto como este para controlar válvulas de água em uma grande fábrica no Irã (até 99 válvulas). Posso adicionar um diagrama de blocos do meu circuito decodificador de codificador, se você achar que pode ser útil.


2
Isso não responde à pergunta.
Null

Saeed, ao responder perguntas antigas (2010), é costume dar uma contribuição significativa, principalmente porque já existem outras boas respostas. E não proponha uma troca privada de informações, pois as respostas devem ser úteis para quem navega aqui.
clabacchio
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.