PLL TSA6057 Sterownik syntezy czest

background image

http://www.easy-soft.tsnet.pl/

Sterownik syntezy częstotliwości z

układem TSA6057

Przedstawiam drugi już sterownik syntezy

częstotliwości tym razem dla układu

scalonego firmy PHILIPS TSA6057. Różni

się on od poprzednio prezentowanego

zbudowanego z użyciem układu SAA1057

(

http://www.easysoft.tsnet.pl/projects.ht

ml#saa1057

) kilkoma parametrami

takimi, jak: krok syntezy, prąd pętli PLL i

moim zdaniem najważniejszym: zakres

częstotliwości pracy od 30 do 150MHz.

Koszt całego sterownika jest porównywalny do poprzedniego. Różni je tylko cena samego

układu syntezy. Schemat i płytka prototypowa uległy zmianie w minimalnym stopniu.

Opis działania.

Sercem sterownika jest mikrokontroler z rodziny AVR - AT90S4433. Program napisany jest w

języku Bascom AVR. Konstrukcja sterownika jest tak prosta i tak podobna do poprzedniej

wersji, że nie wymaga dodatkowego opisu. Zdecydowanie większa część sprzętowa

sterownika jak i jego program zostają bardzo podobne o ile nie takie same jak poprzednik,

taki też był cel budowy drugiego sterownika. Uzyskaliśmy coś w rodzaju uniwersalnego

modułu sterowania z możliwością wyboru układu wykonawczego.

Tak, jak i poprzednio, Portc.2 służy do sterowania podświetleniem. Celowo nie narysowałem

tego na schemacie. Cześć LCD ma podświetlanie zrealizowane z użyciem diod LED, część

używa do tego celu folii elektroluminescencyjnej. Kwestię sposobu sterowania

podświetleniem pozostawiam otwartą. Wyjście mikrokontrolera przyjmuje stan niski, gdy

podświetlenie powinno być załączone.

Wyjścia bistabilne i monostabilne służą do sterowania załączaniem np. końcówki mocy

nadajnika lub innym dołączonym urządzeniem.

Opis interfejsu TSA6057.

Aplikację układu TSA6057 wykonałem według schematu z dokumentacji PDF pochodzącej ze

strony internetowej producenta. Mikrokontroler komunikuje się z układem TSA6057 poprzez

2-przewodowy interfejs I

2

C. Wykorzystywane są 3 polecenia języka kompilatora języka

Bascom AVR: I2Cstart, I2Cwbyte i I2Cstop. Nastawy dla układu syntezy przesyłane są zgodnie

z opisem zawartym w dokumentacji producenta. Układ wykonany ze sprawdzonych elementów

działa niezawodnie, natychmiast po włączeniu, bez dodatkowego uruchamiania.

Michał Wojtków “Sterownik układu syntezy TSA6057”

- STRONA 1/11 -

background image

http://www.easy-soft.tsnet.pl/

Obsługa programu.

Po zmontowaniu całości konieczne jest wprowadzenie i zapamiętanie nastaw SAA1057 w

wewnętrznej pamięci EEPROM mikrokontrolera. Do tego celu używane są komórki EEPROM

znajdujące się pod adresami 1 do 3. Są to pojedyncze bajty, w których należy zapisać

ustawienia układu syntezy (konfiguracja i częstotliwość). Żądane wartości można zapisać przy

pomocy programatora, można również po pierwszym uruchomieniu skorzystać z funkcji

FORMAT w Menu ustalającej domyślne nastawy syntezy.

Po załączeniu pojawia się komunikat – powitanie, następnie mikrokontroler przechodzi do

sprawdzenia ustawień sprzed wyłączenia zasilania i wysyła do układu TSA6057 informacje o

tych ustawieniach. W ten sposób przywracane są poprzednio dokonane nastawy. Po tych

ustawieniach sterownik wyświetla tylko częstotliwość generowaną przez układ a przyciskom

S1..S5 przyporządkowano następujące funkcje:

[S1] wejście do menu

[S2] zmiana stanu wyjścia bistabilnego (wyprowadzenie portc.0)

[S3] zmiana stanu wyjścia monostabilnego (wyprowadzenie portc.1)

[S4] skrót do menu zmian częstotliwości

[S5] załączenie na 10 sekund podświetlania LCD (sterowanie poprzez wyprowadzenie

2 portu C)

