Injection d'un signal de communication sur les lignes d'alimentation CC


22

J'aimerais pouvoir connecter plusieurs appareils en guirlande en utilisant uniquement les fils d'alimentation, puis injecter un signal de communication sur les lignes électriques pour le transformer en un réseau semi-duplex.

Existe-t-il des méthodes communes pour y parvenir? Le plus simple sera le mieux et ce serait formidable s'il utilisait l'UART sur le microcontrôleur.

Edit: Il y a en fait deux projets sur lesquels je travaille qui, je pense, pourraient en bénéficier - l'un est un réseau de capteurs à faible puissance. L'autre est un projet d'éclairage LED. Dans les deux cas, l'objectif est de simplifier le câblage, mais si la solution est trop complexe, il est probablement plus logique d'utiliser trois fils (pwr, gnd, comms).


1
Alimentation CA ou CC? Quelle est la tension d'alimentation?
mjh2007

3
L'arrangement condensateur + inductance mentionné dans certaines réponses a un nom: polarisation-T .
davidcary

Réponses:


15

Avez-vous étudié le protocole Dallas 1-Wire ? Il est vraiment à faible vitesse et si votre appareil prend relativement peu de courant, vous pouvez vous en sortir en utilisant une alimentation parasite et alimenter l'appareil avec les lignes de données.


Merci pour cela - 1-Wire semble être assez populaire et bien adapté aux réseaux de capteurs à faible puissance.
Peter Gibson

2
Salut Peter, puisque tu as spécifiquement demandé UART. J'ai réussi à trouver une note d'application maximale pour utiliser UART en tant que maître de bus à 1 fil. (voir maxim-ic.com/app-notes/index.mvp/id/214 ).
Terry Chen

11

Vous devez essentiellement pousser les signaux CA sur la ligne d'alimentation CC et les séparer à nouveau. Ceci est courant dans les maisons avec des antennes de télévision - l'amplificateur de puissance est placé près de l'antenne et l'alimentation CC est poussée vers le haut du fil d'antenne tandis que les signaux de télévision descendent le fil d'antenne.

Vous ne donnez pas suffisamment de détails pour un exemple de circuit, mais voici les bases:

La source d'alimentation doit avoir une inductance en série allant à la sortie pour bloquer les signaux haute fréquence entrant dans l'alimentation et pouvant provoquer des problèmes de régulation.

L'entrée d'alimentation de chaque unité doit être protégée de manière similaire avec une inductance pour filtrer les signaux CA. L'alimentation dans une diode et un condensateur garantira que les signaux CA ne mettent pas en danger l'alimentation de votre module.

Avant l'inductance, vous attacherez également un condensateur. Ce sera probablement une valeur faible de sorte que la plupart des signaux AC sur la ligne passent le condensateur, mais aucun DC ne le fera.

La sortie de ce condensateur POURRAIT être utilisable directement dans un microcontrôleur (avec serrage par diode) si vous avez les compétences pour mettre en œuvre le logiciel nécessaire pour lire les données maintenant mutilées hors ligne. De même, vous pouvez envoyer des impulsions directement dans le condensateur avec la broche d'E / S.

Découvrez à quoi cela ressemble sur une lunette - l'onde carrée entrant dans le condensateur ressemblera à un pic en décomposition sur la ligne électrique. Quand il sortira un autre condensateur sur le réseau, il sera encore changé - juste un pic sur la ligne.

La lecture de ces pointes peut être difficile et le filtrage du bruit peut être difficile, donc si vous utilisez de longues lignes, avez une alimentation électrique bruyante ou si vous utilisez des lignes à proximité d'autres sources de bruit, vous devrez mettre en œuvre un traitement du signal important. Habituellement, cela prend la forme AM (ASK - Décalage de décalage d'amplitude) ou FM (FSK - Clé de décalage de fréquence) sur la ligne, avec des trancheurs de données, des comparateurs, des générateurs de tonalité et des détecteurs, etc. Ou le traitement équivalent dans le logiciel.

Cela peut sembler beaucoup de travail, mais commencez avec un simple détecteur d'impulsions à la réception et envoyez des ondes carrées lors de la transmission. Utilisez un oscilloscope pour comprendre ce qui se passe, et si vous trouvez que vous avez besoin d'une solution plus complexe, demandez à nouveau sur la détection ASK ou FSK.

Un détecteur d'impulsions peut être une simple interruption logicielle sur la broche d'entrée de changement, ou un 555 configuré comme un brancard d'impulsions.


Je suis d'accord avec Adam ici, sauf que je pense que toutes les communications doivent être faites en FM et que vous pouvez créer de très bons filtres pour récupérer votre signal presque parfaitement. Il l'a mentionné, mais j'ai pensé ajouter une note pour clarifier qu'un signal bruyant peut être à nouveau beau avec le bon filtre et la modulation FM.
Kortuk

1
La FM est nettement meilleure que l'AM ou de nombreux autres schémas de modulation simples, mais elle entraîne un coût légèrement plus élevé en termes de matériel et / ou de logiciel, et si la qualité du signal est bonne, elle peut être excessive.
Adam Davis

