Witam!
Opisany tutaj projekt jest był pracą inżynierską na Politechnice Wrocławskiej dlatego w niektórych kwestiach jest trochę niedojrzały (Teraz kilka rzeczy bym poprawił - człowiek całe życie się uczy - o tym poniżej)
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:[Dla części analogowej:]-5.0V, 3.3V, 5.0V,[Dla części cyfrowej:] 1.2V, 2.5V, 3.3V, 5.0V. To co przy tylu różnych wartościach napięć, to sekwencja startowa - zła kolejność włączenia może spowodować uszkodzenia elementów. Czasem wystarczy układ RC a czasem wymagane jest sterowanie z portu, toteż zależy od wykorzystanych układów, bo może się zdarzyć, że wszystko się zgra bez specjalnej sekwencji. Na schemacie chyba nie ma elementu RC, który dodałem do jednej z przetwornic, bo czasem nie załączała wyjścia, gdy wcześniej pojawiło się -5V w obwodzie analogowym.
Pracujący oscyloskop pobiera średnio 698mA z 3.7V aku, 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) od Analog Devices pozwolił na pracę w trybie przeplotu, toteż układ FPGA mógł wolniej zbierać informację do pamięci blokowej RAM. Przeplot zmniejsza dwukrotnie wymagane samplowanie.
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 B-RAM 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 dotykowy 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
? Wyzwalanie 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 podmiany/sprawdzenia
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 :/
Przy pracy nad takimi projektami przydają się narzędzia do symulacji dokładnie tych elementów, które mamy zamiar wykorzystać. Linear jak i Analog Devices zapewniają je bezpłatnie, a bardzo pomogły przy skonstruowaniu urządzenia.
ULEPSZENIA
1. Zasilanie - zamiast kilku przetwornic, lepiej użyć zewnętrznego specjalizowanego układu do zapewniania odpowiednich napięć (Układy od ISLxxxx są ok). Znika wtedy problem sekwencji startowej i mamy mniej elementów. Rozważałbym zastosowanie akumulatora o wyższym napięciu i pojemności.
2. Układ wejściowy - za dużo przekaźników, ale to chyba dlatego, że miałem ich nadmiar Zamiast tego można wykonać dosyć łatwo obwód dla 350MHz wykorzystując przy tym 4 przekaźniki i np:
-OPA4872 http://www.ti.com/lit/ds/sbos346c/sbos346c.pdf
-THS4511 http://www.ti.com/lit/ds/symlink/ths4511.pdf
- LMH6702 http://www.ti.com/lit/ds/symlink/lmh6702.pdf
- i kilka mniej istotnych podzespołów.
Może kiedyś złoże taki super tor wejściowy, choć analogówka trochę mnie ostatnio znudziła :)
Dodać można również wejście 50Ohm.
3. Akwizycja danych. Dla układu FPGA lepiej zastosować dobry specjalizowany zegar z małym jitterem. W celu lepszego dopasowania impedancyjnego oraz wyrównania długości ścieżek, można pokusić się o PCB z 4 warstwami. Wtedy też warto zaktualizować układ programowalny o coś z serii Virtex + zewnętrzna pamięć RAM. Wtedy dodałbym pewnie DAC AD9742 (http://www.analog.com/media/en/technical-documentation/data-sheets/AD9742.pdf) i zrealizowałbym generator arbitralny. Z wykorzystaniem Virtex, można pokusić się o ADC 5 GSPS i wtedy mamy prawdziwy oscyloskop z wysokiej półki. Ale wiadomo $...
4. Interfejs użytkownika - tu można pomyśleć o wymianie wyświetlacz na jakiś z bardziej odpornym na zarysowania panelem, choć ten który jest w obecnych i tak mnie zadziwił (choć taśma od dotyku zerwała mi się już chyba 3 raz). Brakuje mi trochę "śliskości", aby wygodnie ustawiać kursory itp.
Większy ekran też byłby plusem. MCU zapewnia bardzo szybkie działanie i sprawdził się, natomiast obecnie mamy układy z tej samej rodziny z lepszymi parametrami i dużo sprzętowych jednostek graficznych.
5. Inne - USB od ST jest wg. mnie za wolne, aczkolwiek i tak bibliotekę od USB udało mi się podkręcić. Najlepszym rozwiązaniem byłoby jednak użycie specjalizowanych układów np. od Cypress. Optoizolacja też może się czasem przydać, a koszt nie duży.
Zamiast kanapki jak na zdjęciu wolałbym zmniejszyć konstrukcję o połowę, choć z drugiej strony, taki rozdział pozwala na łatwe rozdzielenia masy cyfrowej od analogowej.
W oprogramowaniu można dopisać wiele nowych funkcji, jak np. zaawansowane tryby wyzwalania. Pomysłów mam sporo ale czasu mało ;(
PODSUMOWANIE
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 ciężkiej pracy po 12h dziennie. Dużo czasu musiałem spędzić na np. wdrożeniu się w FPGA i stworzeniu narzędzi do programowania ich (studencki budżet).
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 :)
W załącznikach całość pracy inż. ze schematami na stronach 11-13.
Załączam kody źródłowe, choć pewnie nie są najlepszej jakości ze względu na pośpiech przy projekcie. Załączam, aby służyły ludziom w potrzebie :)
Pozdrawiam!
----
PS: Jak ktoś lubi zdjęcia PCB to do obejrzenia poniżej (tak jak ja, to załączam dodatkowo wraz ze zdjęciem składników na "ciasto"). I przepraszam za nadmiar tekstu.
Fajne!