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

Generator funkcyjny DDS zestaw do montażu, uruchomienie i testy

TechEkspert 19 Mar 2018 18:10 14943 29
REKLAMA
  • Generator funkcyjny DDS zestaw do montażu, uruchomienie i testy
    Niebawem na elektroda.pl pojawi generator DDS w postaci zestawu do montażu. Generator DDS pozwala na wytwarzanie sygnałów prostokątnych 1,2,4,8MHz oraz sygnałów o częstotliwości regulowanej do 65KHz m.in. o kształtach: sinus, prostokąt, piła, trójkąt oraz szum. Urządzenie wyposażone jest w alfanumeryczny wyświetlacz LCD z podświetleniem, przyciski sterujące oraz potencjometry do ustawiania amplitudy i składowej stałej sygnału wyjściowego. Wymagane zasilanie +5V, +12V, -12V.

    Montaż urządzenia warto rozpocząć od małych elementów (rezystory, kondensatory), poprzez podstawki układów scalonych i złącze LCD. Montaż można przeprowadzić na zasadach podobnych jak minioscyloskop DSO138. Po zasileniu napięciem +5V należy ustawić kontrast wyświetlacza przy pomocy potencjometru montażowego.

    Generator funkcyjny DDS zestaw do montażu, uruchomienie i testy

    Do działania generatora "szybkich" przebiegów prostokątnych 1,2,4,8MHz wystarczy zasilanie 5V, na wyjściu HS pojawi się sygnał prostokątny o amplitudzie ~5V. Urządzenie pobiera prąd ~30mA.
    Generator funkcyjny DDS zestaw do montażu, uruchomienie i testy

    Do działania generatora DDS (Direct Digital Synthesis) potrzebne jest zasilanie symetryczne +12V -12V doprowadzone do wyjściowego wzmacniacza operacyjnego. Pobór prądu w liniach zasilania symetrycznego +/-12V jest niewielki (pojedyncze miliampery) więc można wykorzystać np. niewielki transformator o dzielonym uzwojeniu lub prostowanie jednopołówkowe + stabilizatory 12V. Można wykorzystać także przetwornice DC/DC indukcyjne lub pojemnościowe. Do generowania przebiegów został wykorzystany przetwornik 8b DAC na drabince rezystorowej R-2R (10k i 20k). Amplituda wyjściowa regulowana do ~18-19Vpp.

    Przyciskami wybieramy kształt przebiegu oraz częstotliwość i uruchamiamy generowanie przebiegu. Podczas generowania przebiegu nie ma możliwości zmiany częstotliwości. Należy zatrzymać generowanie sygnału i zmienić częstotliwość.
    Generator funkcyjny DDS zestaw do montażu, uruchomienie i testyGenerator funkcyjny DDS zestaw do montażu, uruchomienie i testyGenerator funkcyjny DDS zestaw do montażu, uruchomienie i testyGenerator funkcyjny DDS zestaw do montażu, uruchomienie i testy

    Zmiana częstotliwości odbywa się skokowo w zależności od ustawień:
    Generator funkcyjny DDS zestaw do montażu, uruchomienie i testy

    Wygląd przebiegu 1KHz sinus, piła, odwrócona piła, trójkąt, prostokąt, ECG:
    Generator funkcyjny DDS zestaw do montażu, uruchomienie i testyGenerator funkcyjny DDS zestaw do montażu, uruchomienie i testyGenerator funkcyjny DDS zestaw do montażu, uruchomienie i testyGenerator funkcyjny DDS zestaw do montażu, uruchomienie i testyGenerator funkcyjny DDS zestaw do montażu, uruchomienie i testyGenerator funkcyjny DDS zestaw do montażu, uruchomienie i testy

    "Szum":
    Generator funkcyjny DDS zestaw do montażu, uruchomienie i testyGenerator funkcyjny DDS zestaw do montażu, uruchomienie i testy

    Sinus i trójkąt 5KHz, widać zniekształcenia:
    Generator funkcyjny DDS zestaw do montażu, uruchomienie i testyGenerator funkcyjny DDS zestaw do montażu, uruchomienie i testy

    Sinus i trójkąt 10KHz, sinus przypomina trójkąt:
    Generator funkcyjny DDS zestaw do montażu, uruchomienie i testyGenerator funkcyjny DDS zestaw do montażu, uruchomienie i testy

    Sinus i trójkąt 10KHz na wyjściu DAC, lepszy wzmacniacz wyjściowy może polepszyć parametry:
    Generator funkcyjny DDS zestaw do montażu, uruchomienie i testyGenerator funkcyjny DDS zestaw do montażu, uruchomienie i testy

    Sinus i trójkąt 40KHz na wyjściu wzmacniacza i na wyjściu DAC:
    Generator funkcyjny DDS zestaw do montażu, uruchomienie i testyGenerator funkcyjny DDS zestaw do montażu, uruchomienie i testy
    Generator funkcyjny DDS zestaw do montażu, uruchomienie i testyGenerator funkcyjny DDS zestaw do montażu, uruchomienie i testy

    Sinus i trójkąt 65KHz na wyjściu wzmacniacza, poza zniekształceniami widać zmiany amplitudy:
    Generator funkcyjny DDS zestaw do montażu, uruchomienie i testyGenerator funkcyjny DDS zestaw do montażu, uruchomienie i testy

    65KHz sinus i trójkąt na wyjściu DAC:
    Generator funkcyjny DDS zestaw do montażu, uruchomienie i testyGenerator funkcyjny DDS zestaw do montażu, uruchomienie i testy

    Czy widzicie zastosowanie dla tego generatora DDS, np. w zastosowaniach audio, czy warto zmodyfikować układ wzmacniacza wyjściowego?

    Wymiana wzmacniacza operacyjnego i polepszenie parametrów generatora DDS: https://www.elektroda.pl/rtvforum/topic3445820.html

    Fajne? Ranking DIY
    O autorze
    TechEkspert
    Redaktor
    Offline 
    W moich materiałach znajdziecie testy i prezentacje sprzętu elektronicznego, modułów, sprzętu pomiarowego, eksperymenty. Interesuje mnie elektronika cyfrowa, cyfrowe przetwarzanie sygnałów, transmisje cyfrowe przewodowe i bezprzewodowe, kryptografia, IT a szczególnie LAN/WAN i systemy przechowywania i przetwarzania danych.
    Specjalizuje się w: mikrokontrolery, rozwiązania it
    TechEkspert napisał 5819 postów o ocenie 4623, pomógł 15 razy. Jest z nami od 2014 roku.
  • REKLAMA
  • #3 17115570
    paluszasty
    Poziom 25  
    Nie ma co się dziwić ze to tak słabo wygląda. Brak normalnego DACa dyskwalifikuje ten układ wg mnie. Popatrzcie w drabince R-2R zastosowano rezystory o tolerancji 1%. Z takich rezystorów to maksymalnie przetwornik 6 bitowy można zrobić (64 poziomy). Dla przetwornika 8 bit (256 poziomów) Trzeba stosować rezystory 0.1%.
  • #4 17115616
    miszczo997
    Poziom 28  
    @leonow32 ceny ad9850 ostatnio poszły strasznie w górę, chyba kończą się zapasy. Za to ad9833 jest w niskiej cenie i pozwala na bezpośrednie generowanie różnych kształtów przebiegów.
  • REKLAMA
  • #6 17115863
    leonow32
    Poziom 30  
    miszczo997 napisał:
    @leonow32 ceny ad9850 ostatnio poszły strasznie w górę, chyba kończą się zapasy. Za to ad9833 jest w niskiej cenie i pozwala na bezpośrednie generowanie różnych kształtów przebiegów.

    Rzeczywiście, skurczybyki podrożały kilkukrotnie! Ale można było chociażby zastosować jakikolwiek DAC lub mikrokontroler z wbudowanym DAC. Drabinka R-2R to wyważanie otwartych drzwi.
  • #7 17115908
    paciek74
    Poziom 13  
    Parę lat temu go wykonałem właśnie ze strony electronics-lab, ja chociaż zaprojektowalem płytki od nowa żeby mieć płytę czołową. Układ działa, mam, korzystam.
  • #8 17116119
    kranzio
    Poziom 26  
    miszczo997 napisał:
    @leonow32 ceny ad9850 ostatnio poszły strasznie w górę, chyba kończą się zapasy. Za to ad9833 jest w niskiej cenie i pozwala na bezpośrednie generowanie różnych kształtów przebiegów.

    Autor posta nie skopiował. Ten generator jest dostępny na aliexpress i stamtąd właśnie on pochodzi.
  • #9 17116308
    ArturAVS
    Moderator
    Ogólnie przydatne urządzenie. Tylko właśnie ten przetwornik D/A na drabince wszystko psuje.
    D/A np. DAC0832 dużo by polepszył.
  • REKLAMA
  • #10 17117087
    TechEkspert
    Redaktor
    DAC lub drabinka na lepszych rezystorach i być może źródło napięciowe dałoby lepsze efekty podobnie jak lepszy układ wzmacniacza,
    wykorzystany mikrokontroler to ATmega16 taktowany kwarcem 16MHz.
  • #11 17117635
    Razorek01
    Poziom 9  
    Wzmacniacz o lepszych parametrach i filtr regeneracyjny ...
  • #12 17118255
    Konto nie istnieje
    Konto nie istnieje  
  • #13 17119019
    Stefan_2000
    Poziom 19  
    Razorek01 napisał:
    Wzmacniacz o lepszych parametrach i filtr regeneracyjny ...

    Co to jest filtr regeneracyjny?
  • #14 17123147
    Razorek01
    Poziom 9  
    Stefan_2000 napisał:
    Co to jest filtr regeneracyjny?

    Dolnoprzepustowy filtr na wyjściu przetwornika C/A, którego zadaniem jest odfiltrowanie wyższych składowych częstotliwościowych znajdujących się w widmie sygnału odtwarzanego. Filtr powinien mieć strome zbocze, by zapewnić odpowiednie tłumienie niepożądanych składowych przy możliwie dużym paśmie przenoszenia.
  • #15 17124499
    TechEkspert
    Redaktor
    Wymieniłem w podstawce wzmacniacz LM358 na TL082 (testowałem też TL072),
    więcej informacji tutaj: https://www.elektroda.pl/rtvforum/topic3445820.html

    Jak dla mnie taki banalny upgrade daje bardzo dobre efekty i zwiększa możliwości tego generatora DDS.

    Tak wygląda sygnał sinusoidalny 65kHz na TL082:
    Generator funkcyjny DDS zestaw do montażu, uruchomienie i testy

    a tak wyglądał na LM358...
    Generator funkcyjny DDS zestaw do montażu, uruchomienie i testy
  • REKLAMA
  • #17 17125125
    TechEkspert
    Redaktor
    Wszystko można, na miejscu miałem TL082, efekt był bardzo dobry i wystarczający (patrząc na możliwości testowanego DDS).
    W DDS z większymi częstotliwościami wyjściowymi seria MCP60XX może być dobrym rozwiązaniem.
  • #18 17125587
    radiosimon
    Poziom 28  
    Zauważyłem w opisie, że jest tam skok 1Hz. Do jakiej f jest on użyty? Aż do 65kHz? Mam źródło tego softu z 2008r. ale nie bardzo mogę to wyłuskać.
    Chodzi mi o możliwość użycia podobnego układu jako zadajnik płynnej prędkości do silnika krokowego.
  • #19 17126278
    TechEkspert
    Redaktor
    @radiosimon w trybie DDS w zakresie od 0-65535Hz dostępne są skoki 1Hz,10Hz,100Hz,1000Hz,10000Hz.
    W trybie HS można wybrać częstotliwość prostokątnego sygnału wyjściowego jako 1MHz, 2MHz, 4MHz, 8MHz.
    Wszelkie zmiany można wykonywać przy wyłączonym generowaniu sygnału, czyli nie możemy płynnie przestrajać częstotliwości wyjściowej.

    Zakładam że sterownik silnika krokowego wymaga sygnału prostokątnego, taki sygnał można wygenerować przy pomocy np. NE555, lub dowolnego mikrokontrolera i wbudowanego licznika. Do sygnału prostokątnego nie potrzebny jest DDS, wystarczy wyjście zmieniające stany logiczne. Podejrzewam, że potrzebne jest płynne przestrajanie częstotliwości, tym DDS nie można tego osiągnąć.
  • #20 17126319
    ArturAVS
    Moderator
    TechEkspert napisał:
    dostępne są skoki


    Chyba kroki przestrajania.
  • #21 17126619
    radiosimon
    Poziom 28  
    NE555+potencjometr to technika analogowa a ja potrzebuję cyfrowo.
    Jeśli chodzi o timery+procesor to właśnie takie łatwe to nie jest (płynnie). Chyba, że tam jest jakaś sztuczka w programie. Autor pierwszej wersji DDS pisze o podziale częstotliwości podstawowej przez 2^24 co daje mu dużą precyzję, choć dla mnie nie do końca jest to jasne. Nie chodzi mi też o skopiowanie 1:1 tylko o zrozumienie tematu.

    I used 24bit phase accumulator() which determines the signal resolution of frequency. The bigger frequency I am generating the smaller resolution I get.
    If you would use 18,432 Mhz crystal, then your:
    Resolution=fCPU/2^24=18432000/150994944=0.1220703125
    Then you can generate frequencies:
    fOUT=Accumulator*Resolution;
    Accumulator value is updated according to your selected frequency, what means last byte of Accumulator addresses the value form lookup table.
    I don’t know if I explained well, but you can see similar project here:
    Mini DDS

    https://scienceprog.com/avr-dds-signal-generator-v10/

    To zapytam inaczej: czy jest możliwość ustawienia dowolnej częstotliwości z zakresu 0-60kHz? Np. 12345Hz? (wyłącznie prostokąt o wypełnieniu 50%)
  • #22 17126861
    TechEkspert
    Redaktor
    @radiosimon z wykorzystaniem timera w mikrokontrolerze można generować prostokątne sygnały o wypełnieniu 50% i o przestrajanej częstotliwości, częstotliwość będzie zbliżona do zakładanej w zależności od wykorzystanego sygnału zegarowego i stopnia podziału.

    Przykładowo mamy mikrokontroler taktowany sygnałem 16MHz,
    chcemy aby na określonym pinie pojawiła się częstotliwość 60kHz,
    czyli zmieniamy stan logiczny pinu 120 tyś. razy na sekundę.
    Stan logiczny pinu możemy zmieniać przy każdym przepełnieniu timera.
    Zakładamy że mamy 16 bitowy timer, który może zliczać do 65535.

    16 000 000 / 120 000 daje około 133 i przy takiej ilości zliczeń chcemy aby nastąpiło przepełnienie i zmiana wartości na pinie.
    W efekcie na pinie otrzymamy 60150Hz, a dla wartości 134 -> 59701Hz, 135-> 59259Hz.

    np. dla 10kHz -> 800, a 801 to 9987Hz.

    Dla niższych częstotliwości np. 1kHz mamy 16 000 000 / 2000 -> 8000
    dla wartości 8000->1000Hz, 8001-> 999.7Hz

    Czyli dla niższych częstotliwości wyjściowych tak jak piszesz otrzymujemy większą rozdzielczość.

    Tak to z grubsza działa.

    Np. w excelu można łatwo zasymulować odchyłkę w funkcji częstotliwości.
  • #23 17127093
    radiosimon
    Poziom 28  
    TechEkspert napisał:
    np. dla 10kHz -> 800, a 801 to 9987Hz.

    No wszystko ok, czyli dokładnie co 1Hz (liniowo) w całym "paśmie" 60kHz się nie da czy się mylę? Zresztą nawet co 10Hz jest ten sam problem (ograniczenia timerów).
    Weźmy inny przykład: szukam jakieś częstotliwości rezonansowej i przy pomocy tego generatora może to być niemożliwe (pomijam, że oprogramowanie nie pozwala zmieniać f "w locie").

    Używam do tego AD9833+AVR ale jest drogo i szukam cały czas czegoś prostszego. Może jakieś sugestie?
  • #24 17127206
    Urgon
    Poziom 38  
    AVE...

    Czy AD9833 jest drogi? No nie wiem, ja kupiłem moduł za niecałe 12 złotych z darmową wysyłką z Chin. Jedynym problemem może być jakość oryginalnego rezonatora kwarcowego, ale mając dostęp do lepszej klasy miernika częstotliwości zapewne dałoby się go skalibrować z poziomu firmware...

    Polecam też rzucić okiem na tę stronę o algorytmie Bresenhama...
  • #25 17127366
    TechEkspert
    Redaktor
    Do przestrajania częstotliwości ADXXXX lub generator analogowy będą OK. Rozwiązania oparte o timer w mikrokontrolerze będą okres sygnału niskiego/wysokiego regulowały z rozdzielczością jednego taktu timera.

    Algorytm Bresenhama to dla mnie coś nowego, wygląda ciekawie, muszę się wczytać.
  • #26 17127449
    Slawek K.
    Poziom 35  
    radiosimon napisał:
    TechEkspert napisał:
    np. dla 10kHz -> 800, a 801 to 9987Hz.

    No wszystko ok, czyli dokładnie co 1Hz (liniowo) w całym "paśmie" 60kHz się nie da czy się mylę? Zresztą nawet co 10Hz jest ten sam problem (ograniczenia timerów).
    Weźmy inny przykład: szukam jakieś częstotliwości rezonansowej i przy pomocy tego generatora może to być niemożliwe (pomijam, że oprogramowanie nie pozwala zmieniać f "w locie").

    Używam do tego AD9833+AVR ale jest drogo i szukam cały czas czegoś prostszego. Może jakieś sugestie?

    Drogo ? https://www.aliexpress.com/wholesale?catId=0&...iative_id=SB_20180325101542&SearchText=ad9833

    Pozdr
  • #27 17148474
    excray
    Poziom 41  
    AD9833 nie da się użyć jako generatora funkcyjnego. On może generować co najwyżej sinus albo trójkąt o zadanej częstotliwości. Ale nie mamy możliwości zaprogramowania własnego przebiegu.
  • #28 17148606
    Urgon
    Poziom 38  
    AVE...

    Większość i tak nie potrzebuje własnego przebiegu w typowych pracach, w których generator się przydaje. W sytuacji, gdy potrzebujesz przebiegów arbitralnych prawdopodobnie pracujesz już nad czymś kosztownym i skomplikowanym, więc na kupno generatora arbitralnego możesz już sobie pozwolić...
  • #29 17168234
    Artur k.
    VIP Zasłużony dla elektroda
    paluszasty napisał:
    Nie ma co się dziwić ze to tak słabo wygląda. Brak normalnego DACa dyskwalifikuje ten układ wg mnie. Popatrzcie w drabince R-2R zastosowano rezystory o tolerancji 1%. Z takich rezystorów to maksymalnie przetwornik 6 bitowy można zrobić (64 poziomy). Dla przetwornika 8 bit (256 poziomów) Trzeba stosować rezystory 0.1%.

    O rozdzielczości przetwornika decyduje wielkość słowa wejściowego, a nie tolerancja rezystorów.
    W tym przypadku słowo wejściowe ma 8 bitów i tolerancja rezystorów tego w żaden sposób nie zmieni.
    Od tolerancji rezystorów zależy dokładność przetwarzania przetwornika i dotyczy to tak samo przetwornika 6 bitowego, jak i 8 bitowego. Dlaczego w 6 bitowym nie chcesz dawać 0.1%? Nie rozumiem dlaczego w 6 bitowym przetworniku godzisz się na mniejszą dokładność przetwarzania, a w 8 bitowym Ci to przeszkadza.

    Natomiast w tym generatorze nie ma sensu stosowanie lepszych niż 1% rezystorów, bo rozdzielczość to tylko 20mV, która wynika z wielkości słowa wejściowego i tolerancja rezystorów tego nie zmieni. Zawsze będzie widać schodki na przebiegu, nawet gdybyśmy dali rezystory 0.01%.
  • #30 18374330
    jarek_lnx
    Poziom 43  
    Artur k. napisał:
    O rozdzielczości przetwornika decyduje wielkość słowa wejściowego, a nie tolerancja rezystorów.
    W tym przypadku słowo wejściowe ma 8 bitów i tolerancja rezystorów tego w żaden sposób nie zmieni.
    Przyjmuje się jako konieczne, aby błędy nieliniowości (różniczkowej) przetwornika były przynajmniej na takim poziomie, żeby przetwornik był monotoniczny. Inaczej mówiąc, aby błąd przy zmianie o jeden bit, był mniejszy niż zmiana napięcia, jaka powinna temu jednemu bitowi odpowiadać.

    Całkiem rozsądne założenie że dla rosnących liczb na wejściu napięcie wyjściowe również może tylko rosnąć, właśnie błędy wartości rezystorów (oraz rezystancja wyjściowa uC) mogą spowodować że warunek ten nie będzie spełniony. Najbardziej widoczne będzie to przy zmianie z 01111111 na 10000000, zmiana najstarszego bitu musi dać wyższe napięcie niż siedem młodszych bitów i to wymaga określonej dokładności. Jeśli rezystancja rezystora przy MSB razem z rezystancją portu uC będzie miała błąd 1% to będzie więcej niż 1LSB

    Dlatego podłączenie 16 wyjść uC do drabinki R-2R nie da nam 16-bitowego przetwornika, w tym sensie że owszem słowo będzie 16-bitowe, ale użyteczna liczba bitów, pozwalająca w przewidywalny sposób wpływać na napięcie wyjściowe, będzie znacząco mniejsza.
REKLAMA