Spisu treści:

Generator funkcji: 12 kroków (ze zdjęciami)
Generator funkcji: 12 kroków (ze zdjęciami)

Wideo: Generator funkcji: 12 kroków (ze zdjęciami)

Wideo: Generator funkcji: 12 kroków (ze zdjęciami)
Wideo: Poradnik Midjourney + ChatGPT : Generowanie Obrazów ze Sztuczną Inteligencją Krok Po Kroku 2024, Lipiec
Anonim
Generator funkcyjny
Generator funkcyjny
Generator funkcyjny
Generator funkcyjny

Ta instrukcja opisuje konstrukcję generatora funkcyjnego opartego na układzie scalonym MAX038 firmy Maxims Analog

Generator funkcji jest bardzo przydatnym narzędziem dla maniaków elektroniki. Jest potrzebny do strojenia obwodów rezonansowych, testowania sprzętu audio i wideo, projektowania filtrów analogowych i wielu innych celów.

Obecnie istnieją dwa główne typy generatorów funkcji; cyfrowe, (oparte na DSP, DDS…), które są coraz częściej używane i analogowe, które były początkiem.

Oba typy mają swoje zalety i wady. Generatory cyfrowe mogą generować sygnały o bardzo stabilnej częstotliwości, ale mają problemy z generowaniem bardzo czystych sygnałów sinusoidalnych (co nie stanowi problemu w przypadku analogowych). Również generatory funkcji głównie rozproszonych oparte na podejściu DDS nie mają tak dużego zakresu generowania częstotliwości.

Od dawna chciałem zaprojektować użyteczny generator funkcji, który mógłby w jakiś sposób połączyć zalety obu typów generatorów (analogowego i cyfrowego). Postanowiłem oprzeć projekt na chipie Maxim MAX038*

* Uwaga - ten chip nie jest już produkowany i sprzedawany przez firmę Maxim. Jest przestarzały. Nadal można go znaleźć na eBayu, Aliexpressie i innych stronach z komponentami elektronicznymi.

Istnieją również inne układy analogowych generatorów funkcyjnych (XR2206 firmy Exar, icl8038 firmy Intersil), ale miałem

jeden MAX038 dostępny i użyłem go. Cyfrowe funkcje generatora funkcji były realizowane przez jeden układ Atmega328. Jego funkcje są następujące:

  • kontroluje wybór zakresu częstotliwości
  • steruje rodzajem sygnału (sinusoidalny, prostokątny, trójkątny, piłokształtny)
  • mierzy amplitudę sygnału
  • mierzy przesunięcie DC
  • mierzy częstotliwość sygnału
  • mierzy THD sygnału sinusoidalnego w zakresie audio (to nadal musi zostać zaimplementowane)
  • wyświetla wszystkie te informacje na wyświetlaczu LCD 16x2.

Krok 1: MAX038 Opis

MAX038 Opis
MAX038 Opis

Dołączyłem arkusz danych MAX038. Widać najważniejsze parametry chipa:

♦ Zakres częstotliwości pracy od 0,1 Hz do 20 MHz

♦ Przebiegi trójkątne, piłokształtne, sinusoidalne, kwadratowe i impulsowe

♦ Niezależne regulacje częstotliwości i cyklu pracy

♦ Zakres przemiatania częstotliwości od 350 do 1

♦ Zmienny cykl pracy od 15% do 85%

♦ Bufor wyjściowy o niskiej impedancji: 0,1 Ω

♦ Niski dryft temperatury 200ppm/°C

Kolejnym ważnym wymogiem jest konieczność podwójnego zasilania (±5V). Amplituda wyjściowa jest stała (~ 2 VP-P z przesunięciem 0 V DC).

Na stronie 8 arkusza danych można zobaczyć schemat blokowy chipa. Na stronie 11 przedstawiono najprostszy układ, który można wykorzystać do generowania sygnału sinusoidalnego. Obwód ten został przyjęty jako podstawa do projektowania generatora funkcji.

Krok 2: Obwód…

Obwód …
Obwód …

Na zdjęciu przedstawiony jest układ generatora funkcji. Zrobiłem to zdjęcie z najwyższą możliwą rozdzielczością, aby zagwarantować, że każda wartość.device może być poprawnie odczytana. Schemat wygląda dość skomplikowanie i aby lepiej go zrozumieć, osobno wyjaśnię jego główne części. Wielu czytelników mogłoby mnie winić, że obwód jest zbyt zbędny. To prawda. Na początku widać, że zawiera dwa żetony MAX038. Powodem jest to, że PCB obsługuje oba typy pakietów SO i DIP. Redundancja widoczna jest również w niektórych funkcjach -

1) diody LED pokazują aktualny aktywny zakres częstotliwości, ale jest również wyświetlany na wyświetlaczu LCD;