Menu główne umożliwia wybór następujących funkcji:

1.

SETUP, w którym możemy zmienić wszystkie ustawienia konfiguracji TSA6057:

a. kroku syntezy (10kHz i 25kHz)

b. prądu pętli PLL (5uA i 500uA)

c.

konfiguracji wyjścia BAND SWITCH OUTPUT (SINK CURRENT i FLOATING)

2.

FREQUENCY umożliwiającej zmianę częstotliwości generowanej przez układ (ta

funkcja dostępna jest również po załączeniu zasilania lub wyjściu z menu głównego).

3.

FORMAT - służy do powrotu do ustawień "fabrycznych" w przypadku kiedy stracimy

orientację w ustawieniach jakich dokonaliśmy (można również użyć po

zaprogramowaniu procesora, gdy w eeprom są zapisane same HFF

Wyjście każdego poziomu menu następuje po wciśnięciu klawisz [S5]. Opuszczenie tego

poziomu menu odbywa się po wyborze jednej z nich. Aby zmienić częstotliwość należy użyć

opcji FREQUENCY dostępnej z poziomu „zerowego” po naciśnięciu przycisku [S4] lub po

wejściu do menu głównego. Teraz przyciskami [S1] i [S2] możemy zmieniać częstotliwość w

górę i w dół.

Sterownik wyśle nową nastawę do TSA6057 dopiero po potwierdzeniu przez naciśnięcie [S3]

lub wyjściu do menu głównego (klawisz [S5]). Celowo nie są wysyłane nowe ustawienia

częstotliwości po każdej jej zmianie w górę lub dół, aby uniknąć ciągłego przestrajania i tym

samym zakłócania pracy innych urządzeń nadawczo - odbiorczych. Jak poprzednio - nie ma

także ograniczenia pasma częstotliwości. W związku z tym sterownik będzie przestrajał układ

syntezy w całym zakresie pracy układu TSA6057, czyli od 30 do 150MHz.

Michał Wojtków “Sterownik układu syntezy TSA6057”

- STRONA 2/11 -

background image

http://www.easy-soft.tsnet.pl/

Budowa modelu.

W dokumentacji sterownika nie ma wzoru

płytki drukowanej. Jej projekt w tym

zakresie częstotliwości raczej nie powinien

sprawić większych trudności przeciętnemu

elektronikowi - amatorowi. Do prób

używałem płytki uniwersalnej, z otworami

i polami lutowniczymi. Jako generatora

VCO użyłem, najzwyklejszej głowicy

radiowej. Pewną pomocą może się okazać

zamieszczone zdjęcia sterownika.

Michał Wojtków

michallo4@wp.pl

Michał Wojtków “Sterownik układu syntezy TSA6057”

- STRONA 3/11 -

background image

http://www.easy-soft.tsnet.pl/

Michał Wojtków “Sterownik układu syntezy TSA6057”

- STRONA 4/11 -

background image

http://www.easy-soft.tsnet.pl/

'*******************************************************************************

' STEROWNIK SYNTEZY CZESTOTLIWOSCI Z UKLADEM TSA6057

'*******************************************************************************

'Autor : Michał Wojtków

'Data : 4.01.2004

'e-mail: michallo4@wp.pl

'www : www.michallo.ll.pl

'GG# : 714371

'uwagi : program ustepniony dla www.easy-soft.prv.pl

'*******************************************************************************

' KONFIGURACJA PODSTAWOWA

'*******************************************************************************

$crystal = 4190000 'deklaracja rezonatora

$regfile = "4433def.dat" 'wybór procesora

Config Lcd = 16 * 2

Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E

= Portb.0 , Rs = Portd.7

Cursor Off

Config Debounce = 30

Config Sda = Portc.5

Config Scl = Portc.4

Config Pinc.2 = Output

Config Pinc.1 = Output

Config Pinc.0 = Output

Config Pind.4 = Input

Config Pind.3 = Input

Config Pind.2 = Input

Config Pind.1 = Input

Config Pind.0 = Input

Dim Db0 As Byte

Dim Db1 As Byte

Dim Db2 As Byte

Dim A As Byte

Dim Key As Byte

Dim _eep(3) As Byte

Dim Frequency As Word

Dim Mnoznik As Byte

Dim Pokazanaf As Long

Dim Pokazanaff As String * 10

Dim Pokazanafstr As String * 10

Portc.0 = 1

Portc.1 = 1

Podswietlanie Alias Portc.2

Reset Podswietlanie

'*******************************************************************************

' poczatek programu

'*******************************************************************************

Gosub Odczyt_ustawien

Cls

Locate 1 , 4

Lcd "PLL-Driver"

Locate 2 , 6

Lcd "Welcome"

Wait 2

Cls

Locate 1 , 3

Lcd "Nie do konca"

Michał Wojtków “Sterownik układu syntezy TSA6057”

- STRONA 5/11 -

background image

http://www.easy-soft.tsnet.pl/

Locate 2 , 1

Lcd "komercyjne radio"

Wait 2

'*******************************************************************************

' Petla glowna

'*******************************************************************************

Petla_glowna:

Cls

Locate 1 , 3

Pokazanaf = Frequency * Mnoznik

Pokazanaff = Str(pokazanaf)

Pokazanafstr = Format(pokazanaff , "00.0000")

Pokazanaff = Format(pokazanafstr , "000.0")

Lcd Pokazanaff : Lcd " MHz"

Podswitlanie_off:

For A = 1 To 250

Gosub Klawisz

If Key = 1 Then : Gosub Menu : End If

If Key = 2 Then : Toggle Portc.0 : End If

If Pind.2 = 0 Then : Portc.1 = 0 : Else : Portc.1 = 1 : End If

If Key = 4 Then : Goto Frequency : End If

Waitms 20

Next A

Set Podswietlanie

Do

Gosub Klawisz

If Key = 1 Then : Gosub Menu : End If

If Key = 2 Then : Toggle Portc.0 : End If

If Pind.2 = 0 Then : Portc.1 = 0 : Else : Portc.1 = 1 : End If

If Key = 4 Then : Goto Frequency : End If

If Key = 5 Then : Reset Podswietlanie : Goto Podswitlanie_off : End If

Loop

'*******************************************************************************

' OBSLUGA KLAWIATURY

'*******************************************************************************

Klawisz:

Key = 0

Debounce Pind.4 , 0 , Przypisanie , Sub

Debounce Pind.3 , 0 , Przypisanie , Sub

Debounce Pind.2 , 0 , Przypisanie , Sub

Debounce Pind.1 , 0 , Przypisanie , Sub

Debounce Pind.0 , 0 , Przypisanie , Sub

Return

Przypisanie:

If Pind.4 = 0 Then : Key = 1 : End If

If Pind.3 = 0 Then : Key = 2 : End If

If Pind.2 = 0 Then : Key = 3 : End If

If Pind.1 = 0 Then : Key = 4 : End If

If Pind.0 = 0 Then : Key = 5 : End If

Return

'*******************************************************************************

' menu

'*******************************************************************************

Menu:

Reset Podswietlanie

Cls

Locate 1 , 1

Lcd "1-Setup 2-freq"

Michał Wojtków “Sterownik układu syntezy TSA6057”

- STRONA 6/11 -

background image

http://www.easy-soft.tsnet.pl/

Locate 2 , 5

Lcd "3-format"

Waitms 500

Do

Gosub Klawisz

If Key = 1 Then : Goto Setup : End If

If Key = 2 Then : Goto Frequency : End If

If Key = 3 Then : Goto Formatt : End If

If Key = 5 Then : Goto Petla_glowna : End If

Loop

'*******************************************************************************

' setup

'*******************************************************************************

Setup:

Cls

Locate 1 , 1

Lcd "1-krok 2-PradPLL"

Locate 2 , 1

Lcd " 3-BS"

Waitms 500

Do

Gosub Klawisz

If Key = 1 Then : Goto Krok : End If

If Key = 2 Then : Goto Prad : End If

If Key = 3 Then : Goto Bs : End If

If Key = 5 Then : Goto Menu : End If

Loop

'*******************************************************************************

' KROK

'*******************************************************************************

Krok:

Cls

Locate 1 , 1

Lcd "Krok PLL: [kHz]"

Locate 2 , 1

Lcd "1-10 2-25"

Waitms 500

Do

Gosub Klawisz

If Key = 1 Then : Goto 10khz : End If

If Key = 2 Then : Goto 25khz : End If

If Key = 5 Then : Goto Setup : End If

Loop

'*******************************************************************************

' PRAD

'*******************************************************************************

Prad:

Cls

Locate 1 , 1

Lcd "Prad "

Locate 2 , 1

Lcd "1-5uA 2-500uA"

Waitms 500

Do

Gosub Klawisz

If Key = 1 Then : Goto Current1 : End If

If Key = 2 Then : Goto Current2 : End If

If Key = 5 Then : Goto Menu : End If

Loop

Michał Wojtków “Sterownik układu syntezy TSA6057”

- STRONA 7/11 -

background image

http://www.easy-soft.tsnet.pl/

'*******************************************************************************

' Band Switch Output

'*******************************************************************************

Bs:

Cls

Locate 1 , 1

Lcd "Band Switch Out."

Locate 2 , 1

Lcd "1-Sink 2-Float"

Waitms 500

Do

Gosub Klawisz

If Key = 1 Then : Goto Sink : End If

If Key = 2 Then : Goto Float : End If

If Key = 5 Then : Goto Menu : End If

Loop

'*******************************************************************************

' 10khz

'*******************************************************************************

10khz:

Db2.6 = 1

Db2.7 = 0

Mnoznik = 100

Frequency = 9200

Gosub Konwersja

Goto Krok

'*******************************************************************************

' 12Khz

'*******************************************************************************

25khz:

Db2.6 = 0

Db2.7 = 1

Mnoznik = 250

Frequency = 3680

Gosub Konwersja

Goto Krok

'*******************************************************************************

' Current1:

'*******************************************************************************

Current1:

Db0.0 = 0

Gosub Konwersja

Goto Setup

'*******************************************************************************

' Current2:

'*******************************************************************************

Current2:

Db0.0 = 1

Gosub Konwersja

Goto Setup

'*******************************************************************************

' Sink Current:

'*******************************************************************************

Sink:

Db2.2 = 1

Gosub Konwersja

Goto Setup

'*******************************************************************************

' Floating:

Michał Wojtków “Sterownik układu syntezy TSA6057”

- STRONA 8/11 -

background image

http://www.easy-soft.tsnet.pl/

'*******************************************************************************

Float:

Db2.2 = 0

Gosub Konwersja

Goto Setup

'*******************************************************************************

' frequency

'*******************************************************************************

Frequency:

Reset Podswietlanie

Cls

Locate 1 , 3

Pokazanaf = Frequency * Mnoznik

Pokazanaff = Str(pokazanaf) 'Frequency * Mnoznik

Pokazanafstr = Format(pokazanaff , "00.0000")

Pokazanaff = Format(pokazanafstr , "000.0")

Lcd Pokazanaff : Lcd " MHz"

Locate 2 , 1

Lcd "1-UP FREQ DOWN-2"

Waitms 500

Do

Gosub Klawisz

If Key = 1 Then : Gosub Up : End If

If Key = 2 Then : Gosub Down : End If

If Key = 3 Then : Gosub Konwersja : End If

If Key = 4 Then : Goto Petla_glowna : End If

If Key = 5 Then : Gosub Konwersja : Goto Menu : End If

Loop

'*******************************************************************************

' UP

' Zmiana częstotliwości w górę

'*******************************************************************************

Up:

Frequency = Frequency + 1

Pokazanaf = Frequency * Mnoznik

Pokazanaff = Str(pokazanaf) 'Frequency * Mnoznik

Pokazanafstr = Format(pokazanaff , "00.0000")

Pokazanaff = Format(pokazanafstr , "000.0")

Locate 1 , 1

Lcd " "

Locate 1 , 3

Lcd Pokazanaff : Lcd " MHz"

Return

'*******************************************************************************

' down

' Zmiana częstotliwości w dół

'*******************************************************************************

Down:

Frequency = Frequency - 1

Pokazanaf = Frequency * Mnoznik

Pokazanaff = Str(pokazanaf) 'Frequency * Mnoznik

Pokazanafstr = Format(pokazanaff , "00.0000")

Pokazanaff = Format(pokazanafstr , "000.0")

Locate 1 , 1

Lcd " "

Locate 1 , 3

Lcd Pokazanaff : Lcd " MHz"

Return

'*******************************************************************************

Michał Wojtków “Sterownik układu syntezy TSA6057”

- STRONA 9/11 -

background image

http://www.easy-soft.tsnet.pl/

' format

' Ustawienie domyślnej konfiguracji i częstotliwości

'*******************************************************************************

Formatt:

Frequency = 9070

Db2.6 = 1

Db2.7 = 0

Db0.0 = 0

Db2.2 = 0

Gosub Konwersja

Gosub Odczyt_ustawien

Goto Petla_glowna

'*******************************************************************************

' odczyt ustawien z eeprom i wysłanie do TSA6057

'*******************************************************************************

Odczyt_ustawien:

For A = 1 To 3

Readeeprom _eep(a) , A

Waitms 50

Next A

Gosub Konwersja1

Gosub Tsa

If _eep(3).7 = 0 Then : Mnoznik = 100 : Else : Mnoznik = 250 : End If

Return

'*******************************************************************************

' TSA 6057

' Wysłanie danych do układu TSA6057 przez magistrale i2c

' UWAGA: jesli blednie podlaczymy układ lub zle ustawimy adres

' pojawi sie napis "brak TSA6057"

'*******************************************************************************

Tsa:

I2cstart

I2cwbyte 196

I2cwbyte 0

I2cwbyte Db0

I2cwbyte Db1

I2cwbyte Db2

I2cwbyte 0

I2cstop

If Err = 1 Then : Cls : Locate 1 , 2 : Lcd "Brak TSA6057" : Wait 1 : End If

Return

'*******************************************************************************

' Konwersja danych

' Podstawia dane w celu zapisania ich w eeprom

'*******************************************************************************

Konwersja:

'Db0.0 = Prad

Db0.1 = Frequency.0

Db0.2 = Frequency.1

Db0.3 = Frequency.2

Db0.4 = Frequency.3

Db0.5 = Frequency.4

Db0.6 = Frequency.5

Db0.7 = Frequency.6

'********************

Db1.0 = Frequency.7

Db1.1 = Frequency.8

Db1.2 = Frequency.9

Db1.3 = Frequency.10

Michał Wojtków “Sterownik układu syntezy TSA6057”

- STRONA 10/11 -

background image

http://www.easy-soft.tsnet.pl/

Db1.4 = Frequency.11

Db1.5 = Frequency.12

Db1.6 = Frequency.13

Db1.7 = Frequency.14

'********************

Db2.0 = Frequency.15

Db2.1 = 0

'Db2.2 = BS

Db2.3 = 0

Db2.4 = 0

Db2.5 = 1

'Db2.6 = krok

'Db2.7 = krok

'********************

_eep(1) = Db0

_eep(2) = Db1

_eep(3) = Db2

For A = 1 To 3

Writeeeprom _eep(a) , A

Waitms 50

Next A

Gosub Tsa

Return

'*******************************************************************************

' Konwersja1

' Podstawia dane po doczytaniu ich z eeprom

'*******************************************************************************

Konwersja1:

Db0 = _eep(1)

Db1 = _eep(2)

Db2 = _eep(3)

Frequency.0 = _eep(1).1

Frequency.1 = _eep(1).2

Frequency.2 = _eep(1).3

Frequency.3 = _eep(1).4

Frequency.4 = _eep(1).5

Frequency.5 = _eep(1).6

Frequency.6 = _eep(1).7

Frequency.7 = _eep(2).0

Frequency.8 = _eep(2).1

Frequency.9 = _eep(2).2

Frequency.10 = _eep(2).3

Frequency.11 = _eep(2).4

Frequency.12 = _eep(2).5

Frequency.13 = _eep(2).6

Frequency.14 = _eep(2).7

Frequency.15 = _eep(3).0

Return

'*******************************************************************************

' The End

'*******************************************************************************

Michał Wojtków “Sterownik układu syntezy TSA6057”

- STRONA 11/11 -


Wyszukiwarka

Podobne podstrony:
PLL SAA1057 Sterownik syntezy czest
Synteza ukł. sterow. elektronicznego, POLITECHNIKA LUBELSKA
Synteza sekwencyjnych układów sterowania logicznego sprawozdanie
09 Synteza układów liniowych sterowania automatycznego
09 Synteza układów liniowych sterowania automatycznego
Układy Napędowe oraz algorytmy sterowania w bioprotezach
PODSTAWY STEROWANIA SILNIKIEM INDUKCYJNYM
06 Podstawy syntezy polimerówid 6357 ppt
Sterowce
WYKŁAD 02 SterowCyfrowe
15 Uklady PLL i t s
8a Syntezy prostych aminokwasów
Wykład VIII Synteza układów sekwencyjnych
wykład 4 Sterowanie zapasami
Sterowniki PLC
Hazardy sterowania

więcej podobnych podstron