Montaż elementów rozpoczynamy od elementów najniższych (rezystory, dławiki i diody) i kolejno montujemy elementy coraz wyższe (podstawki pod układy scalone, kondensatory, potencjometry, tranzystory i wszelkie elementy łącznikowe). Rozsądne wydaje się zmontowanie i uruchomienie najpierw płytki głównej (poziomej) i przetestowanie poprawności pracy bloku zasilającego ze stabilizatorami liniowymi U1 i U2, dostarczającego napięcia +5 V i +9 V dla całego przyrządu. Stabilizatory U1 i U2 warto wyposażyć w niewielkie radiatory. Układ należy zasilić napięciem 11…14 V ze źródła o wydajności prądowej około 500 mA. Po sprawdzeniu poprawności zasilania należy skontrolować stałoprądowe punkty pracy wzmacniacza sygnału sinusoidalnego z tranzystorami Q1…Q3. Napięcia na wyprowadzeniach tych tranzystorów powinny być następujące:
- Q2: Emiter – 7,37 V, Kolektor – 2,5 V.
- Q3: Kolektor – 5,47 V, Emiter – 1,74 V.
Pewną trudnością może okazać się przygotowanie wsuwek dla modułów DDS, które wykonujemy z przyciętych na odpowiednią długość odcinków żeńskich listew „goldpin”. Dla modułu U5 wystarczą listwy jednorzędowe, a dla modułu U6 jedną z wsuwek wykonujemy z listwy dwurzędowej lub sklejamy ją na wymiar z dwóch listew jednorzędowych. Jeśli jesteśmy zdecydowani na zastosowanie jednego, konkretnego typu modułu DDS (U5 albo U6), to nie ma potrzeby przygotowywania i montażu wsuwek pod oba typy modułów.
Projekty obu płytek drukowanych zostały dopasowane do obudowy typu KM-60 i przed dolutowaniem płytki sterowania (panelowej) do płytki głównej należy wstępnie przypasować odległość montażu do usytuowania całości urządzenia w obudowie. Po ustaleniu odległości montażowych lutujemy starannie płytkę przednią do „goldpinów” wyprowadzonych z płytki głównej i możemy przystąpić do wstępnego uruchomienia urządzenia – przed zamontowaniem w obudowie.
W tym miejscu należy poświęcić kilka słów montażowi przyrządu w obudowie. Idealnym rozwiązaniem byłoby zastosowanie obudowy metalowej, która po uziemieniu zapewniałaby ekranowanie. Jakkolwiek, najtańsze i najdogodniejsze w obróbce mechanicznej są fabryczne obudowy, wykonane z tworzyw sztucznych. Projekt opisywanego tutaj urządzenia od samego początku powstawał z zamiarem użycia obudowy typu KM-60. Po wstępnym przymierzeniu zmontowanego urządzenia do obudowy przykręcamy do niej płytkę główną dwoma wkrętami M3. Następnie wykonujemy w tylnym panelu trzy otwory dla gniazd BNC (fot. 16) oraz otwory dla gniazda zasilania 12 V i włącznika.
Trwale zamocowane w obudowie urządzenie należy połączyć elektrycznie z wyprowadzeniami sygnałów na gniazdach BNC oraz włącznikiem i gniazdem zasilania +12 V. Z uwagi na brak zagrożenia zwarć wewnątrz zamkniętej obudowy, opisane połączenia można wykonać np. za pomocą srebrzanki o średnicy 0,5 mm.
Oprogramowanie
Program sterujący generatorem napisano w języku Bascom AVR. Kod programu sterującego pracą układu podzielono na cztery listingi 1…4 (ze względu na obszerność, są one dostępne w materiałach dodatkowych), odpowiadające podziałowi na zasadnicze części programu.
Po zdefiniowaniu znaków semigraficznych i niezbędnym w tym momencie restarcie sterownika wyświetlacza LCD jest wyświetlany komunikat powitalny, po którym następuje definicja: roboczego ciągu tekstowego „Sa”, wykorzystywanego dalej do czytelnego formatowania częstotliwości generatora „F”, portów sterujących pracą modułu DDS (sygnały: W_CLK, FQ_UD, DATA, oraz RESET, zamapowane na piny PORTC.2…5), a także podstawowych zmiennych wykorzystywanych do sterowania modułem AD9850: Init (ciąg startowy), Freq i Freq_d (programowana częstotliwość w dwóch formatach) oraz stałej Df. Wartość tej stałej, równa „34.359738368”, wynika z przeliczenia formuły: 2^32/125*10^6 (liczba możliwych kombinacji rejestru akumulatora DDS-a, podzielona przez częstotliwość taktowania generatora Fs) i jest wykorzystywana do przeliczenia pożądanej częstotliwości generowanej Fc na krok (przyrost) fazy syntezera DDS.
Kolejny krok to ustalenie konfiguracji pracy urządzenia: jako generator („GEN”) lub jako wobulator („WOB”), z włączonym („ON”) lub z zablokowanym („OFF”) wyjściem cyfrowym „DIGI”. Informacje te są przechowywane w pamięci EEPROM pod adresem 10 na dwóch najmłodszych bitach zmiennej State. Jeśli jednak w momencie przejścia do tej części programu (praktycznie chwilę po zakończeniu wyświetlania ekranu powitalnego) będzie wciśnięty przycisk mikrokontrolera (PIND.2=0), to program przejdzie do dwóch bloków decyzyjnych, zorganizowanych w postaci zamkniętych pętli, powtarzanych aż do kolejnych naciśnięć przycisku enkodera. Wewnątrz tych pętli, na podstawie bitów b0 i b1 zmiennej State, wyświetlana jest wybrana konfiguracja pracy urządzenia a także istnieje możliwość jej zmiany w oparciu o analizę obecności i kierunku obrotu enkodera SW1, odzwierciedlonej na czterech najmłodszych bitach zmiennej Encportbyte. Odbywa się to wewnątrz instrukcji warunkowych If-Then-Elseif-Then-EndIf, które interpretują wartości zmiennej Encportbyte, równe 2, 4, 11 lub 13 jako obracanie w prawo, a wartości 1, 7, 8 lub 14 jako obracanie w lewo (wynika to z mechanicznej konstrukcji wewnętrznej styków enkodera).
W_CLK i FQ_UD oraz przejście do podprogramu realizującego tryb Generatora lub tryb Wobulatora. Wybrany tryb pracy jest zapowiadany dużym napisem, a w przypadku trybu Wobulatora wykonywany jest odpowiedni skok bezwarunkowy do procedury obsługującej tę opcję (podprogram dla Generatora znajduje się w następującej bezpośrednio dalej części programu i nie wymaga realizacji skoku).
Listing 2 zawiera opis procedur obsługujących funkcję generatora. W pierwszej kolejności skonfigurowano jako wejściowy PORTC.0, który pełni funkcję wejścia przetwornika A/C w mikrokontrolerze U10. Przetwornik skonfigurowano do pracy pojedynczej, z automatycznym preskalerem zegara oraz napięciem referencyjnym Uref=+5 V, pobieranym ze stabilizatora scalonego U2 (LM7805). Po uruchomieniu przetwornika A/C zdefiniowano i zainicjowano zmienne Uold i Unew, które służą do przechowywania bieżącej i poprzedniej próbki zmierzonego napięcia. Takie podejście służy unikaniu zbyt częstego formatowania i odświeżania wyświetlanej na LCD wartości napięcia wyjściowego, gdy nie ulegało ono zmianie. Kolejna zainicjowana zmienna to Uvolt, która po przeskalowaniu i sformatowaniu służy do bezpośredniej prezentacji na wyświetlaczu LCD.
W kolejnych krokach zostały zdefiniowane i zainicjowane zmienne: F, Fold i Fstep. Zmienne F i Fold przechowują bieżącą i poprzednią wartości zadawanej częstotliwości generatora. Ich porównywanie pozwala na uniknięcie częstej rekonfiguracji parametrów pracy generatora DDS wtedy, gdy obie one są równe (brak oczekiwanych zmian). Natomiast zmienna Fstep przechowuje bieżący krok modyfikacji częstotliwości F, wykorzystywany przy jej modyfikacji za pomocą enkodera obrotowego SW1. W programie przyjęto wartości początkowe F=1MHz oraz Fstep=1kHz.
Kolejny blok programu realizuje pierwszą nastawę generatora DDS. Najpierw żądana częstotliwość F jest przeliczana na zwiększenie wartości akumulatora Freq_d, odpowiadające przyrostowi fazy sygnału generowanego, a następnie wyliczona wartość zmiennej Freq_d jest rzutowana na zmienną Freq 32-bitowego typu całkowitego, odpowiedniego dla rejestru sterującego AD9850. Za przesłanie tej zmiennej do syntezera jest odpowiedzialna procedura Dds_setup. W następnym etapie następuje zainicjowanie wyświetlania parametrów pracy generatora: częstotliwości F, kroku strojenia Df, napięcia wyjściowego U oraz trybu pracy G, realizowane przez procedury: F_disp, Df_disp, U_disp i funkcję Lcd.
Wewnątrz nieskończonej pętli Do…Loop cyklicznie powtarzane są te same czynności:
- Interpretacja stanu enkodera obrotowego SW1 i w razie konieczności zmiana nastawy częstotliwości F o wartość kroku Fstep za pomocą procedury F_up lub F_down.
- Sprawdzenie stanu przycisku enkodera SW1 i jeśli odpowiadające mu wejście PIND.2=0, rotacyjna zmiana parametru Fstep z zastosowaniem procedury F_step_chng.
- W bloku instrukcji warunkowej If-Then-EndIf następuje porównanie ostatnio ustawionej częstotliwości generowanej F z częstotliwością poprzednią Fold i w razie wykrycia takiego stanu ponowne zaprogramowanie AD9850 oraz wyświetlenie generowanej częstotliwości F na ekranie LCD.
- Pomiar i wizualizacja na ekranie LCD sinusoidalnego napięcia wyjściowego. Wykrycie zmiany wartości (Unew<>Uold) wyzwala proces uśrednienia porównywanych wartości, zapamiętania tak wyliczonej wartości jako poprzedniej a następnie wyświetlenie jej na ekranie LCD za pomocą procedury U_disp.
Na listingu 3 umieszczono procedury realizujące funkcję wobulatora. Na początku PORTB.2 jest definiowany jako wyjściowy, a następnie TIMER1 jest konfigurowany jako 8-bitowy przetwornik C/A pracujący w trybie PWM. Wyjście kanału PWM1A tego przetwornika jest wyprowadzone na wcześniej skonfigurowany PORTB.2 i służy do wytworzenia piłokształtnego sygnału odchylania poziomego, przeznaczonego do sterowania kanałem X oscyloskopu. Dalej definiowane są zmienne Fmin i Fmax będące granicami przedziału częstotliwości wobulacj), Deltaf – elementarny krok-postęp częstotliwości wobulacji, Fvobstep – krok regulacji krańców przedziału wobulacji Fmin i Fmax. Początkowy przedział wobulacji ustalono na zakres pasma akustycznego 20 Hz…20 kHz, a krok jego regulacji na 100 Hz. Po tych definicjach następuje pierwsze (inicjujące) wywołanie procedury Deltafcalc, której zadaniem jest wyznaczenie elementarnego kroku wobulacji Deltaf. Dalej wprowadzane są definicje zmiennych: Pwmval (poziom sygnału na wyjściu przetwornika DAC/PWM1A oraz iterator głównej pętli wobulatora), Fvob (rzeczywista częstotliwość wobulacji w zakresie 1…40 Hz), Tvobwaitus (czas determinujący szybkość wobulacji 1000000/(Fvob*256) minus ok. 91 [us]), Tvobwaitusword (wersja całkowitoliczbowa zmiennej Tvobwaitus). Początkową wartość częstotliwości wobulacji Fvob ustalono na 20 Hz. Następnie jest wywoływana procedura Fvob_chng, wyznaczająca opóźnienie w elementarnym kroku wobulacji – w funkcji przyjętej częstotliwości przemiatania Fvob. Dalej następuje pierwsze w procedurze wobulacji wyświetlenie na ekranie LCD regulowanych parametrów pracy: Fmin, Fmax, Fvob oraz Fvobstep.
Nieskończoną pętlę Do…Loop podprogramu wobulatora podzielono na dwa bloki: modyfikacji parametrów procesu oraz jego realizacji. Blok realizacji podzielono na 4 cztery części, służące zmianie każdego z ustawialnych parametrów. Wejście do bloku modyfikacji parametrów procesu następuje po naciśnięciu przycisku enkodera SW1 (PIND.2=0) i odczekaniu 400 ms. Wtedy następuje wejście do podprogramu modyfikacji parametru Fvobstep, czyli kroku regulacji parametrów Fmin i Fmax. W kolejnej podpętli, przerywanej naciśnięciem przycisku enkodera, jest odczytywany kierunek obrotu enkodera, a następnie krok regulacji częstotliwości jest odpowiednio zmniejszany lub zwiększany 10-krotnie, przy czym odbywa się to wyłącznie w granicach 1 Hz…1 MHz. Zmodyfikowana wartość parametru Fvobstep jest formatowana i wyświetlana na LCD, przy czym przy modyfikowanym aktualnie parametrze cały czas w miejsce symbolizującej go ikony jest wyświetlana gwiazdka „*”. Opuszczenie pętli modyfikacji parametru Fvobstep następuje po naciśnięciu przycisku enkodera, a gwiazdka „*”, symbolizująca proces modyfikacji parametru, jest zamieniana na podstawowy symbol, czyli pogrubione „D”.
Modyfikacje kolejnych trzech parametrów wobulacji odbywają się w bardzo podobny sposób, każdorazowo po odczekaniu 400 ms od potwierdzającego naciśnięcia przycisku enkodera, z różnicami charakterystycznymi dla danego parametru. W przypadku parametru Fmin zmiana wartości następuje o (być może zmodyfikowaną w poprzednim kroku) wartość parametru Fvobstep, przy czym zakres możliwych wartości jest ograniczony od dołu do 1 Hz a od góry do bieżącej wartości Fmax. Znacznikiem parametru Fmin jest gruba strzałka, skierowana w dół. Analogicznie, w wypadku parametru Fmax zmiana wartości następuje o wartość parametru Fvobstep, przy czym zakres możliwych wartości jest ograniczony od góry do 40 MHz a od dołu do bieżącej wartości Fmin. Znacznikiem parametru Fmax jest gruba strzałka, skierowana w górę. Po modyfikacji Fmin i Fmax wywołana zostaje procedura Deltafcalc, która ponownie przelicza elementarny krok wobulacji Deltaf.
Ostatni, czwarty krok modyfikacji dotyczy parametru Fvob, utrzymując go w zakresie 1…40 Hz. Po zmianie wartości zmiennej Fvob jest wywoływana procedura Fvob_chng, wyznaczająca opóźnienie w elementarnym kroku wobulacji. Znacznikiem parametru Fvob jest pogrubiona litera S.
W drugiej części pętli Do…Loop jest realizowane przemiatanie ustalonego zakresu częstotliwości, połączone z wysterowaniem osi X oscyloskopu. Obszerny blok modyfikacji parametrów przy normalnej pracy wobulatora nie opóźnia jego działania, ponieważ program wchodzi do tego bloku wyłącznie w trybie konfiguracji urządzenia. Podstawowa pętla wobulatora For…Next iteruje parametr Pwmval w zakresie 0…255, który jest właściwy do ustawienia jako wyjście przetwornika DAC/PWM i równocześnie stanowi iterator do wyliczenia narastającej częstotliwości wyjściowej F, liczonej jako iloczyn tego iteratora oraz wyliczonego wcześniej współczynnika skalującego Deltaf, powiększony o wartość Fmin. Tak wyznaczona wartość F jest następnie przeliczana na wartość parametru Freq_d do zaprogramowania AD9850 przez procedurę Dds_setup. Procedura ta jest poprzedzana modyfikacją wyjścia przetwornika PWM/DAC, aby przyśpieszyć propagację sygnału PWM przez filtry dolnoprzepustowe z układami U4A/U4B. Ostatnim działaniem, wykonywanym wewnątrz podstawowej pętli wobulacyjnej, jest wprowadzenie opóźnienia o wartość Tvobwaitusword mikrosekund, odpowiedniego do przyjętej szybkości wobulacji Fvob, wyliczonego przez wywołanie procedury Fvob_chng.
Listing 4 zawiera podprogramy pomocnicze wywoływane komendą skoku Gosub.
Procedurę Testenc w całości napisano w asemblerze dla procesorów z rdzeniem AVR ATmega – w celu maksymalnego zwiększenia szybkości jej działania, ponieważ jest wywoływana za pomocą przerwania generowanego z częstotliwością około 2 kHz. Procedura wykonuje test stanu styków enkodera z pamięcią poprzednich stanów, a wynik przekazuje do zmiennej Encportbyte, w której istotne są tylko bity b3…b0. W pierwszej kolejności na stos procesora odkładane są wszystkie używane rejestry (SREG, R24 i R25). Następnie poprzednie stany styków enkodera są przesyłane ze zmiennej Encportbyte do rejestru R24. Dalej są usuwane 2 najstarsze bity stanów (b1…b0) poprzez dwukrotne przesunięcie w prawo rejestru R24. Potem aktualne stany enkodera odczytywane są z portu B (PB.4, PB.3) do rejestru R25, w którym maskowane zerami są wszystkie pozostałe bity. Dalsze dorównanie w prawo o jedną pozycję powoduje przesunięcie pobranych wartości na bity b3 i b2. Połączenie alternatywą logiczną rejestrów R24 i R25 tworzy nowy zestaw czterech bitów stanu w rejestrze R24, który następnie jest zapamiętywany w zmiennej Encportbyte. Procedurę kończy pobranie ze stosu poprzednich wartości wszystkich używanych rejestrów.
Procedura F_down i F_up, odpowiednio: zmniejsza lub zwiększa częstotliwości pracy generatora o wartość kroku Fstep, dbając jednak o to, aby nie wykroczyły one poza zakres Fstep…40 MHz.
Procedura F_step_chng powoduje zmianę kroku strojenia generatora Fstep w sposób cykliczny, tzn. w ciągu od 1 Hz do 1 MHz (z powiększaniem 10×) i dalej z powrotem od 1 Hz. Po realizacji każdorazowej takiej zmiany wywołana zostaje także procedura aktualizacji wyświetlania wartości Fstep na wyświetlaczu LCD. Następnie odczekany zostaje czas, który pozwala uniknąć wielu kolejnych zmian tego parametru przy dłuższym naciśnięciu przycisku enkodera.
Procedura Dds_setup realizuje programowanie częstotliwości AD9850. Odbywa się to poprzez wprowadzenie szeregowo najpierw 32-bitowego słowa Freq reprezentującego nową częstotliwość, a następnie 8-bitowej sekwencji Init powodującej wprowadzenie nowej częstotliwości. Procedurę kończy wygenerowanie krótkiego impulsu zatwierdzającego tę zmianę na linii FQ_UD syntezera.
Procedura F_disp realizuje wyświetlanie sformatowanej częstotliwości generatora na wyświetlaczu LCD. Wykorzystywano w niej specjalną, pogrubioną czcionkę „F”, zdefiniowaną jako znak specjalny. Procedura ta najpierw zamienia całkowitą wartość częstotliwości F na ciąg tekstowy Sa, a następnie w ciągu instrukcji If-Then-Elseif-Else-EndIf dokonuje formatowania zależnego od przedziału, do którego należy wyświetlana wartość. Formatowanie to polega na wstawieniu kropek dziesiętnych, oddzielających kolejne trzycyfrowe bloki cyfr, a następnie na końcu dostawia właściwą jednostkę (Hz, kHz lub MHz). Jednostkę „Hz” zaimplementowano w formie pojedynczego, zdefiniowanego na początku programu znaku specjalnego, co pozwoliło na zaoszczędzenie jednego znaku na względnie niewielkim wyświetlaczu LCD.
Procedura Df_disp powoduje wyświetlenie sformatowanego kroku strojenia generatora na wyświetlaczu LCD, a odbywa się to z zastosowaniem specjalnej, pogrubionej czcionki „D”, zdefiniowanej jako znak specjalny. W procedurze użyto bloku instrukcji Select-Case-EndSelect, które selekcjonują poszczególne wartości kroków strojenia generatora Fstep i przypisują im odpowiednie napisy, składające się z liczby zakończonej odpowiednią jednostką wielokrotną (Hz, kHz lub MHz).
Procedura U_disp ma za zadanie przeskalowanie, sformatowanie i wyświetlenie na ekranie LCD zmierzonego napięcia wyjściowego z generatora. Skalowanie odbywa się wg współczynnika 5/1024 V, odpowiadającego przyjętemu napięciu referencyjnemu Uref=+5 V i rozdzielczości przetwornika A/C. Przeskalowana wartość jest powiększana o około 0,22 V, co odpowiada napięciu progowemu zastosowanego detektora-podwajacza napięcia z diodami Schottky'ego D1 i D2. Zmienna Unew odpowiada wielkości zmierzonej przez detektor, natomiast zmienna Uvolt jest wielkością wyświetlaną na ekranie LCD. Formatowanie z dokładnością do dwóch miejsc po przecinku ma charakter wariantowy, bowiem dla wielkości mniejszych od 0,22 V, z uwagi na niepewną wartość pomiaru, wyświetlany jest jedynie stały komunikat.
Procedura Fvob_chng wyznacza opóźnienie Tvobwaitus (w mikrosekundach), które należy wprowadzić w elementarnym kroku wobulacji dla przyjętej częstotliwości przemiatania Fvob. Pierwsze dwa wyrażenia realizują: podział jednego cyklu wobulacji na 256 przedziałów (rozdzielczość 8-bitowego przetwornika DAC/PWM) oraz skalowanie od zastosowanej dla parametru Fvob jednostki [Hz] do mikrosekund. Kolejny wiersz wprowadza oszacowaną pomiarowo korektę o stałe czasy wykonania pojedynczej iteracji, a ostatnie wyrażenie dokonuje rzutowania zmiennoprzecinkowego rezultatu opisanych obliczeń na wartość całkowitą.
Procedura Deltafcalc wyznacza elementarny krok (przyrost) częstotliwości Deltaf, zastosowany przy przemiataniu. Jest to po prostu różnica skrajnych częstotliwości wobulacji Fmin oraz Fmax, podzielona przez zastosowaną liczbę przedziałów, równą 255.
Jak widać, kod programu sterującego urządzeniem nie jest bardzo skomplikowany, choć względnie obszerny (plik w formacie HEX, przeznaczony do zaprogramowania mikrokontrolera ATmega8, wypełnia 99% jego pamięci FLASH). Zachowana w programie prostota struktury, sposób podziału i uporządkowanie różnych funkcji a także liczne, dość wyczerpujące komentarze zachęcają do własnych modyfikacji i eksperymentów z urządzeniem. Krótka, ilustrowana instrukcja obsługi oprogramowania przyrządu zostanie podana w dalszej części tego opracowania.
Tryb pracy można zmienić tylko w chwili włączenia urządzenia – poprzez naciśnięcie i przytrzymanie przycisku enkodera aż do momentu wejścia w menu trybu pracy przyrządu. Po kilku sekundach wyświetlania ekranu powitalnego (fot. 19) zostanie wyświetlony jeden z dwóch ekranów wyboru stanu aktywności wyjścia (buforu) dla sygnału cyfrowego („DIGI OUT: OFF/ON”). Pokręcając gałką enkodera, ustawiamy wyjście cyfrowe jako aktywne („ON”) i zatwierdzamy ten wybór przyciskiem enkodera, tym samym przechodząc do kolejnego poziomu wyboru w menu konfiguracyjnym. W podobny sposób wybieramy tryb pracy przyrządu („MODE: GEN/WOB”). Po wyborze przez kilka sekund będziemy mogli oglądać ekranik podsumowujący wybrane ustawienia, które w przypadku wyboru trybu wobulatora i wyłączenia wyjścia cyfrowego (przykład) wyglądałyby tak, jak na fotografii 20.
Na ekranie przyrządu pracującego w trybie generatora, w górnym wierszu są wyświetlane: po lewej – nastawiona częstotliwość F, po prawej – duża litera „G” lub „W” symbolizująca wybrany tryb pracy. W dolnym wierszu, po lewej stronie można odczytać wybrany krok regulacji częstotliwości, a po prawej międzyszczytową wartość [Vp-p] zmierzonego wyjściowego napięcia sinusoidalnego. Z uwagi na zastosowaną metodę pomiaru (detektor szczytowy w układzie podwajacza napięcia z diodami Schottky'ego, skalibrowany programowo dla częstotliwości zbliżonej do 1 MHz) wskazania napięcia należy traktować orientacyjnie. Dodatkowo, z uwagi na napięcie progowe detektora na poziomie około 0,22 V, sygnały wyjściowe o niższym poziomie nie zostaną zmierzone.
Obsługa generatora jest bardzo łatwa. Regulację częstotliwości F przeprowadzamy pokrętłem enkodera, a zmianę kroku tej regulacji wykonujemy poprzez naciskanie jego przycisku (kolejne kroki zmieniają się cyklicznie w kierunku rosnącym). Amplitudę sygnału wyjściowego sinusoidalnego zmieniamy liniowym potencjometrem obrotowym PR3, który wyprowadzono na przedni panel urządzenia. Należy w tym miejscu podkreślić, że wyjściowy wzmacniacz szerokopasmowy z tranzystorami Q1..,Q3, o wzmocnieniu około 12 dB, jest w stanie dostarczyć nieprzesterowanego sygnału wyjściowego o maksymalnym poziomie około 2 Vp-p. Może zatem być przesterowany, gdy zostanie zasilony sygnałem z modułu DDS o poziomie przekraczającym około 0,5 Vp-p.
Ponieważ różne typy (i różne wykonania) rozważanych tutaj modułów generatorów DDS mają różne poziomy napięć wyjściowych, zmieniające się także znacząco wraz z częstotliwością wytwarzanego przebiegu, kryterium utrzymania poziomu sygnału wyjściowego, nieprzekraczającego około 2 Vp-p, jest prostą i dogodną metodą ograniczania zniekształceń nieliniowych w napięciu wyjściowym generatora.
Bardzo ważną czynnością, którą koniecznie należy wykonać, jest wyregulowanie współczynnika wypełnienia generowanego przebiegu prostokątnego na wartość jak najbliższą 50%. Przebieg ten powstaje w szybkim komparatorze w układzie AD9850 jako efekt porównania odfiltrowanego sygnału sinusoidalnego ze stałym napięciem referencyjnym, ustalanym potencjometrem montażowym, umieszczonym na module generatora DDS. Regulację przeprowadzamy tym właśnie potencjometrem, a pomiaru dokonujemy np. oscyloskopem cyfrowym. W ostateczności, jeśli nie dysponujemy odpowiednim przyrządem pomiarowym, można zastosować metodę uproszczoną, polegającą na pomiarze odfiltrowanego dolnoprzepustowo napięcia średniego (filtr RC z R=10 kV i C=100 nF będzie wystarczający z zapasem dla testowej F=1 MHz) i regulacji potencjometrem, umieszczonym na module DDS, aż do uzyskania na wyjściu filtru RC wartości środkowej pomiędzy szczytami napięcia prostokątnego. Przy filtracji i pomiarze napięcia z wyjścia na porcie P3 będzie to wartość w bardzo dobrym przybliżeniu równa połowie napięcia zasilania, pobieranego ze stabilizatora U2 (LM7805), czyli około 2,5 V.
Korzystanie z trybu wobulatora wymaga wstępnego ustawienia zakresu wartości piłokształtnego napięcia sterującego wejściem „X” oscyloskopu (wyjście „SYNCHRO” na porcie P4 urządzenia). Można to zrobić za pomocą potencjometru montażowego PR1, zamontowanego w pobliżu środka głównej (wykonawczej). Na początku pracy z przyrządem rozsądnie będzie ustawić PR1 na maksimum amplitudy sygnału piłokształtnego na wyjściu „SYNCHRO”. Jeśli jako wyjście generatora-wobulatora wykorzystujemy sygnał cyfrowy (wyjście „DIGI 0/5V”), to potencjometr regulacji poziomu sygnału analogowego (sinusoidalnego) można ustawić na minimum. Natomiast jeśli do wysterowania badanego układu używamy wyłącznie sygnału sinusoidalnego, to przed rozpoczęciem pomiarów należy ustawić jego odpowiedni poziom wyjściowy, a wyjście cyfrowe „DIGI 0/5V” można całkowicie „wygasić” w trybie wstępnej konfiguracji przyrządu. Należy tu zaznaczyć, że pomiar poziomu napięcia wyjściowego sinusoidalnego nie jest dostępny w trybie pracy wobulatora. Poziom wyjściowy wobulowanego napięcia sinusoidalnego, po podłączeniu badanego obwodu, warto jest zatem skontrolować za pomocą oscyloskopu. Można też ewentualnie dokonać tego za pomocą woltomierza napięć zmiennych lub wbudowanej w przyrząd funkcji pomiarowej – w trybie generatora, zmieniając ręcznie częstotliwość pracy F w zakresie interesujących wartości.
Podsumowanie
Opisany generator-wobulator DDS powstał jako kontynuacja projektu generatora AVT-3111. Autor projektu ma poczucie, że udało się osiągnąć cel projektowy, którym był rozsądny kompromis pomiędzy: szerokim wachlarzem możliwości technicznych, ergonomią obsługi, względną prostotą wykonania we własnym zakresie oraz niskim kosztem nabycia potrzebnych podzespołów i elementów. Znaczącym atutem opisanego urządzenia, poza dwufunkcyjnością, jest także możliwość alternatywnego zastosowania jednego z dwóch dość szeroko dostępnych na rynku modułów generatorów DDS z układem AD9850. Kontynuacją tego projektu i publikacji będzie projekt trzech sond pomiarowych (jednej liniowej i dwóch logarytmicznych), w oparciu o które bardziej szczegółowo przedstawione zostaną możliwości opisanego tutaj przyrządu oraz sposoby jego wykorzystania w praktycznych zadaniach konstruktorskich i pomiarowych.
Na koniec chciałbym serdecznie podziękować koledze Lucjanowi Bryndzy SQ5FGB za pomoc okazaną przy konfigurowaniu nowej edycji programu KiCAD, którego użyłem do projektowania obu płytek, a także za cenne sugestie dotyczące samego procesu projektowego.
Adam Sobczyk, SQ5RWQ
sq5rwq@gmail.com
http://sq5rwq.pl