Domanda:
Orologio da 1 kHz su cavo lungo
Geoxion
2019-11-01 14:34:34 UTC
view on stackexchange narkive permalink

Avrò un filo che correrà fino a 1000 m con molti nodi collegati ad esso. Il cavo correrà lungo un bus CAN e un cavo di terra e deve trasportare un segnale di duty-cycle clock al 50% a onda quadra da 1 kHz a ciascun nodo.

Lo eseguirò da un microcontrollore da 3,3 V e il segnale verrà ricevuto da un microcontrollore da 3,3 V e anche da un circuito di misurazione del tempo.

In breve, l'orologio verrà utilizzato come ora globale e il circuito di misurazione del tempo determinerà la differenza di tempo tra un evento e il fronte dell'orologio. Questo circuito è in grado di misurare con una precisione di circa 0,1 ns. Lo scenario ideale è che l'orologio sia preciso come il circuito di misurazione del tempo.

Qualsiasi ritardo dal master a un nodo viene misurato / noto e viene tenuto in considerazione.

Cosa posso fare per aumentare l'affidabilità e la stabilità di questo cavo / segnale?

Poiché è un orologio molto lento, immagino che non debba essere svolto un lavoro approfondito e che qualcosa di semplice come un trigger di Schmitt ai nodi andrebbe benissimo.


Ecco un diagramma:

block diagram

Per misurare i ritardi a tutti i nodi, il master interrompe il lavoro a tutti i nodi (Oltre CAN lo comunica). Quindi chiede al primo nodo di riflettere il segnale che riceverà sull'altra linea. Tutti gli altri nodi lasceranno i fili mobili adesso.

Il master imposta il filo destro in alto, attivando l'avvio del circuito di temporizzazione. Dopo un po 'di ritardo, il segnale arriverà al nodo che lo lascerà passare sulla seconda riga. Dopo un altro ritardo, il master lo riceverà indietro, il che interromperà il circuito temporale.

Ora il master può leggere il valore del circuito temporale e determinare il ritardo. Quando tutti i ritardi del nodo sono noti, il master avvierà l'operazione. Tutti i nodi lasceranno il filo di ritorno fluttuante e prenderanno il filo dell'orologio (a destra del master) come input.

Quando si verifica un evento in uno dei nodi, verrà attivato il circuito temporale. Il prossimo impulso dell'orologio interromperà il circuito del tempo. Ora conosciamo il tempo tra l'inizio dell'evento e il successivo impulso di clock. Il nodo restituisce a quale conteggio dell'orologio è stato rilevato l'evento e quanto tempo è stato indicato dal circuito temporale.Insieme ai ritardi misurati, il maestro sarà in grado di ottenere il tempo globale dell'evento.

Oh, su quale precisione è accettabile: l'obiettivo è 1 ns, sarebbe soddisfatto di 3 ns e sarebbe ok con 10 ns.A seconda della progettazione finale del sistema, potrebbe esserci la possibilità di attivare l'evento più volte e di fare la media dei risultati, il che migliorerebbe anche la precisione.

Il tempismo effettivo non è fatto da me, ma da TI. TDC7200

L'applicazione è TDOA.I tempi degli eventi vengono inseriti in un algoritmo per determinare da dove ha avuto origine l'evento.L'evento è il rilevamento di un segnale radio (che sarà anche una sfida per ottenere la precisione che voglio).

