Są takie chwile w życiu elektronika-hobbysty, zwłaszcza programującego mikrokontrolery, gdy jego największym pragnieniem jest umieścić dwa układy w odległości kilkuset metrów i wymieniać między nimi dane. Tanie moduły radiowe nie dadzą rady. Moduły LoRa radę dadzą i do kilku kilometrów, ale kosztem zwiększonego poboru prądu. Ale załóżmy, że nie chcemy używać radia, albo że warunki propagacji są złe. Co wtedy? Ktoś powie: wystarczy przeciągnąć kabel i użyć transmisji szeregowej. Tylko to rozwiązanie nie za bardzo da radę. Zwłaszcza jak po drodze są źródła silnych zakłóceń elektromagnetycznych.
Protokoły szeregowe i ich zasięgi
SPI to jeden z dwóch głównych protokołów używanych w elektronice, głównie do komunikacji między najróżniejszymi układami scalonymi i modułami. Specyfikacja przewiduje jednak maksymalny zasięg łączności nie przekraczający 10 metrów. Często jest to mniej, jeśli nie użyjemy odpowiedniego okablowania i nie ograniczymy prędkości łączności.
I2C to ten drugi protokół stosowany w elektronice, tu zasięg wynosi 10m dla 10kbps i 1m dla 100kbps.
Transmisja szeregowa wygląda lepiej, bo przy poziomie sygnałów TTL uzyskać można aż 15 metrów, a po konwersji na RS-232 i z odpowiednim okablowaniem nawet 2km (!). Problemem jest odpowiednie okablowanie. Specyfikacja określa maksymalną pojemność kabla na poziomie 2500pF, i taką z taką pojemnością powinien sobie poradzić konwerter. Przypuszczam jednak, że wiele tanich układów raczej nie da rady, więc i zasięg będzie odpowiednio mniejszy. Plus, skąd wziąć odpowiedni przewód i nie wydać na niego majątku?
CAN to protokół i sieć znane głównie z przemysłu samochodowego. Zasięg zależy od prędkości trasmisji i wynosi 40m dla 1Mbps, 250m dla 250kbps i 1km dla 10kbps. Sieć CAN używa dwużyłowej skrętki. Protokół zakłada, iż każdy układ w sieci może komunikować się z każdym innym. By uniknąć kolizji między dwoma "nadawcami", wszystkie układy w sieci nasłuchują transmisji, wliczając w to "nadawców". Jeśli dwóch lub więcej "nadawców" ustala stan 0 w sieci, to wszyscy "widzą" stan 0, łącznie z "nadawcami". Analogicznie ze stanem 1. Ale jeśli jeden "nadawca" wyśle stan 1, a inny 0, to w sieci panuje stan 0. Wtedy pierwszy "nadawca" przerywa transmisję i czeka na zakończenie ramki wiadomości, zanim ponowi próbę.
RS-485 to dość popularny standard łączności przemysłowej, spotykany też w automatyce budynków. Używa specjalizowanych konwerterów i pozwala na zasięg do 1200 metrów. Oczywiście kosztem prędkości transmisji. Przy 250kbps typowy zasięg wynosi tylko około 300m. Do budowy sieci wystarczy dwużyłowa skrętka, i można do niej podpiąć do 256 urządzeń. Aha, nie ma standardowego protokołu łączności, więc trzeba wymyślić własny.
1-Wire to rozwiązanie, które kłamie w swojej nazwie, gdyż poza przewodem sygnałowym posiada też przewód masy. Prędkość 16,3kbps to niewiele, ale dla czujników, prostych pamięci i kluczy (kojarzycie pastylki immobilizerów i niektórych zamków elektronicznych?) to wystarczy. Linia sygnałowa jest pod napięciem, zasilana przez rezystor podciągający - tak układy w sieci (o nazwie MicroLan) mogą być zasilane. Transmisja polega na cyklicznym zwieraniu linii do masy, długość impulsu określa rodzaj sygnału. Zasięg z użyciem rezystora podciągającego wynosi do 200 metrów, bardziej skomplikowane układy potrafią osiągnąć do 500m i więcej.
Wszystkie wymienione protokoły zakładają, że układy, które się ze sobą komunikują będą miały wspólny potencjał masy. Nawet CAN i RS-485. Ten ostatni zakłada, że potencjał masy między układami nie będzie się różnił o więcej jak ±7V. W innym przypadku trzeba używać układów z wbudowaną izolacją galwaniczną (które są stosownie droższe). Czy da się prościej (i taniej)? Oczywiście, że tak! A pomoże nam technika znana od dziesięcioleci w przemysłowych systemach kontrolnych.
Krótko o pętli 4-20mA
Weźmy typową sytuację w zakładzie chemicznym: sto metrów od centrum sterowania znajduje się przepływomierz, po drodze zaś mamy kilka bardzo dużych silników elektrycznych. Musimy dokładnie zmierzyć przepływ, by kontrolować proces chemiczny - inaczej kawałek zakładu chemicznego zmieni się w zgliszcza zakładu chemicznego. Pierwsza myśl, to mierzyć napięcie, którego wartość zmienia się proporcjonalnie do przepływu. Tylko to nie zadziała, bo zakłócenia generowane przez silniki elektryczne i innej urządzenia zniekształcą lub całkowicie "przykryją" napięcie płynące kablem z czujnika. Do tego pamiętajmy o rezystancji samego kabla, która to dodatkowo obniży mierzone napięcie. Dla pojedynczego czujnika dałoby się pewnie tak poprowadzić przewód, by zminimalizować wpływ otoczenia, dodać wzmacniacze i stosować inne kombinacje. Ale co, jeśli musimy okablować zakład o powierzchni tysięcy metrów kwadratowych z setkami czujników i układów wykonawczych? Nie da się. Ba, nie będzie można puścić w jednej wiązance przewodów od wielu czujników, przewodów załączających styczniki, przewodów zasilających i innych, bo przesłuchy będą za duże. Zwłaszcza jak wspólny odcinek będzie miał 100-500 metrów długości.
Ten "niedasizm" spowodował, iż inżynierowie wymyślili inne rozwiązanie: zamiast zmiennego napięcia zastosujmy zmienny prąd. Niech nasz przepływomierz zachowuje się jak regulowae źródło prądowe, zaś układ w centrum sterowania niech mierzy napięcie odkładające się na rezystorze połączonym do tego czujnika. Przyjmijmy przy tym, że minimalna wartość prądu wynosi nie 0, a 4mA, zaś maksymalna wynosi 20mA. Rezystor w układzie pomiarowym będzie miał wartość 250Ω, co da nam elegancji zakres od 1V do 5V. Spadek napięcia do zera będzie sygnalizował przerwanie obwodu. Tak oto uzyskaliśmy naszą pętlę prądową 4-20mA. Wygląda to tak:
Ale co to nam daje?
1. Używamy źródła prądowego, więc długość przewodów między nim, a rezystorem na drugim końcu pętli nie ma znaczenia - źródło ustali takie napięcie, jakie będzie niezbędne do utrzymania zadanego prądu.
2. Wszelkie zakłócenia napięciowe indukowane w przewodach nie wpłyną na wartość prądu, bo źródło dostosuje swoje napięcie tak, by prąd się nie zmienił - zadziała ujemne sprzężenie zwrotne.
3. Sposób działania pętli prądowej eliminuje też problemy przesłuchów.
4. Pętla prądowa 4-20mA pozwala też na sterowanie układami wykonawczymi - wtedy źródło prądowe jest po stronie sterownika procesu, a rezystor i układ mierzący napięcie są w urządzeniu wykonawczym.
Systemy sterowania oparte o pętlę prądową 4-20mA istnieją od wielu lat i są de facto standardem dla systemów kontroli i sterowania przemysłowego. Mają tylko dwie dość poważne wady:
1. Pętla jest "analogowa".
2. Każdy czujnik czy układ wykonawczy wymaga własnej pętli.
Oba te problemy doprowadziły do powstania kilku różnych standardów cyfrowej łączności przeznaczonych dla przemysłu. Nie będę jednak o nich pisał, gdyż nie jestem specjalistą, a i nie o tym jest ten artykuł. Zanim jednak przejdziemy do meritum, musimy zahaczyć jeszcze o historię komputerów.
Krótko o historii komputerów
Pierwsze elektroniczne komputery cyfrowe powstały pod koniec IIWŚ. Były to maszyny zbudowane z tysięcy, a nawet dziesiątek tysięcy lamp próżniowych (dlatego u nas nazywano je często mózgami elektronowymi). Zajmowały przy tym bardzo dużo miejsca. Poniżej jeden z komputerów będących rdzeniem systemu SAGE, który w latach 50tych bronił nieba nad USA:
Komputery tranzystorowe były tylko trochę mniejsze. Dopiero stworzenie układów scalonych pozwoliło na powstanie minikomputerów, czyli wielkości kilku kuchenek lub lodówek. Ponieważ komputery były dość duże i bardzo drogie, pojawiła się potrzeba, by wielu użytkowników mogło korzystać z jednego komputera, i to najlepiej zdalnie. Tak powstały terminale dostępowe. Przy okazji pojawił się problem cyfrowej łączności na większe dystanse. Jednym z pierwszych rozwiązań był pomysł podpatrzony w systemach przemysłowych, czyli pętla prądowa. Było kilka standardów, ale najpopularniejszym, zwłaszcza w czasach minikomputerów był standard 20mA. Używał on dwóch pętli, przy czym zasilanie ich było po stronie komputera, a nie terminali. Dość wysokie napięcie, niekiedy nawet 125V, pozwalało na łączność na dystansie wielu kilometrów. Co ważniejsze, pętle te nie przyjęły się na długo, bo dość szybko powstały modemy współpracujące z liniami telefonicznymi, a dla połączeń krótkodystansowych wspomniany już standard RS-232.
Standard MIDI używa pętli prądowych, przy czym napięcie ograniczone jest do 5V, a prąd do 5mA, przez co długość połączenia nie przekracza 15 metrów. Dodatkowo ekranowanie przewodu MIDI jest podłączone do masy tylko po stronie wyjścia, a optoizolacja jest zaimplementowana zawsze po stronie wejścia. Zapobiega to pętlom masy między różnymi urządzeniami.
Pętla prądowa 20mA w wersji współczesnej
Przyjmujemy założenie, iż przepływ prądu oznacza stan niski, brak przepływu zaś oznacza stan wysoki. Jenen układ w pętli ma źródło prądowe, przy czym jest kilka możliwych implementacji tegoż. Istnieje też kilka sposobów realizacji samego połączenia, ale ja przedstawię przede wszystkim najciekawszy wariant: dwuprzewodowy z wieloma urządzeniami w pętli. Rozpatrzmy najprostszą formę czteroprzewodową z optoizolacją, ale zasilaniem pętli tylko po jednej stronie:
Strona aktywna zapewnia zasilanie obu pętli. Napięcie zasilania może być dowolnie wysokie, nawet kilkaset woltów. Ograniczeniem jest tylko napięcie maksymalne źródeł prądowych oraz dopuszczalne napięcie izolacji transoptorów. Po stronie aktywnej użyte są transoptory by uprościć kwestię przesuwania poziomów napięć. Transoptor nadawczy VO1 będzie mieć fototranzystor na potencjale maksymalnego napięcia zasilania, podczas gdy transoptor odbiorczy VO4 będzie operował z napięciem zależnym strat na długości pętli. To napięcie określa źródło prądowe Cs2. Strona pasywna też jest odizolowana, bo straty na obu pętlach mogą być różne od siebie. Taka konfiguracja pozwala na dwukierunkową łączność punkt-punkt. Prędkość transmisji i maksymalny dystans zależą tylko i wyłącznie od wybranych transoptorów, napięcia zasilania i napięcia maksymalnego źródeł prądowych.
A co, jeśli mamy wiele urządzeń w różnych odległościach, ale ograniczony fundusz na przewody?
Można wtedy zrobić sieć simplex według schematu:
Jak widać, zmienił się sposób łączenia transoptorów po stronie aktywnej i pasywnej. Każde urządzenie w pętli powoduje spadek napięcia o 2V: 1,8V na diodzie LED i 0,2V na fototranzystorze. Należy to uwzględnić dobierając liczbę urządzeń, długość całej pętli i napięcie zasilania. Za to pętla może stanowić prawdziwą pętlę biegnąc od jednego urządzenia do następnego, jak w sieci pierścieniowej. To rozwiązanie jest przeze mnie rekomendowane, nawet jeśli będzie realizowana łączność między dwoma urządzeniami - upraszcza okablowanie i budowę strony aktywnej.
Przykładowa implementacja
Spójrzmy na schemat sieci Simplex 20mA dla dwóch urządzeń:
Napięcie robocze sieci wynosi w tym przykładzie 125V. Rezystory R1, R5 i tranzystor Q1 oraz dioda LED w transoptorze VO1 tworzą prosty inwerter. Tranzystor w VO1 cały czas przewodzi, rezystor R2 poprawia jego charakterystykę przełączania.Rezystory R3 i R4 polaryzują tranzystor w transoptorze VO2. Układ ten jest powielony w drugą stronę, więc nie będę go omawiał. Rezystory R11 i R12 oraz tranzystory Q3 i Q4 tworzą proste źródło prądowe. Q3 musi mieć napięcie Vce na poziomie przynajmniej 140V i moc strat przynajmniej 5W. W roli pozostałych tranzystorów sprawdzą się BC547C. Wartości R1 i R6 zostały dobrane dla współczynnika CTR na poziomie 50% i napięcia przewodzenia 1,65V, czyli najgorszych wartości dla transoptora CNY17-1. Wartości R2, R4, R8 i R9 ustala się zależnie od zastosowanego transoptora, ale typowe wartości wynoszą od 220kΩ do 470kΩ. Teoretycznie układ powinien pozwolić na uzyskanie prędkości transmisji od 25kbps do nawet 100kbps na długich dystansach i pomimo zakłóceń. Lepsze wyniki można uzyskać z szybszymi transoptorami, co może wymagać modyfikacji układu. Jednak ostateczną prędkość transmisji należy dobrać eksperymentalnie - ułatwi to fakt, iż strona aktywna jest na początku i na końcu pętli.
Jak uzyskać napięcie zasilania pętli?
Sposobów jest wiele. Można zaprojektować przetwornicę typu Boost, Flyback, Forward albo (mój ulubiony typ) RCC czyli Ringing Choke Converter. Jest sporo gotowych projektów dla zegarów Nixie i innych konstrukcji lampowych. Najprościej jednak będzie wziąć mały transformator sieciowy 230V/12V (dobrym źródłem są zasilacze antenowe - mam kilka z uszkodzonymi kablami) i podłączyć jeden koniec uzwojenia wtórnego do linii 5V, drugi przez tranzystor średniej mocy do masy, i załączać go sygnałem PWM o częstotliwości 50-60Hz i wypełnieniu tak dobranym, by za prostownikiem było napięcie 125V. Po stronie wtórnej może być potrzebny obwód gasikowy, jak przy przetwornicy Flyback.
Aha, nie zawsze potrzeba napięcia 125V - często może wystarczyć 12-24V - to zależy od strat na przewodach i liczby układów w sieci.
Sieć wymaga zasilania każdego układu by jej nie przerwać. Jak rozwiązać problem zaniku zasilania jednego układu w sieci?
Z pomocą przekaźnika:
Przy braku zasilania przekaźnik zwiera ze sobą oba wejścia pętli strony pasywnej. Z chwilą pojawienia się zasilania przekaźnik załącza się i rozwiera pętlę. W tej wersji nagłe wyłączenie lub włączenie zasilania spowoduje przerwanie pętli na czas przełączania przekaźnika. Podłączając przekaźnik do mikrokontrolera można jednak tego uniknąć - przy włączeniu układ czeka kilka mikrosekund aż transoptor zacznie przewodzić, a dopiero potem przełącza przekaźnik. Jeśli układ kontroluje własne zasilanie, to może najpierw wyłączyć przekaźnik, a dopiero po jakimś czasie całą resztę.
Protokół komunikacji
Podobnie jak w protokole CAN, także tutaj można zastosować prosty system arbitrażu, gdyż każde urządzenie jednocześnie może nadawać i odbierać komunikaty. Tylko w przypadku Simplex 20mA gdy jedno z urządzeń ustala stan 1, a drugie stan 0, to wszystkie urządzenia widzą stan 1, czyli odwrotnie niż w CAN. Należy też uwzględnić opóźnienia propagacji sygnałów przez transoptory. Dla wielu opóźnienia te wunosić mogą od 2µs do nawet 50µs - warto sprawdzić to w gotowym układzie. Dodatkowo należy też uwzględnić opóźnienia propagacji dla samej strony aktywnej.
Drugą opcją jest tzw. polling - jeden układ, najczęściej strona aktywna, wysyła zapytanie do pozostałych układów i czeka na odpowiedź przez ustalony czas. Jeśli zadowoli nas niska choć bezpieczna prędkość (16,3kbps), to można zaimplementować protokół 1-Wire. Zasięg będzie znacząco wyższy.
Mam nadzieję, że przedstawiony tu pomysł komuś się przyda. Chciałbym też wiedzieć, jakie są Wasze pomysły rozwiązań długodystansowej łączności kablowej. Podzielcie się też swoimi doświadczeniami z łączami radiowymi - ciekawi mnie, ilu z Was było nimi rozczarowanych, a ilu miało wręcz odwrotne doświadczenia.[/size]
Protokoły szeregowe i ich zasięgi
SPI to jeden z dwóch głównych protokołów używanych w elektronice, głównie do komunikacji między najróżniejszymi układami scalonymi i modułami. Specyfikacja przewiduje jednak maksymalny zasięg łączności nie przekraczający 10 metrów. Często jest to mniej, jeśli nie użyjemy odpowiedniego okablowania i nie ograniczymy prędkości łączności.
I2C to ten drugi protokół stosowany w elektronice, tu zasięg wynosi 10m dla 10kbps i 1m dla 100kbps.
Transmisja szeregowa wygląda lepiej, bo przy poziomie sygnałów TTL uzyskać można aż 15 metrów, a po konwersji na RS-232 i z odpowiednim okablowaniem nawet 2km (!). Problemem jest odpowiednie okablowanie. Specyfikacja określa maksymalną pojemność kabla na poziomie 2500pF, i taką z taką pojemnością powinien sobie poradzić konwerter. Przypuszczam jednak, że wiele tanich układów raczej nie da rady, więc i zasięg będzie odpowiednio mniejszy. Plus, skąd wziąć odpowiedni przewód i nie wydać na niego majątku?
CAN to protokół i sieć znane głównie z przemysłu samochodowego. Zasięg zależy od prędkości trasmisji i wynosi 40m dla 1Mbps, 250m dla 250kbps i 1km dla 10kbps. Sieć CAN używa dwużyłowej skrętki. Protokół zakłada, iż każdy układ w sieci może komunikować się z każdym innym. By uniknąć kolizji między dwoma "nadawcami", wszystkie układy w sieci nasłuchują transmisji, wliczając w to "nadawców". Jeśli dwóch lub więcej "nadawców" ustala stan 0 w sieci, to wszyscy "widzą" stan 0, łącznie z "nadawcami". Analogicznie ze stanem 1. Ale jeśli jeden "nadawca" wyśle stan 1, a inny 0, to w sieci panuje stan 0. Wtedy pierwszy "nadawca" przerywa transmisję i czeka na zakończenie ramki wiadomości, zanim ponowi próbę.
RS-485 to dość popularny standard łączności przemysłowej, spotykany też w automatyce budynków. Używa specjalizowanych konwerterów i pozwala na zasięg do 1200 metrów. Oczywiście kosztem prędkości transmisji. Przy 250kbps typowy zasięg wynosi tylko około 300m. Do budowy sieci wystarczy dwużyłowa skrętka, i można do niej podpiąć do 256 urządzeń. Aha, nie ma standardowego protokołu łączności, więc trzeba wymyślić własny.
1-Wire to rozwiązanie, które kłamie w swojej nazwie, gdyż poza przewodem sygnałowym posiada też przewód masy. Prędkość 16,3kbps to niewiele, ale dla czujników, prostych pamięci i kluczy (kojarzycie pastylki immobilizerów i niektórych zamków elektronicznych?) to wystarczy. Linia sygnałowa jest pod napięciem, zasilana przez rezystor podciągający - tak układy w sieci (o nazwie MicroLan) mogą być zasilane. Transmisja polega na cyklicznym zwieraniu linii do masy, długość impulsu określa rodzaj sygnału. Zasięg z użyciem rezystora podciągającego wynosi do 200 metrów, bardziej skomplikowane układy potrafią osiągnąć do 500m i więcej.
Wszystkie wymienione protokoły zakładają, że układy, które się ze sobą komunikują będą miały wspólny potencjał masy. Nawet CAN i RS-485. Ten ostatni zakłada, że potencjał masy między układami nie będzie się różnił o więcej jak ±7V. W innym przypadku trzeba używać układów z wbudowaną izolacją galwaniczną (które są stosownie droższe). Czy da się prościej (i taniej)? Oczywiście, że tak! A pomoże nam technika znana od dziesięcioleci w przemysłowych systemach kontrolnych.
Krótko o pętli 4-20mA
Weźmy typową sytuację w zakładzie chemicznym: sto metrów od centrum sterowania znajduje się przepływomierz, po drodze zaś mamy kilka bardzo dużych silników elektrycznych. Musimy dokładnie zmierzyć przepływ, by kontrolować proces chemiczny - inaczej kawałek zakładu chemicznego zmieni się w zgliszcza zakładu chemicznego. Pierwsza myśl, to mierzyć napięcie, którego wartość zmienia się proporcjonalnie do przepływu. Tylko to nie zadziała, bo zakłócenia generowane przez silniki elektryczne i innej urządzenia zniekształcą lub całkowicie "przykryją" napięcie płynące kablem z czujnika. Do tego pamiętajmy o rezystancji samego kabla, która to dodatkowo obniży mierzone napięcie. Dla pojedynczego czujnika dałoby się pewnie tak poprowadzić przewód, by zminimalizować wpływ otoczenia, dodać wzmacniacze i stosować inne kombinacje. Ale co, jeśli musimy okablować zakład o powierzchni tysięcy metrów kwadratowych z setkami czujników i układów wykonawczych? Nie da się. Ba, nie będzie można puścić w jednej wiązance przewodów od wielu czujników, przewodów załączających styczniki, przewodów zasilających i innych, bo przesłuchy będą za duże. Zwłaszcza jak wspólny odcinek będzie miał 100-500 metrów długości.
Ten "niedasizm" spowodował, iż inżynierowie wymyślili inne rozwiązanie: zamiast zmiennego napięcia zastosujmy zmienny prąd. Niech nasz przepływomierz zachowuje się jak regulowae źródło prądowe, zaś układ w centrum sterowania niech mierzy napięcie odkładające się na rezystorze połączonym do tego czujnika. Przyjmijmy przy tym, że minimalna wartość prądu wynosi nie 0, a 4mA, zaś maksymalna wynosi 20mA. Rezystor w układzie pomiarowym będzie miał wartość 250Ω, co da nam elegancji zakres od 1V do 5V. Spadek napięcia do zera będzie sygnalizował przerwanie obwodu. Tak oto uzyskaliśmy naszą pętlę prądową 4-20mA. Wygląda to tak:
Ale co to nam daje?
1. Używamy źródła prądowego, więc długość przewodów między nim, a rezystorem na drugim końcu pętli nie ma znaczenia - źródło ustali takie napięcie, jakie będzie niezbędne do utrzymania zadanego prądu.
2. Wszelkie zakłócenia napięciowe indukowane w przewodach nie wpłyną na wartość prądu, bo źródło dostosuje swoje napięcie tak, by prąd się nie zmienił - zadziała ujemne sprzężenie zwrotne.
3. Sposób działania pętli prądowej eliminuje też problemy przesłuchów.
4. Pętla prądowa 4-20mA pozwala też na sterowanie układami wykonawczymi - wtedy źródło prądowe jest po stronie sterownika procesu, a rezystor i układ mierzący napięcie są w urządzeniu wykonawczym.
Systemy sterowania oparte o pętlę prądową 4-20mA istnieją od wielu lat i są de facto standardem dla systemów kontroli i sterowania przemysłowego. Mają tylko dwie dość poważne wady:
1. Pętla jest "analogowa".
2. Każdy czujnik czy układ wykonawczy wymaga własnej pętli.
Oba te problemy doprowadziły do powstania kilku różnych standardów cyfrowej łączności przeznaczonych dla przemysłu. Nie będę jednak o nich pisał, gdyż nie jestem specjalistą, a i nie o tym jest ten artykuł. Zanim jednak przejdziemy do meritum, musimy zahaczyć jeszcze o historię komputerów.
Krótko o historii komputerów
Pierwsze elektroniczne komputery cyfrowe powstały pod koniec IIWŚ. Były to maszyny zbudowane z tysięcy, a nawet dziesiątek tysięcy lamp próżniowych (dlatego u nas nazywano je często mózgami elektronowymi). Zajmowały przy tym bardzo dużo miejsca. Poniżej jeden z komputerów będących rdzeniem systemu SAGE, który w latach 50tych bronił nieba nad USA:
Komputery tranzystorowe były tylko trochę mniejsze. Dopiero stworzenie układów scalonych pozwoliło na powstanie minikomputerów, czyli wielkości kilku kuchenek lub lodówek. Ponieważ komputery były dość duże i bardzo drogie, pojawiła się potrzeba, by wielu użytkowników mogło korzystać z jednego komputera, i to najlepiej zdalnie. Tak powstały terminale dostępowe. Przy okazji pojawił się problem cyfrowej łączności na większe dystanse. Jednym z pierwszych rozwiązań był pomysł podpatrzony w systemach przemysłowych, czyli pętla prądowa. Było kilka standardów, ale najpopularniejszym, zwłaszcza w czasach minikomputerów był standard 20mA. Używał on dwóch pętli, przy czym zasilanie ich było po stronie komputera, a nie terminali. Dość wysokie napięcie, niekiedy nawet 125V, pozwalało na łączność na dystansie wielu kilometrów. Co ważniejsze, pętle te nie przyjęły się na długo, bo dość szybko powstały modemy współpracujące z liniami telefonicznymi, a dla połączeń krótkodystansowych wspomniany już standard RS-232.
Standard MIDI używa pętli prądowych, przy czym napięcie ograniczone jest do 5V, a prąd do 5mA, przez co długość połączenia nie przekracza 15 metrów. Dodatkowo ekranowanie przewodu MIDI jest podłączone do masy tylko po stronie wyjścia, a optoizolacja jest zaimplementowana zawsze po stronie wejścia. Zapobiega to pętlom masy między różnymi urządzeniami.
Pętla prądowa 20mA w wersji współczesnej
Przyjmujemy założenie, iż przepływ prądu oznacza stan niski, brak przepływu zaś oznacza stan wysoki. Jenen układ w pętli ma źródło prądowe, przy czym jest kilka możliwych implementacji tegoż. Istnieje też kilka sposobów realizacji samego połączenia, ale ja przedstawię przede wszystkim najciekawszy wariant: dwuprzewodowy z wieloma urządzeniami w pętli. Rozpatrzmy najprostszą formę czteroprzewodową z optoizolacją, ale zasilaniem pętli tylko po jednej stronie:
Strona aktywna zapewnia zasilanie obu pętli. Napięcie zasilania może być dowolnie wysokie, nawet kilkaset woltów. Ograniczeniem jest tylko napięcie maksymalne źródeł prądowych oraz dopuszczalne napięcie izolacji transoptorów. Po stronie aktywnej użyte są transoptory by uprościć kwestię przesuwania poziomów napięć. Transoptor nadawczy VO1 będzie mieć fototranzystor na potencjale maksymalnego napięcia zasilania, podczas gdy transoptor odbiorczy VO4 będzie operował z napięciem zależnym strat na długości pętli. To napięcie określa źródło prądowe Cs2. Strona pasywna też jest odizolowana, bo straty na obu pętlach mogą być różne od siebie. Taka konfiguracja pozwala na dwukierunkową łączność punkt-punkt. Prędkość transmisji i maksymalny dystans zależą tylko i wyłącznie od wybranych transoptorów, napięcia zasilania i napięcia maksymalnego źródeł prądowych.
A co, jeśli mamy wiele urządzeń w różnych odległościach, ale ograniczony fundusz na przewody?
Można wtedy zrobić sieć simplex według schematu:
Jak widać, zmienił się sposób łączenia transoptorów po stronie aktywnej i pasywnej. Każde urządzenie w pętli powoduje spadek napięcia o 2V: 1,8V na diodzie LED i 0,2V na fototranzystorze. Należy to uwzględnić dobierając liczbę urządzeń, długość całej pętli i napięcie zasilania. Za to pętla może stanowić prawdziwą pętlę biegnąc od jednego urządzenia do następnego, jak w sieci pierścieniowej. To rozwiązanie jest przeze mnie rekomendowane, nawet jeśli będzie realizowana łączność między dwoma urządzeniami - upraszcza okablowanie i budowę strony aktywnej.
Przykładowa implementacja
Spójrzmy na schemat sieci Simplex 20mA dla dwóch urządzeń:
Napięcie robocze sieci wynosi w tym przykładzie 125V. Rezystory R1, R5 i tranzystor Q1 oraz dioda LED w transoptorze VO1 tworzą prosty inwerter. Tranzystor w VO1 cały czas przewodzi, rezystor R2 poprawia jego charakterystykę przełączania.Rezystory R3 i R4 polaryzują tranzystor w transoptorze VO2. Układ ten jest powielony w drugą stronę, więc nie będę go omawiał. Rezystory R11 i R12 oraz tranzystory Q3 i Q4 tworzą proste źródło prądowe. Q3 musi mieć napięcie Vce na poziomie przynajmniej 140V i moc strat przynajmniej 5W. W roli pozostałych tranzystorów sprawdzą się BC547C. Wartości R1 i R6 zostały dobrane dla współczynnika CTR na poziomie 50% i napięcia przewodzenia 1,65V, czyli najgorszych wartości dla transoptora CNY17-1. Wartości R2, R4, R8 i R9 ustala się zależnie od zastosowanego transoptora, ale typowe wartości wynoszą od 220kΩ do 470kΩ. Teoretycznie układ powinien pozwolić na uzyskanie prędkości transmisji od 25kbps do nawet 100kbps na długich dystansach i pomimo zakłóceń. Lepsze wyniki można uzyskać z szybszymi transoptorami, co może wymagać modyfikacji układu. Jednak ostateczną prędkość transmisji należy dobrać eksperymentalnie - ułatwi to fakt, iż strona aktywna jest na początku i na końcu pętli.
Jak uzyskać napięcie zasilania pętli?
Sposobów jest wiele. Można zaprojektować przetwornicę typu Boost, Flyback, Forward albo (mój ulubiony typ) RCC czyli Ringing Choke Converter. Jest sporo gotowych projektów dla zegarów Nixie i innych konstrukcji lampowych. Najprościej jednak będzie wziąć mały transformator sieciowy 230V/12V (dobrym źródłem są zasilacze antenowe - mam kilka z uszkodzonymi kablami) i podłączyć jeden koniec uzwojenia wtórnego do linii 5V, drugi przez tranzystor średniej mocy do masy, i załączać go sygnałem PWM o częstotliwości 50-60Hz i wypełnieniu tak dobranym, by za prostownikiem było napięcie 125V. Po stronie wtórnej może być potrzebny obwód gasikowy, jak przy przetwornicy Flyback.
Aha, nie zawsze potrzeba napięcia 125V - często może wystarczyć 12-24V - to zależy od strat na przewodach i liczby układów w sieci.
Sieć wymaga zasilania każdego układu by jej nie przerwać. Jak rozwiązać problem zaniku zasilania jednego układu w sieci?
Z pomocą przekaźnika:
Przy braku zasilania przekaźnik zwiera ze sobą oba wejścia pętli strony pasywnej. Z chwilą pojawienia się zasilania przekaźnik załącza się i rozwiera pętlę. W tej wersji nagłe wyłączenie lub włączenie zasilania spowoduje przerwanie pętli na czas przełączania przekaźnika. Podłączając przekaźnik do mikrokontrolera można jednak tego uniknąć - przy włączeniu układ czeka kilka mikrosekund aż transoptor zacznie przewodzić, a dopiero potem przełącza przekaźnik. Jeśli układ kontroluje własne zasilanie, to może najpierw wyłączyć przekaźnik, a dopiero po jakimś czasie całą resztę.
Protokół komunikacji
Podobnie jak w protokole CAN, także tutaj można zastosować prosty system arbitrażu, gdyż każde urządzenie jednocześnie może nadawać i odbierać komunikaty. Tylko w przypadku Simplex 20mA gdy jedno z urządzeń ustala stan 1, a drugie stan 0, to wszystkie urządzenia widzą stan 1, czyli odwrotnie niż w CAN. Należy też uwzględnić opóźnienia propagacji sygnałów przez transoptory. Dla wielu opóźnienia te wunosić mogą od 2µs do nawet 50µs - warto sprawdzić to w gotowym układzie. Dodatkowo należy też uwzględnić opóźnienia propagacji dla samej strony aktywnej.
Drugą opcją jest tzw. polling - jeden układ, najczęściej strona aktywna, wysyła zapytanie do pozostałych układów i czeka na odpowiedź przez ustalony czas. Jeśli zadowoli nas niska choć bezpieczna prędkość (16,3kbps), to można zaimplementować protokół 1-Wire. Zasięg będzie znacząco wyższy.
Mam nadzieję, że przedstawiony tu pomysł komuś się przyda. Chciałbym też wiedzieć, jakie są Wasze pomysły rozwiązań długodystansowej łączności kablowej. Podzielcie się też swoimi doświadczeniami z łączami radiowymi - ciekawi mnie, ilu z Was było nimi rozczarowanych, a ilu miało wręcz odwrotne doświadczenia.[/size]
Cool? Ranking DIY