Lidia 80 Digital. Przystawka do odbiornika homodynowego na pasmo 80 m. cz. 2

Lidia 80 Digital. Przystawka do odbiornika homodynowego na pasmo 80 m. cz. 2
Pobierz PDF Download icon
Proste odbiorniki nasłuchowe są wciąż bardzo popularnymi urządzeniami wśród radioamatorów - krótkofalowców. Kosztują niewiele, zajmują mało miejsca i pozwalają przy tym z powodzeniem prowadzić dobre nasłuchy w różnych warunkach. Popularny, łatwy do wykonania odbiornik homodynowy Lidia 80 wg Włodka SP5DDJ został skonstruowany tak, że można go z powodzeniem wykorzystywać w wersji podstawowej, ale daje się też rozbudowywać o kolejne funkcjonalności. Autor tego projektu, zachęcony pozytywnymi doświadczeniami z podstawową wersją odbiornika, postanowił dokonać jego rozbudowy o kolejne funkcje. Apetyt rósł w miarę jedzenia i dlatego ostatnia, prezentowana wersja została wyposażona nie tylko w pomiar częstotliwości pracy, ale także w jej regulację i stabilizację z krokiem minimalnym 10 Hz, graficzny S-metr oraz automatyczną regulację wzmocnienia ARW w zakresie 12 dB (dwie jednostki "S"). Rekomendacje: odbiornik jest przeznaczony dla osób, które chcą zająć się krótkofalarstwem. Prawidłowo zmontowany i zestrojony odbiornik umożliwia nasłuch stacji amatorskich telegraficznych i jednowstęgowych przy użyciu anteny dipolowej lub drutowej (Long-Wire).

Odpowiednio wyregulowany sygnał m.cz. jest podawany na wejście wzmacniacza wyjściowego z tranzystorem Q9 oraz elementami: C49, R74, R75 i potencjometrem logarytmicznym PR3 (50 kV/C). Wzmacniacz ten pracuje w układzie wtórnika emiterowego, a jego zadaniem jest separacja modułu dzielnika regulowanego ARW od dalszej części układu, aby nie obciążała ona dzielnika. Jako PR3 można użyć potencjometru, który służył jako regulator siły sygnału w oryginalnym odbiorniku Lidia 80. Powinien jednak być to podzespół o odpowiednio dobrej jakości, ponieważ przenosi on także składową stałą prądu emitera Q9, co w wypadku potencjometru starego lub zużytego może powodować trzaski przy regulacji głośności. Kondensator C50 separuje dalszą część układu od składowej stałej napięcia na suwaku PR3. Blok ARW i S-metra jest połączony z podstawową (analogową) częścią odbiornika Lidia 80 poprzez port P5, przez który pobierany jest sygnał m.cz. z mieszacza- detektora i przedwzmacniacza w układzie MC3361C (pin 1) a następnie za blokiem ARW jest podawany na wejście wzmacniacza audio LM386N (pin 2).

Ostatnim, nieomówionym jeszcze blokiem przystawki do odbiornika Lidia 80 są moduły zasilania. Warto tu zwrócić uwagę na fakt, że cały prąd zasilania +12 V, nieprzekraczający wartości 150 mA, jest podawany na port P1 układu i przechodzi przez stabilizator U1 z układem LM7809 i pojemnościami C1...C4. Napięciem stabilizowanym +9 V są zasilane wprost tylko dwa bloki układu: blok ARW i wzmacniacza-detektora do S-metra oraz blok wzmacniacza napięcia sterującego częstotliwością VFO z układem U9 (LM358). Zastosowano stabilizator w obudowie TO-220, dzięki czemu uniknięto konieczności stosowania radiatora. Do wyjścia stabilizatora U1 dołączono równolegle stabilizatory napięcie +5 V (U2 i U3) w obudowach TO-220. Stabilizator U3, z uwagi na znikomy prąd roboczy, jest w obudowie TO-92.

