OscyloskopX

  • Posted on: 20 April 2018
  • By: obbo

  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

Okno programu XLab

Hardware

Schemat

  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.

Ramka polecenia

  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.

Ramka danych oscyloskopu

  Przykłada ramki dla analizatora protokołu SPI.

Ramka danych analizatora 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.

Zadig - instalacja sterownika

  Następnie wybieramy instalację sterownika.

Zadig - instalacja sterownika

Zadig - instalacja sterownika

  Po instalacji należy odłączyć oscyloskop i podłączyć ponownie. Teraz OscyloskopX powinien być już na liście urządzeń systemu.

Zainstalowany sterownik

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.

XLab i podłączony oscyloskop

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 częstotliwościowa dzielnika

  • 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

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

  • Szumy

Pliki

Schemat i projekt płytki w formacie KiCad.
mime_iconOscyloskopX-KiCad.zip (229.12 KB)

Pliki źródłowe oraz binarne dla mikrokontrolera ATXMEGA128A3U, projekt utworzony w Atmel Studio 6.
mime_iconOscyloskopX-Firmware.zip (359.1 KB)

 

Dodaj komentarz