7

J'ai construit quelque chose comme ça pour un système de contrôleur de train (train miniature, bien sûr).

Il s'agissait d'un protocole monodirectionnel à faible vitesse (une seule entité envoie des données, tous les autres ne sont que des récepteurs) et la transmission a été effectuée en inversant simplement la polarité du rail.

Sur chaque "client", il y avait un circuit simple fait avec une photo (16C54, il y a des années!), Un redresseur et des commutateurs DIP pour régler l'adresse.

Je n'ai plus de codes source, mais le système était vraiment facile et a fonctionné sans faille pendant des années, permettant un contrôle facile de chaque locomotive, barrière ferroviaire, sémaphore, etc. à partir du panneau de commande principal sans fils supplémentaires.


Axeman, je n'ai rien à dire mais que vous m'avez impressionné monsieur / madame. Cette solution me fait rire.
Kortuk

Kortuk, j'espère que vous "rire" signifie "bravo" (je suis italien et pas très fort en anglais, comme vous pouvez le voir :-)) Quoi qu'il en soit, des années avant mon "invention" (mais je l'ai découvert après mon projet a été achevée) des usines de modélisme ferroviaire conçues, normalisées et mises en œuvre (de la même manière) DCC: Digital Command Control, dans le même but: en.wikipedia.org/wiki/Digital_Command_Control
Axeman

5

Je recommanderais de penser à cela comme un signal que vous ajoutez et supprimez un décalage CC. Vous pouvez utiliser des condensateurs pour bloquer le courant continu en les plaçant en série avec votre circuit.

Au-delà de cela, il est difficile de dire ce que vous devrez faire car cela dépendra de votre application. Vous devrez peut-être utiliser un ampli-op pour séparer votre condensateur de couplage de ce qui reçoit votre signal. Si votre tension de décalage CC est grande par rapport à la tension de votre signal, vous n'aurez peut-être même pas besoin de faire de conditionnement d'alimentation pour supprimer l'ondulation, tout dépend de votre application.

J'ai une paire d'enceintes qui utilisent cette même technique pour allumer une LED d'alimentation sur un haut-parleur secondaire. Si j'augmente le volume assez fort, je peux réellement remarquer que la LED devient plus lumineuse. Dans cette application particulière, ils devraient s'inquiéter du type de filtre RC créé.


J'ai envisagé d'essayer de moduler RS232 avec un signal haute fréquence couplé à une alimentation 12V - je suppose qu'il serait important d'isoler la capacité du bloc d'alimentation afin qu'il n'essaye pas de lisser les ondulations?
Peter Gibson

4

Je sais que c'est un fil assez ancien, mais voici ma valeur de 2 pence ...

Je n'ai encore rien travaillé, mais je cherchais à faire quelque chose de similaire en utilisant un Arduino + VirtualWire (réglé à un débit en bauds vraiment bas). Comme le dit Adam Davis ci-dessus, vous transmettez / recevez vos données de la ligne 12V via un condensateur de faible valeur. Cela signifie que vous obtenez essentiellement 0V avec de petites pointes, que VirtualWire peut (probablement) décoder. La bonne nouvelle de cette méthode est qu'en théorie, tout appareil de la ligne 12V peut parler et tout le monde peut recevoir. J'ai eu ce travail avec un morceau de fil ordinaire entre les deux appareils sur une planche à pain, mais je ne sais pas si cela fonctionnera à distance ou sur une ligne électrique réelle.

Si la transmission est toujours du même endroit, alors peut-être qu'il serait préférable d'utiliser quelque chose comme la méthode Hornby - c'est-à-dire. Demandez à l'émetteur de commuter la ligne d'alimentation entre + 12V et -12V pour créer le signal. Chaque récepteur a un redresseur sur sa connexion à la ligne électrique, donc il obtient toujours une alimentation + 12V. Vous pourriez sans doute simplement imputer + 12V, et demander à chaque appareil d'utiliser un grand condensateur pour lisser les bosses. L'une ou l'autre de ces méthodes est probablement plus fiable car le signal sur la ligne électrique sera beaucoup plus fort et donc plus facile à décoder (j'utiliserais toujours VirtualWire pour le faire, mais un UART pourrait aussi fonctionner).

Pour un projet d'éclairage LED, il y a de fortes chances que vous deviez déplacer quelques ampères sur la ligne 12V. Cela rend la commutation un peu plus difficile, donc vous pourriez être mieux avec la méthode RF sur condensateur. Cependant, la hauteur des pointes que vous recevez diminuera considérablement avec un courant plus élevé, vous devrez donc peut-être amplifier le signal que vous écrivez sur la ligne (par exemple, utilisez un transistor haute fréquence ou deux pour `` amplifier '' le signal TTL à 12V avant en le poussant à travers le condensateur sur la ligne 12V).

Quoi qu'il en soit, quelque chose comme VirtualWire fonctionnera presque toujours mieux qu'un UART (et probablement I2C, etc.). La raison en est qu'il utilise une boucle à verrouillage de phase pour «synchroniser» la transmission et la réception ensemble, ce qui signifie un rapport signal / bruit plus élevé et moins d'erreurs. Cela devrait le rendre un peu plus indulgent pour le matériel moins que parfait ;-)


2

Il y a beaucoup de questions que je pourrais poser avant de donner un conseil. Je suppose que la première chose que nous devons essayer de comprendre est, quel est votre objectif ici? Faible coût de construction, longues communications, économisant ainsi le câblage, la preuve de concept ou autre chose. Ils auraient tous des recommandations différentes. Par exemple, si vous n'êtes pas préoccupé par le coût, optez peut-être pour une solution Zigbee ou si elle est longue, cela crée des problèmes avec la plupart des transmissions à fil unique et vous devez maintenant examiner d'autres options. Je suppose que ce qui m'inquiète le plus dans votre question, c'est que vous dites "le plus simple sera le mieux". Ce que vous demandez est possible dans certaines situations, mais j'ose dire que ce ne sera pas simple. Principalement en raison des problèmes réels que vous rencontrerez, tels que la perte de signal, le bruit et la gestion du courant.

Bonne chance.


Merci - c'est bon d'entendre parler de problèmes potentiels que je pourrais rencontrer sur la piste. J'ai essayé de clarifier un peu mes besoins dans le post ci-dessus.
Peter Gibson

2

Êtes-vous sûr qu'une sorte de solution USB ne fonctionne pas? Vous avez environ 2-2,5W disponibles.

Voici quelques autres idées -

Power over Ethernet (POE) intègre les signaux d'alimentation et Ethernet. Il existe une variété de semi-conducteurs et de convertisseurs DC / DC conçus pour ces appareils. C'est probablement votre meilleure option car il existe des pièces standard pour cela.

Je crois que certaines des sociétés de domotique intègrent l'alimentation en courant alternatif et les signaux de communication. Peut-être qu'une partie de cela est adaptable.

Les gens de l'audio ont une alimentation "fantôme" des microphones. 48VDC plus audio sur un câble de microphone.


1
Vous devrez être prudent lorsque vous tirez de l'alimentation via USB. Lorsque vous branchez un appareil sur un port USB pour la première fois, vous bénéficiez de 100 mA à 5 V = 0,5 W. Votre appareil peut alors demander une alimentation supplémentaire et obtenir 500mA à 5v = 2,5W. Vous devrez également vous assurer que votre appareil n'aura pas une forte traction lorsque vous le branchez pour la première fois. Wikipedia parle un peu de l'alimentation USB dans la section "Alimentation" sur en.wikipedia.org/wiki/Universal_Serial_Bus#Power
Kellenjb

Kellenjb, l'énumération n'est pas exactement la même chose que demander plus de puissance, j'aime à penser que cela vérifie que vous êtes un appareil intelligent. La plupart des gens oublient également que s'ils donnent leur appareil à quelqu'un d'autre, il peut être branché sur un concentrateur non alimenté, ce qui entraîne une traction maximale de 100 mA, quelle que soit la situation.
Kortuk

1

Le protocole X-10 fait exactement cela.

De plus, certaines des suggestions ci-dessus ne sont pas sûres ou ne peuvent certainement pas être utilisées dans des appareils approuvés (marque UL / CE).


1
Je suppose que «fils d'alimentation» signifie des fils basse tension. S'il s'agit de fils d'alimentation CA, alors oui, la plupart des autres réponses ne conviennent pas sans en tenir compte.
Adam Davis

2
Le X10 suppose par conception une ligne d'alimentation CA et nécessite un transformateur accordé spécifique. Ne pensez pas que cela correspond à la partie "Le plus simple est le mieux" de la question :-)
Axeman

0

Il y a un semi-conducteur dédié qui obtient un octet UART et le transfère sur la ligne électrique à des vitesses allant jusqu'à 115,2 Kbps. Cet appareil a été conçu pour l'automobile, il est donc résistant au bruit. Voir http://yamar.com/product/sig60/



-2

Cela se fait dans les systèmes téléphoniques. Comme vous le savez dans le téléphone, nous avons l'alimentation et la tonalité et la voix dans un système à deux fils. Vous pouvez envoyer vos commandes via la ligne électrique en générant une tonalité (comme la numérotation par tonalité dans un téléphone ordinaire) les circuits intégrés (Ic) pour cette application sont couramment utilisés et sont donc très bon marché.

J'ai fait un projet comme celui-ci pour contrôler les vannes d'eau dans une grande usine en Iran (jusqu'à 99 vannes). Je peux ajouter un schéma de principe de mon circuit décodeur codeur si vous pensez que cela peut être utile.


2
Cela ne répond pas à la question.
Null

Saeed, en répondant à de vieilles questions (2010), il est d'usage d'apporter une contribution significative, d'autant plus qu'il existe déjà d'autres bonnes réponses. Et s'il vous plaît ne proposez pas d'échange privé d'informations, car les réponses sont censées être utiles à tous ceux qui naviguent ici.
clabacchio
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.