Należy tu wyjaśnić, że połączenie równolegle dwóch stabilizatorów na to samo napięcie nie jest dziełem przypadku czy błędem projektowym, ale ważnym, celowym zabiegiem konstruktorskim. Na etapie prototypowania układu autor czynił próby zasilenia z tego samego stabilizatora U2 także układów U7 i U8 pracujących jako sterowane przez mikrokontroler U4 klucze dla drabinki oporowej R-2R. Niestety, drobne wahania napięcia zasilania +5 V wynikające z impulsowej pracy mikrokontrolera U4 i wyświetlacza LCD (U5) skutecznie przenosiły się na zasilanie układów scalonych U7 i U8, które stanowi jednocześnie napięcie referencyjne Uref dla przetwornika C/A. Na skutek tego zjawiska impulsy prądu zasilania U4 i U5 przenoszące się na napięcie zasilania U7 i U8 przechodziły też na wyjście przetwornika C/A i silnie modulowały częstotliwość VFO (było to wyraźnie słyszalne w głośniku odbiornika).

Próby całkowitego wyeliminowania opisanych zakłóceń za pomocą włączonego w tory zasilania układów U7 i U8 niewielkiego rezystora szeregowego, zblokowanego do masy po stronie odbioru prądu nawet bardzo dużymi pojemnościami (rzędu kilku tysięcy mikrofaradów), w ogóle nie pomagały zmierzyć się z opisanym problemem. Skutecznym rozwiązaniem okazało się dopiero zastosowanie osobnego stabilizatora napięcia (U3), przeznaczonego wyłącznie do zasilania układów U7 i U8.

W trosce o całkowitą eliminację przenikania między poszczególnymi blokami układu przez tory ich zasilania zakłóceń impulsowych i w.cz. zastosowano dodatkowe elementy odprzęgające R-C. Są nimi rezystory R1, R2, R52 i R56 o wartościach dobranych tak, aby spadek napięcia na nich nie zaburzał pracy zasilanych bloków. Rezystory po stronie odbioru prądu zostały zablokowane do masy dla składowej zmiennej za pomocą odpowiedniego zestawu pojemności (kondensator elektrolityczny o większej wartości i ceramiczny lub foliowy o wartości mniejszej, skuteczny dla w.cz.). Schemat ideowy połączenia w jedną całość odbiornika Lidia 80 z przystawką cyfrową będzie omówiony szczegółowo w części poświęconej montażowi i uruchomieniu urządzenia. W tym miejscu warto jeszcze podkreślić to, że płytka cyfrowej przystawki jest połączona z elementami zewnętrznymi za pomocą portów:

  • P1 (zasilanie +12 V, podawane na złącze ARK-2).
  • P2 (5-pinowe złącze "goldpin" do enkodera z przyciskiem).
  • P3 (2-pinowe złącze "goldpin" do pobierania sygnału do pomiaru częstotliwości sygnału z generatora VFO).
  • P4 (2-pinowe złącze "goldpin" do sterowania częstotliwością pracy generatora VFO).
  • P5 (3-pinowe złącze "goldpin" przeznaczone do włączenia bloków ARW i S-metra w tor audio oryginalnego odbiornika Lidia 80).
  • Wyprowadzenia do potencjometru PR3 (także 3-pinowe złącze "goldpin"), przeznaczonego do regulacji głośności odbioru.

Oprogramowanie mikrokontrolera sterującego

Listing 1. Definicje i deklaracje używane w programie

Program sterujący napisano w języku Bascom AVR. Listing 1 zawiera definicje i deklaracje wstępne, niezbędne do dalszej pracy programu. Pierwsze linijki służą do konfigurowania pracy mikrokontrolera U4 (ATmega- 8A-PU). Zdefiniowano typ i częstotliwość taktowania MCU zewnętrznym rezonatorem kwarcowym (16 MHz), a także rozmiary stosów i ramki programu. Następnie zdefiniowane zostały jako wyjściowe porty PD.0... PD.2, sterujące pracą przetwornika C/A z układami U7 i U8 za pomocą transmisji szeregowej.