2) Diody LED służą również do wskazania typu sygnału, ale także wyświetlacz LCD pokazuje tę informację;

Projekt jest wykonywany w ten sposób, aby zapewnić użytkownikowi większą elastyczność - na życzenie nie mógł on korzystać z LCD lub po prostu mógł pominąć lutowanie diod LED. Przylutowałem je, aby móc debugować funkcjonalność podczas faz projektowania.

Widać też, że używam wielu opampów. Niektóre z nich można bez problemu pominąć - zwłaszcza bufory. W dzisiejszych czasach wzmacniacze operacyjne same w sobie oferują dużą redundancję - w jednym pakiecie można znaleźć 2, 4, a nawet 8 osobnych wzmacniaczy, a to za stosunkowo niską cenę. Dlaczego ich nie używać?

Redundantne są też kondensatory filtrujące – każdy zastosowany układ analogowy ma swój własny bank kondensatorów (kondensatory tantalowe + ceramiczne dla obu zasilaczy). Niektóre z nich można również pominąć.

Krok 3: Objaśnienie obwodu - zasilanie (1)

Objaśnienie obwodu - zasilacz (1)
Objaśnienie obwodu - zasilacz (1)

Jak powiedziałem ten generator wymaga podwójnego zasilania. Dodatnie napięcie jest wytwarzane przez zastosowanie liniowego regulatora napięcia 7805. Ujemną podaż generuje chip 7905. Środkowy punkt zaczepienia transformatora 2x6V jest podłączony do wspólnego uziemienia płytki. Generowane zasilacze – zarówno dodatni, jak i ujemny, są oddzielone od analogowego i cyfrowego za pomocą klinów. Dwie diody LED wskazują obecność każdego zasilania.

Krok 4: Objaśnienie obwodu – Sterowanie zakresem częstotliwości (2)

Objaśnienie obwodu – sterowanie zakresem częstotliwości (2)
Objaśnienie obwodu – sterowanie zakresem częstotliwości (2)

Do pokrycia dużego zakresu częstotliwości stosuje się wielokrotną baterię kondensatorów. Kondensatory mają różne wartości i definiują różne podzakresy częstotliwości. W pracy wykorzystywany jest tylko jeden z tych kondensatorów – jego dolna płytka jest uziemiona przełącznikiem tranzystorowym MOS. To, którą dolną płytkę kondensatorów należy uziemić, Atmega328 steruje za pomocą układu demultipleksera 74HC238. Jako przełączniki MOS użyłem tranzystorów BSS123. Głównym wymaganiem dla tego przełącznika jest niski Ron i możliwie najniższa pojemność drenu. Cyfrowe sterowanie baterią kondensatorów można pominąć - na płytce drukowanej znajdują się otwory do wlutowania przewodów do mechanicznego przełącznika obrotowego.

Krok 5: Objaśnienie obwodu – regulacja częstotliwości (3)

Objaśnienie obwodu – regulacja częstotliwości (3)
Objaśnienie obwodu – regulacja częstotliwości (3)

Na rysunku pokazano obwód sterowania częstotliwością i współczynnikiem wypełnienia. Tam użyłem standardowego wzmacniacza operacyjnego LM358 (podwójny wzmacniacz w jednym pakiecie). Użyłem też podwójnych potencjometrów 10K.

Układ MAX038 generuje wewnętrzne napięcie odniesienia 2,5 V, które jest zwykle używane jako odniesienie do wszystkich regulacji.

To napięcie jest podawane na wejście odwracające IC8a i generuje ujemne napięcie odniesienia używane do DADJ (regulacja cyklu pracy). Oba napięcia są podawane na potencjometr dla DADJ, którego środkowy odczep jest buforowany i podawany na pin DADJ układu MAX038. Zworka JP5 może być wykorzystana do wyłączenia funkcji DADJ po podłączeniu do masy. Regulacja częstotliwości „Kursu” jest wykonywana przez zmianę prądu zatopionego / pochodzącego z pinu MAX038 „IIN”. Prąd ten jest określony przez rezystor R41 i napięcie wyjściowe wzmacniacza operacyjnego buforującego środkowy zaczep potencjometru regulacji częstotliwości kursu. Wszystko to można zastąpić pojedynczym potencjometrem (w połączeniu z reostatem) pomiędzy pinami REF i IIN MAX038.

Krok 6: Objaśnienie obwodu - kontrola amplitudy, generowanie sygnału SYNC… (4)

