Pytanie:
Zegar 1 kHz na długim przewodzie
Geoxion
2019-11-01 14:34:34 UTC
view on stackexchange narkive permalink

Będę miał przewód o długości do 1000 mz wieloma węzłami podłączonymi do niego. Przewód będzie przebiegał wzdłuż magistrali CAN i przewodu uziemienia i musi przesyłać sygnał zegara o częstotliwości prostokątnej 1 kHz 50% do każdego węzła.

Uruchomię to z mikrokontrolera 3,3 V, a sygnał będzie odbierany przez mikrokontroler 3,3 V oraz obwód pomiaru czasu.

Krótko mówiąc, zegar będzie używany jako czas globalny, a obwód pomiaru czasu określi różnicę czasu między zdarzeniem a zboczem zegara. Ten obwód jest w stanie mierzyć z dokładnością około 0,1 ns. Idealnym scenariuszem jest ustawienie zegara tak precyzyjnego, jak obwód pomiaru czasu.

Każde opóźnienie od mastera do węzła jest mierzone / znane i uwzględniane.

Co mogę zrobić, aby zwiększyć niezawodność i stabilność tego przewodu / sygnału?

Ponieważ jest to bardzo wolny zegar, wyobrażam sobie, że nie trzeba wykonywać żadnych rozległych prac i że coś prostego, jak wyzwalacz Schmitta w węzłach, wystarczy.


Oto diagram:

block diagram

Aby zmierzyć opóźnienia we wszystkich węzłach, master zatrzymuje pracę wszystkich węzłów (Komunikuje to przez CAN). Następnie prosi pierwszy węzeł o odzwierciedlenie sygnału, który otrzyma drugą linią. Wszystkie inne węzły pozostawią teraz przewody pływające.

Urządzenie główne ustawia prawy przewód w stan wysoki, wyzwalając uruchomienie obwodu czasowego. Po pewnym czasie sygnał dotrze do węzła, który przepuści go na drugiej linii. Po kolejnym opóźnieniu master otrzyma go z powrotem, co zatrzyma obwód czasowy.

Teraz master może odczytać wartość obwodu czasowego i określić opóźnienie. Gdy wszystkie opóźnienia węzłów są znane, master rozpocznie operację. Wszystkie węzły pozostawią przewód powrotny bez ruchu i przyjmą przewód zegara (prawy master) jako wejście.

Gdy zdarzenie ma miejsce w jednym z węzłów, wyzwoli obwód czasowy. Następny impuls zegara zatrzyma obwód czasu. Znamy teraz czas między początkiem zdarzenia a następnym impulsem zegarowym. Węzeł odsyła, z jakim zliczaniem zegara zdarzenie zostało wykryte i ile czasu wskazał obwód czasu.Wraz ze zmierzonymi opóźnieniami, mistrz będzie mógł uzyskać globalny czas zdarzenia.

Aha, jaka dokładność jest akceptowalna: cel wynosi 1 ns, byłby zadowolony z 3 ns i byłby w porządku przy 10 ns.W zależności od ostatecznego projektu systemu może istnieć możliwość wielokrotnego wyzwalania zdarzenia i uśrednienia wyników, co również poprawiłoby dokładność.

Właściwy czas nie jest tworzony przeze mnie, ale przez TI. TDC7200

Aplikacja to TDOA.Czasy zdarzeń są wprowadzane do algorytmu w celu określenia, skąd pochodzi zdarzenie.Wydarzenie polega na wykryciu sygnału radiowego (co również będzie wyzwaniem, aby uzyskać taką dokładność, jak chcę).