W kolejnym kroku określono jako wejściowe porty PB.2…PB.4, których zadaniem jest odczytywanie z bloku z układem scalonym U6 informacji o stanie przycisku oraz o kierunku obracania enkodera, ustalającego częstotliwość pracy generatora VFO. Kolejne definicje dotyczą portów wyjściowych PC.0… PC.3, sterujących kluczami elektronicznymi z tranzystorami Q5...Q8 w bloku automatycznej regulacji wzmocnienia ARW. Z kolei port PD.5 został określony jako wejście do pomiaru częstotliwości Fvfo z wykorzystaniem licznika TIMER1 ("Timer/Counter1 external counter input"). Ostatnie zdefiniowane dwa porty to PC.4 i PC.5, które jako komutowane wejścia ADC4 i ADC5 wewnętrznego przetwornika A/C ATmegi służą w tym układzie do pomiaru poziomu sygnału w.cz. (na potrzeby S-metra i regulacji ARW) oraz do pomiaru napięcia zasilania układu Uz=12 V.

W kolejnych krokach następuje skonfigurowanie do pracy oraz uruchomienie (początek gotowości do użycia) przetwornika A/C. Z założenia ma on pracować w trybie pojedynczego wyzwalania pomiaru ("on-demand") - z automatycznym preskalerem zegara oraz z wykorzystaniem wewnętrznego źródła napięcia odniesienia Uref=2,56 V. W następnych linijkach zdefiniowano sposób dołączenia wyświetlacza alfanumerycznego LCD oraz znaki specjalne dla tego ekranu. Zdefiniowano jednoznakowy symbol jednostki "Hz" (symbol o numerze 0), symbol kroku strojenia częstotliwości (1), symbol jednostki "S" dla bargrafu S-metra (2), a także cztery symbole (3…6), potrzebne do uformowania bargrafu na wyświetlaczu LCD (trzy rodzaje pionowych "beleczek" oraz specjalny symbol "+").

Po wyświetleniu ekranu powitalnego w programie następuje konfiguracja licznika Timer1 (wykorzystywanego do pomiaru częstotliwości VFO). Aktywowane zostaje także przerwanie wynikające z przepełnienia tego licznika - wraz z odpowiednią procedurą jego obsługi T1over, omówioną bliżej przy głównej procedurze pomiaru Fvfo.

Ostatni blok listingu 1 to definicje wszystkich używanych w programie zmiennych.

W skrócie ich przeznaczenia są następujące:

  • Ndac, Dndac - zmienne bezpośrednio wspierające proces sterowania przetwornikiem C/A.
  • F, Fc, Dfc, Df, Txt, Delayword - zmienne wykorzystywane w zadaniach związanych z pomiarem, regulacją oraz wyświetlaniem częstotliwości pracy VFO.
  • Uz, Uvolt - zmienne zaangażowane w pomiar i prezentację na wyświetlaczu LCD napięcia zasilania układu Uz.
  • S, Sdb, Sout - zmienne pracujące w procesach pomiaru, przetwarzania i wizualizacji poziomu odbieranego sygnału w.cz. na wejściu odbiornika.
  • Sarw, Arw - zmienne bezpośrednio użyte w mechanizmie sterowania blokiem ARW.

Listing 2. Główny blok programu

Na listingu 2 pokazano blok programu sterującego całym urządzeniem. Po zainicjowaniu przetwornika C/A za pomocą podprogramu Dac16_set (pierwsze nastawienie wartości wyjściowej - w połowie dostępnego zakresu napięć) oraz wyświetleniu informacji o nastawianej częstotliwości VFO i kroku jej regulacji (podprogramy: Shownewfc i Changedfc) następuje przejście do powtarzanej nieskończenie głównej pętli programu Do-Loop. W pętli tej cyklicznie powtarzane są zadania programu.

