Tajemnice ATARI

ODBIÓR TRANSMISJI RTTY


   Transmisja RTTY na falach krótkich z szybkością 45 - 50B stosowana jest przez służby meteorologiczne i agencje prasowe, a także w radiokomunikacji amatorskiej. W artykule opisano sposób wykorzystania 8-bitowego komputera ATARI do odbioru transmisji dalekopisowej nadawanej drogą radiową (RTTY). Przedstawiono schemat przystawki umożliwiającej współpracę komputera i odbiornika radiowego oraz opracowane przez autora programy.

Transmisja RTTY


   Od dziesięcioleci już w dalekopisach elektromechanicznych stosowany jest asynchroniczny kod 5bitowy. Każdy wysyłany znak złożony jest z 1 bitu startu, 5 bitów zawierających kod znaku oraz 1,5 bitu stop. Przy szybkości 50B każdy bit ma długość20ms. Bitów informacyjnych jest tylko 5, co oznacza zaledwie 32 kombinacje, a to za mało żeby przesłać wszystkie znaki alfabetu, cyfry itd. Poradzono sobie, dzieląc wszystkie znaki na dwie grupy. Jedna to litery, druga zaś - cyfry i znaki przestankowe. Odpowiednie kody przełączają dalekopis na drukowanie aktualnie potrzebnej grupy znaków.

Odbiór sygnału RTTY

   W transmisji radiowej sygnału dalekopisowego stosowane jest z reguły kluczowanie częstotliwości nośnej nadajnika (FSK - ang. Frequency Shift Keying). Stanom "0" i "1" odpowiadają częstotliwości różniące się o 170 lub 850Hz. Zadanie odebrania i zdekodowania transmisji wykonuje się w następujących krokach:

1 - zamiana kluczowania częstotliwości na kluczowanie amplitudy na poziomie możliwym do przetwarzania przez komputer,
2 - dekodowanie znaków, przesyłanie ich na ekran monitora oraz do pamięci w celu ew. zapisania na dyskietkę do późniejszego przejrzenia lub wydrukowania. Pierwszą część procesu realizować trzeba w przystawce do odbiornika radiokomunikacyjnego. Drugą wykonuje w całości komputer, zastępując wielce skomplikowany dalekopis mechaniczny, zawierający kilogramy przekaźników, silników, sprzęgieł elektromagnetycznych... Szybkość transmisji 50B jest jak na "warunki komputerowe" bardzo mała. Można dzięki temu uniknąć wyłączania obrazu w czasie odbioru znaków. Pojawiają się one na ekranie na bieżąco, co jest sporą atrakcją przy korzystaniu z programu.

Przystawka do odbioru sygnału
z kluczowaniem częstotliwości (FSK)


   1. Na wyjściu odbiornika komunikacyjnego, prawidłowo dostrojonego do odbieranej fali, otrzymuje się sygnał o częstotliwości ok. 2500Hz kluczowanej z dewiacją 850 lub 170Hz. Istnieje wielka rozmaitość układów do dekodowania transmisji FSK. Moje rozwiązanie oparłem o układ scalony UL1200, który zwykł pracować jako wzmacniacz i detektor FM na częstotliwości 10,7MHz. Jak się jednak okazało, pracuje on doskonale również na częstotliwościach akustycznych. Obwód L1-C2 zapewnia wstępną selektywność, zaś L2-C7 -to obwód referencyjny detektora FM. Na wyjściu (7) układu US1 uzyskuje się już sygnał z kluczowaną amplitudą (ok. 1Vpp). Sygnał ten wraz z napięciem odniesienia z końcówki (10) US1 kierowane są do wejść wzmacniacza operacyjnego US2, pracującego jako komparator. Wzmacnia on sygnał do amplitudy bliskiej napięciu zasilania i pozwala odfiltrować zakłócenia dzięki ograniczeniu pasma przenoszenia (C11). Połączone jako inwertery bramki układu US3 formują ostatecznie przebieg i umożliwiają przełączanie jego polaryzacji. Tranzystor wyjściowy steruje diodę LED wskazującą optycznie stan logiczny na wyjściu oraz transoptor , którego fototranzystor wyjściowy połączony jest do gniazda joysticka 1 między końcówkę masy i wejście TRIG. Wskazane jest, aby transoptor montować wewnątrz wtyku - unika się w ten sposób wyprowadzania zakłóceń z komputera do odbiornika przez promieniowanie z przewodu łączącego komputer z przystawką. Sposób montażu transoptora winien zagwarantować galwaniczne oddzielenie komputera od przystawki. Napięcie zasilające przystawkę (najlepiej stabilizowane) powinno wynosić 10-12V.



   2. Układ detektora z BFO Odbiór RTTY jest możliwy nawet na zwykłym odbiorniku z zakresem fal krótkich. Musi on pokrywać odpowiednie pasma. Niezwykle istotna jest stabilność czasowa częstotliwości dostrojenia - 100Hz to już bardzo dużo przy odbiorze FSK! Dostatecznie dobrej stabilności można oczekiwać w odbiornikach wyższej klasy z rozciągniętymi zakresami fal krótkich (sam używam radia Sabina R610 z ELTRY) W celu uzyskania na wyjściu sygnału potrzebnego do dekodera FSK, trzeba odbiornik uzupełnić o detektor z BFO - jak do odbioru telegrafii A1, czy SSB. Schemat układu wypróbowanego przeze mnie pokazany jest na rys. 2. Sygnał z odbiornika najlepiej pobierać z końcówki ostatniego filtru pośredniej częstotliwości łączonego do detektora - np. końcówką(9) spotykanego w krajowych odbiornikach układu UL1211N. Sygnał wyjściowy o częstotliwości akustycznej podawany jest na wyjście (WY) do dalszego dekodowania FSK oraz na wyjście (SŁ) - do dowolnego typu słuchawki, która bywa później bardzo pomocna przy dostrajaniu odbiornika do stacji . Oba omawiane układy można umieścić w jednej obudowie. Długość przewodu ekranowanego łączącego z odbiornikiem nie powinna przekraczać ok. 30 cm.

