Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Transmisja RS232 (lub innym protokołem) na długi dystans przez kabel mikrofonowy

mily20001 07 May 2018 23:13 1470 24
Optex
  • #1
    mily20001
    Level 11  
    Witam wszystkich,
    Potrzebuję zrealizować transmisję danych na dość dużą odległość jak na RS232, będzie to ok 60m. Niestety ze względu na konieczność wykorzystania już istniejącej instalacji mam do dyspozycji tylko kabel mikrofonowy z końcówkami XLR. Tym samym kablem musi także być poprowadzone zasilanie (docelowo pewnie max 1A przy 5V, ale możliwe że zdecyduję się nieco zwiększyć napięcie i zastosować przetwornice na odbiornikach), dlatego na dane zostaje tylko jedna żyła. Z tego powodu odpada niestety RS485, który bardzo dobrze by się tu sprawdził. Transmisja będzie na zasadzie broadcastu - będzie jeden nadajnik i kilka (<10) odbiorników. Prędkość transmisji może być bardzo niewielka, ok 4B/s wystarczy. Dane będą nadawane i odbierane przez atmegi, w przypadku RS232 próbowałbym użyć MAX232 do konwertowania napięć.
    Czy RS232 ma szanse sobie tu poradzić i czy może jest jakiś bardziej odpowiedni układ niż MAX232 do takiego dość ciężkiego przypadku? Jakie ewentualnie inne protokoły by się sprawdziły w tej sytuacji? Czy może próbować budować coś samemu od zera?
    Z góry dziękuję za pomoc
  • Optex
  • #2
    tomek_602
    Level 21  
    Według specyfikacji RS232 ma maksymalny zasięg 15m i zasadzie służy do połączenia ze sobą tylko dwóch urządzeń.

    Nie wiem jak MAX poradzi sobie z pojemnością kabla. Ale jak Ci wystarczają 4B/s, to w ogóle nie dawaj gotowych układów nadajników/odbiorników linii. ustaw w UARTach najmniejszą możliwa prędkość (np. 200 bodów) i jako nadajnik daj zwykły klucz tranzystorowy, a jeszcze lepiej kluczowane źródło prądowe 0/20mA. A jako odbiorniki bramki Schmitta.

    Ile żył i o jakim przekroju ma ten kabel mikrofonowy?
    Bo 1A, to może być zbyt dużo dla takiego kabla.
  • #3
    tomaszdko
    Level 11  
    Ostatnio testowałem komunikację 2x atmega (odbiór i nadawanie 6 zmiennych word) przy prędkościach 57600 na odległości 100m (kabel utp), wszystko śmigała bez problemu na zwykłym uart jak i rs232 . Osobiście zainstalowałem rs485 ale to z powodu że kabel jest "ruchomy" więc będzie możliwość zakłóceń.

    tomek_602 co do " służy do połączenia ze sobą tylko dwóch urządzeń." jest w tym racja ale zrobiłem patent że możesz podłączyć ile chcesz urządzeń na dwóch żyłach (mam projekt na 17 x atmeg po uarcie lub rs232, każda odbiera to co powinna i działa bez problemu ).
  • Optex
  • #5
    _jta_
    Electronics specialist
    Typowy RS-232 zapewnia stabilne przesyłanie z szybkością 9600 bodów (800 znaków na sekundę) na odległość około 50m przy użyciu kabla nieekranowanego; kabel ekranowany ma większą pojemność, więc zasięg będzie krótszy - ale wszystko jeszcze zależy od szybkości, oraz od wydajności prądowej wyjść RS-232.

    Pojemność 1m kabla ekranowanego może być około 100pF - żeby przeładować go prądem 1mA o 20V potrzeba 2us (t=ΔU*C/I); dla 60m wychodzi 120us, a ten czas powinien być znacznie krótszy, niż pół długości bitu (standard wymaga poniżej 4%) - będzie krótszy przy szybkości poniżej 4000 bodów, prawdopodobnie przy szybkości 2400 bodów będzie działać stabilnie, a wymagania standardu będą spełnione przy szybkościach do 300 bodów. Oczywiście, im mniejsza szybkość, tym mniejszy wpływ pojemności kabla na działanie. Do 4 bajtów na sekundę wystarczy 50 bodów.

    Wydajność prądową RS-232 można zmierzyć - wystarczy podłączyć miernik na zakresie 200mA i odczytać (czasem na wszelki wypadek lepiej zacząć od wyższego zakresu, teoretycznie prąd może być do 0.5A, ale to raczej nie wtedy, gdy napięcie 12V jest wytwarzane specjalnie dla RS-232, duża wydajność prądowa zwiększa koszt). Nie widzę, by gdziekolwiek podawano wymaganą wydajność prądową (poza ograniczeniem do 0.5A), mam wrażenie, że typowy port COM w PC gwarantuje minimum 4mA (a więc 1200 bodów na kablu ekranowanym 60m).

    Przy przesyłaniu sygnałów na większe odległości lepiej zmienić parametry elektryczne sygnału na pasujące do kabla (np. na RS-422, albo RS-423, albo cokolwiek dobranego do kabla) - jeśli to RS-232 ma być użyty MAX-232 specjalnie dodany w celu uzyskania zgodności ze standardem, a odbiorniki mają wejścia TTL, to niewykluczone, że jego pominięcie i użycie bardziej pasujących parametrów sygnału pozwoli zmniejszyć koszt. ;)

    Zasadą stosowaną przy długich kablach jest dobieranie napięcia i prądu do impedancji charakterystycznej kabla - przewody ekranowane mają kilkadziesiąt omów, więc celowe jest użycie np. 1V i 20mA do kabla 50 omów. Wtedy nie ma problemu z przeładowywaniem pojemności i łączność działa stabilnie na tysiące metrów. To jeszcze zależy od szybkości i od jakości kabla: do Ethernet-u stosowano specjalny "żółty kabel eternetowy" (yellow Ethernet cable), który gwarantował stabilną łączność do 500m przy szybkości 10M; zwykły kabel RG-58 dawał tylko 185m, RG-116 około 350m (ten "żółty" był podobny do RG-116, ale lepiej wykonany). W Świerku był system "asynchronous DC modem" (wykorzystywał układy UCY751xx/DS7511xx, xx=07/08/10, to są konwertery między linią, a TTL) chyba 9600 bodów, działało stabilnie na odległość kilku km. 1-Wire używa szybkości około 15k, i ze wzmacniaczem po jednej stronie (to już nie zapewniało dopasowania, ale było lepsze od robienia 1-Wire z RS-232) testowałem do 250m.

    Problemem może być spadek napięcia na połączeniu masy - bo rozumiem, że masz jedną masę, i płyną przez nią prądy do 1A? Zmierz, jaki jest opór żył, przez które ma płynąć ten prąd.

    Jeśli po obu stronach masz ATmegi, to po co poziomy napięć RS-232 (+-12V)? One pewnie mają wejścia i wyjścia TTL (przy zasilaniu z 5V). Można by spróbować tak: na końcu kabla żyłę sygnału łączysz przez oporniki po 100R z 5V i masą; w nadajniku przez opornik 75R do 5V, oraz tranzystor NPN z masą (kolektor do żyły sygnałowej, emiter do masy; jakiś BC547 będzie za słaby, należy użyć co najmniej BC337, albo np. 2N2222, czy 2N2369); na bazę tranzystora trzeba podać sygnał zanegowany, a wejścia "RS232" tych ATmeg, które mają odbierać, podłączyć wprost do żyły sygnału (no, może dla bezpieczeństwa przez opornik 1k).

    Wartości oporników powinny pasować do kabla o impedancji falowej 50 omów. Przydałoby się zmierzyć, jaka jest naprawdę - jeśli podłączysz kabel i oscyloskop do generatora sygnału prostokątnego o dużej impedancji wyjściowej, to zobaczysz odbicia sygnału od końca kabla: przy rozwartym końcu kabla sygnał odbity będzie miał ten sam znak, co oryginalny, przy zwartym przeciwny, przy podłączeniu opornika jakiś pośredni, a jeśli opornik będzie miał opór równy impedancji falowej kabla, to odbicia nie będzie.

    Idealnie byłoby stosować nadajnik o impedancji wyjściowej równej impedancji falowej kabla, ale to wymagałoby ujemnego napięcia zasilania, około -2.5V, i dwóch tranzystorów wyjściowych, czyli sporej komplikacji układu. Może wystarczy, że zaterminujesz koniec kabla tak, by na nim nie było odbić.
  • #6
    krzysiek_krm
    Level 40  
    Witam,
    może spróbuj jakiejś twórczej adaptacji interfejsu DALI.

    Pozdrawiam
  • #8
    tomaszdko
    Level 11  
    Użyj wspólnej masy + jednej żyły do transmisji UART od nadajnika do tych kilku odbiorników i po problemie . Zrobiłem 3 żyły - jedna video , druga uart a 3 jako wspólna masa na 100m . Kiedyś też pytałem czy będą problemy to ludzie odpisali że te odległości i zakłócenia są przesadzone tym bardziej że chcesz mieć bardzo wolną transmisję .Testuj a sam się przekonasz.
  • #9
    Wojtek(KeFir)
    Level 42  
    Ależ właśnie się nie mogę zgodzić! Ja bym właśnie użył RS485. I do tego zastosował technologię PoE. Czyli właśnie pomieszał bym zasilanie z żyłami komunikacyjnymi. Ja rozumiem, że pożenienie jednego z drugim może być kłopotliwe, znalezienie odpowiedniego Transcievera też będzie trudne. Pierwsze co, to odpaliłbym stabilnie komunikację po RS-ie. Potem dołożył napięcie zasilania jako offset na liniach danych i to o wysokim napięciu 45-50V wtedy tylko odpowiednia przetwornica DC/DC przy każdym odbiorniku.
  • #11
    mily20001
    Level 11  
    tomek_602 wrote:
    Ile żył i o jakim przekroju ma ten kabel mikrofonowy?

    Kabel ma 3 żyły o przekroju ok 0.2mm²
    Impedancja kabla wg jego specyfikacji to ok 80Ω, pojemność 100pF/m, a rezystancja 0.144Ω/m (~8.5Ω/60m)

    _jta_ wrote:
    Przy przesyłaniu sygnałów na większe odległości lepiej zmienić parametry elektryczne sygnału na pasujące do kabla (np. na RS-422, albo RS-423, albo cokolwiek dobranego do kabla) - jeśli to RS-232 ma być użyty MAX-232 specjalnie dodany w celu uzyskania zgodności ze standardem, a odbiorniki mają wejścia TTL, to niewykluczone, że jego pominięcie i użycie bardziej pasujących parametrów sygnału pozwoli zmniejszyć koszt.

    RS-232 nie jest wymagany, mogę użyć czegokolwiek, ponieważ będę budował we własnym zakresie zarówno nadajnik jak i odbiorniki. Zastanawiałem się nad RS42x, ale nie udało mi się znaleźć dla nich żadnego układu pokroju max232, który byłby dostępny w Polsce.

    _jta_ wrote:
    Jeśli po obu stronach masz ATmegi, to po co poziomy napięć RS-232 (+-12V)?

    Wydaje mi się że dzięki wyższym poziomom będę mógł zapewnić nieco lepsze parametry transmisji (chociażby większą odporność na zakłócenia z zewnątrz)
  • #13
    _jta_
    Electronics specialist
    Ja bym właśnie użył RS485. I do tego zastosował technologię PoE.

    RS485 wymaga 2 przewodów sygnałowych, a autor tematu ma 1. PoE = Power over Ethernet - tu nie ma Ethernet-u. I po co komplikować?

    Kabel ma 3 żyły o przekroju ok 0.2mm². Impedancja kabla wg jego specyfikacji to ok 80Ω, pojemność 100pF/m, a rezystancja 0.144Ω/m (~8.5Ω/60m)

    Wydawało mi się, że kabel mikrofonowy zwykle ma dwie żyły i ekran (ewentualnie dwa odrębne ekrany).

    Podejrzanie wygląda mi zestawienie pojemności i impedancji, bo ich iloczyn jest odwrotnością szybkości propagacji fali w kablu i wychodzi ona 125000km/s, w typowych kablach jest 2X większa. Może coś pomylono z definicją, np. impedancję określono dla sygnału różnicowego, a pojemność dla jednej żyły?

    Może zmierz oporności poszczególnych żył kabla, żeby wiedzieć, jakie one naprawdę są? Można tak: na jednym końcu zwierasz wszystkie żyły ze sobą, na drugim mierzysz oporności między żyłami, i z tego można wyliczyć oporności wszystkich żył.

    Żyła 0.2mm² powinna mieć oporność 0.087Ω/m - nie wiem, czy jest nieco grubsza i podano oporność dla dwóch żył, czy sumę oporności żyły i ekranu, czy jest znacznie cieńsza (0.12mm²)? Ale niezależnie od tego, nie można tym kablem przesyłać 1A przy 5V, bo na samym kablu będzie większy spadek napięcia. Pytanie, jakie napięcie można podać na ten kabel?

    Przetwornica step-down (buck) pozwala zmniejszyć prąd w kablu (1A to już blisko granicy tego, co ten kabel w miarę bezpiecznie wytrzyma) - jeśli prześlesz 0.3A przy 24V, to pewnie na kablu stracisz 2.6V (zakładając, że podana oporność to suma oporności żyły i ekranu), zostanie 21.4V i przetwornice o sprawności 80% z tego zrobią w sumie 1A przy 5V - lepiej, niż podać 1A przy 18V i zastosować stabilizatory 5V. Pytanie, co z kosztem przetwornic (bo pewnie do każdego odbiornika osobna), i czy nie będą dawać za dużych zakłóceń.

    Wydaje mi się że dzięki wyższym poziomom będę mógł zapewnić nieco lepsze parametry transmisji (chociażby większą odporność na zakłócenia z zewnątrz)

    Większe napięcie oznacza, że szybkie przeładowanie pojemności kabla wymaga większego prądu - jeśli kabel jest zaterminowany opornikami, to ten większy prąd płynie stale; z kolei kabel bez terminatora działa jak filtr dolnoprzepustowy i zniekształca sygnał.

    Ale może nie jest tak tragicznie: przeładowanie między -12V i +12V pojemności kabla równej 6nF wymaga ładunku 144nC - prąd 30mA (taki da nawet BC547) zrobi to w czasie 4.8us, czyli 1 bit powinien trwać 120us - to oznacza szybkość ponad 8000 bodów. Jak mają być 4 bajty na sekundę (50 bodów), to wystarczy prąd... 0.2mA. Tylko to bez żadnych terminatorów linii.

    Pewnym problemem będzie fakt, że potencjał masy nie będzie wszędzie taki sam - z powodu spadku napięcia na oporności przewodu masy. Poza tym, 12V nie można podawać na wejścia ATmegi. Może użyć komparatorów - to są takie układy scalone, które dają na wyjściu stan cyfrowy 0/1 (wyjście otwarty kolektor) w zależności od tego, jaki jest znak napięcia między wejściami. Jedno wejście do dzielnika z zasilania (tego, które przychodzi przez kabel i wchodzi na przetwornicę) i masy (można tak dobrać dzielnik, że taki sam będzie dawał taki sam potencjał w dowolnym miejscu na kablu), drugie do żyły sygnałowej. I na kabel zasilanie 24V, takie samo do "nadajnika".

    A może stara poczciwa pętla prądowa 20mA

    To by wymagało szeregowego łączenia odbiorników, jeśli jest ich wiele.
  • #14
    krzysiek_krm
    Level 40  
    _jta_ wrote:
    https://en.wikipedia.org/wiki/Digital_Addressable_Lighting_Interface ?

    To wymaga dwóch odrębnych przewodów sygnałowych, a autor tematu ma tylko jeden.

    Dlatego właśnie napisałem o twórczej modyfikacji DALI, jeden z przewodów może być masą, głównie chodzi o kodowanie Manchester, które ma właściwość samo-synchronizacji, w odróżnieniu od transmisji asynchronicznych.
    Na upartego można użyć magistrali CAN w wersji z łączem asymetrycznym. Wbudowany protokół jest bardzo mocny, tyle że znacznie więcej przy tym pracy więc może to być przerost formy nad treścią.
  • #16
    tomek_602
    Level 21  
    _jta_ wrote:
    A może stara poczciwa pętla prądowa 20mA.
    To by wymagało szeregowego łączenia odbiorników, jeśli jest ich wiele.

    Pętlę proponowałem to od razu we wpisie nr 2.
    Wprawdzie z odbiornikami na bramkach Schimtta (oczywiście z opornikami), ale to łącznie szeregowe byłoby lepsze. Wystarczy dać transoptory jako odbiorniki.
  • #17
    _jta_
    Electronics specialist
    DALI z założenia ma rozdzielone przewody sygnałowe i zasilania - nie ma DALI na jednej żyle, ani sygnałów z zasilaniem. Poza tym, jest to zbędna komplikacja. Po co szukać egzotycznych systemów, do których elementy mogą być trudno dostępne, jak da się prosto zrobić na powszechnie dostępnych elementach?

    Z odbiornikami na bramkach Schmitta to już by nie była pętla prądowa. A z łączeniem szeregowo może być problem - czy da się zrobić na istniejącym kablu?
  • #18
    tos18
    Level 40  
    Magistrala DALI pozwala na zasilanie niewielkich urządzeń jak panele sterujące (panele z przyciskami), czujniki ruchu, odbiorniki IR czy moduły przekaźników. Maksymalne obciążenie to 250mA. Niestety w oryginale potrzebuje dość grubych przewodów. Obawiam się że na kablu mikrofonowym nie pójdzie - będzie zbyt duży spadek napięcia.
  • #19
    krzysiek_krm
    Level 40  
    _jta_ wrote:
    DALI z założenia ma rozdzielone przewody sygnałowe i zasilania

    Jesteś w tak zwanym "mylnym błędzie" możliwe jest ograniczone (prądowo) zasilanie przez linie sygnałowe, ale to bez znaczenia bo
    mily20001 wrote:
    Tym samym kablem musi także być poprowadzone zasilanie

    więc zasilanie będzie poprowadzone innym przewodem.
    _jta_ wrote:
    nie ma DALI na jednej żyle

    Zależy co przez to rozumiesz, jeżeli masz na myśli dokładnie jedną żyłę to nie będzie działać żadna transmisja, chyba że przez czwarty wymiar.
    Typowo magistrala DALI używa dwóch przewodów bez polaryzacji, nie wiem skąd się to wzięło, domniemywam że chodzić mogło o to żeby prosty instalator nie kombinował gdzie jest plus a gdzie minus i podłączał dowolnie. Autor tematu robi układ dla siebie, może więc użyć dwóch przewodów z polaryzacją, jeden z nich będzie masą, która raczej tam jest bo potrzebna jest do zasilania.
    _jta_ wrote:
    Po co szukać egzotycznych systemów, do których elementy mogą być trudno dostępne, jak da się prosto zrobić na powszechnie dostępnych elementach?

    No rzeczywiście oporniki, tranzystory i transoptory to są niezwykle egzotyczne elementy.
  • #21
    _jta_
    Electronics specialist
    Jaki ma sens izolacja galwaniczna toru sygnału, skoro przesyła się zasilanie i jest wspólna masa?

    W układzie DALI każdy odbiornik obciąża zasilanie prądem swojego transoptora, około 5mA - to może działać do 10 odbiorników (zasilacz daje około 60mA), ale im jest ich więcej, tym wolniejsze ładowanie pojemności kabla. Komparator (można go zastąpić parą tranzystorów PNP, jak się chce zmniejszyć koszt o 20gr) nie powoduje obciążenia linii sygnału.

    Aha, dość istotna sprawa: czy autor tematu potrzebuje przesyłania danych tylko od jednego nadajnika do wielu odbiorników, czy łączności dwukierunkowej?
  • #22
    mily20001
    Level 11  
    _jta_ wrote:
    Wydawało mi się, że kabel mikrofonowy zwykle ma dwie żyły i ekran (ewentualnie dwa odrębne ekrany).

    Mój błąd. Poniżej zamieszczam specyfikację którą posiadam, w tym moim przypadku jest to wersja 0.25mm:
    Transmisja RS232 (lub innym protokołem) na długi dystans przez kabel mikrofonowy

    _jta_ wrote:
    Aha, dość istotna sprawa: czy autor tematu potrzebuje przesyłania danych tylko od jednego nadajnika do wielu odbiorników, czy łączności dwukierunkowej?

    Jednokierunkowa, z jednego nadajnika do wielu odbiorników

    _jta_ wrote:
    A może stara poczciwa pętla prądowa 20mA

    To by wymagało szeregowego łączenia odbiorników, jeśli jest ich wiele.

    Teoretycznie mógłbym połączyć odbiorniki szeregowo z nadajnikiem na jednym z końców
  • Helpful post
    #23
    _jta_
    Electronics specialist
    No, przynajmniej oporność kabla się zgadza z przekrojem żyły, i wiemy, że wytrzymuje spore napięcia (dozwolone jest szczytowe 350V, czyli 247V~, i pewnie 350V=, ale chyba aż takich napięć nie trzeba). Żyła o przekroju 0.25mm2 wytrzyma ze 2A, więc za użyciem przetwornic przemawia raczej oszczędność energii / mocy zasilacza - bez nich przy ciągłej pracy energia będzie kosztować ponad 30zł rocznie, i za to pewnie można kupić od Chińczyków kilkanaście przetwornic.

    Z podanych wartości pojemności i indukcyjności kabla wychodzi rzeczywiście impedancja 80R (a nawet 83R5) i szybkość propagacji 120 000 km/s.

    Nie widzę z tej specyfikacji, czy to jest kabel z 2 żył i ekranu, czy 3 żył bez ekranu (albo ekranem, który nie może być użyty do przewodzenia prądu)? Jeśli to są 3 jednakowe żyły, i jedna z nich ma być masą, a któraś inna zasilaniem, to 60m będzie miało opór 4R7 na każdej żyle i przy 1A stracisz prawie 10V z napięcia zasilania. Jeśli zastosujesz tanie stabilizatory liniowe do uzyskania 5V dla ATmeg, to wypada mieć wszędzie co najmniej 8V, a więc zasilać kabel napięciem 18V.

    W roli nadajnika można by użyć wzmacniacza operacyjnego - typowy ma ograniczenie prądu do 20mA (i może być zasilany napięciem ponad 30V), co oznacza 5us na przeładowanie pojemności między żyłami o 17V (jeśli to 100pF/m jest pojemnością między jedną żyłą, a pozostałymi, bo jeśli to trzeba pomnożyć przez 2, to będzie 10us, a przy większym napięciu nawet 15us). Nawet przy najbardziej pesymistycznych założeniach powinno bez problemów działać z prędkością do 1600 bodów.

    Z odbiornikami uwaga na zakres napięć - jeśli nadajnik będzie dawać np. od +2V do +16V względem masy (tyle może dać popularny wzmacniacz operacyjny przy zasilaniu 18V), a do odbiornika stracisz po 5V na masie i na zasilaniu, to będziesz miał poziomy od -3V do +11V przy zasilaniu +8V - trzeba będzie jakoś ograniczyć napięcie podawane na wejście odbiorników, bo napięcia poza zakresem masa-zasilanie mogą uszkodzić komparatory, bądź powodować wadliwe ich działanie.

    Połączenie szeregowe LED-ów transoptorów będzie wymagać przecinania żyły kabla, którą wysyła się sygnał. No i przerwa na którymkolwiek odbiorniku spowoduje całkowity brak łączności. A przy większej ilości odbiorników może być potrzebne spore napięcie - chyba wypada liczyć ze 2V na odbiornik (do sprawdzenia w nocie katalogowej transoptora, jakie może być maksymalne napięcie przewodzenia LED-a).
  • #24
    Justyniunia
    Level 35  
    Poczytaj o sterowaniu DCC wykorzystywanym w modelarstwie.
    Dwie żyły kabla mikrofonowego spięte razem dla zwiększenia przesyłanych prądów, ekran jako masa i po herbacie ;)
  • #25
    _jta_
    Electronics specialist
    Będzie to dodatkowa komplikacja i więcej możliwości zrobienia błędu. A zysk może być niewielki, i nawet nie wiadomo, czy to jest kabel mikrofonowy w ekranie, czy trzy jednakowe żyły, i tylko ma wtyczki jak mikrofonowy. Żeby tak chociaż wiedzieć, że to są dwie żyły i ekran o oporności dużo mniejszej od jednej żyły...