|
|
| Mikroprocesorowa synteza częstotliwości (LM7001) |
Bardzo często jeszcze "w obrocie" znajdują się starsze
radiotelefony np. typu 3001, do których trudno jest uzyskać rezonatory
kwarcowe. Jako urządzenia radiowe charakteryzują się stosunkowo
dobrymi parametrami elektrycznymi. Warto więc poświęcić im troszkę
czasu. Starsze układy scalone PLL stosowane w dawniejszych syntezach,
już nie są produkowane i raczej trudno dostępne, zatem oparłem się
na układzie LM7001. Szacunkowy koszt elementów syntezy wynosi
kilkadziesiąt złotych.
Do projektu przyjęto następujące założenia dla urządzenia::
- zakres działania pokrywa amatorskie pasmo 2m
- praca z amatorskimi przemiennikami sterowanymi tonem 1750 Hz
- sterowanie zmianą kanałów za pomocą encodera obrotowego
- wymiary dopasowane do standardowej ramy radiotelefonu 3001
- proste przystosowanie radiotelefonu do pracy z syntezą
- łatwość wykonania układu elektronicznego
- niska cena oraz dostępność elementów
Podstawowym elementami syntezy są układ PLL LM7001 oraz mikroprocesor
ATMega8 sterujący parametrami pętli PLL.
Poniższy rysunek przedstawia schemat ideowy syntezy.(schemat)
|
|
| Na poniższej fotografii znajduje się układ próbny zbudowany na
tzw. "pająku" |
 |
| A tak wygląda radiotelefon z zamontowaną syntezą. |
 |
 |
| A oto synteza w "całej okazałości". Układy scalone
znajdują się po przeciwnej stronie płytki drukowanej, co było
wynikiem niewłaściwego wydruku połączeń na laminacie. (efekt
lustra). |
 |
