Question:
Horloge 1 kHz sur long fil
Geoxion
2019-11-01 14:34:34 UTC
view on stackexchange narkive permalink

J'aurai un fil qui courra jusqu'à 1000 m avec de nombreux nœuds connectés. Le fil passera le long d'un bus CAN et d'un fil de terre et doit transporter un signal d'horloge à cycle de service à 50% d'onde carrée de 1 kHz vers chaque nœud.

Je l'exécuterai à partir d'un microcontrôleur 3,3 V et le signal sera reçu par un microcontrôleur 3,3 V et un circuit de mesure du temps également.

En bref, l'horloge sera utilisée comme heure globale et le circuit de mesure du temps déterminera la différence de temps entre un événement et le front de l'horloge. Ce circuit est capable de mesurer avec une précision d'environ 0,1 ns. Le scénario idéal est d'avoir une horloge aussi précise que le circuit de mesure du temps.

Tout retard entre le maître et un nœud est mesuré / connu et pris en compte.

Que puis-je faire pour augmenter la fiabilité et la stabilité de ce fil / signal?

Parce que c'est une horloge très lente, j'imagine qu'aucun travail approfondi ne doit être fait et que quelque chose de simple comme un déclencheur de Schmitt au niveau des nœuds ferait très bien l'affaire.


Voici un diagramme:

block diagram

Pour mesurer les délais vers tous les nœuds, le maître empêche tous les nœuds de faire le travail (Sur CAN, il communique cela). Ensuite, il demande au premier nœud de refléter le signal qu'il recevra sur l'autre ligne. Tous les autres nœuds laisseront les fils flottants maintenant.

Le maître règle son fil droit haut, déclenchant le démarrage du circuit de chronométrage. Après un certain délai, le signal atteindra le nœud qui le laissera ensuite passer sur la deuxième ligne. Après un autre délai, le maître le recevra en retour, ce qui arrêtera le circuit horaire.

Le maître peut maintenant lire la valeur du circuit horaire et déterminer le retard. Lorsque tous les délais de noeud sont connus, le maître démarre l'opération. Tous les nœuds laisseront le fil de retour flottant et prendront le fil d'horloge (à droite du maître) comme entrée.

Lorsqu'un événement se produit à l'un des nœuds, cela déclenchera le circuit temporel. La prochaine impulsion de l'horloge arrêtera le circuit horaire. Nous connaissons maintenant le temps entre le début de l'événement et la prochaine impulsion d'horloge. Le nœud renvoie à quel compte d'horloge l'événement a été détecté et combien de temps le circuit de temps a indiqué.Avec les retards mesurés, le maître pourra obtenir l'heure globale de l'événement.

Oh, à propos de la précision acceptable: la cible est de 1 ns, serait satisfaite avec 3 ns et serait correcte avec 10 ns.Selon la conception finale du système, il pourrait y avoir une possibilité de déclencher l'événement plusieurs fois et de faire la moyenne des résultats, ce qui améliorerait également la précision.

Le timing réel n'est pas fait par moi, mais par TI. TDC7200