Objaśnienie obwodu – kontrola amplitudy, generowanie sygnału SYNC… (4)
Objaśnienie obwodu – kontrola amplitudy, generowanie sygnału SYNC… (4)
Objaśnienie obwodu – kontrola amplitudy, generowanie sygnału SYNC… (4)
Objaśnienie obwodu – kontrola amplitudy, generowanie sygnału SYNC… (4)
Objaśnienie obwodu – kontrola amplitudy, generowanie sygnału SYNC… (4)
Objaśnienie obwodu – kontrola amplitudy, generowanie sygnału SYNC… (4)
Objaśnienie obwodu – kontrola amplitudy, generowanie sygnału SYNC… (4)
Objaśnienie obwodu – kontrola amplitudy, generowanie sygnału SYNC… (4)

Jak napisano w arkuszu danych, sygnał wyjściowy z MAX038 ma amplitudę ~1 V przy napięciu stałym równym potencjałowi ziemi.

Chciałem mieć możliwość kontrolowania amplitudy sygnału i samodzielnego definiowania przesunięcia DC. Jako dodatkową funkcję chciałem mieć sygnał SYNC z poziomami CMOS równolegle z sygnałem wyjściowym. Domyślnie układ MAX038 generuje taki sygnał, ale w datasheet przeczytałem, że jeśli ta funkcja jest włączona (co oznacza - pin DV+ podłączony do 5V), w wyjściowym sygnale analogowym można zaobserwować pewne piki (szum). jest tak czysty, jak to możliwe iz tego powodu wygenerowałem sygnał SYNC zewnętrznie. Płytka jest wykonana w taki sposób, że pin DV+ można łatwo zmostkować do głównego zasilania. Pin SYNC wyprowadzony jest do złącza BNC - wystarczy przylutować rezystor 50 Ohm. W takim przypadku obwód generowania sygnału SYNC można pominąć. Tutaj jak widać używam również podwójnych potencjometrów, ale nie są one połączone równolegle. Powodem tego jest - mierzę amplitudę względnie. Napięcie w środkowym punkcie jednego potencjometru jest wykrywane przez ADC Atmega328 i na podstawie tej wartości obliczana jest amplituda sygnału. Oczywiście ta metoda nie jest zbyt dokładna (polega na dopasowaniu obu sekcji potencjometrów, co nie zawsze ma miejsce), ale dla moich aplikacji jest wystarczająco precyzyjna. W tym układzie IC2A pracuje jako bufor napięcia. IC4A również. Wzmacniacz operacyjny IC2B pracuje jako wzmacniacz sumujący - wytwarza sygnał wyjściowy generatora funkcjonalnego jako sumę napięcia niezrównoważenia i sygnału głównego o ustawionej amplitudzie. Dzielnik napięcia R15. R17 generuje odpowiedni sygnał napięciowy do pomiaru offsetu sygnału głównego DC. Wyczuwa to ADC Atmega328. Opamp IC4B pracuje jako komparator - steruje inwerterem generacji SYNC realizowanym przez dwa tranzystory MOS (BSS123 i BSS84). U6 (THS4281 - Texas Instruments) przesuwa sygnał wyjściowy generowany przez MAX038 DC o 2,5 V i wzmacnia go 1,5 razy. Tak wygenerowany sygnał jest wykrywany przez przetwornik AVR ADC i przetwarzany dalej algorytmem FFT. W tej części użyłem wysokiej jakości opampów rail to rail o szerokości pasma 130 MHz (TI - LMH6619).

Aby łatwo zrozumieć, jak dokładnie działa generowanie sygnału SYNC, dołączam kilka zdjęć symulacji LTSpice obwodu. Na trzecim rysunku: niebieski sygnał to napięcie niezrównoważenia (wejście IC2B). Zielony to sygnał wyjściowy o ustawionej amplitudzie. Czerwony to sygnał wyjściowy generatora funkcjonalnego, krzywa cyjan to sygnał SYNC.

Krok 7: Projekt PCB

Projektowanie PCB
Projektowanie PCB

Do zaprojektowania PCB użyłem "Orła". Zamówiłem PCB w "PCBway". Wyprodukowanie desek zajęło im tylko cztery dni, a dostarczenie ich zajęło tydzień. Ich jakość jest wysoka, a cena wyjątkowo niska. Za 10 płytek zapłaciłem tylko 13 USD!

Oprócz tego mogłem zamówić płytki w innym kolorze bez podwyżki cen. Wybrałam żółte:-).

Załączam pliki gerber zgodnie z zasadami projektowania "PCBway".

Krok 8: Lutowanie

Image
Image
Lutowanie
Lutowanie
Lutowanie
Lutowanie

Najpierw przylutowałem urządzenia obwodów zasilających..

Po przetestowaniu bloku zasilającego przylutowałem układ Atmega328 wraz z towarzyszącymi mu urządzeniami: kryształem kwarcu, kondensatorami, nasadkami filtrującymi i złączem ISP. Jak widzisz mam zworkę na linii zasilania układu AVR. Odłączam go, gdy programuję chip przez ISP. Do tego celu używam programatora USBtiny.

