Elektroda.pl
Elektroda.pl
X
Arrow Multisolution Day
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Analizator Bodego na STM32F407 z płytki Discovery

ghost666 25 Cze 2018 18:40 2223 1
  • Analizator Bodego na STM32F407 z płytki Discovery
    Analizator Bodego na STM32F407 z płytki Discovery
    Analiza urządzeni w przestrzeni częstotliwości, jest niezwykle istotne dla zbadania wielu jego parametrów. Poznanie charakterystyki Bodego czy funkcji przejścia układu jest dosyć prostym pomiarem, który zrealizować można z pomocą zaprezentowanego poniżej urządzenia.

    Jak pokazuje uproszczony schemat po prawej stronie, przez mierzony układ przepuszcza się po kolei przebiegi o różnej, liniowo zmieniającej się częstotliwości. Tego rodzaju sygnał o zmiennej częstotliwości nazywany jest chirpem. Gdy częstotliwość jest powoli zmieniana - dajmy na to z prędkością 1 Hz/s - amplituda sygnału musi być utrzymywana na stałym poziomie, aby pomiar był dokładny. Jako że zazwyczaj mierzy się charakterystykę w dosyć szerokim zakresie częstotliwości, to trudno jest utrzymać amplitudę na jednym poziomie. Dlatego też, jak pokazano na obrazku, cały zakres dzieli się na podzakresy. dla wygody pomiaru.

    Generacja sygnału i jego pomiar

    Analizator Bodego na STM32F407 z płytki Discovery
    Generacja przebiegu sinusoidalnego jest dosyć prosta, jeśli wykorzystuje się przetwornik DAC i procesor zdolny do operacji zmiennoprzecinkowych. Należy jednakże pamiętać, że funkcje sin() i cos() z standardowej biblioteki math.h zajmują strasznie dużo czasu, ponieważ realizują iteracyjny algorytm obliczania tych wartości z dosyć wysoką precyzją. Zamiast tego, autor konstrukcji wykorzystał tablicę - 2048 punków od 0 do 2π - z wartościami funkcji sinus. Częstotliwość próbkowania ADC i DAC wynosi 200 kHz dla każdej mierzonej częstotliwości. Wykorzystanie stałej częstotliwości próbkowania istotnie upraszcza dalsze przetwarzanie sygnału.

    Problemy zaczynają się w momencie, gdy z stabelaryzowanej funkcji chcemy generować przebiegi o różnej częstotliwości. Dla jednego okresu sinusa, przy częstotliwości próbkowania 200 kHz potrzebujemy:





    * 200 tysięcy punktów dla częstotliwości 1 Hz
    * 20 punktów dla częstotliwości 10 kHz.

    Oczywiście, zwykła tabela nie da tutaj rady i musimy wykorzystać dodatkowe zabiegi, takie jak liniowa interpolacja pomiędzy punktami. Jeśli częstotliwość jest taka, że możemy dokładnie korzystać z tabeli 2048 punktów to z niej korzystamy, ale dla częstotliwości pomiędzy tymi konieczne jest interpolowanie liniowe z wykorzystaniem wartości z tabeli. Dla niższych częstotliwości niektóre punkty z tabeli są po prostu opuszczane.

    Oczywiście możliwe by było wykorzystanie zewnętrznego układu DDS, takiego jak AD9833, jednakże samodzielne generowanie wartości sinusa i cosinusa do pomiarów jest wygodniejsze, jeśli chodzi o późniejszą detekcję fazy i amplitudy. O ile jeśli chodzi o częstotliwość to przy DDSie nie ma większego problemu - można sprawdzić jaka komenda została wysłana poprzez SPI do układu, to nie da się poznać fazy, bez próbkowania sygnału. A wtedy i tak musimy dobudować osobny układ, który obraca fazę o 90 stopnii.

    Analizator Bodego na STM32F407 z płytki Discovery
    Filtr antyaliasingowy na wyjściu DACa

    Wykorzystanie przetwornika DAC jest całkiem proste, jedynie co musimy robić to przeskalować wartości od -1 do +1 odczytane z tabeli do wartości 2048 (środkowa wartość 12 bitowego przetwornika DAC). Jakkolwiek wykorzystanie takiego przetwornika wiele upraszcza, to pamiętać trzeba o pewnych komplikacjach. Po pierwsze, o parametrach DAC decyduje czas stabilizacji jego wyjścia. W przypadku układu STM32F407 czas stabilizacji wynosi 3 µs (jak widać na fragmencie karty katalogowej pokazanym po prawej), co przekłada się na częstotliwość 333,33 kHz - stąd też wybór 200 kHz, jako częstotliwości próbkowania; jest ona bezpieczna i stanowczo w granicy liniowości pracy przetwornika.

    Analizator Bodego na STM32F407 z płytki Discovery

    Innym czynnikiem, który ogranicza działanie przetwornika jest maksymalna prędkość narastania napięcia w wewnętrznym buforze DACa - w układzie STM32F407. Jeśli skorzystamy z informacji, jakie zawarte są w nocie aplikacyjnej (pokazanej po lewej stronie) to możemy obejść te ograniczenia. Może to pozwolić na uzyskanie częstotliwości próbkowania do 2 MHz, ale tak szybkie próbkowanie ogranicza czas na obliczenia pomiędzy poszczególnymi próbkami i przerwaniami.

    Obliczenia poszczególnych wartości zajmują około 4,1 µs. Dlatego też czas próbkowania 200 kHz daje komfortowe warunki pracy - pomiędzy próbkami jest 5 µs, więc jest dostatecznie dużo czasu na interpolację, obliczenie amplitudy i fazy etc.

    Jak wspomniano powyżej, przy częstotliwości próbkowania i częstotliwości wyjściowego przebiegu równej 10 kHz na każdy okres sinusa mamy zaledwie 20 punktów. Stąd, dla wyższych częstotliwości (powiedzmy powyżej 1 kHz) w sygnale obecne będą wyższe harmoniczne (parzyste i nieparzyste). Jeśli nie zostaną one odfiltrowane, to będą one obecne w sygnale wyjściowym i w konsekwencji trafią na wejście przetwornika ADC. Aby wytłumić obecne w sygnale harmonicznie autor eksperymentował z różnymi pasywnymi filtrami RC i doszedł eksperymentalnie do optymalnej częstotliwości granicznej 18 kHz.

    Niestety tak niska częstotliwość graniczna filtra antyaliasingowego niesie ze sobą pewne problemy. Jak pisaliśmy powyżej chcemy, aby amplituda wyjścia z przetwornika DAC była stała dla wszystkich częstotliwości. Jak widać na pierwszym z pokazanych poniżej oscylogramow, filtr 18 kHz powoduje spadek amplitudy dla wyższych częstotliwości. Podobnie jest, jeżeli wykorzystamy filtr z częstotliwością graniczną równą 45 kHz (drugi oscylogram). Oczywiście, filtry te redukują harmonicznie, jednakże wprowadzana przez nie nieliniowość w sygnale, sprawia, że konieczne jest wykorzystanie filtra anty-aliasingowego o wyższej częstotliwości. W ten sposób autor doszedł do częstotliwości 132 kHz, która pozwala na tłumienie tłumienie harmonicznych, a jednocześnie taki filtr nie ma wpływu na amplitudę sygnałów generowanych w układzie.

    Analizator Bodego na STM32F407 z płytki DiscoveryAnalizator Bodego na STM32F407 z płytki DiscoveryAnalizator Bodego na STM32F407 z płytki Discovery


    Analizator Bodego na STM32F407 z płytki Discovery
    Rezultaty testów z fizycznym filtrem RC

    Poniższe wykresy pokazują charakterystyki Bodego różnych filtrów, zmierzone z pomocą samego omawianego urządzenia.

    Testowane były trzy różne układy RC, z różnymi częstotliwościami granicznymi.. Rezultaty są bardzo obiecujące - tak punkt -3 dB na charakterystyce amplitudowej jak i -45° na charakterystyce fazowej są zgodne z ich odpowiednikami z symulacji obu układów. Podobnie amplituda i faza mierzonych sygnałów, zachowują się dokładnie tak, jak powinny. Dodatkowo, dobrą wiadomością jest fakt, że amplituda jest poprawnie mierzona aż do poziomu -80 dB, czyli około 100 µV.

    Analizator Bodego na STM32F407 z płytki DiscoveryAnalizator Bodego na STM32F407 z płytki Discovery


    Analizator Bodego na STM32F407 z płytki DiscoveryAnalizator Bodego na STM32F407 z płytki DiscoveryAnalizator Bodego na STM32F407 z płytki Discovery
    Testy z filtrami cyfrowymi

    Podobne filtry, jak ten opisany powyżej, zrealizować można także cyfrowo - realizacja niektórych z nich wymaga sporego zachodu, zwłaszcza dla filtrów wyższego rzędu, a programowo są istotnie prostsze.

    Autor planuje przetestowanie szeregu filtrów cyfrowych w przyszłości z wykorzystaniem swojego analizatora.

    Jako, że cały analizator zrealizowano programowo, to układ jest bardzo prosty. Software zaimplementowano na płytce uruchomieniowej STM32F407 Discovery. Pełni ona rolę analizatora i interfejsu PC - do komputera układ dołączony jest poprzez konwerter USB-TTL. Jedynymi zewnętrznymi elementami są filtry analogowe lub druga płytka STM32F407 Discovery, na której zaimplementowano filtry cyfrowe.

    Analizator Bodego na STM32F407 z płytki DiscoveryAnalizator Bodego na STM32F407 z płytki Discovery
    Drukowanie wykresów na komputerze PC

    Za kreślenie charakterystyk Bodego odpowiedzialny jest komputer PC. Uruchomiony na nim skrypt, napisany w Pythonie (na poniższych zrzutach ekranu) wykorzytsuje bibliotekę matplotlib do rysowania wykresów. Na pierwszym zrzucie widzimy konfigurację macierzy oraz interfejs szeregowy, a na drugim konwersję z zebranych danych dotyczących amplitudy i fazy do danych w skali logarytmicznej i stopniach.

    Program na STM32 napisany został bezpośrednio na sprzęcie, z bezpośrednim dostępem do rejestrów, bez wykorzystania warstwy abstrakcji sprzętowej (HAL / CUBE).



    Jeśli jesteście zainteresowani dokładniejszymi matematycznymi podstawami tego rodzaju analizy, to na stronie źródłowej znajduje się pełne wyprowadzenie wykorzystanych funkcji wraz z opisem i przykładami.

    Źródło: https://sites.google.com/site/hobbydebraj/bode-analyzer-using-stm32f407


    Fajne!
  • Arrow Multisolution Day
  • #2 28 Cze 2018 15:40
    Pablo2015
    Poziom 18  

    Czy to nie jest przypadkiem WAO (wektorowy analizator obwodu)? Jeśli tak, to opisany pomiar jest co najwyżej zgrubny...