L'application est TDOA.Les heures de l'événement sont introduites dans un algorithme pour déterminer l'origine de l'événement.L'événement est la détection d'un signal radio (ce qui sera aussi un défi d'être aussi précis que je le souhaite).

* Parce que c'est une horloge très lente * C'est ** mais ** une onde carrée de 1 kHz contient ** des harmoniques ** et celles-ci peuvent s'étendre jusqu'à des fréquences très élevées (GHz est possible) à condition que les pentes de 1 kHz soient suffisamment raides.Ces harmoniques haute fréquence peuvent ** refléter ** aux extrémités de votre câble et déformer votre belle onde carrée de 1 kHz!Limitez donc la bande passante et terminez le câble avec son impédance caractéristique.
Ce qui est plus important que la fréquence, c'est donc la bande passante: à quelle ** vitesse ** avez-vous besoin que les bords de votre horloge soient au niveau du récepteur?Comment bien aligné avec le bus peut?
(il y a beaucoup plus de questions à soulever ici: exigences de gigue / stabilité pour l'horloge, développement Allen, et bien plus encore: alors: quel est votre cas d'utilisation pour l'horloge 1 kHz?)
@MarcusMüller L'idée était d'avoir une horloge maître pour le chronométrage et les nœuds le suivant.L'horloge principale obtiendrait son horloge d'un oscillateur à cristal précis et utiliserait le périphérique de minuterie du microcontrôleur pour la mettre à l'échelle à 1 kHz. Les nœuds utiliseront l'horloge pour la synchronisation de l'heure.(Le retard est pris en compte)
Ok, cela rend la fréquence de 1 kHz un peu gênante;cependant: quel est le but de la synchronisation ici?Dans quelle mesure avez-vous besoin que ce soit précis?Comment comptez-vous tenir compte du retard?
(en passant, veuillez ajouter ces informations d'utilisation à votre question; cela change beaucoup de choses que j'ai considérées!)
Comme considéré dans l'une des réponses, les pilotes / récepteurs RS-485 et les paires torsadées sont destinés aux longues distances.Un pilote destiné aux communications multidrop haute vitesse de 40 m sera pressé à 1 kHz et 1000 m.Sans parler de la longueur du talon.
Il peut être plus facile de simplifier cela en effectuant le calcul en deux étapes.Demandez à tous les nœuds de calculer les heures des événements dans un système horaire local avec une précision suffisamment élevée.Simultanément, demandez aux nœuds d'utiliser un circuit de synchronisation pour quantifier le comportement des horloges locales (c'est-à-dire la dérive).Cela vous donne beaucoup de temps pour effectuer des mesures de différence d'horloge et vous permet de le post-traiter pour supprimer les valeurs aberrantes.il facilite également l'utilisation des signaux de test pour calibrer votre système comme le clapboard d'un réalisateur de cinéma
Je recommande de lire les fiches techniques et les notes d'application sur les nettoyeurs de gigue
Six réponses:
Marcus Müller
2019-11-01 15:24:25 UTC
view on stackexchange narkive permalink

Donc, le premier problème sera que vous devrez conduire ce long câble! Un morceau de fil de 1 km de long est simplement une charge importante et la sortie de votre microcontrôleur aura du mal à changer la tension de manière fiable.

Pensez au fait que le fil traverse son environnement comme un condensateur de fil à la terre. Donc, vous avez besoin d'un pilote output puissant.

Vous voulez que cela entraîne une charge de terminaison au niveau du récepteur qui est relativement forte (donc, peut-être, 75 Ω à 120 Ω ou quelque chose).

Vous aurez besoin d'un filtrage approprié au niveau du récepteur pour extraire l'horloge d'origine.

Vous aurez besoin d'un câblage quelque peu blindé, pour ne pas capter 1000 m de réception d'antenne radio.

avec de nombreux nœuds connectés

Cela signifie que ces nombreux nœuds ont besoin de leur propre récepteur. Vous ne pouvez pas mettre un terminateur fort dans chacun d'entre eux (la charge sur le pilote deviendrait énorme), mais si vous ne le faites pas, vous aurez de terribles problèmes avec la qualité du signal à ces nœuds.

Pour moi, on dirait que vous voudriez vraiment construire un bus multipoint ... comme CAN!

Ou, vous voudriez recevoir, régénérer (Schmitt-Trigger?) et renvoyer l'horloge à chaque nœud - en les chaînant au lieu d'utiliser un bus linéaire.

courra jusqu'à 1000 m


Notez également que pour cette longueur, vous voudriez vraiment que le bus CAN fonctionne sur paire torsadée blindée ou coaxial. Le câblage Ethernet est bon marché et peut être acheté sur des bobines.

Compte tenu de votre horloge séparée: vous avez déjà CAN; il est tout à fait douteux que vous ayez besoin d'une ligne d'horloge séparée de 1 kHz le long de cela: vous avez un moyen de communiquer entre les nœuds, d'une manière qui est bien plus précise dans le temps qu'une période de 1 kHz, alors ajoutez simplement un CAN-capable microcontrôleur à chaque nœud, et ajoutez un maître qui leur indique régulièrement combien de cycles de 1 kHz se sont écoulés depuis le dernier message CAN d'horloge - les microcontrôleurs peuvent alors ajuster un compteur interne et générer localement un 1 kHz discipliné centralement.

Cela vous permet d'économiser du câblage et vous donne quelque chose qui fonctionne à distance, si (et seulement si) votre bus CAN fonctionne de manière fiable.

D'autres options incluraient l'ajout d'observateurs d'horloge binaire auto-conçus, qui observent simplement les transmissions de votre maître pour savoir quelle horloge binaire utilise et l'utiliser pour générer localement le 1 kHz.


Un bus de 1000 m de long avec une fonction d'horloge supplémentaire semble être à la limite de ce que vous devriez faire avec un seul bus CAN. Je recommanderais de segmenter ce bus, si cela est faisable sur le plan architectural. (La segmentation ajoute de la complexité, mais elle localise les défauts et facilite souvent le débogage.)

Avec les très faibles débits en bauds qu'un si long bus CAN vous permet d'utiliser, vous pouvez tout aussi bien passer au sans fil et vous débarrasser de tout le câblage. Tout cela est un compromis entre le coût du câblage et le coût du matériel, et limité par la fiabilité dont vous avez besoin (conseil de pro: mettez des chiffres à cela - même un bus filaire n'est pas exempt de bruit, et vous devrez penser à ce qui arrivera à votre système si Les paquets de bus CAN sont interrompus en cours).

Personnellement: je n'essaierais pas de construire mon propre système de bus. Pour les longues distances et le nombre élevé de nœuds, les utilisateurs utilisent des bus de terrain optimisés pour les cas d'utilisation comme PROFIBUS ou EtherCAT, ou simplement: Ethernet simple! Vous pouvez segmenter Ethernet avec des commutateurs Ethernet bon marché, vous pouvez, mais vous n'êtes pas obligé, exécuter des protocoles sans perte comme TCP / IP par-dessus, le câblage avec des connecteurs est très bon marché, il est bien testé.


Ainsi, vos applications semblent coordonner les heures de MCU: c'est certainement plus un travail pour les messages CAN périodiques qu'une horloge à 1 kHz.Si vous avez besoin de précision, vous voudrez peut-être regarder les protocoles Internet comme NTP et réfléchir à la façon de les adapter pour un système CAN (l'astuce est en réalité d'avoir un échange bidirectionnel aller-retour de temps en temps).

PTP est beaucoup moins connu que NTP, mais est spécifiquement conçu pour le chronométrage de précision.Cela peut être excessif, cependant, car vous obtenez généralement une précision inférieure à la microseconde sur un bon réseau, ce qui est probablement 3 ordres de grandeur de plus que ce dont l'OP a besoin.Cependant, même les commutateurs bon marché prennent désormais en charge PTP (ce n'est pas nécessaire, mais si le commutateur prend en charge PTP, la précision est encore meilleure), et comme il est également utilisé dans les télécommunications, la robotique et l'automatisation industrielle, je m'attendrais à ce qu'il soit pris en charge par Ethernet.interrupteurs pour usage industriel et / ou extérieur également.
@JörgWMittag si vous cliquez sur la discussion sous la réponse de Dave: OP veut 0,1–3 ns de précision.PTP n'y parvient même pas à distance.
Dave Tweed
2019-11-01 16:45:27 UTC
view on stackexchange narkive permalink

Vous devez vraiment réfléchir à ce que vous entendez vraiment par "simultané".

Sur une portée de 1000 mètres, le concept ne s'étend pas jusqu'au régime des sous-ns.Heck, il faudrait une impulsion lumineuse de plus de 3000 ns pour parcourir cette distance, et une impulsion électrique prendrait plus de 5000 ns sur une ligne de transmission idéale.Votre fil non blindé va être encore plus lent que cela à cause des retards R-C créés par le chargement de tous les nœuds en cours de route.

L'utilisation de récepteurs GPS à chaque nœud vous ramènerait au moins à la plage des dizaines de ns.

Les commentaires ne sont pas destinés à une discussion approfondie;cette conversation a été [déplacée vers le chat] (https://chat.stackexchange.com/rooms/100582/discussion-on-answer-by-dave-tweed-1-khz-clock-over-long-wire).
JonRB
2019-11-01 14:38:50 UTC
view on stackexchange narkive permalink

Avez-vous envisagé d'envoyer une onde sinusoïdale et d'utiliser un comparateur à la réception pour reconstruire une onde carrée?

à 1 km, il ne restera pas beaucoup d'onde carrée car toutes les composantes de fréquence plus élevée seront atténuées par la ligne de transmission

Ce serait une possibilité, oui.Mais je devrais alors générer l'onde sinusoïdale ... Mais un signal pwm et un condensateur devraient pouvoir faire ce travail, mais cela garderait le mcu assez occupé.
@Geoxion l'onde sinusoïdale se générera "elle-même", comme l'a expliqué JonRB, lorsque vous atténuerez les hautes fréquences: Il suffit de passer votre horloge à 1 kHz à travers un filtre passe-bas qui coupe au-dessus de 1 kHz mais en dessous de 3 kHz.
exactement, il est donc préférable de générer une telle onde sinusoïdale de manière plus contrôlée.Il existe de nombreuses façons de créer une onde sinusoïdale, et plusieurs n'auraient pas besoin de temps mcu.Mon conseil serait de générer l'onde sinusoïdale, de passer localement à une onde carrée et d'utiliser ce signal.Cela garantira que l'unité de production verra un changement de phase similaire aux autres unités (en raison du filtrage).Aussi 1 km ... assurez-vous d'avoir une sortie d'entraînement décente car il y aura une bonne quantité de capacité
Si "tous les composants de fréquence plus élevée seront atténués", il n'est pas nécessaire de générer une onde sinusoïdale en premier lieu - la ligne de transmission le fera effectivement pour vous.Bien entendu, cela ne s'appliquera pas aux "nombreux" nœuds qui sont physiquement proches du maître.
Il est certain que tout bruit - et un câble de 1 km peut être une très grande antenne - se traduira par une gigue si vous essayez de reconstituer un signal de synchronisation à partir d'une onde sinusoïdale et d'un comparateur.Une résolution sub-ns sur un signal de 1 kHz signifie une précision inférieure à ppm.La vitesse d'horloge lente n'est-elle pas un _detriment_, pas un avantage, dans ce scénario?
filo
2019-11-01 21:56:23 UTC
view on stackexchange narkive permalink

Si vous disposez d'un câblage à paires torsadées, vous pouvez simplement utiliser des émetteurs-récepteurs CAN (attention à la fonction de temporisation) ou des émetteurs-récepteurs RS-485 pour le signal.Ils ajouteront certainement un délai de propagation, mais cela devrait être corrigé.

Polar Bear
2019-11-03 14:57:41 UTC
view on stackexchange narkive permalink

Eh bien, 1000 m, c'est une distance assez importante qui fournit une capacité et une inductance importantes dans les fils en plus de l'impédance.Si vous appliquez un signal carré de 1 kHz à une extrémité, le signal à l'autre extrémité ne ressemblera pas du tout à une impulsion carrée.

C'est de la physique pure - prenez l'impédance, la capacité, l'inductance du câble par mètre et multipliez par la longueur du câble.

Il existe différentes méthodes pour surmonter une partie du problème, mais cela augmente généralement le coût du projet.

Avez-vous déjà cherché une solution de transmission de signaux par fibre optique?

Il n'est pas trop sensible aux interférences radio, aucun effet d'inductance / capacité et la propagation du signal est proche de 300 000 km / s.Bien sûr, l'atténuation du signal sur une telle distance n'est pas évitable.

P__J__
2019-11-03 03:18:07 UTC
view on stackexchange narkive permalink

Ce signal d'horloge IMO est nécessaire pour tout.Il suffit de diffuser périodiquement un message CAN avec l'horodatage actuel.Il synchronisera les nœuds et sera la source des données d'étalonnage des horloges internes

N'oubliez pas que les nœuds ne seront pas parfaitement synchronisés (même si vous avez votre signal d'horloge) car le signal voyagera entre les nœuds les plus éloignés> 3usek



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 4.0 sous laquelle il est distribué.
Loading...