* Perché è un clock molto lento * È ** ma ** un'onda quadra da 1 kHz contiene ** armoniche ** e queste possono estendersi fino a frequenze molto alte (GHz è possibile) purché le pendenze di 1 kHz siano sufficientemente ripide.Quelle armoniche ad alta frequenza possono ** riflettere ** alle estremità del cavo e distorcere la tua bella onda quadra da 1 kHz!Quindi limitare la larghezza di banda e terminare il cavo con la sua impedenza caratteristica.
Ciò che è più importante della frequenza è quindi la larghezza di banda: quanto ** velocemente ** hai bisogno che i bordi del tuo orologio siano sul ricevitore?Quanto sei allineato con il can bus?
(Ci sono molte altre domande da porre qui: Jitter / requisiti di stabilità per il clock, Allen dev e molto altro ancora: Quindi: qual è il tuo caso d'uso per il clock a 1 kHz?)
@MarcusMüller L'idea era di avere un orologio principale per il cronometraggio e i nodi che lo seguono.Il master clock otterrebbe il suo clock da un oscillatore a cristallo preciso e utilizzerebbe la periferica del timer del microcontrollore per scalarlo a 1 kHz. I nodi utilizzeranno l'orologio per la sincronizzazione dell'ora.(Il ritardo è considerato)
Ok, questo rende la frequenza di 1 kHz un po 'scomoda;tuttavia: qual è lo scopo della sincronizzazione qui?Quanto accurato hai bisogno che sia?Come pensi di tenere conto del ritardo?
(a proposito, aggiungi queste informazioni sull'utilizzo alla tua domanda; cambia molte cose che ho considerato!)
Come considerato in una delle risposte, i driver / ricevitori RS-485 e i doppini intrecciati sono pensati per lunghe distanze.Un driver pensato per comunicazioni multidrop ad alta velocità a 40 m, sarà pressato a 1 kHz e 1000 m.Per non parlare della lunghezza dello stub.
Potrebbe essere più semplice semplificarlo eseguendo il calcolo in due passaggi.Fare in modo che tutti i nodi calcolino gli orari degli eventi in un sistema orario locale con una precisione sufficientemente elevata.Allo stesso tempo, fare in modo che i nodi utilizzino un circuito di temporizzazione per quantificare il comportamento degli orologi locali (ovvero la deriva).Questo ti dà molto tempo per eseguire misurazioni della differenza di clock e ti consente di postelaborarlo per rimuovere eventuali valori anomali.rende anche facile usare i segnali di prova per calibrare il sistema come l'assicella di un regista
Consiglio di leggere le schede tecniche e le note applicative sui pulitori di jitter
Sei risposte:
Marcus Müller
2019-11-01 15:24:25 UTC
view on stackexchange narkive permalink

Quindi, il primo problema sarà che devi guidare quel lungo cavo! Un pezzo di cavo lungo 1 km è semplicemente un grande carico e l'uscita del tuo microcontrollore avrà difficoltà a cambiare la tensione in modo affidabile.

Pensa al fatto che il filo attraversa il suo ambiente come un condensatore di filo a terra. Quindi, hai bisogno di un forte driver output.

Vuoi che guidi un carico di terminazione sul ricevitore che è relativamente forte (quindi, forse, da 75 Ω a 120 Ω o qualcosa del genere).

Avrai bisogno di un filtro appropriato sul ricevitore per estrarre l'orologio originale.

Ti servirà un cavo in qualche modo schermato, per non ricevere 1000 m di ricezione dell'antenna radio.

con molti nodi ad esso collegati

Ciò significa che questi molti nodi necessitano del proprio ricevitore. Non è possibile inserire un terminatore forte in ognuno di questi (il carico sul driver diventerebbe enorme), ma se non lo fai, avrai problemi terribili con la qualità del segnale a questi nodi.

Per me, sembra che tu voglia davvero costruire un bus multi-drop ... come CAN!

Oppure, vorresti ricevere, rigenerare (Schmitt-Trigger?) e inviare nuovamente il clock a ogni nodo, collegandoli a margherita invece di utilizzare un bus lineare.

correrà fino a 1000 m

Uh, questo è davvero al limite di ciò che CAN supporta ancora, a velocità di trasmissione ridicolmente basse (e non tutti i dispositivi supportano la velocità CAN più bassa, IIRC; controllalo prima di investire male!)


Nota anche che per quella lunghezza, vorresti davvero che il bus CAN funzioni su doppino schermato o coassiale. Il cablaggio Ethernet è economico e può essere acquistato su bobine.

Considerando il tuo orologio separato: hai già CAN; è abbastanza discutibile che tu abbia bisogno di una linea di clock a 1 kHz separata lungo quella: hai un modo per comunicare tra i nodi, in un modo che è molto più accurato nel tempo rispetto a un periodo di 1 kHz, quindi aggiungi semplicemente un CAN compatibile microcontrollore a ciascun nodo e aggiungere un master che dice loro regolarmente quanti cicli di 1 kHz sono passati dall'ultimo messaggio CAN di clock: i microcontrollori possono quindi regolare un contatore interno e generare localmente 1 kHz disciplinato centralmente.

Questo ti fa risparmiare cavi e ti offre qualcosa che funziona da remoto, se (e solo se) il tuo bus CAN funziona in modo affidabile.

Altre opzioni includono l'aggiunta di osservatori bit-clock progettati autonomamente, che osservano semplicemente le trasmissioni dal tuo master per apprendere quale bit clock utilizza e per utilizzarlo per generare localmente 1 kHz.


Un bus lungo 1000 m con funzionalità di clock aggiuntive sembra essere al limite di ciò che dovresti fare con un singolo bus CAN. Consiglierei di segmentare quel bus, se architettonicamente fattibile. (La segmentazione aggiunge complessità, ma localizza gli errori e rende le cose più facili da eseguire il debug, spesso.)

Alla velocità di trasmissione molto bassa che un bus CAN così lungo ti consente di utilizzare, potresti anche andare in modalità wireless e sbarazzarti di tutti i cavi. È tutto un compromesso tra i costi di cablaggio e hardware e limitato dall'affidabilità di cui hai bisogno (suggerimento: in realtà metti i numeri a questo - anche un bus cablato non è privo di rumore e dovrai pensare a cosa succede al tuo sistema se I pacchetti CAN bus vengono interrotti in corso).

Personalmente: non proverei a costruire il mio sistema di bus. Per lunghe distanze, con un numero elevato di nodi, le persone utilizzano bus di campo ottimizzati per casi d'uso come PROFIBUS o EtherCAT, o semplicemente: Plain Ethernet! Puoi segmentare Ethernet con switch Ethernet economici, puoi, ma non devi, eseguire protocolli a prova di perdita come TCP / IP su di esso, il cablaggio con connettori è super economico, è ben testato.


Quindi, le tue applicazioni sembrano coordinare i tempi dell'MCU: questo è decisamente più un lavoro per i messaggi CAN periodici che per un clock da 1 kHz.Se hai bisogno di accuratezza, potresti voler guardare i protocolli Internet come NTP e pensare a come adattarli per un sistema CAN (il trucco è solo avere uno scambio bidirezionale di misurazione di andata e ritorno di tanto in tanto).

PTP è molto meno conosciuto di NTP, ma è progettato specificamente per il timing di precisione.Potrebbe essere eccessivo, tuttavia, poiché in genere si ottiene una precisione inferiore al microsecondo su una buona rete, che è probabilmente 3 ordini di grandezza in più rispetto a quanto richiesto dall'OP.Tuttavia, anche gli switch economici ora supportano PTP (non è necessario, ma se lo switch supporta PTP, la precisione è ancora migliore) e poiché è utilizzato anche nelle telecomunicazioni, nella robotica e nell'automazione industriale, mi aspetto che sia supportato in Ethernetinterruttori anche per uso industriale e / o esterno.
@JörgWMittag se fai clic sulla discussione sotto la risposta di Dave: OP vuole 0,1–3 ns di precisione.PTP non lo sta nemmeno lontanamente raggiungendo.
Dave Tweed
2019-11-01 16:45:27 UTC
view on stackexchange narkive permalink

Devi davvero pensare bene a cosa intendi veramente per "simultaneo".

Su una campata di 1000 metri, il concetto non si estende fino al regime sub-ns.Diamine, ci vorrebbe un impulso di luce superiore a 3000 ns per percorrere quella distanza, e un impulso elettrico impiegherebbe più di 5000 ns su una linea di trasmissione ideale.Il tuo cavo non schermato sarà ancora più lento di quello a causa dei ritardi R-C creati dal caricamento di tutti i nodi lungo il percorso.

L'uso di ricevitori GPS in ogni nodo ti porterebbe almeno a un intervallo di decine di ns.

I commenti non sono per discussioni estese;questa conversazione è stata [spostata in 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

Hai considerato l'invio di un'onda sinusoidale e l'utilizzo di un comparatore all'estremità ricevente per ricostruire un'onda quadra?

a 1 km, non rimarrà molto di un'onda quadra poiché tutte le componenti a frequenza più alta saranno attenuate a causa della linea di trasmissione

Sarebbe una possibilità, sì.Ma allora dovrei generare l'onda sinusoidale ... Ma un segnale pwm e un condensatore dovrebbero essere in grado di fare quel lavoro, ma terrebbero il mcu abbastanza occupato.
@Geoxion l'onda sinusoidale genererà "se stessa", come ha spiegato JonRB, quando attenui le alte frequenze: fai passare il tuo clock da 1 kHz attraverso un filtro passa-basso che taglia sopra 1 kHz ma sotto i 3 kHz.
esattamente, quindi è meglio generare tale onda sinusoidale in modo più controllato.Ci sono molti modi per creare un'onda sinusoidale e alcuni non avrebbero bisogno di tempo da mcu.Il mio consiglio sarebbe al punto di generare l'onda sinusoidale, cambiare localmente in un'onda quadra e utilizzare quel segnale.Ciò assicurerà che l'unità di generazione veda uno spostamento di fase simile alle altre unità (a causa del filtraggio).Anche 1 km ... assicurati di avere un'uscita di guida decente poiché ci sarà una discreta quantità di capacità
Se "tutte le componenti a frequenza più alta saranno attenuate", non è necessario generare un'onda sinusoidale in primo luogo - la linea di trasmissione lo farà effettivamente per te.Ovviamente, questo non si applica ai "molti" nodi che sono fisicamente vicini al master.
Sicuramente _qualsiasi_ rumore - e un cavo da 1 km può essere un'antenna molto grande - si tradurrà in jitter se stai cercando di ricostituire un segnale di temporizzazione da un'onda sinusoidale e un comparatore.La risoluzione sub-ns su un segnale di 1kHz significa una precisione sub-ppm.La bassa velocità di clock non è uno _detrimento_, non un vantaggio, in questo scenario?
filo
2019-11-01 21:56:23 UTC
view on stackexchange narkive permalink

Se è disponibile un cablaggio a doppino intrecciato, è possibile utilizzare semplicemente ricetrasmettitori CAN (attenzione alla funzione di timeout) o ricetrasmettitori RS-485 per il segnale.Certianamente aggiungeranno un certo ritardo di propagazione, ma dovrebbe essere corretto.

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

Bene, 1000 m è una distanza che fornisce una capacità e un'induttanza significative nei fili oltre all'impedenza.Se applichi un segnale quadrato da 1 kHz a un'estremità, il segnale all'altra estremità non sembrerà affatto un impulso quadrato.

È pura fisica: prendi l'impedenza, la capacità, l'induttanza del cavo per metro e moltiplicale per la lunghezza del cavo.

Esistono vari metodi per superare parte del problema, ma di solito aumenta il costo del progetto.

Hai mai studiato una soluzione per la trasmissione del segnale in fibra ottica?

Non è troppo sensibile alle interferenze radio, non ha effetti di induttanza / capacità e la propagazione del segnale è vicina a 300.000 km / sec.Ovviamente l'attenuazione del segnale su tale distanza non è evitabile.

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

Questo segnale di clock IMO è necessario per qualsiasi cosa.Trasmetti periodicamente un messaggio CAN con il timestamp corrente.Sincronizzerà i nodi e sarà la fonte dei dati di calibrazione degli orologi interni

Ricorda che i nodi non saranno perfettamente sincronizzati (anche se hai il tuo segnale di clock) poiché il segnale viaggerà tra i nodi più lontani> 3usek



Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 4.0 con cui è distribuito.
Loading...