Generator funkcyjny DDS

Generator miał oryginalnie posłużyć do odblokowania pewnego Arduino.

Generator funkcyjny DDS
Generator funkcyjny DDS

Ktoś przestawił mu fusy, pomyślałem, że pomoże mi w jego uruchomieniu jako zewnętrzny zegar. Po co mam płacić grube setki, skoro takie wynalazki są dostępne za 90pln? Cóż – Arduino udało się przy jego pomocy uruchomić, ale od kupna 'normalnego' generatora się nie wykręciłem. Poniżej zobaczycie dlaczego.

Co właściwie generuje?

Generator posiada 2 wyjścia:

  • DDS OUT
  • HS OUT

Na wyjściu DDS OUT, w zakresie 1-65kHz, układ generuje następujące przebiegi:

  • Prostokątny (ustawienie: Square);
  • Sinusoidalny (ustawienie: Sinus);
  • Piła i odwrócona piła (ustawienie: Saw i reverseSaw);
  • Trójkątny (ustawienie: Triangle);
  • Szum (ustawienie: Noise);
  • EKG (ustawienie: ECG).

Na wyjściu HS OUT, układ generuje tylko przebieg prostokątny o częstotliwości 1, 2, 4, 8 MHz.

 Typ  Rodzaj Sygnał na DDS OUT Sygnał na HS OUT
Przebiegi Prostokątny (ustawienie: Square) TAK NIE
Sinusoidalny (ustawienie: Sine) TAK NIE
Piła i odwrócona piła (ustawienie: SawTooth i ReverseSawTooth) TAK NIE
Trójkątny (ustawienie: Triangle) TAK NIE
Szum (ustawienie: Noise) TAK NIE
EKG (ustawienie: ECG) TAK NIE
Prostokątny: wysoka częstotliwość (ustawienie: HighSpeed) NIE TAK
Częstotliwość Ustawiana klawiszami lewo/prawo 1-65k, co określony krok 1,2,4,8 MHz
Amplituda Ustawiana pokrętłem Amplitude max 14Vpp (między pikami) Stała TTL,  ~4.95V
Offset pionowy Ustawiany pokrętłem Offset +/-zasilanie/2 Stała, +TTL/2 [V]

Projekt

Urządzenie oparto no projekcie AVR DDS signal generator V2.0. W stosunku do v1.0 wzbogacono go o kontrolę amplitudy. Generator napędzany jest przez procesor AtMega. Wyjście HS OUT podłączone jest bezpośrednio do jego pinu OC1A(PD5).

Zasilanie

Moduł generatora należy zasilać napięciem 7-9V, gniazdo DC ma rozmiar 2.1/5.5mm.

Stabilność źródła zasilania może być bardzo istotna dla jakości generowanego sygnału. Do swoich doświadczeń używałem zasilacza laboratoryjnego. przy 8V układ zużywał ok. 50mA.

Ustawienie amplitudy

Pokrętło 'Amplitude' umożliwia zmianę amplitudy sygnału. Teoretycznie układ generuje przebiegi do 18Vpp (czyli voltów między szczytami). W praktyce powyżej 8.2V i poniżej -7.0V sygnał jest obcinany:
amplitude_clip_000amplitude_clip_001amplitude_clip_002

Ustawiania offsetu

Potencjometr Offset reguluje przesunięcie sygnału. W zależności od jego ustawienia:

  • Dodatnie, ponad „0” – tutaj uwaga na obcinanie (powyżej 8.2V):
    offset_0
  • W miarę regulacji wykres przesuwa się w dół:
    offset_1
  • W kierunku ujemnym-tu znów obcinanie od dołu: offset_2
  • W pewnym momencie wykres się całkiem 'wypłaszczył':offset_3
  • …a w krańcowym położeniu wskakuje z powrotem na poziom 0..amplituda (tutaj znowu efekt obcinania):
    offset_5

Porównanie

Kolejne testy zrobiłem podłączając testowany generator na jeden kanał oscyloskopu (niebieska ścieżka) – a na drugi Siglent’a SDG810, model 'pudełkowego' generatora DDS – żółta ścieżka (cóż, też chiński, ale trochę innej klasy:)).
measure_0

  • Sinusoida: 40kHz (góra sdg810, dół: testowany moduł):
    przebiegi_sin_40khz
  • Sinusoida: 40kHz:
    przebiegi_sin
  • Sinusoida: 40kHz – w powiększeniu:
    przebiegi_sin_40khz_bigger
  • Trójkątny, 40 kHz:
    przebiegi_ramp_40khz
  • Prostokątny 40kHz:
    przebiegi_sq_40khz
  • Prostokątny 65kHz (max dla DDS OUT) – widać wyraźne nachylenie zbocz sygnału:
    przebiegi_sq_65khz
  • HS OUT: prostokąt 1MHz (widać przesterowania nawet do 6.80 Vpp!)  :
    przebiegi_sq_1MHz
  • HS OUT: prostokąt 2MHz:
    przebiegi_sq_2MHz_a
  • HS OUT: prostokąt 4MHz:
    przebiegi_sq_4MHz
  • HS OUT: prostokąt 8MHz:
    przebiegi_sq_8MHz

Podsumowanie

Oczywiście porównanie przedstawianego generatora do 15x droższego Siglenta nie jest fair. Myślę, że jakość i użyteczność testowanego układu jest po prostu adekwatna do jego ceny. Nie oczekujcie, że za takie pieniądze  pieniądze pozyskacie narzędzie równe zabawkom za tysiąc+.

W zakresie do 65kHz sygnał jest w zasadzie w porządku – do podstawowych doświadczeń się nada. W trybie High Speed generator zrobił to, co po nim oczekiwałem – udało się za jego pomocą uruchomić Atmega32. Ale przesterowania są dość niesympatyczne. A tutaj porównanie FFT:

fft_0

fft_1

Problem z tym generatorem polega na tym, że dopiero na oscyloskopie widać, jaki efekt dają pokrętła Amplitude i Offset. Ich zachowanie nie jest liniowe; o ustawionych wartościach nie sposób się dowiedzieć z wyświetlacza. Trzeba oscyloskopu, żeby zobaczyć jakie jest Vpp i kiedy zaczyna się obcinanie przebiegów oraz  jakie jest przesunięcie. Na szczęście pokrętła są analogowe czyli układ 'pamięta' ostatnie ustawienia. Jeżeli ustawicie sygnał na oscyloskopie – wyłączcie generator, podłączcie go do badanego układu i ponownie uruchomcie.

Podsumowując – układ wystarczy do prostych eksperymentów i celów edukacyjnych. Nada się również do prostych prac warsztatowych. Przy tej cenie nie ma sensu rozpisywać się o szumach i przesterowania – ale w zakresie do 65kHz nie jest źle.

Źródła

Dodaj komentarz