Pierwsze z nich to ciąg instrukcji warunkowych If-Then-Elseif wykrywających, czy występuje obracanie pokrętłem enkodera. Jeśli tak i jeśli nastawiona częstotliwość nie znajduje się akurat na którymś z krańców pasma 3,5..3,8 MHz, to nastąpi zmiana wartości Fc o jeden krok Dfc. Dalej następuje pomiar (podprogram Fmeasure) i ewentualna korekta wartości Fvfo za pomocą podprogramu Dac16_set. W celu dokonania korekty częstotliwości Fvfo najpierw jest wyliczana różnica pomiędzy zmierzoną częstotliwością F a częstotliwością zadaną Fc.

Następnie, na podstawie jej wartości bezwzględnej Df, obliczona zostaje wartość poprawki słowa Ndac, sterującego przetwornikiem C/A równa Dndac = Df 10 (dzielenie całkowitoliczbowe). Ostatecznie, w zależności od znaku rozbieżności częstotliwości, poprawka Dndac jest dodawana lub odejmowana od słowa sterującego Ndac, ładowanego następnie do przetwornika C/A podprogramem Dac16_set.

Na wyjaśnienie zasługuje sposób wyliczenia poprawki słowa sterującego Dndac = Df 10. Zależność Ndac=f(Fvfo) przybliżono funkcją liniową y=0,1433*x-487106. Odwrotność współczynnika proporcjonalności (przy zmiennej x) wynosi 1/0,1433=6,978, czyli około 7. Oznacza to, że zgodnie z podanym przybliżeniem zmiana częstotliwości VFO o 7 Hz wymaga korekty słowa sterującego Ndac w przybliżeniu o jedność (zmiany ułamkowe z oczywistych powodów nie są możliwe). Jakkolwiek, z uwagi na niedoskonałość tej aproksymacji liniowej oraz chcąc zachować możliwie jak najmniejsze kroki korekt Fvfo (Dndac=1 dla Df=10 Hz, Dndac=2 dla Df=20 Hz, Dndac=3 dla Df=30 Hz itd.), ostatecznie postanowiono zwiększyć wykorzystany odwrócony współczynnik proporcjonalności z 7 do 10. Takie podejście gwarantuje wysoką stabilność i precyzję regulacji Fvfo, jednocześnie nie powodując zauważalnego jej spowolnienia w trakcie normalnej pracy.

Kolejny krótki fragment kodu to instrukcja warunkowa If-Then, która w przypadku wykrycia naciśnięcia przycisku enkodera obrotowego wywoła podprogram Changedfc zmieniający 10-krotnie krok strojenia częstotliwości VFO Dfc w zakresie od 10 Hz do 10 kHz.

Rysunek 4. Mapowanie zmiennej S (w zakresie od 0 do 1023 na wyjściu 10-bitowego przetwornika A/C) na zmienną Sout

W następnym kroku realizowany jest pomiar wolnozmiennego napięcia, niezbędnego do wysterowania modułów ARW i S-metra. Jest ono pobierane z suwaka potencjometru montażowego PR2, który służy do kalibracji (skalowania) wymienionych modułów. Zmierzona w przetworniku A/C wartość (w programie: zmienna S) jest zwiększana o 1, by uniknąć logarytmowania z zera. Następnie, po rzutowaniu S (słowo 16-bitowe) na zmiennoprzecinkową zmienną Sdb następuje przeliczenie jej wartości na skalę logarytmiczną (decybele [dB]) i - finalnie - na skalę wartości "prawdziwych" jednostek "S" w zmiennej Sout (jednostka "S" to około 6 dB). Przyjmując opisany sposób wyliczenia zmiennej Sout, otrzymujemy mapowanie pierwotnej zmiennej S (w zakresie od 0 do 1023 na wyjściu 10-bitowego przetwornika A/C) na zmienną Sout (w zakresie od 0 do 10 jednostek "S"), które po zaokrągleniu do najbliższej wartości całkowitej wygląda tak, jak na rysunku 4 (dodatkowa linia przerywana, to logarytmiczna linia trendu, obrazująca średnie wartości Sout przed zaokrągleniem).