URUCHOMIENIE UKŁADÓW


   Do uruchomienia i zestrojenia układów przystawki potrzebny jest komputer ATARI, miernik uniwersalny i najprostszy nawet oscyloskop (ew. miliwoltomierz szerokopasmowy).

1. Dekoder FSK


   a. Przyłączyć wyjście fonii z gniazda monitorowego komputera do wejścia dekodera. Do punktu PP 1 przyłączyć oscyloskop lub miliwoltomierz napięcia zmiennego, a do punktu PP2 miernik uniwersalny na zakresie 10V napięcia stałego.

   b. Wczytać "Turbo Basic XL" i uruchomić następujący program:

10 POKE 731,1:? CHR$(125)
20 FOR F=2100 TO 2800 STEP 20
30 X=INT((894895-7*F)/F)
40 CLOSE #2:OPEN #2,4,0,"K:":GET #2,Z
50 DSOUND 0,X,10,15
60 ? F
70 NEXT F:POKE 731,0:CLOSE #2

   c. Kolejne naciskanie dowolnego klawisza powoduje generację sygnału, którego zmieniająca się co 20Hz częstotliwość jest wypisywana na ekranie. Nanosząc wskazania obu mierników na wykres w funkcji częstotliwości, powinniśmy uzyskać charakterystyki zbliżone do pokazanych na rys. 3.

   Ewentualne przesunięcie maksimum obwodu wejściowego (PP1) względem f0 krzywej na wyjściu (PP2) trzeba skorygować - np. dobierając wartości kondensatorów w obwodach rezonansowych.



   d. Uruchomić następujący program:

10 REM GENERACJA PROSTOKATA 10ms/20ms
20 REM Z DEWIACJA 200HZ
30 INPUT "PODAJ WARTOSC F0= ",F
40 XL=INT((894895-7*(F-100))/(F-100))
50 XH=INT((894895-7*(F+100))/(F+100))
60 DSOUND 1,XL,10,15
70 FOR F=1 TO 12:NEXT F
80 DSOUND 1,XH,9,15
90 FOR F=1 TO 24:NEXT F
100 GOTO 60
   Generuje on sygnał symulujący transmisję "FSK": kolejno po ok. 10 i 20ms częstotliwości f0+100Hz i f0-100Hz, gdzie fo jest częstotliwością środkową zmierzoną w poprzednim kroku procedury. Na czas pomiaru emiter tranzystora wyjściowego w transoptorze połączyć z masą, zaś kolektor przez rezystor ok. 4,7k z (+) zasilania i wejściem oscyloskopu. Powinno się uzyskać przebieg jak na rys.4. Polaryzacja jego powinna się zmieniać w zależności od położenia przełącznika P.


   Odłączyć dodatkowe elementy od wyjścia transoptora. Sprawdzić omomierzem, czy obie końcówki wyjściowe są całkowicie odizolowane od układu dekodera FSK. Jeśli tak, można przystawkę przyłączyć do komputera. Bezpieczniej jest robić to przy wyłączonych zasilaniach przystawki i komputera.

