
Witam!
Opisany tutaj projekt jest moją pracą inżynierską na Politechnice Wrocławskiej dlatego nie będzie to opis bogaty w schematy i pliki źródłowe

Schemat blokowy:

ZASILANIE
Całe urządzenie zasilane jest z akumulatora Li-ion, który to jest doładowywany przez układ MCP73837, po podłączeniu pod gniazdo USB lub zewnętrzny zasilacz. Proces ładowania jest prezentowany za pośrednictwem dwóch diod (ładuje/naładowany). Stan baterii sprawdzany jest przez ADC w mikrokontrolerze i wyświetlany na ekranie.
Ważnym wyzwaniem przy tego typu urządzeniach jest wybór odpowiednich przetwornic. Zastosowałem układy z firmy Linear Technology o wysokiej sprawności, niskim poziomie zakłóceń oraz niskiej pulsacji. Wszystkie 5 przetwornic (w tym dwie podwójne) zapewniają odpowiednio napięcia:-5.0V(Analog part), 3.3V(Analog part), 5.0V(Analog part), 1.2V, 2.5V, 3.3V, 5.0V.
Pracujący oscyloskop pobiera średnio 698mA, więc całkiem sporo, dlatego akumulator nie wystarczał na zbyt długa pracę

TOR ANALOGOWY
Tor rozpoczyna się serią micro-przekaźników bistabilnych, które regulują tłumienie oraz ustawiają sprzężenie. Następnie sygnał trafia na wzmacniacz ADA4817 z wejściem o dużej wartości rezystancji wejściowej (50GOhm). Wzmacniacz ten pełni rolę bufora, toteż już za nim, tor jest już niskoimpedancyjny i różnicowy. Po drodze zastosowano filtr antyaliasingowy, regulację offsetu na podwójnych potencjometrach cyfrowych (sterowane po I2C). Następnym układem jest wzmacniacz ADA4927, który połączony jest z przetwornikiem A/C.
Dużo zachodu potrzeba na kompensacje układu dzielnika, zważając na to aby przy każdej zmianie czułości wejściowej mieć te samą rezystancję wejściową (1MOhm) oraz pojemność (13pF).
Czułość wejściowa może być wybierana od 10mV/div do 5V/div w systemie 1-2-5.
A oto charakterystyka toru:

AKWIZYCJA DANYCH
8-bitowy przetwornik cyfrowy AD9481 (250MSPS) pozwolił na pracę w trybie przeplotu, toteż układ FPGA mógł wolniej zbierać informację do pamięci blokowej RAM. Wybranym układem programowalnym był układ z rodziny SPARTAN 3 (XC3S200). W ten części, oprócz samej akwizycji danych, umieszczono obsługę wyczekiwania triggera. Komunikację z jednostką sterującą zapewnia magistrala SPI pracująca z prędkością ok 40Mb/s. "Wsad" pisany od podstaw w VHDL(choć wielkim ułatwieniem są gotowe bloki BRAM oraz DCM w SPARTANACH).
Jako, że ten układ FPGA nie posiada stałej pamięci konfiguracji (programu) musiałem zastosować zewnętrzną pamięć XCF02, programowana przez interfejs JTAG.
Pamięć bufora wynosi 4096 próbek(8-bitowych) na kanał.
JEDNOSTKA STERUJĄCA
Ta część konstrukcji bazuje na mikrokontrolerze STM32F407VET6. Układ ten odpowiedzialny jest głównie za interfejs graficzny. Prócz tego nadzoruje stan baterii oraz kontroluje działanie przetwornic. Do jego zadań należy też obsługa zdarzeń z ekranu dotykowego oraz enkoderów mechanicznych. Cały program pisany od zera w C

Mając do dyspozycji jednostkę FPU, wykorzystuję ten układ w procesie analizy Fourierowskiej oraz przy interpolacji sygnału dyskretnego przy najmniejszych podstawach czasu.
Zastosowany ekran LCD o wielkości 3.2 cala można znaleźć pod nazwą HY-32.
OPROGRAMOWANIE
* Kursory - zarówno dla czasu, jak i napięcia. Można odczytać wartość względną jak i bezwzględna położenia kursorów.

* Analiza w dziedzinie częstotliwości (FFT) - do wyboru 64,256 lub 1024 próbek. Użytkownik ma do wyboru pięć rodzajów okien tj. Hanninga, Hamminga, Blackmana, Barletty lub prostokątne. Wykorzystano bibliotekę DSPlib od ST.

* Pomiary automatyczne:
• pomiar napięcia międzyszczytowego – Vpp ,
• pomiar napięcia maksymalnego – Vmax ,
• pomiar napięcia maksymalnego – Vmin ,
• pomiar wartości skutecznej napięcia – VRMS ,
• pomiar wartości średniej napięcia – VAVG ,
• pomiar częstotliwości – f ,
• pomiar okresu sygnały – tp .

* Różne:
• Autoset
• Możliwość obejrzenia przebiegu przed wyzwoleniem, jak i daleko po nim (dowolne przeglądanie bufora)
• Start/Stop
• Wyzwalanie kanałem 1/2/External
• Wyzwalnie jedynie zboczami rosnącymi lub malejącym (z braku czasu więcej ni ma

• Wyzwalanie w trybach AUTO/NORMAL/FORCE/SINGLE
Nastawy podstawy czasu reguluje się w zakresie od 1ns/div do 5s/div w systemie 1-2-5, używając enkodera mechanicznego (ten na dole - widoczne na pierwszym zdjęciu). Enkodery posiadają również przycisk, a więc używam uch do wyłączenia/włączenia urządzenia oraz przy wyborze kanału dla zmian czułości wejścia (która też jest ustawiana enkoderem, tyle że tym górnym).
W urządzeniu zastosowałem detekcję kilku usterek, tak aby od razu można było stwierdzić co do wymianki

Oto ekran przykładowego błędu (wystąpił po odłączeniu płytki z częścią analogową - jednostka sterująca nie wykryła potencjometrów cyfrowych w magistrali I2C)

UWAGI
Efektywna prędkość próbkowania to 125MSPS, choć przy 250 też działa, lecz z powodu jittera, trochę bitów z ADC się traci :/
Czas wykonania projektu: ok 6 miesięcy z uwzględnieniem wakacyjnej pracy po 8 h, dziewczyny, napraw auta itp...więc realnie może 2 miesiące napierniczania po 12h dziennie.
Co do kosztów urządzenia to wyszło mi ok 600 PLN, ale biorąc pod uwagę, że przetworniki, przetwornice, potencjometry cyfrowe, przekaźniki, wzmacniacze dostałem jako sample, to cena pewnie by się podwoiła

Cool? Ranking DIY