Napisano dnia 17.03.2024 r. o godzinie 15:51
Autor: Piotr Sperka
Charakterystyka Bodego obrazuje zależności wzmocnienia (lub tłumienia) oraz przesunięcia fazowego od częstotliwości sygnału. Jest to jedna z najpopularniejszych charakterystyk częstotliwościowych opisujących układ. Między innymi pozwala ocenić stabilność układu czy pasmo jego pracy.
Pomiar charakterystyki Bodego danego układu zasadniczo sprowadza się do podawania sygnału wejściowego o znanej charakterystyce i obserwacji sygnału wyjściowego. Pomiar ten powtarzamy dla kolejnych punktów w zakresie częstotliwości, w których chcemy wykreślić charakterystykę. W amatorskich warunkach wystarczy do tego oscyloskop i generator przebiegów sinusoidalnych.
Z tak przeprowadzanym pomiarem jest tylko jeden problem – jest czasochłonny. Przykładowo, chcąc wykreślić charakterystykę w zakresie 10Hz – 1MHz z dziesięcioma punktami na dekadę wykonamy około pięćdziesięciu pomiarów.
Oczywiście, istnieją specjalizowane urządzenia do pomiaru takich parametrów (np. VNA), jednak realistycznie nie mieszczą się one w budżecie hobbysty-elektronika. A te, które się mieszczą (np. NanoVNA) raczej nie sprawdziłyby się w moim zastosowaniu – to znaczy pomiarach na raczej niskich częstotliwościach – do kilkudziesięciu megaherców.
W czasach urządzeń laboratoryjnych wyposażonych w interfejsy do komunikacji z komputerem nie powinno to jednak stanowić dużej przeszkody. Ponieważ zarówno mój oscyloskop, jak i generator funkcyjny posiadają USB, postanowiłem wykorzystać je do automatyzacji pomiaru.
W świecie urządzeń laboratoryjnych od lat istnieją standardy, które definiują sposoby komunikacji z urządzeniami. Jest to na przykład protokół VISA wraz z zestawem komend SCPI. Co ważne, standardy te nie definiują interfejsu fizycznego. Kiedyś standardem były RS232 oraz GPIB, obecnie jest to raczej Ethernet oraz USB (USB-TMC).
W moim przypadku oba urządzenia wykorzystują USB i nie wymagają żadnych dodatkowych sterowników. Zarówno dla oscyloskopu jak i generatora producenci udostępniają „Programming manual”, który jest listą wspieranych komend SCPI wraz z przykładami. Z generatorem nie miałem najmniejszych problemów, natomiast w przypadku oscyloskopu zarówno niektóre opisy okazały się błędne, jak i sam firmware urządzenia pozostawia wiele do życzenia (zawiesza się). Cóż, chyba nie można oczekiwać za wiele w stosunku do ceny sprzętu.
Do napisania programu automatyzującego pomiar wykorzystałem Pythona wraz z kilkoma świetnymi bibliotekami:
Kod programu (ciągle w trakcie rozwoju) jest dostępny na moim GitHubie. Umożliwia on ustawienie zakresu częstotliwości, ilości punktów na dekadę, a także zależności napięcia wyjściowego generatora od częstotliwości. Jest to istotne, bo oscyloskop ma niską rozdzielczość pionową (8 bitów). Dynamiczna zmiana poziomu sygnału wejściowego wraz z dynamiczną zmianą czułości oscyloskopu umożliwia zwiększenie zakresu dynamiki pomiaru.
Program dla każdego punktu częstotliwości zbiera wykres sygnału na wejściu i wyjściu układu, oblicza wzmocnienie, a także przesunięcie fazowe. Oczywiście, taki pomiar nie jest idealny, głównie z uwagi na szumy w sygnale, ale daje całkiem niezły obraz sytuacji. Szczególnie w odniesieniu do kosztów (zero, zakładając, że miałem już generator i oscyloskop).
Przed uruchomieniem pomiarów należy ustalić jaki będzie odpowiedni poziom sygnału wejściowego. W przypadku pomiaru elementów pasywnych nie ma to tak wielkiego znaczenia, ale w przypadku układów aktywnych jest bardzo istotne. Mierzymy parametry małosygnałowe, więc po pierwsze nie chcemy przesterować układu (powinien działać w obszarze liniowym), a po drugie sygnał wyjściowy nie powinien być zniekształcony. Przykładowo testując program zmierzyłem charakterystykę prostego wzmacniacza nieodwracającego opartego o LM358 (wzmocnienie około 5). O ile dla niskich częstotliwości sygnał wejściowy 500 mVpp był jak najbardziej odpowiedni, to jednak w okolicy 100 kHz niski Slew Rate układu dał o sobie znać i sygnał wyjściowy zamiast sinusoidy zaczął bardziej przypominać trójkąt. Dlatego, żeby zachować wiarygodność pomiarów ważne było zmniejszenie sygnału wejściowego do 100 mVpp.
Na marginesie – według danych katalogowych slew rate LM358 wynosi 0.3 V/μs – to jest według katalogu TI, mój egzemplarz jest produkcji niewiadomej. Z oscylogramu wychodzi około 0.4 V/μs, a więc wszystko się zgadza.
W niedługiej przyszłości mam nadzieję wykorzystać całą konstrukcję do pomiaru stabilności pętli sprzężenia zwrotnego. Jeśli się to uda, będzie o tym kolejny wpis. Póki co, wykonałem w celach testowych kilka pomiarów.
Jako pierwszy postanowiłem zmierzyć prosty pasywny filtr dolnoprzepustowy RC, złożony z rezystora 4.7kΩ oraz kondensatora 100nF. Za pierwszym razem był to kondensator ceramiczny, za drugim MKT.
Na drugi ogień poszedł układ aktywny – prosty wzmacniacz nieodwracający oparty o LM358 o wzmocnieniu 5.7, czyli 15.1 dB. Jak można oszacować z wykresu, w takiej konfiguracji trzydecybelowe pasmo wynosi około 200 kHz.
Niewielkim nakładem pracy udało mi się stworzyć środowisko do pomiaru charakterystyki Bodego w zakresie niskich częstotliwości (od blisko zera, do kilkudziesięciu megaherców) w warunkach domowych. Program jest łatwy do zmodyfikowania, aby wykorzystać go z innym oscyloskopem i generatorem. Dodatkowo, zapewne wraz z użytkowaniem będę go jeszcze rozbudowywał. Jeśli tylko masz oscyloskop i generator, które umożliwiają zewnętrzne sterowanie, zachęcam do eksperymentów. Do następnego razu!