2. Detektor z BFO.


   a. doprowadzić do wejścia sygnał pośredniej częstotliwości - np. z odbiornika dostrojonego na maksimum do silnej stacji. Do końcówki 1 cewki L1 przyłączyć oscyloskop lub miliwoltomierz.

   b. obracając rdzeniem cewki filtru wejściowego (L1/L2) uzyskać maksimum amplitudy - rzędu 0,5V.

   c. Przyłączyć oscyloskop, lub słuchawkę do wyjścia S. Rdzeniem cewki L3/L4 ustawić BFO na minimum częstotliwości dudnień.

Program do odbioru RTTY

   Program użytkowy składa się z części basicowej oraz zapisanej w liniach "DATA" części w języku maszynowym. Program w języku maszynowym wykonuje składanie znaków oraz ich zapis na ekran i do pamięci (od adresu $5000 do $8FFF). Jak już wspomniałem, udało mi się uniknąć wyłączania obrazu w czasie realizacji szybkich procedur w języku maszynowym. Do odpowiednio precyzyjnego odmierzania czasu użyto komórki pamięci VCOUNT. Obsługa programu polega na wyborze pożądanej funkcji z menu.

1 - uruchamia procedurę odbioru znaków na ekran i do pamięci. Po włączeniu wtyku przystawki FSK do gniazda joysticka 1 i dostrojeniu odbiornika do odpowiedniej częstotliwości powinniśmy obserwować odbiór tekstu na ekranie. Jeśli tak nie jest, przyczyną może być niewłaściwa polaryzacja sygnału - można ją skorygować przełącznikiem P. Bardzo pożyteczny przy dostrajaniu się jest oscyloskop przyłączony np. do punktu PP2. Powinien pokazywać przebieg prostokątny o najmniejszej szerokości impulsu ok. 20ms. W czasie odbioru transmisji na ekran można tę funkcję przerwać, naciskając START+OPTION - powoduje to wyjście do menu.

2 - przeglądanie zawartości pamięci, gdzie znajduje się tekst odebrany przez interface, lub wczytany z dyskietki. Przeglądanie można też przerwać przyciskiem SELECT - (powrót do menu)

3 - zapis na dyskietkę tekstu ostatnio odebranego. Nazwę do zapisu podaje się bez rozszerzenia - program dodaje rozszerzenie ".TTY". Teksty zapisywane są na dysk jako pliki ASCII i można je później odczytać lub wydrukować za pomocą dowolnego edytora tekstów.

4 - odczytywanie z dysku wcześniej, zapisanych plików. Po naciśnięciu "4" podawane są wszystkie znajdujące się na dysku pliki posiadające rozszerzenie ".TTY". Nazwę wybranego pliku trzeba wpisać już bez rozszerzenia.

   Każde wejście w realizację funkcji "1" lub "4" powoduje skasowanie ew. istniejącego do owej obwili w pamięci tekstu i zastąpienie go nowym. Program basicowy jest dość "czuły" na przeróbki. Są w nim odwołania do parametrów zawartych w części maszynowej, a także synteza wierszy programu. Wystarczy zatem nieostrożna renumeracja i kłopot gotowy. Po przepisaniu części maszynowej do pamięci, parametr określający szybkość transmisji (50B) znajduje się pod adresem 1680.


Wykaz podzespołów do rys. 1:

US1 - UL-1200
US2 - ULY-7741
US3 - MCY-74011
T - BC148
TO - transoptor, np CQ13BP
D - dowolna dioda LED
C1,C11 -10nF
C2,C7 - 0,1uF
C3,C4 - 0,22uF
C5,C6,C10 - 10uF
C8 - 1nF
C9 - 22nF
R1,R9 - 100om
R2,R3 - 4,7k
R4,R6 - 10k
R5 - 180k
R7 - 680om
R8 - 470om
L1,L2 - cewki 37mH, np. 1300zw przewodu 0,1mm na karkasie z rdzeniem od transformatora sterującego TS12, TS13 (OTV Vela, Neptun)
Wykaz podzespołów do rys. 2:

US - UL1042
C1 - 47pF
C2,C3 - 1,6nF
C4 - 33nF
C5 - 47uF
C6 - 0,22uF
C7 - 820pF
C8 - 100uF
C9 - 10uF
R1 - 220om
R2 - 1k
R3 - 330om
R4,R6 - 4,7k
R5 -270k
R7 -680om
R8,R9 - 470om
R10 - 100om


