Automatyzacja pomiaru charakterystyki Bodego

Napisano dnia 17.03.2024 r. o godzinie 15:51
Autor: Piotr Sperka

Wstęp

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

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.

Automatyzacja pomiaru

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.

Komunikacja z urządzeniami przez USB

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).

Wykorzystany oscyloskop Hantek DSO4204B i generator Uni-T UTG932E

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.

Program

Do napisania programu automatyzującego pomiar wykorzystałem Pythona wraz z kilkoma świetnymi bibliotekami:

  • pyVisa
  • numpy
  • scipy
  • matplotlib

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).

Sygnał wejściowy

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.

Oscylogram obrazujący zniekształcony sygnał wyjściowy wzmacniacza przez zbyt niski SR
Kanał 1 – sygnał wejściowy, kanał 2 – sygnał wyjściowy
U góry sygnał wyjściowy zniekształcony przez zbyt niski slew rate (Uwej = 500 mVpp)
U dołu sygnał wyjściowy nie jest zniekształcony (Uwej = 100 mVpp)

Przykładowe pomiary

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.

Zmierzona charakterystyka Bodego filtru RC. U góry – kondensator ceramiczny, u dołu – poliestrowy 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.

Zmierzona charakterystyka Bodego wzmacniacza nieodwracającego o wzmocnieniu 15dB, opartego o LM358

Podsumowanie

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!