logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

TSA6057 - Jak poprawnie przeliczyć częstotliwość dla syntezy z kwarcem 4MHz?

zabex 20 Maj 2012 09:49 3089 21
REKLAMA
  • #1 10915419
    zabex
    Poziom 22  
    Witam. Proszę o pomoc w przeliczeniu częstotliwości owej sysntezy.
    Posiłkowałem się przykładami z elektrody jednak nie udaje mi się zrobić to prawidłowo.

    Dzielnik = 21060 (Odbieram RMF FM 94,6MHz)
    Krok syntezy = 1 KHz
    Kwarc = 4MHz

    Dane które wysyłam do syntezy:
    Kod: text
    Zaloguj się, aby zobaczyć kod


    W/g noty: Dzielnik * Fref = częstotliwość
    Fref jeśli dobrze rozumiem to 1KHz
    Niestety nijak nie pasuje to do częstotliwości odbieranej stacji.
    Podstawiłem na próbę inną głowicę ale efekt dokładnie taki sam.
  • REKLAMA
  • #2 10915586
    sp3ots
    Poziom 38  
    Witam !
    1kHz na FMie ? to pomyłka.
    Minimalny krok TSA6057 z rezonatorem 4MHz na FMie to 10kHz.
    Pozdrawiam. Stefan

    Domyślam się jak to zrobiłeś:
    Cytat:
    Dzielnik = 21060 (Odbieram RMF FM 94,6MHz)
    Krok syntezy = 1 KHz
    Kwarc = 4MHz

    Twoja PLL rzeczywiście pracuje z krokiem 1kHz ( AM )
    21,06MHz powieliłeś, pomnożyłeś x 5 czyli
    21,06 x 5 = 105,3MHz - 10,7MHz ( pośrednia )= 94,6MHz


    Spróbuj tak:

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • REKLAMA
  • #3 10915832
    zabex
    Poziom 22  
    Przepraszam ale wprowadziłem w błąd. Mianowicie pominąłem najstarszy bit w adresie DB2.
    Synteza faktycznie działa w tej chwili z krokiem 10KHz ale i tak problem przeliczenia pozostał
    21060 * 10 - 10700 = 199900
    Spróbuje przełączyć ją na 1KHz i zobaczę czy zaskoczy. Jeśli tak wyślę Twój kod.
  • #4 10915876
    sp3ots
    Poziom 38  
    "21060" ta liczba jest poza zakresem pracy FMmowej PLL,
    Prawdo podobnie Twoja synteza cały czas pracuje na AMie albo udało się Tobie zmusić PLL na FMie na 21,06MHz
    zamiast 21060
    94600 + 10700 = 105300
    Wstaw mój kod zamiast 90000
    wpisz 105300 i sprawdź.
  • #5 10916184
    zabex
    Poziom 22  
    105300 jako integer oczywiście nie może być a więc zamiast integer dałem
    Dim dzielnik as long, ale niestety synteza nic nie robi. Wpisanie wartości do dzielnika 21060 jako long również powoduje, że synteza stoi. Czyli w tej chwili jestem w kropce bo nie rozumiem dlaczego tak jest.
  • #6 10916229
    sp3ots
    Poziom 38  
    Jeśli tak jak ja myślę PLL pracuje na około 22MHz to sama zmiana programu niewiele da, dlatego proszę o pokazanie schematu PLL i VFO, oczywiście z elementów.
    Pokaż schemat, zdjęcia.
  • #7 10916292
    zabex
    Poziom 22  
    Całość niewiele różni się od aplikacji podanej przez producenta. Pominięty jest tylko AM.
    TSA6057 - Jak poprawnie przeliczyć częstotliwość dla syntezy z kwarcem 4MHz?
  • Pomocny post
    #8 10916351
    sp3ots
    Poziom 38  
    Po co mnie "karmisz" aplikacjam i producenta, ja wiem jak ma wyglądać prawidłowy schemat.
    Ty masz pokazać swój układ, pracujący w FMie.
    Pokaż też schemat VFO ( głowicy ) do której PLL jest podłączone.

    Nadal nie rozumiesz że jeśli Twoja PLL dotychczas pracowała na około 22MHz to po samej zmianie programu nie zmusisz VFO do pracy na 100MHz. Nie pozwoli na to obwód rezonansowy który w tej chwili pracuje na pięć razy niższej częstotliwości.
  • #9 10916373
    zabex
    Poziom 22  
    Schematu głowicy niestety nie posiadam gdyż została ona wyciągnięta z wieży Mediona do której również nie znalazłem schematu.
    Co do Twojego 1 postu... Wyliczenie jest prawidłowe tylko skąd sie bierze mnożnik * 5? Coś czuję, że bez schematu głowicy tego się nie dowiem.
    W każdym bądź razie dziękuję za pomoc. Całość chodzi tak jak chciałem. Pozdrawiam.
  • #10 10916554
    sp3ots
    Poziom 38  
    Jeśli jesteś pewien że głowica pracowała na 88- 108MHz to się nie przejmuj piątą harmoniczną 22MHz.
    Napisz mi ( pytam z ciekawości ) skąd u Ciebie pomysł aby taką wartość dla zmiennej Dzielnik ?
    Dzielnik = 21060

    Napisz czy przetestowałeś kod który powyżej wkleiłem przy zmiennej jako Long ?

    Pamiętaj o dodaniu do 94,6 częstotliwości pośredniej 10,7MHz

    To musi działać.

    W tej chwili więcej czasu nie mam, odezwę się wieczorem, zapraszam do pisania na GG 6293398
  • #11 10916600
    zabex
    Poziom 22  
    Kod który podałeś przetestowałem i niestety na wyjściu VT cały czas jest napięcie 11,80V.
    To samo się dzieje kiedy jako dzielnik wstawię 21060. W obydwu przypadkach dzielnik jako Long. Wystarczy, że zmienię na integer i PLL zaczyna pracować prawidłowo przy dzielniku 21060.
    Wartości dzielnika nie przeliczałem. Ustawiłem wartość początkową na 1000 i leciałem w górę aż synteza załapała. Po czym wsłuchiwałem się w różne stacje i akurat na 21060 wypada RMF (96,4MHz)

    Zgodnie z Twoim wzorem, podanie wartości dzielnika 21540 to:
    21540 * 5 - 10700 = 97000 i na tej częstotliwości mam Radio Zet (97,0MHz). Czyli wszystko się zgadza. Przetestowałem też na słabszych stacjach i jest dobrze.
    Chciałbym jednak zapytać co to ta piąta harmoniczna? Podłączyłem inna głowicę FM i dokładnie tak samo chodzi. Czy we wszystkich głowicach FM obwody rezonansowe tak pracują, że trzeba podawać częstotliwość 5 razy niższą od odbieranej? Ciekawa sprawa.
    P.S. Jak to się ma do wzoru podanego w nocie, dzielnik*fref(krok 10KHz)?
  • #12 10917429
    sp3ots
    Poziom 38  
    Witam po przerwie.
    Przed chwilą udało mi się uruchomić PLL na TSA6057 z krokiem 12,5kHz, z rezonatorem 5MHz, częstotliwość pracy syntezy 144,7625kHz.
    Poniżej działający program ( jest to program TESTowy )

    '2012.05.20

    Kod: text
    Zaloguj się, aby zobaczyć kod

    Ty musisz tylko zmienić jedną linię do pracy z krokiem 10kHz
    tą linię:
    Temp1 = 1447625 / 125
    na:
    Temp1 = 105300 / 10
  • REKLAMA
  • #13 10917657
    zabex
    Poziom 22  
    Teraz zaskoczyła od razu :)
    Jeśli mógłbym prosić to wytłumacz mi co się dzieje w liniach:
    Shift Temp1 , Left , 1 
    Db0 = Inp(&H60) 
    Db1 = Inp(&H61)

    Nie spotkałem się jeszcze z takimi funkcjami. Wiem tylko, że przesuwane są bity o jeden w lewo ale jak to rozumieć...?
    Wyświetliłem sobie wartość temp1 w pętli i wychodzi 21060.
    Chyba sobie kawę zrobię bo zaczynam mieć straszny mętlik w głowie.

    ... a tak na marginesie, to czy moja organizacja binarna jest błędna, że u Ciebie wygląda to zupełnie inaczej?
  • #14 10917846
    sp3ots
    Poziom 38  
    Ja Tobie tego nie wytłumaczę, bo nie umiem.
    Wszystko co umiem w bascomie to to co znalazłem w czasopismach i w internecie.
    Wiem że te trzy linie można zasyąpić tymi liniami:
    
        Db1_db0 = Freq / Krok
        Db1_db0=Db1_db0*2
        Db1 = High(db1_db0)
        Db0 = Low(db1_db0)
    

    Może ktoś inny wytłumaczy to Tobie ?
  • #15 10917897
    zabex
    Poziom 22  
    Ok spróbuje jakoś sam do tego dojść. Sprawa pewnie nie będzie taka prosta bo póki co doczytałem, że chodzi o odczyt danych z pamięci RAM pod odpowiednim adresem, ale mniejsza na razie o to. Teraz mam trochę inny problem.

    Zauważyłem, że na Twoim kodzie dzielnik przeskakuje co 2, czyli 21060, 21062, 21064 itd.

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Wcześniej dzielnik przeskakiwał co 1 i wyliczona częstotliwość była zmieniana co 5KHz czyli 94,600, 94,605, 94610 itd.
    Szału idzie dostać ;)
    Myślałem, że jakoś sobie radzę z czytaniem noty katalogowej i organizowanie transmisji z prawidłowym przeliczeniem częstotliwości a tu takie jaja.
    Z głowicą UV916(TSA5512) jak i syntezą LM7001 takich problemów nie miałem.

    Poprzedni kod:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    ------------------------------------------------------------------------------

    Doczytałem w pomocy do Bascom-a, że "Przesuwanie wartości zmiennej w lewo, jest równoznaczne z pomnożeniem jej zawartości przez dwa." Czyli siłą rzeczy nie będzie zmiany dzielnika co 1.
    W takim razie, skoro patrząc na notę katalogową, w której podane sa kroki syntezy 1,10,25 dla kwarcu 4MHz, z jakiej racji na moim kodzie zmienia się ta częstotliwość co 5KHz?
  • #16 10918065
    sp3ots
    Poziom 38  
    Cytat:
    Zauważyłem, że na Twoim kodzie dzielnik przeskakuje co 2, czyli 21060, 21062, 21064 itd.

    Nie mam pojęcia skąd znowu Tobie się pojawiły takie liczby 21060, 21062, 21064 ?

    Piszesz też że masz krok 5kHz ! jak to możliwe ? skoro krok PLL z rezonatorem 4MHz to 10kHz.

    Twojego programu nie sprawdzę, bo nie mam głowicy UKF, a mojego
    VFO nie zmienię ze 145MHz na 100MHz.
    Nie zmienię też kroku z 12,5kHz na 10kHz bo nie mam rezonatora 4MHz.

    Już wiem skąd masz krok 5kHz, bo znowu Twoja PLL pracuje na częstotliwościach 20MHz a nie na 100MHz.

    Zapomnij o tym sposobie pracy PLL.

    Jeśli przy moim kodzie PLL nie zmienia kroku o jeden tylko o dwa to szukaj winy w swoim programie, część odpowiedzialną za I2C zostaw w spokoju.
  • REKLAMA
  • #17 10918111
    zabex
    Poziom 22  
    Wrzuciłem Twój kod, i na LCD wyświetliłem wartość Temp1. Na wyświetlaczu wartość temp1 21060.
    Następnie dodałem przyciski i zrobiłem coś takiego:

    temp = 10530
    if przycisk then zwiększ lub zmniejsz temp
    temp1 = temp

    Czyli lecąc w dół mam coś takiego 10530, 10529, 10528 itd a wartość temp1 wyświetlana na lcd 21060, 21058, 21056...

    Jak to możliwe, że synteza na moim kodzie zmienia częstotliwość co 5KHz? Nie mam pojęcia. Najlepsze jest to, że tak jak pisałem wcześniej zmiana częstotliwości co te nieszczęsne 5KHz jest prawidłowa. Stacje radiowe idealnie pokrywają się z wyliczoną wartością.

    Tak na marginesie, użycie instrukcji shift powoduje pomnożenie wartości temp1 * 2 czyli 10530 * 2 = 21060
  • #18 10918180
    sp3ots
    Poziom 38  
    Przetestuj ten kod:

    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #19 10918195
    zabex
    Poziom 22  
    Bez zmian. Wartość temp zmienia się co 1 a temp1 (dzielnik) co 2.
  • #20 10918230
    sp3ots
    Poziom 38  
    Teraz to "przeginasz" !
    Co Ciebie obchodzą zmienne:
    Lcd Temp1 ; " " ; Db0 ; " " ; Db1
    Co Ciebie obchodzi jak program przelicza ?
    Ty potrzebujesz wiedzieć tylko to:
    Lcd Temp ; " " ; Czestotliwosc
  • #21 10918274
    zabex
    Poziom 22  
    Hehehe wybacz ale jak już się za coś zabiorę to staram się dowiedzieć co dokładnie się dzieje ;) W ten sposób np "odkryłem/liśmy", że da się syntezę popędzić z krokiem 5KHz wykorzystując zwykłą głowicę FM.
    Szczerze mówiąc faktem jest, że bardzo dużo już mi pomogłeś i poświęciłeś czasu za co Ci bardzo dziękuję, a teraz zaczynam "wylewać" swoje myśli, kombinacje i robi się jeden wielki mętlik. Muszę to wszystko zebrać i uporządkować.
    W tej chwili głowica stroi od 80,240MHz do 112,465MHz z krokiem 5KHz w całym paśmie częstotliwości są prawidłowe. Jak na moje potrzeby co do całego projektu jestem więcej niż zadowolony z efektu. Liczyłem na krok 10KHz a mam 5KHz. Super.
    Jeszcze raz bardzo dziękuje za pomoc i chyba czas zamknąć temat bo namieszam jeszcze bardziej ;)
    Pozdrawiam.
  • #22 10920078
    zabex
    Poziom 22  
    Dziękuję moderatorowi _Robak_ za otwarcie tematu i możliwość sprostowania całości moich poczynań.
    Otóż popełniłem błąd w obliczeniach i sposobie wysyłania danych do syntezy.
    W/g noty katalogowej:
    TSA6057 - Jak poprawnie przeliczyć częstotliwość dla syntezy z kwarcem 4MHz?
    Bit D0 odpowiada za pompę ładunkową, a nie jak wcześniej myślałem, że od tego bitu zaczynają się wartości odpowiedzialne za dzielnik. Czyli w/g tego cały czas miałem w głowie S0 na pozycji D0 a nie D1 i stąd ten mój niby krok 5KHz.
    Zmiana dzielnika musi występować co 2 kroki czyli 21060,21062 itd.
    I teraz wszystkie obliczenia się zgadzają.

    94600 + 10700 = 105300
    Dzielnik = 105300 * 2 = 210600 / 10 (krok syntezy) = 21060

    Przepraszam za wprowadzenie w błąd i dziękuję za możliwość sprostowania.
    Pozdrawiam.

    P.S. Synteza chodzi również z krokiem 1KHz dla FM z tym, że maksymalna częstotliwość to 131MHz.
REKLAMA