Kolejny blok głównego programu przeznaczony jest do sterowania mechanizmem ARW w zakresie 12 dB (od 7 do 9 "S"). Mając na uwadze sposób wyliczenia zmiennej Sout, za dolny próg zadziałania ARW należy przyjąć wartość zmiennej S=128. Po przesunięciu "w dół" zmierzonego poziomu sygnału odbieranego w dB (zmienna Sdb) o około 42 dB, czyli 7 jednostek "S", oraz po przełożeniu wartości otrzymanej różnicy na aproksymowaną funkcją y=0,0604*x2+0,4926*x=x*(0,0604*x+0, 4926) "odwróconą" charakterystykę sterowania ARW, otrzymujemy wstępną, zmiennoprzecinkową wartość słowa sterującego Sarw. Wartość zmiennej Sarw, po ograniczeniu do wartości akceptowalnych dla 4-bitowego sterowania blokiem ARW (0…15) oraz zaokrągleniu do najbliższych wartości całkowitych i rzutowaniu na zmienną typu byte (Arw), wpisujemy do czterech najmłodszych bitów portu C mikrokontrolera. W praktyce, dla przyspieszenia i uproszczenia działania programu, zrealizowano wpis całego bajtu do wszystkich dostępnych rejestrów portu C, jednak na to działanie zareagują tylko wskazane cztery najmłodsze bity, skonfigurowane jako wyjściowe.

Ostatnie dwa bloki głównej pętli programu kontrolującego układ to wizualizacja siły sygnału odbieranego oraz pomiar i prezentacja wartości napięcia zasilania Uz. Rezultaty obu tych działań zobaczymy w dolnej linijce wyświetlacza LCD.

Siła sygnału, reprezentowana przez zmienną Sout, wyrażoną w jednostkach "S", jest wyświetlana za pomocą bargrafu, czyli ruchomego paska, którego długość zmienia się wraz z wartością Sout. Aby uatrakcyjnić wygląd i zwiększyć czytelność tej wizualizacji, zastosowano zaprojektowane we własnym zakresie znaki symbolizujące siłę sygnału. Za pomocą bloku instrukcji Select-Case, w zależności od wartości zmiennej Sout wyświetlana jest różna długość linijki poziomu, przy czym zastosowano odrębne symbole dla wartości "S" od 1 do 3, od 4 do 6 oraz od 7 do 9. Dodatkowo, po przekroczeniu wartości siły sygnału na poziomie 9 "S" na końcu linijki zamiast symbolu jednostki wyświetlany jest specyficzny symbol "+" (w negatywie), sygnalizujący fakt, że mamy do czynienia z silnym sygnałem - z tzw. "plusami" (9 "S" + N dB).

Na końcu głównej pętli Do-Loop następuje pomiar napięcia zasilania Uz (za dzielnikiem rezystancyjnym R3-R4). Pomiaru dokonuje przetwornik analogowo-cyfrowy w ATmedze poprzez multipleksowane wejście ADC5 (PORTC.5 mikrokontrolera). Zamiast uśrednienia kilku pomiarów (co zwykle pomaga zwiększyć ich dokładność i stabilność) zastosowano rozwiązanie układowe, którym jest dodanie pojemności C12 (10 mF), silnie filtrującej dolnoprzepustowo mierzony sygnał. Ostatecznie wynik pomiaru jest skalowany przez współczynnik proporcjonalności A=(2,56 V/1024)/ [3,9 kV/(22 kV+3,9 kV)]=0,0166026 V/bit i - po ograniczeniu do jednej cyfry po przecinku z użyciem wygodnej do tego celu funkcji Fusing - wyświetlany na wyświetlaczu LCD.

Listing 3. Pozostałe funkcje pomocnicze

