22.10.2014 05:33
Nawigacja
· Strona główna
· Artykuły
· Download
· Galeria zdjęć
· Kontakt
· Dyplomy PSK
Ostatnie artykuły
· Mikroprocesorowy mie...
· Impulsator obrotowy ...
· Mikroprocesorowy klu...
· Mikroprocesorowy mie...
· Synteza 2m na LM7001
CallBook SP

Nawigacja
Artykuły » Projekty elektroniczne » Synteza 2m na LM7001
Synteza 2m na LM7001
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.
Logi stacyjne
SQ1FTB
SP1EAD
SP1PLA
Lokator
QRA lokator
Logowanie
Nazwa użytkownika

Hasło



Nie możesz się zalogować?
Poproś o nowe hasło
Aktualnie online
· Gości online: 1

· Użytkowników online: 0

· Łącznie użytkowników: 1
· Najnowszy użytkownik: sq1ftb
Dziennik lekcyjny


Pogoda w Świdwinie

Wygenerowano w sekund: 0.02 482,164 unikalne wizyty