OscyloskopX
Założeniem projektu było zbudowanie taniego i w miarę prostego oscyloskopu działającego jako przystawka do PC. W efekcie udało się połączyć w jednym urządzeniu funkcje oscyloskopu, generatora, analizatora, multimetru i miernika częstotliwości. Inspiracją do wyboru rozwiązania był Xminilab, szczególnie interesująco przedstawiała się możliwość wykorzystania gotowego oprogramowania na PC XScope. Sercem układu został zatem Atmel ATXMEGA128A3U. Wprowadzone zmiany w układzie, nowy oprogramowanie mikrokontrolera pociągnęły jednak za sobą zasadnicze zmiany w protokole komunikacji z oscyloskopem. Wynikiem tego obecna wersja programu dla PC (Xlab) jak i oprogramowania mikrokontrolera, nie są zgodne z Xminilab i XScope
Możliwości urządzenia:
- 2 kanałowy oscyloskop, próbkowanie do 2MSPS z rozdzielczością 8 bitów, zakres napiec wejściowych +/- 24V, 10 poziomów wzmocnienia, możliwość odcięcia składowej stałej, bufor do 3840 próbek,
- 8 kanałów cyfrowych, bufor wejściowy serii 74HC,
- analizator SPI, I2C, UART
- pomiar wartości napięć maksymalnej, minimalnej, średniej, RMS,
- pomiar napięć stałych z rozdzielczością 12-bit,
- pomiar częstotliwości do 16MHz, pomiar okresu, wypełnienia, zliczanie impulsów, możliwość bramkowania sygnałem zewnętrznym, wejściowy układ formujący
- generator arbitralny, próbkowanie do 1MSPS z rozdzielczością maksymalną 12 bitów, bufor do 512 próbek, regulacja wypełnienia, przemiatanie, napięcie wyjściowe w zakresie +/- 2V
- generator szumu białego i różowego,
- zasilanie i komunikacja przez port USB 2.0
Hardware
Załączone pliki w formacie KiCad zawierają schemat i projekt płytki w wersji finalnej. Całość została zmontowana na dwustronnej płytce o wymiarach 127x114mm. Do budowy zostały wykorzystane elementy SMD oraz elementy do montażu przewlekanego, te ostatnie często pełnią dodatkowo funkcję przelotek. UWAGA: Projekt płytki został przygotowany do wykonania w warunkach domowych, średnice otworów pod elementy przewlekane zostały zmniejszone, ew. należy także zweryfikować warstwę opisową. Zdjęcia przedstawiają płytkę w wersji pierwotnej m.in. z dodatkowymi wyprowadzeniami dla portów "C", "E" i "F" mikrokontrolera.
Wykonując płytkę warto dostosować ją do posiadanych elementów (np. przekaźników, złącz) oraz posiadanej obudowy. Można także pokusić się o nowe funkcjonalności i dalsze ulepszanie układu.
Firmware
Pliki źródłowe oraz binarne dla mikrokontrolera ATXMEGA powstały z użyciem Atmel Studio 6. Większość definicji związanych z komunikacją między oscyloskopem a PC znajduje się w plikach usb_xmega.h oraz data.h. Opis wykorzystania zasobów mikrokontrolera został umieszczony w main.c.
Polecenia do oscyloskopu wysyłane są w postaci 5-cio bajtowych ramek: 1 bajt kodu żądania (definicja w pliku usb_xmega.h), 2 bajty wartości parametru, 2 bajty indeksu parametru (definicje w pliku data.h). W przypadku niektórych żądań (np. USB_DISCONNECT) przesłany indeks i wartość nie mają znaczenia. W przypadku USB_SEND_FREQUENCY po kodzie żądania przesyłane są 4 bajty wartości.
Dane oscyloskopu i analizatora wysyłane są do PC w postaci nieco bardziej złożonych ramek. Zawartość ramki zależna jest od wybranego rodzaju pomiaru oraz aktywnych kanałów. Ilość danych przesyłanych w ramach kanału zależy od wielkości bufora. Poniżej struktura ramki dla pomiaru oscyloskopem.
Przykłada ramki dla analizatora protokołu SPI.
Fragment usb_xmega.h:
Fragment data.h:
Instalacja sterownika w systemie Windows
Poprawnie zmontowany układ po podłączeniu do portu USB komputera powinien przejść w stan oczekiwania na komunikację z programem. Ten stan sygnalizowany jest miganiem zielonej diody (LED1A). Przy pierwszym podłączeniu do systemu należy zainstalować sterownik. Można to wygodnie uczynić z programem Zadig pobranym ze strony http://zadig.akeo.ie/. Program nie wymaga instalacji. Po uruchomieniu z listy wykrytych urządzeń wybieramy OscyloskopX.
Następnie wybieramy instalację sterownika.
Po instalacji należy odłączyć oscyloskop i podłączyć ponownie. Teraz OscyloskopX powinien być już na liście urządzeń systemu.
Aplikacja
Oscyloskop do działania wymaga programu dla PC: XLab. Po uruchomieniu programu urządzenie powinno zostać automatycznie wykryte i podłączone, a zielona dioda (LED1A) pozostać na stałe zapalona. O samej aplikacji nieco więcej tutaj.
Pierwsze uruchomienie i kalibracja
Zbudowany oscyloskop należy jeszcze skalibrować. Świecenie czerwonej diody (LED1B) przypomina o konieczności skalibrowania. W pierwszej kolejności należy przeprowadzić regulację wejść analogowych.
Kompensacja częstotliwościowa dzielnika - w tym celu do wejść analogowych (odpowiednio gniazdo X1 i X2) doprowadzamy sygnał prostokątny o częstotliwości z zakresu 2kHz-10kHz i amplitudzie kilku wolt. Suwak "Gain" ustawiamy w pozycji +/-6V, +/-12V lub +/-24V, co powoduje załączenie dzielnika. Regulujemy odpowiednio C3 i C5 do uzyskania poprawnego kształtu. Jak źródło sygnału prostokątnego można wykorzystać wbudowany generator.
Kompensacja napięcia niezrównoważenia - wejścia kanałów analogowych oscyloskopu zwieramy do masy, włączamy filtr odcinający składową stałą, regulując odpowiednio R42 i R43 staramy się doprowadzić przebieg jak najbliżej "0". Regulację możemy ułatwić stopniowo zwiększając czułość toru wejściowego (suwak "Gain"). Ewentualna niedokładność na tym etapie zostanie usunięta podczas kalibracji ADC.
Kalibracja ADC - oba wejścia analogowe oscyloskopu zwieramy do masy, proces kalibracji uruchamiamy przyciskiem "Calibrate Offset".
Kalibracja DAC - do wyjścia AWG (gniazdo X3) dołączamy woltomierz, w ustawieniach generatora wybieramy przebieg stały i poziom "0", w ramce "Calibration" z poziomu aplikacji zmieniamy "Offset" do momentu aż wskazania miernika będą najbliższe 0V. Kalibrację zatwierdzamy przyciskiem "OK".
Kalibracja DAC - do wyjścia AWG dołączamy woltomierz, w ustawieniach generatora wybieramy przebieg stały i maksymalną wartość, w ramce "Calibration" z poziomu aplikacji zmieniamy "Gain" do momentu aż wskazania miernika będą najbliższe 2V. Kalibrację zatwierdzamy przyciskiem "OK".
Poprawnie zakończona kalibracja ADC będzie zasygnalizowana zgaszeniem czerwonej diody. W przypadku potrzeby przeprowadzenia ponownej kalibracji, przed przystąpieniem do regulacji należy usunąć poprzednie ustawienia ("Clear Offset").
Uwagi
Wykonując pomiary należy pamiętać, że oscyloskop jest połączony galwanicznie z komputerem.
Czerwona dioda (LED1B) oprócz sygnalizowania brak kalibracji może sygnalizować także wystąpienie błędu w trakcie wykonywania programu mikrokontrolera. Tego typu błędy sygnalizowane są pulsującym światłem. Każdy krótki rozbłysk odpowiada jednemu bitowi statusu, bit związany z błędem sygnalizowany jest dłuższym świeceniem diody.
Zwiększając wzmocnienie ("Gain") wejść analogowych, coraz silniej dają znać o sobie szumy. W moim egzemplarzu dla wejścia CH1 jest to prawie 20mVpp, dla wejścia CH2 jest nieco lepiej, 8mVpp. Szumy pochodzą z wewnętrznych wzmacniaczy ATXMEGA w torach ADC, o czym lojalnie informuje dokumentacja mikrokontrolera ("Atmel ATxmega256A3U / ATxmega192A3U / ATxmega128A3U / ATxmega64A3U DATASHEET" -> 36.2.6 ADC characteristics). Jeśli zależy nam na lepszych parametrach w zakresie małych sygnałów, można rozważyć modyfikację układów wejściowych przez dodanie wzmacniacza o regulowanym wzmocnieniu.
Pliki
Schemat i projekt płytki w formacie KiCad.
OscyloskopX-KiCad.zip (229.12 KB)
Pliki źródłowe oraz binarne dla mikrokontrolera ATXMEGA128A3U, projekt utworzony w Atmel Studio 6.
OscyloskopX-Firmware.zip (359.1 KB)
Dodaj komentarz