Listing 3 obejmuje wszystkie podprogramy, wykorzystywane przez program główny. Ich wywołanie następuje każdorazowo za pomocą instrukcji Gosub (skok z powrotem do miejsca wywołania). Dzięki takiemu podejściu całkowicie uniknięto problemu przekazywania danych wejściowych do podprogramów oraz zwracania rezultatów ich działania - wszystkie zmienne w całym programie mają charakter globalny i przez to są dostępne na jednakowych zasadach w każdej części omawianego kodu. Podprogramy zawsze zaczynają się po prostu nazwą etykiety, czyli identyfikatora miejsca w programie (ang. label), a kończą słowem kluczowym Return, nakazującym powrót do miejsca swojego wywołania.

Pierwszy podprogram to Dac16_set, którego zadaniem jest ustawianie właściwej (aktualnej) wartości 16-bitowego słowa sterującego Ndac na wyjściu przetwornika DAC. Zadanie to na drodze transmisji szeregowej realizuje polecenie Shiftout, którego parametrami są kolejno: nazwa portu, na którego wyjście należy szeregowo przekazać dane binarne, nazwa portu, gdzie należy podać zegar (taktowanie) transmisji szeregowej, nazwa zmiennej (słowa binarnego) do przesłania oraz zastosowany tryb transmisji. W podprogramie skonfigurowano tryb transmisji numer 1. Po załadowaniu całego 16-bitowego słowa do rejestrów układów U7 i U8 na około 5 mikrosekund ich wejścia RCLK są podnoszone do logicznego poziomu wysokiego, co ma na celu przeładowanie świeżo załadowanych 16 bitów danych z wewnętrznego, szeregowego rejestru przesuwnego do rejestru wyjściowego. Po wykonaniu tej operacji słowo Ndac przenosi się na 16 wyjść logicznych układów U7 i U8 i na drabinkę rezystorową R-2R, a finalnie na port P4 sterujący częstotliwością pracy VFO.

Kolejny podprogram nazwany Fmeasure służy do pomiaru częstotliwości Fvfo z rozdzielczością 10 Hz. W pierwszej kolejności jest zerowana zmienna F wykorzystywana do przechowywania obliczeń pośrednich oraz do przekazania poza tę procedurę końcowego rezultatu pomiaru. Następnie jest zerowany 16-bitowy licznik Timer1, który po inicjacji programu pozostaje w stanie zatrzymania.

Następnie Timer1 jest uruchamiany i zaczyna zliczać impulsy z wyjścia VFO uformowane do poziomów TTL. W tym momencie rozpoczyna się działanie bloku opóźniającego, którego zadaniem jest wstrzymanie na około 100 ms pracy całego mikrokontrolera - poza wspomnianym licznikiem impulsów i przerwaniem, które z nim współpracuje. Ten "czas martwy" mikrokontrolera stanowi niejako wzorzec czasu (bramkę) dla pomiaru z dokładnością do 10 Hz. Opóźnienie zrealizowano za pomocą pustej pętli For-Next, wewnątrz której nie są wykonywane żadne instrukcje. Doświadczalnie sprawdzono, że jedno wykonanie takiej pustej pętli, taktowanej 16-bitową zmienną całkowitoliczbową typu Word, zabiera dokładnie 33 cykle zegara procesora. Przy zastosowaniu taktowania zegara kwarcem o częstotliwości 16 MHz, w celu uzyskania opóźnienia 100 ms, jest konieczne wykonanie 48456 takich "pustych pętli", a brakujący czas uzupełniono eksperymentalnie 27 jednocyklowymi rozkazami mikroprocesora NOP. Warto podkreślić, że czysto deterministyczne (bez podejścia eksperymentalnego) liczby przejść "pustej" pętli For-Next oraz liczby uzupełniających rozkazu NOP nie jest możliwe bez dokładnej wiedzy o tym, ile czasu (cykli zegara) upłynie pomiędzy: faktycznym startem licznika TIMER1 a zakończeniem komendy wykonującej to zadanie, inicjacją pętli For-Next a realną chwilą rozpoczęcia iteracji oraz rozpoczęciem wykonywania instrukcji zatrzymującej TIMER1 a rzeczywistym jego zatrzymaniem. W trakcie zliczania impulsów każde przepełnienie 16-bitowego licznika wywołuje stosowne przerwanie T1 overflow interrupt handling, które obsługuje kolejny podprogram, umieszczony za etykietą T1over. Obsługa tego przerwania polega jedynie na zwiększeniu o jeden wyjściowej zmiennej F. Po zatrzymaniu licznika wartość zmiennej F jest mnożona przez 216 dla uwzględnienia faktu, że każde przepełnienie tego licznika oznacza jednokrotne zliczenie takiej właśnie liczbyimpulsów. W tym konkretnym wypadku operację mnożenia dało się wygodnie zastąpić przesunięciem bitowym o 16 pozycji w lewo.