* Ponieważ jest to bardzo wolny zegar * Jest ** ale ** fala prostokątna 1 kHz zawiera ** harmoniczne **, które mogą rozciągać się do bardzo wysokich częstotliwości (możliwe jest GHz) pod warunkiem, że zbocza 1 kHz są wystarczająco strome.Te harmoniczne o wysokiej częstotliwości mogą ** odbijać się ** na końcach kabla i zniekształcać ładną falę prostokątną 1 kHz!Ogranicz więc przepustowość i zakończ kabel z charakterystyczną impedancją.
Ważniejsza od częstotliwości jest więc szerokość pasma. Jak ** szybko ** potrzebujesz, aby krawędzie zegara znajdowały się w odbiorniku?Jak dobrze dopasowany do autobusu CAN?
(jest o wiele więcej pytań, które można zadać tutaj: wymagania dotyczące jittera / stabilności dla zegara, programowanie Allena i wiele więcej: Więc: Jaki jest twój przypadek użycia zegara 1 kHz?)
@MarcusMüller Pomysł polegał na stworzeniu zegara głównego do odmierzania czasu i węzłów podążających za nim.Zegar główny pobierałby swój zegar z dokładnego oscylatora kwarcowego i wykorzystywał urządzenie peryferyjne licznika czasu mikrokontrolera do skalowania go do 1 kHz. Węzły będą używać zegara do synchronizacji czasu.(Opóźnienie jest rozliczane)
Ok, to sprawia, że częstotliwość 1 kHz jest trochę niezręczna;jednakże: jaki jest cel synchronizacji tutaj?Jak dokładna ma być?Jak zamierzasz uwzględnić opóźnienie?
(Nawiasem mówiąc, dodaj te informacje o użytkowaniu do swojego pytania; zmienia to wiele rzeczy, które rozważałem!)
Jak uwzględniono w jednej z odpowiedzi, sterowniki / odbiorniki RS-485 i skrętki są przeznaczone na duże odległości.Sterownik przeznaczony do komunikacji wielopunktowej z dużą prędkością 40 m będzie mocno naciskany przy 1 kHz i 1000 m.Nie mówiąc już o długości króćca.
Może być łatwiej to uprościć, wykonując obliczenia w dwóch krokach.Niech wszystkie węzły obliczają czasy zdarzeń w lokalnym systemie czasu z dostatecznie dużą dokładnością.Jednocześnie, niech węzły wykorzystają obwód czasowy do ilościowego określenia zachowania lokalnych zegarów (tj. Dryfu).Daje to dużo czasu na pomiary różnic zegara i pozwala na przetwarzanie końcowe w celu usunięcia wszelkich wartości odstających.ułatwia również używanie sygnałów testowych do kalibracji systemu, jak klapa reżysera
Polecam zapoznać się z arkuszami danych i notami aplikacyjnymi dotyczącymi czyszczenia jitterów
Sześć odpowiedzi:
Marcus Müller
2019-11-01 15:24:25 UTC
view on stackexchange narkive permalink

Pierwszym problemem będzie więc to, że musisz poprowadzić ten długi kabel! Kawałek drutu o długości 1 km to po prostu duże obciążenie, a wyjście mikrokontrolera będzie miało trudności ze zmianą napięcia na nim niezawodnie.

Pomyśl o tym, że drut przechodzi przez swoje otoczenie jako kondensator przewodu do masy. Potrzebujesz więc silnego sterownika output.

Chcesz, aby napędzało obciążenie końcowe w odbiorniku, które jest stosunkowo silne (więc może 75 Ω do 120 Ω lub coś w tym rodzaju).

Będziesz potrzebował odpowiedniego filtrowania w odbiorniku, aby wyodrębnić oryginalny zegar.

Potrzebujesz okablowania, które jest nieco ekranowane, aby nie odbierać 1000 m odbioru anteny radiowej.

z wieloma podłączonymi węzłami

Oznacza to, że te wiele węzłów potrzebuje własnego odbiornika. Nie można umieścić silnego terminatora w każdym z nich (obciążenie sterownika byłoby ogromne), ale jeśli tego nie zrobisz, będziesz miał straszne problemy z jakością sygnału w tych węzłach.

Dla mnie brzmi to tak, jakbyś naprawdę chciał zbudować autobus wielopunktowy ... jak CAN!

Albo chciałbyś odebrać, zregenerować (Schmitt-Trigger?) i ponownie wysłać zegar w każdym węźle - łącząc je łańcuchowo zamiast używać liniowej magistrali.

będzie przebiegał do 1000 m

Uh, to naprawdę jest na krawędzi tego, co nadal obsługuje CAN, przy absurdalnie niskich szybkościach transmisji (i nie wszystkie urządzenia obsługują najniższą szybkość CAN, IIRC; sprawdź to zanim źle zainwestujesz!)


Zauważ również, że przy tej długości naprawdę chciałbyś, aby magistrala CAN przebiegała po ekranowanej skrętce lub kablu koncentrycznym. Okablowanie Ethernet jest tanie i można je kupić na szpulach.