Poniżej znajduje się program źródłowy dla ATMega 8 napisany w
Bascom AVR.
Aby uciąć w zarodku wszelkie dyskusje, że można to zrobić inaczej
np. wykorzystać pamięci w ATMega itd. informuję że ten projekt, w
takim wykonaniu spełnia moje skromne oczekiwania, a dla
"polepszaczy" zamieszczam plik źródłowy i życzę sukcesów. |
$regfile = "m8def.dat" 'informuje kompilator o pliku dyrektyw mikrokontrolera
$crystal = 7200000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5
Config Pinb.0 = Input 'wejście PTT z mikrofonu
Cha Alias Pind.2 ' piny dla encodera
Chb Alias Pind.3 ' piny dla encodera
Config Cha = Input ' ustawione jako wejścia
Config Chb = Input '
Config Portd.5 = Input ' port dla przycisku TON 1750 Hz
Config Portb.2 = Output ' port sterowania przekaźnikiem nadawania
Config Portd.0 = Output 'data pin5 lm7001
Config Portd.1 = Output 'Clock pin4 lm7001
Config Portd.4 = Output 'CE pin3 lm7001
Reset Portd.0 ' wstępne ustawienie stanów na portach
Reset Portd.1 ' porty transmisyjne ustawione na zero
Reset Portd.4 '
Reset Portb.2
Set Portb.0 ' port od PTT na 1
Set Portd.5 ' port dla TON na 1
Declare Sub Synteza ' program przesyłania danych do syntezy
Declare Sub Zegarek ' program zegara taktującego zapis do syntezy
Declare Sub Wyswietlaj ' program wyświetlający
Declare Sub Roger ' program rogera - litera K - morse
Dim A As Byte ' zmienna dla petli FOR
Dim Freq As Word ' zmienna ustawiająca częstotliwość LM7001
Dim Sterowanie As Byte ' zmienna ustawiająca paramatry LM7001
Dim Wynik As Long ' zmienna wyswietlajaca czestotliwosc
Dim Pcz As Word ' czestotliwość pośredniej
Dim Fpom As Word ' zmienna do przesłania danych do syntezy
Dim Rpt As Byte ' praca z przemiennikiem
Dim Zmiana As Bit ' wskaźnik zmiany nastawy
Dim S_roger As Bit
Freq = 5394 ' fodb=(145550-10700)/25=5394
Pcz = 428 ' dodanie pcz do freq nadawczej
Zmiana = 0 ' nie było zmiany od encodera
S_roger = 0 ' roger nie bedzie wykonywany
Config Int0 = Falling
Const Debouncetime = 1 ' kanał B dla encodra na 1
Set Chb
On Int0 Getencoder ' program dla przerwania encodera
Enable Interrupts
Enable Int0
Cursor Off ' wyłączenie kursora
Call Synteza ' ustawienie LM7001
Cls
Lcd "SQ1FTB synteza"
Wait 1
Call Synteza
'-------------------- główna pętla programowa ----------------------------------
Do
If Pind.5 = 0 Then
Waitms 300
If Pind.5 = 0 Then
If S_roger = 0 Then S_roger = 1 Else S_roger = 0
Call Wyswietlaj
End If
End If
If Pinb.0 = 0 Then
Set Portb.2 ' nadawanie
Call Synteza
While Pinb.0 = 0
If Pind.5 = 0 Then
Sound Portb.1 , 800 , 343 ' ton 1750 Hz
End If
Set Pind.5
Wend
If S_roger = 1 Then
Call Roger
End If
Reset Portb.2 ' koniec nadawania
Call Synteza ' ustawienie częstotliwości dla
odbioru
End If
If Zmiana = 1 Then ' była zmiana kanału
przez encoder
Call Synteza
Zmiana = 0
End If
Loop
End
'-------------------------------------------------------------------------------
Getencoder:
Waitms Debouncetime
If Cha = 0 Then
If Chb = 0 Then Incr Freq Else Decr Freq
End If
Zmiana = 1
Gifr = 64
Return
'-------------------------------------------------------------------------------
Sub Zegarek
Waitus 10
Set Portd.1
Waitus 10
Reset Portd.1
Waitus 10
End Sub
'-------------------------------------------------------------------------------
Sub Synteza
Sterowanie = &B10100000 '25 kHz
If Freq >= 5396 And Freq <= 5403 Then
Rpt = 1 ' przestrzeń kanalowa dla
przemienników
Else
Rpt = 0
End If
If Portb.2 = 1 Then
Fpom = Freq + Pcz ' nadajesz, zatem
f nad =f odb +10.7MHz
If Rpt = 1 Then
' jeżeli to przemiennik to fnad=fodb-600kHz
Fpom = Fpom - 24
End If
Else
Fpom = Freq
End If
Reset Portd.1 ' ustawienie lini CL=0
Set Portd.4 ' ustawienie lini CE=1
For A = 0 To 13 ' wysyłanie bitów częstotliwości D0 - D13
If Fpom.a = 1 Then ' bit po bicie
Set Portd.0
Else
Reset Portd.0
End If
Call Zegarek ' po każdym bicie takt zegara
Next A '
Reset Portd.0 ' wysłanie T0=0
Call Zegarek ' takt zegara
Reset Portd.0 ' wysłanie T1=0
Call Zegarek ' takt zegara
For A = 0 To 7 ' wysyłanie bitów sterujących LM7001
If Sterowanie.a = 1 Then ' B0,B1,B2,TB,R0,R1,R2,S
Set Portd.0
Else
Reset Portd.0
End If
Call Zegarek ' po każdym bicie takt zegara
Next A '
Reset Portd.4 ' koniec transmisji CE=0
Call Wyswietlaj ' wyświetlenie nowej częstotliwości
End Sub
'-------------------------------------------------------------------------------
Sub Wyswietlaj
Cls
Wynik = Freq + Pcz
Wynik = Wynik * 25 ' 25kHz - krok syntezy
If S_roger = 1 Then
Lcd "SQ1FTB beep"
Else
Lcd "SQ1FTB synth"
End If
If Portb.2 = 1 Then
Lcd " NAD"
Else
Lcd " ODB"
End If
Lowerline
If Rpt = 1 Then
Lcd Wynik ; " MHz [RPT]"
Else
Lcd Wynik ; " MHz"
End If
End Sub
'-------------------------------------------------------------------------------
Sub Roger ' nadawanie morsem literki K
Sound Portb.1 , 300 , 343
Waitms 100
Sound Portb.1 , 100 , 343
Waitms 100
Sound Portb.1 , 300 , 343
End Sub
|
Dla zainteresowanych montażem syntezy do radiotelefonu 3001(11) podaję schemat montażowy.
|
|
|
Brak dodanych komentarzy. Może czas dodać swój?
|
|
|
Zaloguj się, aby móc dodać komentarz.
|
|
Tylko zarejestrowani użytkownicy mogą oceniać zawartość strony Zaloguj się lub zarejestruj, żeby móc zagłosować.
Brak ocen. Może czas dodać swoją?
|
|
|
· Gości online: 5
· Użytkowników online: 0
· Łącznie użytkowników: 29
· Najnowszy użytkownik: SP7XIA
|
|