1 REM *******************************
2 REM *   PROGRAM DO ODBIORU RTTY   *
3 REM *  autor: Witold Prokopowicz  *
4 REM *        Bialystok 1991       *
5 REM *******************************
10 DIM ML$(6),COTO$(6),F$(20):IOB=848
20 ? CHR$(125):POSITION 10,5:? "Jeszcz
e chwilka i ..."
30 FOR A=0 TO 237:READ D:POKE (1536+A)
,D:POKE 709,D:NEXT A
35 GRAPHICS 0
40 ? "    /------------------------\"
50 ? "    | 1 --> ODBIOR RTTY      |"
60 ? "    | 2 --> PRZEJRZYJ TEKST  |"
70 ? "    | 3 --> ZAPISZ NA DYSK   |"
80 ? "    | 4 --> CZYTAJ Z DYSKU   |"
90 ? "    \------------------------/"
100 CLOSE #2:OPEN #2,4,0,"K:":GET #2,C
O
110 CO=CO-48:IF CO<1 OR CO>4 THEN 35
120 ON CO GOSUB 130,140,220,290:GOTO 3
5
130 GRAPHICS 0:RTTY=USR(1536):RETURN
140 ? CHR$(125):FOR A=20480 TO 20480+P
EEK(1583)+256*(PEEK(1584)-80):? CHR$(P
EEK(A));
150 IF PEEK(53279)<>7 THEN A=36864
160 NEXT A
170 ? :? "*** KONIEC TEKSTU ***"
180 ? "  nacisnij cokolwiek"
190 CLOSE #2:OPEN #2,4,0,"K:":GET #2,C
0
200 RETURN
210 REM SYNTEZA WIERSZA 250
220 ? :? "NAZWA ZBIORU DO ZAPISU":INPU
T COTO$
230 N1=250:N2=8:GOSUB 390:TRAP 35
240 REM *****************************
250 REM *
260 REM *****************************
270 POKE IOB+2,11:POKE IOB+8,PEEK(1583
):POKE IOB+9,PEEK(1584)-80:POKE IOB+4,
0:POKE IOB+5,80
280 S=USR(1768):CLOSE #1:RETURN
290 GOSUB 450
300 REM SYNTEZA WIERSZA 340
310 ? :? " PODAJ NAZWE ZBIORU DO ODCZY
TU":INPUT COTO$
320 N1=340:N2=4:GOSUB 390:TRAP 35
330 REM *****************************
340 CLOSE #1:OPEN #1,N2,128,"D:DDK2.TT
Y"
350 REM *****************************
360 POKE IOB+2,7:POKE IOB+8,0:POKE IOB
+9,PEEK(742)-PEEK(145):POKE IOB+4,0:PO
KE IOB+5,80
370 S=USR(1768):CLOSE #1
380 POKE 1583,PEEK(IOB+8):POKE 1584,PE
EK(IOB+9)+80:RETURN
390 GRAPHICS 0:POSITION 2,2
400 ? N1;" CLOSE#1:OPEN#1,N2,128,";CHR
$(34);"D:";COTO$;".TTY";CHR$(34)
410 ? "CONT"
420 POSITION 2,0:POKE 842,13
430 STOP
440 POKE 842,12:RETURN
450 REM WYDRUK KATALOGU DYSKU
460 REM TYLKO Z ROZSZERZENIEM .TTY
470 ? CHR$(125):TRAP 490:CLOSE #1:OPEN
 #1,6,0,"D:*.TTY"
480 INPUT #1,F$:? F$,:INPUT #1,F$:? F$
:GOTO 480
490 RETURN
500 DATA 104,169,000,141,047,006,169,0
80,141,048,006,032,071,006,201,027,240
,113,201,031
510 DATA 240,101,170,189,169,006,032,0
46,006,032,176,242,173,031,208,201,002
,240,027,201
520 DATA 007,208,245,076,011,006,141,0
00,080,238,047,006,208,003,238,048,006
,072,173,048
530 DATA 006,201,144,240,002,104,096,1
04,076,001,006,160,005,169,000,141,168
,006,173,016
540 DATA 208,208,251,032,142,006,032,1
39,006,078,168,006,173,016,208,240,008
,169,016,013
550 DATA 168,006,141,168,006,136,240,0
03,076,086,006,032,139,006,173,016,208
,240,208,173
560 DATA 168,006,096,169,169,141,024,0
06,076,011,006,169,201,141,024,006,076
,011,006,032
570 DATA 142,006,072,162,041,032,153,0
06,202,208,250,104,096,173,011,212,041
,001,208,249
580 DATA 173,011,212,041,001,240,249,0
96,000,032,069,155,065,032,083,073,085
,155,068,082
590 DATA 074,078,070,067,075,084,090,0
76,087,072,089,080,081,079,066,071,032
,077,088,086
600 DATA 032,032,051,155,045,032,047,0
56,055,155,032,052,035,044,037,058,040
,053,043,041
610 DATA 050,032,054,048,049,057,063,0
32,032,046,047,061
620 DATA 104,162,16,76,86,228,

Witold Prokopowicz

Powrót na start | Powrót do spisu treści | Powrót na stronę główną

Pixel 2001