Biorąc pod uwagę Twój oddzielny zegar: masz już CAN; jest dość wątpliwe, że musiałbyś mieć oddzielną linię zegara 1 kHz wzdłuż tego: masz sposób komunikowania się między węzłami w sposób, który jest o wiele dokładniejszy w czasie niż okres 1 kHz, więc po prostu dodaj magistralę CAN mikrokontroler do każdego węzła i dodać moduł główny, który regularnie informuje, ile cykli 1 kHz minęło od ostatniego taktowania komunikatu CAN - mikrokontrolery mogą następnie ustawić wewnętrzny licznik i wygenerować lokalnie zdyscyplinowany centralnie 1 kHz.

To oszczędza okablowanie i daje coś, co działa zdalnie, jeśli (i tylko wtedy) twoja magistrala CAN działa niezawodnie.

Inne opcje obejmują dodanie samodzielnie zaprojektowanych obserwatorów z zegarem bitowym, którzy po prostu obserwują transmisje od twojego mastera, aby dowiedzieć się, jakiego zegara bitowego używa i użyć go do lokalnego generowania 1 kHz.


Magistrala o długości 1000 mz dodatkową funkcją taktowania brzmi, jakby znajdowała się na samym skraju tego, co należy robić z pojedynczą magistralą CAN. Zalecałbym podzielenie tego autobusu na segmenty, jeśli jest to wykonalne architektonicznie. (Segmentacja zwiększa złożoność, ale lokalizuje błędy i często ułatwia debugowanie).

Przy bardzo niskich szybkościach transmisji, na które pozwala tak długa magistrala CAN, równie dobrze możesz po prostu przejść do łączności bezprzewodowej i pozbyć się całego okablowania. To wszystko jest kompromisem między kosztami okablowania a sprzętem i jest ograniczone przez niezawodność, której potrzebujesz (wskazówka profesjonalisty: w rzeczywistości podaj liczby - nawet przewodowa magistrala nie jest pozbawiona szumów i BĘDZIESZ musiał pomyśleć o tym, co stanie się z twoim systemem Pakiety magistrali CAN ulegają uszkodzeniu w toku).

Osobiście: nie próbowałbym budować własnego systemu autobusowego. W przypadku długodystansowych, dużej liczby węzłów, ludzie używają magistrali polowych zoptymalizowanych pod kątem przypadków użycia, takich jak PROFIBUS lub EtherCAT, lub po prostu: zwykły Ethernet! Możesz segmentować Ethernet za pomocą tanich przełączników Ethernet, możesz, ale nie musisz, uruchamiać protokoły zabezpieczające przed utratą, takie jak TCP / IP, na wierzchu, okablowanie ze złączami jest super tanie, dobrze przetestowane.


Wygląda na to, że Twoje aplikacje koordynują czasy MCU: To zdecydowanie bardziej zadanie dla okresowych komunikatów CAN niż zegar 1 kHz.Jeśli potrzebujesz dokładności, możesz przyjrzeć się protokołom internetowym, takim jak NTP, i pomyśleć o tym, jak dostosować je do systemu CAN (sztuczka polega na tym, że raz na jakiś czas dwukierunkowa wymiana danych w obie strony).

Protokół PTP jest o wiele mniej znany niż NTP, ale został specjalnie zaprojektowany do precyzyjnego pomiaru czasu.Może to być jednak przesada, ponieważ zazwyczaj w dobrej sieci uzyskuje się dokładność poniżej mikrosekundy, która jest prawdopodobnie o 3 rzędy wielkości większa niż wymaga PO.Jednak nawet tanie przełączniki obsługują teraz PTP (nie jest to wymagane, ale jeśli przełącznik obsługuje PTP, dokładność jest jeszcze lepsza), a ponieważ jest również używany w telekomunikacji, robotyce i automatyzacji przemysłowej, spodziewałbym się, że będzie obsługiwany w sieci Ethernetprzełączniki do zastosowań przemysłowych i / lub zewnętrznych.
@JörgWMittag, jeśli przejdziesz do dyskusji pod odpowiedzią Dave'a: OP chce dokładności 0,1–3 ns.PTP nie osiąga tego nawet na odległość.
Dave Tweed
2019-11-01 16:45:27 UTC
view on stackexchange narkive permalink

Naprawdę musisz się mocno zastanowić, co tak naprawdę rozumiesz przez „jednoczesne”.

Na rozpiętości 1000 metrów koncepcja nie obejmuje reżimu sub-ns.Do licha, pokonanie tej odległości wymagałoby impulsu światła dłuższego niż 3000 ns, a impuls elektryczny ponad 5000 ns przez idealną linię transmisyjną.Twój nieekranowany przewód będzie jeszcze wolniejszy z powodu opóźnień R-C spowodowanych ładowaniem wszystkich węzłów po drodze.

Korzystanie z odbiorników GPS w każdym węźle sprowadziłoby Cię przynajmniej do zasięgu dziesiątek ns.

Komentarze nie służą do rozszerzonej dyskusji;ta rozmowa została [przeniesiona do czatu] (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

Czy rozważałeś wysłanie fali sinusoidalnej i użycie komparatora na końcu odbiorczym do zrekonstruowania fali prostokątnej?

na 1 km nie pozostanie dużo fali prostokątnej, ponieważ wszystkie składowe o wyższej częstotliwości będą tłumione z powodu linii transmisyjnej

To byłaby taka możliwość, tak.Ale wtedy musiałbym wygenerować falę sinusoidalną ... Ale sygnał pwm i kondensator powinny być w stanie wykonać tę pracę, ale sprawi, że MCU będzie dość zajęty.
@Geoxion fala sinusoidalna wytworzy się „sama”, jak wyjaśnił JonRB, kiedy stłumisz wysokie częstotliwości: Po prostu przepuść zegar 1 kHz przez filtr dolnoprzepustowy, który odcina się powyżej 1 kHz, ale poniżej 3 kHz.
dokładnie, dlatego lepiej jest generować taką sinusoidę w bardziej kontrolowany sposób.Istnieje wiele sposobów tworzenia fali sinusoidalnej, a wiele z nich nie wymagałoby czasu MCU.Moja rada byłaby w momencie generowania fali sinusoidalnej, lokalnej zmiany na falę prostokątną i wykorzystania tego sygnału.Zapewni to, że jednostka wytwórcza zobaczy podobne przesunięcie fazowe do innych jednostek (ze względu na filtrowanie).Również 1 km ... upewnij się, że masz przyzwoitą moc wyjściową napędu, ponieważ będzie spora pojemność
Jeśli „wszystkie składowe wyższych częstotliwości zostaną stłumione”, nie ma potrzeby generowania fali sinusoidalnej w pierwszej kolejności - linia transmisyjna skutecznie to zrobi za Ciebie.Oczywiście nie będzie to dotyczyło „wielu” węzłów, które są fizycznie blisko mastera.
Z pewnością _dowolny_ szum - a kabel o długości 1 km może być bardzo dużą anteną - przełoży się na jitter, jeśli spróbujesz odtworzyć sygnał taktowania z fali sinusoidalnej i komparatora.Rozdzielczość sub-ns przy sygnale 1 kHz oznacza precyzję poniżej ppm.Czy w tym scenariuszu niska prędkość zegara nie jest „ucieczką”, a nie zaletą?
filo
2019-11-01 21:56:23 UTC
view on stackexchange narkive permalink

Jeśli masz dostępne okablowanie typu skrętka, możesz po prostu użyć transceiverów CAN (uwaga na funkcję timeout) lub transceiverów RS-485 dla sygnału.Z pewnością dodadzą pewne opóźnienie propagacji, ale powinno to zostać naprawione.

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

Cóż, 1000 m to dość duża odległość, która zapewnia znaczną pojemność i indukcyjność przewodów oprócz impedancji.Jeśli zastosujesz sygnał kwadratowy 1 kHz na jednym końcu, sygnał na drugim końcu w ogóle nie będzie wyglądał jak impuls kwadratowy.

To czysta fizyka - weź impedancję, pojemność, indukcyjność kabla na metr i pomnóż przez długość kabla.

Istnieje wiele metod rozwiązania części problemu, ale zwykle zwiększa to koszt projektu.

Czy kiedykolwiek zastanawiałeś się nad rozwiązaniem transmisji sygnału światłowodowego?

Nie jest zbyt wrażliwy na zakłócenia radiowe, nie ma wpływu na indukcyjność / pojemność, a propagacja sygnału jest bliska 300 000 km / sek.Oczywiście nie da się uniknąć tłumienia sygnału na takiej odległości.

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

Ten sygnał zegarowy IMO jest potrzebny do wszystkiego.Po prostu nadawaj okresowo wiadomość CAN z aktualnym znacznikiem czasu.Zsynchronizuje węzły i będzie źródłem danych kalibracji zegarów wewnętrznych

Pamiętaj, że węzły nie będą idealnie zsynchronizowane (nawet jeśli masz sygnał zegara), ponieważ sygnał będzie podróżował między najdalszymi węzłami> 3usek



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 4.0, w ramach której jest rozpowszechniana.
Loading...