Na koniec podprogramu pomiaru częstotliwości do wartości F doliczane są impulsy zliczone w liczniku tuż przed zamknięciem wzorcowego okna czasu, a tak uzyskany wynik jest mnożony przez 10 (skalowanie niezbędne z uwagi na fakt, że zastosowany wzorzec czasu trwa 1/10 sekundy). Należy w tym miejscu wyjaśnić, że do odmierzania czasu zliczania impulsów ("bramki" licznika) nie użyto innego licznika-timera po to, aby uniknąć konfliktu przerwań od obu liczników, który mógłby skutkować błędami w pomiarze Fvfo.

Podprogram Changedfc obsługuje wciśnięcie przycisku zmiany kroku regulacji częstotliwości w enkoderze. Krok strojenia Dfc jest zmieniany w ramach pętli nieskończonej ...->10 kHz ->1 kHz->100 Hz->10 Hz->10 kHz… Funkcjonuje to poprzez podział wartości Dfc przez 10, a po napotkaniu minimalnej dozwolonej wartości (10 Hz) następuje powrót do najwyższej możliwej wartości 10 kHz. Aktualizacja wartości kroku strojenia VFO na wyświetlaczu LCD następuje z wykorzystaniem instrukcji Select-Case i specjalnie w tym celu zdefiniowanych symboli (patrz: listing 1) kroku strojenia oraz jednostki Hz. Na koniec opisywanej procedury wprowadzono opóźnienie 200 ms po to, by nieco zbyt długie naciśnięcie przycisku nie powodowało szybkiej cyklicznej zmiany kroku przestrajania.

Ostatni zdefiniowany podprogram Shownewfc służy do obsługi zmiany nastawienia częstotliwości VFO. W pierwszej kolejności realizowane jest sprawdzenie tego, czy nie przekroczono dozwolonych granic częstotliwości VFO (3,5…3,8 MHz). Jeśli tak, to wartość częstotliwości Fc jest przywracana na dozwolone granice, co chroni także główny program przed próbą nastawienia w VFO niedozwolonej częstotliwości. Potem następuje uaktualnienie wartości częstotliwości Fc na wyświetlaczu LCD. W celu zwiększenia estetyki i czytelności tego odczytu zrezygnowano z dostępnych w kompilatorze gotowych funkcji formatujących na rzecz własnej prostej procedury. Dzięki tej prostej funkcji formatującej pozycje cyfr, oznaczające MHz, kHz i pojedyncze Hz, są oddzielone kropkami a liczba cyfr dla pojedynczych herców została ograniczona do dwóch (tylko setki i dziesiątki), co odpowiada uzyskanej w urządzeniu dokładności pomiaru i regulacji częstotliwości VFO (10 Hz).

Adam Sobczyk SQ5RWQ
sq5rwq@gmail.com
http://sq5rwq.pl

Artykuł ukazał się w
Elektronika Praktyczna
luty 2016
DO POBRANIA
Pobierz PDF Download icon
Materiały dodatkowe

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik marzec 2024

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio marzec - kwiecień 2024

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka, Podzespoły, Aplikacje marzec 2024

Automatyka, Podzespoły, Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna marzec 2024

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich kwiecień 2024

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów