Generator DDS z regulacją
amplitudy
projekt własny
Cezary Klimasz
2008
Celem realizowanego projektu było zbudowanie generatora opartego o cyfrową syntezę tzw.
DDS. Założenia zakładały możliwość generowania sygnałów: sinusoidalnego, prostokątnego
oraz trójkątnego. Zanim zdefiniowano końcowe parametry oraz dobrano elementy
przestudiowano literaturę w odniesieniu do cyfrowego generowania sygnałów. Tak powstał
m.in. generator DDS z drabinką R-2R. Jednakże generator taki umożliwiał jedynie
generowanie próbek z rozdzielczością 8 bitów a także cechował go duży współczynnik
zniekształceń w sygnale wyjściowym. Dlatego też projekt ewoluował. Dzięki pojawiającym się
coraz częściej artykułom w prasie elektronicznej poświęconym generatorom DDS,
prezentowany projekt nabrał takiego kształtu jaki w tym dokumencie jest prezentowany.
Głównym ograniczeniem, którym kierowano się podczas projektowania generatora była cena i
dostępność elementów w Polsce. M.in. dlatego upadł pomysł zastosowania wzmacniacza
mnożącego umożliwiającego regulację zarówno amplitudy jak i offsetu (cyfrowa regulacja), a
skupiono się wyłącznie na regulacji amplitudy (wzmacniacz z możliwością cyfrowej reg.
amplitudy AD8321). Trzeba nadmienić, że elementy użyte w projekcie nie były elementami
ogólnodostępnymi. Zdobycie układu AD9833 (gen. sygnałów) wiązało się z poszukiwaniami
na aukcjach internetowych, zaś wzmacniacza AD8321 na zapytaniu do firmy Analog Devices
w ramach oferowanego wsparcia „sample”. W trakcie wszystkich ewolucji projekt finalny
nabrał wysokiego podobieństwa do pracy magisterskiej z Politechniki Lubelskiej
1
.
Prezentowany generator powstawał około kilku miesięcy głównie ze względu na równoległe
realizowanie innych projektów a także ze względu na oczekiwanie na zamówione elementy
oraz czasochłonność wykonania obwodów drukowanych sposobami domowymi (minimalizacja
kosztów projektu).
Należy zaznaczyć, że projekt jest projektem rozwojowym. Obecnie analizowana jest
możliwość dodania modulacji AM oraz FM, a także zwiększenia zakresu częstotliwościowego
generatora.
Generator finalnie osiągnął podane niżej parametry:
−
generowanie sygnałów: sinus, trójkąt, prostokąt,
−
zakres generowanych częstotliwości od 1Hz do 1MHz z krokiem 1Hz,
−
regulacja amplitudy od -26dB do 19dB,
−
pobór mocy ok. 380mA,
−
sterowanie za pomocą dwóch impulsometrów z przyciskiem,
−
element wskaźnikowy – wyświetlacz LCD 2x16,
−
mikroprocesor sterujący ATmega16/ATmega32.
Projekt był projektem testowym, nie starano się uzyskać jak najwyższych wzmocnień czy
częstotliwości. Związane było to głównie z trudnościami w dostępie do sprzętu pomiarowego
jakimi są oscyloskopy z możliwością pomiaru zniekształceń sygnału. Istniejący generator
posiada programową możliwość rozszerzenia zakresu częstotliwości, ale przy rosnących
zniekształceniach sygnałów. Maksymalna częstotliwość 1MHz pozwala na uzyskanie niemal
niezniekształconych sygnałów wyjściowych. Prezentowana dokumentacja niestety jest uboga
pod względem szczegółowych parametrów, jak już wcześniej wspomniano z powodu braku
dostępu do nowoczesnego sprzętu laboratoryjnego.
1
Więcej na stronie:
http://elektron.pol.lublin.pl/users/elekp/prace_dypl/Chmiel/index.htm
Generator oparto o cyfrowy generator AD9833 oraz cyfrowy wzmacniacz AD8321. Nad
całością czuwa mikrokontroler ATmega16. Poniżej znajduje się schemat urządzenia podzielony
na bloki funkcjonalne.
Blok mikrokontrolera
Jak widać mikrokontroler ATmega16 (obudowa TQFP) taktowany jest z częstotliwością
8MHz. Port B oprócz funkcji komunikacji/programowania SPI pełni również funkcję
wskaźnikową – PB0 oraz PB1 to wyjścia dla diod LED. Port D został niewykorzystany. Po
przeanalizowaniu możliwości zastosowania komunikacji z komputerem wydało to się bezcelowe
i nie zostało zrealizowane. Port C obsługuje wyświetlacz LCD ze standardowym sterownikiem
HD44780, zaś port A odpowiada w całości za obsługę przycisków oraz cyfrowych enkoderów
firmy ALPS.
Blok generatora kwarcowego
Zastosowany generator to ECS-100X generujący sygnał zegarowy o częstotliwości
25.175MHz i potrzebny jest dla generatora sygnałów AD9833.
Blok generatora sygnałów
Jak widać na schemacie zastosowano zworki mające na celu pomóc w uruchamianiu całości.
Układ AD9833 komunikuje się z otoczeniem za pomocą trzech linii interfejsu SPI. Wejście
MCLK to wejście dla generatora kwarcowego.
Blok programowalnego wzmacniacza
Sygnał z mikrokontrolera poprzez SPI trafia do układu generatora AD9833 a następnie do
wzmacniacza AD8321. Wzmacniacz ten również jest sterowany poprzez SPI przez
mikrokontroler (ustawianie wzmocnienia z zakresu -26dB do 26dB). Należy zaznaczyć iż
wzmacniacz ten zawiera szerokie pole wzmocnienia. Zasilanie AD8321 to 9V. AD_OUT oznacza
wyjście z wzmacniacza to ostatniego bloku formowania sygnału.
Blok wyjściowy
Niestety blok ten jest bardzo ubogi i głównym jego celem jest zapewnienie wyjściowej
rezystancji 50Ω. W przyszłości planuje się wprowadzenie tutaj wtórnika emiterowego
zabezpieczającego cały układ.
Blok zasilania
Blok zasilania ma za zadanie dostarczać napięcia: +5V i +9V.
Poniżej prezentowana jest zaprojektowana płytka drukowana dla schematu
Wymiary płytki to 84x67mm. Płytka została zaprojektowana jako dwustronna, z
przelotkami, zalana polygonem podłączonym do masy. Maksymalna ilość elementów otrzymała
obudowy do montażu powierzchniowego.
Płytka z generatorem AD9833 została wykonana osobno. Podziękowania w tym miejscu dla
Mirka Hałata
, który zaprojektował i dostarczył płytkę wraz z wlutowanym układem AD9833.
Pierwszy wykonany generator wymagał pewnych zmian w schemacie oraz na płytce PCB. Po
uwzględnieniu tych zmian generator działa bez zarzutów i jest oparty o schemat
zaprezentowany powyżej.
UWAGA: Generator pobiera około 300mA, dlatego należy zaopatrzyć się w odpowiednie
zasilanie oraz zamontować radiator na układzie AD8321.
Oprogramowanie stworzono w języku ANSI C w środowisku WinAVR. Kluczowa jest
obsługa układu AD9833, która wymagała przestudiowania dokumentacji układu. Jeśli chodzi o
układ AD8321 to jego sterowanie za pomocą SPI jest bardzo proste. Poniżej prezentowane są
funkcje obsługi układu generatora.
[1]
Pierwszy fragment kodu zawiera inicjalizację komunikacji SPI pomiędzy mikrokontrolerem a
układami Analog Devices. Należy pamiętać, że najpierw trzeba ustawić port B a dopiero potem
inicjalizować SPI.
[2]
Procedura w zależności od układu do którego ma wysłać dane realizuje to w różny sposób.
Układ AD9833 potrzebuje ramki 16 bitowej zaś AD8321 8 bitowej.
[3]
Powyżej widoczna funkcja mająca na celu ustawienie zadanej częstotliwości generowanego
sygnału.
[4]
Widoczne powyżej są dwie funkcje odpowiedzialne za ustawienie wzmocnienia oraz
ustawienie rodzaju generowanego sygnału. W funkcji set_gain wartość wysyłana przez SPI jest
liczona według zależności podanych w dokumentacji układu AD8321.
[5]
Funkcja powyżej ma na celu wyzerować generator AD9833 i przygotować do wykonania
jakiejś operacji.
Na podstawie zaprezentowanych funkcji można bardzo prosto stworzyć kompletne
oprogramowanie dla generatora DDS i takie też stworzono, ale jego kod źródłowy nie będzie
publikowany.
Zaprojektowany generator w wersji prototypowej posiada tylko dwa pokrętła umożliwiające
odpowiednie ustawianie sygnału, gniazdo wyjściowe BNC, gniazdo zasilania oraz przełącznik
ON/OFF. Pokrętła to cyfrowe impulsatory firmy ALPS z możliwością ‘wcisku’. Dzięki takim
dwóm dodatkowym przyciskom nie trzeba było montować dodatkowych i wyprowadzenie
mikrokontrolera PA6 i PA7 zostały nie podłączone.
Program generatora pozwala na ustawienie częstotliwości od 1Hz do 1MHz z krokiem
wybieranym poprzez wciśnięcie pokrętła FSTEP. Wzmocnienie wybierane jest drugim
pokrętłem GAIN, zaś przycisk wbudowany w to pokrętło umożliwia zmianę kształtu sygnału.
Ze względu na brak sprzętu pomiarowego nie są prezentowane szczegółowe dane
techniczne, ale za to prezentowane są zdjęcia mogące służyć jako pewien jakościowy sposób
oceny generowanych sygnałów.
Poniżej widoczne są zdjęcia różnych generowanych sygnałów dla przypadków
częstotliwościowych 100kHz i 1MHz przy maksymalnym wzmocnieniu 19dB.
uwaga: rysunki dla różnych podstaw czasu
W trakcie testów generatora okazało się, że fala sinusoidalna wygląda dobrze do 5MHz,
trójkątna do 3MHz, zaś prostokątna powyżej 1MHz zaczyna odbiegać od właściwego kształtu.
Jednak nie chcąc komplikować sposobu sterowania oraz parametrów generatora założono, że
maksymalna generowana częstotliwość generatora, będzie częstotliwością dającą optymalne
parametry pracy i ustalono ją na 1MHz.
Poniżej prezentowane są zdjęcia wykonanego prototypowego generatora DDS.
Projekt miał za zadanie stworzyć tani, łatwy w obsłudze generator kilku przebiegów. Cel ten
został osiągnięty. Dodatkowo stworzono generator sterowany mikrokontrolerowo, zaś
komunikacja z użytkownikiem odbywa się za pomocą dwóch pokręteł oraz wyświetlacza LCD.
Koszt wykonania całego urządzenia to około 70zł.
Projekt jest projektem rozwojowym. Generowane częstotliwości można zwiększać poprzez
zmianę generatora kwarcowego, zmianę programu sterującego lub poprzez wymianę
cyfrowego generatora AD9833 na przykład na AD9834. W przyszłości planuje się rozszerzyć
możliwości generowanych sygnałów o modulację AM oraz FM.
zaprojektował i wykonał
Cezary Klimasz