W następnym kroku przylutowałem układ de-mux 74HC238, diody LED wskazujące zakres częstotliwości. Załadowałem mały program Arduino do układu Atmega, który testował multipleksowanie. (zobacz wideo pod linkiem powyżej)

Krok 9: Lutowanie…

Lutowanie…
Lutowanie…
Lutowanie…
Lutowanie…
Lutowanie…
Lutowanie…

W kolejnym kroku przylutowałem opampy pracujące w trybie DC (LM358) oraz potencjometry regulacji częstotliwości i DADJ i sprawdziłem wszystkie ich funkcje.

Dalej przylutowałem przełączniki BSS123, kondensatory określające częstotliwość i układ MAX039. Przetestowałem generator funkcjonalny sondujący sygnał na natywnym wyjściu sygnału chipa. (Możecie zobaczyć mój stary radziecki, wyprodukowany w 1986 roku, wciąż działający oscyloskop w akcji:-))

Krok 10: Więcej lutowania…

Więcej lutowania…
Więcej lutowania…
Więcej lutowania…
Więcej lutowania…
Więcej lutowania…
Więcej lutowania…

Potem przylutowałem gniazdo wyświetlacza LCD i przetestowałem je ze szkicem "Hello world".

Przylutowałem pozostałe opampy, kondensatory, potencjometry i złącza BNC.

Krok 11: Oprogramowanie

Image
Image
Oprogramowanie
Oprogramowanie

Do stworzenia oprogramowania Atmega328 wykorzystałem środowisko Arduino IDE.

Do pomiaru częstotliwości wykorzystałem bibliotekę „FreqCounter”. Plik szkicu i używana biblioteka są dostępne do pobrania. Stworzyłem specjalne symbole reprezentujące aktualnie używany tryb (sinus, prostokąt, trójkąt).

Na powyższym obrazku widać informacje wyświetlane na wyświetlaczu LCD:

  • Częstotliwość F=xxxxxxxx w Hz
  • Zakres częstotliwości Rx
  • Amplituda w mV A=xxxx
  • Przesunięcie w mV 0=xxxx
  • rodzaj sygnału x

Generator funkcji posiada z przodu po lewej stronie dwa przyciski - służą do zmiany zakresu częstotliwości (step up - step down). Po prawej stronie znajduje się przełącznik suwakowy do sterowania trybem, za nim od lewej do prawej podążaj potencjometr do sterowania częstotliwością (kurs, grzywna, DADJ), amplitudą i offsetem. W pobliżu potencjometru regulacji offsetu znajduje się przełącznik służący do komutacji między ustawionym na 2,5V DC offsetem a dostrojonym.

Znalazłem mały błąd w kodzie "Generator.ino" w pliku ZIP - zamieniono symbole przebiegów sinusoidalnych i trójkątnych. W załączonym pojedynczym pliku „Generator.ino” błąd został poprawiony.

Krok 12: Do zrobienia…

Image
Image

Jako ostatni krok zamierzam wdrożyć dodatkową funkcję - pomiar THD sygnału sinusoidalnego częstotliwości audio w czasie rzeczywistym za pomocą FFT. Jest to potrzebne, ponieważ współczynnik wypełnienia sygnału sinusoidalnego może różnić się od 50%, co może być spowodowane wewnętrznymi niedopasowaniami układu scalonego i innymi przyczynami oraz może powodować zniekształcenia harmoniczne. Współczynnik wypełnienia można regulować za pomocą potencjometru, ale bez obserwacji sygnału na oscyloskopie lub analizatorze widma nie da się dopracować jego kształtu. Obliczenie THD na podstawie algorytmu FFT może rozwiązać problem. Wynik obliczeń THD zostanie wyświetlony na wyświetlaczu LCD w prawym górnym rogu pustej przestrzeni.

Na filmie widać widmo generowanego przez sygnał sinusoidalny MAX038. Analizator widma oparty na płytce Arduino UNO + ekran TFT 2,4 . Analizator widma wykorzystuje bibliotekę SpltRadex Arduino opracowaną przez Anatoly Kuzmenko do wykonywania FFT w czasie rzeczywistym.

Wciąż nie zdecydowałem się na skorzystanie z tej biblioteki lub skorzystanie z biblioteki FHT stworzonej przez Musiclabs.

Zamierzam wykorzystać informacje zaczerpnięte z pomiarów częstotliwościomierza do obliczenia właściwego okienka próbkowania i zawiesić stosowanie dodatkowego okienkowania podczas obliczeń FFT. Potrzebuję tylko znaleźć trochę wolnego czasu, żeby to się stało. Mam nadzieję, że wkrótce będę miał jakieś wyniki….

Zalecana: