Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

DSO5 - Przenośny oscyloskop z analizatorem logicznym

drzasiek 08 Apr 2013 21:30 51150 56
phoenixcontact
  • DSO5 - Przenośny oscyloskop z analizatorem logicznym
    Witam.

    Przedstawiam dziś urządzenie które było częścią mojej pracy inżynierskiej.
    Jest to przenośny oscyloskop z analizatorem stanów logicznych.

    Oto podstawowe funkcje urządzenia:

    -1 kanał analogowy o częstotliwości próbkowania do 10 MHz
    -4 kanały cyfrowe o częstotliwości próbkowania do 10 MHz w trybie oscyloskopu
    -18 podstaw czasu:
    100 ms/d, 50 ms/d, 20 ms/d, 10 ms/d, 5 ms/d, 2 ms/d, 1 ms/d, 500 µs/d, 200 µs/d, 100 µs/d, 50 µs/d, 20 µs/d, 10 µs/d, 5 µs/d, 2 µs/d, 1 µs/d, 500ns/d, 200ns/d
    -7 trybów wzmocnienia sygnału analogowego:
    5 V/d, 2 V/d, 1 V/d, 500 mV/d, 200 mV/d, 100 mV/d, 50 mV/d
    -Możliwość współpracy z sondą o przekładni 1÷1 lub 1÷10
    -8 trybów wyzwalania:
    zboczem narastającym-ciągłe
    zboczem narastającym-pojedyncze
    zboczem opadającym-ciągłe
    zboczem opadającym-pojedyncze
    obydwoma zboczami-ciągłe
    obydwoma zboczami-pojedyncze
    automatyczne
    brak wyzwalania

    -6 źródeł wyzwalania:
    Kanał analogowy 1
    Kanał cyfrowy A
    Kanał cyfrowy B
    Kanał cyfrowy C
    Kanał cyfrowy D
    Panel dotykowy

    -Regulowane napięcie wyzwalania – wskaźnik graficzny na obszarze wyświetlania przebiegu oraz cyfrowy wskaźnik napięcia
    -Regulowana pozycja wyzwalania
    -Możliwość wykonywania jednocześnie 4 automatycznych pomiarów. Wyświetlane pomiary wybierane są przez użytkownika spośród dostępnych 11 możliwości:
    Vmax – napięcie maksymalne
    Vmin – napięcie minimalne
    Vp-p – napięcie międzyszczytowe (ang. Peak – to – peak)
    Vosf – napięcie offsetu
    Vrms – wartość skuteczna napięcia (tzw. True RMS)
    Vmea – wartość średnia napięcia
    Freq - częstotliwość
    Pero – okres
    Duty – wypełnienie
    Tpos – czas dodatniej połówki sygnału
    Tneg – czas ujemnej połówki sygnału

    -Markery czasu oraz napięcia
    -Analizator widma – FFT
    marker częstotliwości
    7 dostępnych okien czasowych
    praca w trybie wobuloskopu

    -Możliwość robienia zrzutów ekranu do plików graficznych na karcie pamięci – 8 znakowa nazwa pliku wprowadzana za pomocą klawiatury ekranowej QWERTY

    Urządzenie zostało zbudowane z 3 modułów połączonych w sposób "kanapkowy".
    -Moduł STM32F4-Discovery
    -Moduł płyty głównej
    -Moduł z wyświetlaczem 3,2 cala z Panelem dotykowym

    Oto kilka zdjęć i filmik z działania urządzenia:
    DSO5 - Przenośny oscyloskop z analizatorem logicznym DSO5 - Przenośny oscyloskop z analizatorem logicznym DSO5 - Przenośny oscyloskop z analizatorem logicznym DSO5 - Przenośny oscyloskop z analizatorem logicznym DSO5 - Przenośny oscyloskop z analizatorem logicznym


    Cool? Ranking DIY
    About Author
    drzasiek
    CNC specialists
    Offline 
    Z wykształcenia mgr inż. w kierunku elektronika i telekomunikacja. Z Zawodu Konstruktor - Elektronik. Z Zamiłowania - konstruktor maszyn i urządzeń.
    Has specialization in: avr, arm embedded systems, maszyny cnc
    drzasiek wrote 2190 posts with rating 3215, helped 106 times. Been with us since 2009 year.
  • phoenixcontact
  • #2
    levy011
    Level 16  
    Witam.

    Wygląda to naprawdę na świetny projekt - tyko pogratulować.

    Mógłbyś napisać w jaki sposób został zrealizowany przetwornik A/D? Co do analizatora stanów logicznych to ciekawi mnie czy jest możliwość dekodowania danych z jakiś popularnych protokołów szeregowych (i2c, 1-wire), lub możliwość dodania takiej funkcji(chodzi mi głównie o to czy bardzo by takie coś obciążyło procesor ew. czy starczyło by pamięci).

    Z góry dzięki za odpowiedź.
  • #3
    nsvinc
    Level 35  
    łaaaał ;] W koncu ktoś ujarzmił CM4 w wlasciwy sposób, a nie tylko miganie ledem czy odtwarzanie mp3... Wręcz czekałem na taki projekt demonstrujący potęgę tego procka ;]

    Gratulacje ;]

    Dużo było klepania w asmie? CMSIS? SIMD? ;]
    Nie napisałeś jak głęboką masz pamięć akwizycji dla próbek i analogowych, i cyfrowych.
    Ani tym bardziej jaki zastosowałeś wyświetlacz (model? producent?) i jaki TP.

    Co do dekodowania w locie sygnałów cyfrowych - fakt, to by się przydało. Może nie real-time, ale chociaż jako ficzer podczas stopa, takie 'zapuszczenie analizatora' na zebranych próbkach. Sam łażę wokół budowy ręczniaka z aku dedykowanego do analizy cyfrówki.

    Wybitnym ficzerem nie spotykanym w przeciętnych oscylach jest rysowanie nie samego przebiegu, a charakterystyki mierzonego sygnału w czasie rzeczywistym, czyli np. jego częstotliwość, wypełnienie, Vmin,Vmax,Vhi,Vlo,Vrms,Vavg... Moze warto to zaimplementować? ;] To jest genialne do analizy pracy kontrolerów w przetwornicach impulsowych, wiem z doświadczenia...

    Fajne jest to, że sprzęt chodzi z własnego zasilania. Głównie chodzi mi tu o mozliwość pomiaru z pływającą masą - kolejny niezastąpiony patent przy developerce SMPSów.

    A swoją drogą, mógłbyś w lewym górnym rogu wyświetlacza jakis ladny napis wstawic, znany z fabrycznych oscyli (jak np. w Tektronixie jest 'Tek', czy w Insteku 'GW') ;] Tak ku efektowi ;]

    P.S.
    Z 'Vmea' się raczej nie spotkałem, jeśli mówimy o napięciu średnim; stosuje się raczej 'Vavg'. Ale nie bierz tej uwagi do siebie za bardzo ;]
  • #4
    drzasiek
    CNC specialists
    levy011
    Wykorzystany został przetwornik HI5714/4.
    Jest to 8 bitowy przetwornik z równoległą szyną danych próbkujący z max częstotliwością 40 MHz. Przy 40 MHz jednak o ile dobrze pamiętam (trzeba zerknąć do dokumentacji) nie ma nawet 6 bitów rozdzielczości. Takie proste (obserwacyjne) testy wykazały, że 10 MHz to jest granica gdzie jest jeszcze możliwe do uzyskania 8 bitów rozdzielczości.
    Dane zbierane są bezpośrednio przez mikrokontroler. Nie pamiętam już dokładnie bo testowałem to już jakiś czas temu, ale coś ok 35 MHz można przerzucać rejestr wejściowy GPIO do pamięci, oczywiście za pomocą DMA.

    Dekoder być miał ale zabrakło motywacji i czasu. Jest odpowiednia zakładka (narazie nieaktywna), nic nie stoi na przeszkodzie by takie coś domalować.

    nsvinc
    ASM nienawidzę, nie używam ani na AVR więc tymbardziej na CM4 :) Po to jest język C aby programowanie sprawiało przyjemność.
    Z funkcji CMSIS raczej nie korzystam a z SPL ani tyle.
    Pamięć dla próbek w trybie oscyloskopu jest krótka (512 próbek).
    Zrobiłem błąd w założeniach na początku, zbyt wiele rzeczy później już było od tego uzależnionych i nie chciało mi się po prostu już tego zmieniać.
    W trybie analizatora logicznego pamięć to 60000 próbek.
    Wyświetlacz to 3.2 calowy TFT ze sterownikiem ILI9320.
    Producent bliżej nie znany, kupiony na ebayu ponad rok temu.
    Obsługa panelu piechotą za pomocą wbudowanego w mikrokontroler ADC.

    Z dodawaniem funkcjonalności nie ma problemów tak właściwie prócz tego, że zajmuje to czas a nie ma z tego później właściwie żadnych korzyści. ($$) Bo w sumie po to się pracuje niestety.
  • #6
    Karol966
    Level 31  
    drzasiek wrote:
    Wyświetlacz to 3.2 calowy TFT ze sterownikiem ILI9320.

    Lub o oznaczeniu HY-320 i inne podobne do kupienia za ok 60-70zł ;)

    PS. Chyba się napracowałeś z programem :) Klawiaturka to gotowiec czy całą sam wykonałeś? (grafika + oprogramowanie)?
  • #7
    drzasiek
    CNC specialists
    Cały ekran odświeżany jest tylko tam gdzie ma się pojawić coś nowego.
    Ekran z wykresami odświeżany jest w całości kilkanaście razy na sekundę.
    Program pochłonął sporo dupogodzin nocnych.
    Klawiaturka w całości mojego autorstwa.
    Wbrew pozorom taką klawiaturkę bardzo łatwo wykonać i obsłużyć, wystarczy tylko odpowiednie podejście do tego.
    Nie wiem czy moje podejście było najbardziej optymalne ale taki pomysł przyszedł mi do głowy więc tak to wykonałem.
    Wystarczy tylko stworzyć tablicę która zawiera współrzędne każdego klawisza (Xstart, Xend, Ystart, Yend) i drugą tablicę zawierającą odpowiadające każdemu klawiszowi znaki. Do tego funkcja rysująca klawisz (w moim przypadku prostokąt z ramką) i wystarczy tylko zapuścić pętelkę która rysuje klawisze o współrzędnych pobieranych z tablicy. Podobnie odbywa się dekodowanie który klawisz został wciśnięty. Całość to kilka linijek i gotowe.
  • phoenixcontact
  • #8
    SylwekK
    Level 32  
    Rewelacja! Naprawdę sporo możliwości jak na takie maleństwo. Jaki koszt takiego oscyloskopu, nie licząc oczywiście wkładu własnej pracy ?
  • #9
    adversus
    Level 32  
    Świetny projekt, bardzo mi się podoba, jest szansa że opublikujesz jakieś jego szczegóły ?
  • #10
    nsvinc
    Level 35  
    drzasiek wrote:
    Z funkcji CMSIS raczej nie korzystam a z SPL ani tyle.

    No to jak liczysz FFT? Na piechotę?
    Jeśli dysponujesz 8bitowym przetwornikiem, to tutaj operacje SIMD 4x8 chyba by Ci się przydały do przetwarzania odbieranego sygnału...;]

    drzasiek wrote:
    Po to jest język C aby programowanie sprawiało przyjemność.

    Racja ;] ale asm T2 jest akurat przyjemny w użyciu. A jesli juz nie sam asm, to intrinsic-i pozwalające wykorzystywać instrukcje z których kompilator sam z siebie nie skorzysta... a te są dostępne poprzez CMSIS ;]

    Skalowanie wykresów - FPU? Co rysowany piksel masz ifa który sprawdzi, czy jego koordy są w zakresie okna wyświetlania. A wystarczyłoby wykorzystać arytmetykę z nasyceniem - czyli znormalizować próbki (dodać offset i przemnozyc z nasyceniem) a potem przeskalować w dół w celu otrzymania igreka pixla do wyświetlenia. SIMD, FPU i instrukcje DSP-like które udostępnia ten rdzeń aż się proszą... A moze wlasnie tak robisz? ;]

    Swoją drogą, licząc wprost przy 10MHz otrzymywania sampli, masz nieco 18 cykli pomiędzy kolejnymi samplami (jeśli faktycznie popędzasz procesor na 180MHz). Co sampel masz najpewniej funkcję szukającą triggera i sync wyswietlania. Jak upchnąłeś to w 17 zegarów? ;]

    Ficzer którego wydaje się brakować (nie tylko u Ciebie, w fabrycznych oscylach często też) to przycisk force trigger.
  • #11
    drzasiek
    CNC specialists
    Koszty ciężko podać.
    Część a właściwie to większość podzespołów miałem albo z odzysku albo od pewnego czasu, dlatego nie pamiętam cen. Trochę też było sampli, ADC dostałem.
    Trudno powiedzieć, gdyby podzespoły kupować w detalu to prawdopodobnie ok 400-500 zł.

    Jest to praca inż więc sam nie wiem na ile mogę udostępniać cokolwiek.
    Raczej na schemat i kod nie należy się nastawiać.
    Urządzenie pokazałem właśnie w celu podyskutowania, zawsze samemu można się coś nauczyć a i kogoś innego zainspirować.

    nsvinc Wydaje mi się, że mnie przeceniasz :)
    Pewnie wiele rzeczy można by zrobić lepiej wykorzystując w pełni możliwości tego uC.
    Ale ja go dopiero poznawałem przy okazji budowy tego urządzenia.
    Nie miałem na to zbyt wiele czasu więc nieraz szedłem (nie szłem :P) prostszymi w implementacji ścieżkami ( a być może czasami niechcący trudniejszymi). Kwestia wielu możliwości tego uC to sprawa poczytania odpowiednich manuali, z ciekawości po całości.
    Ja czytałem tylko to, co mi akurat było potrzebne do uruchomienia danej funkcjonalności (po krótce, żeby było szybciej).
    Dlatego wiele rzeczy być może niepotrzebnie robiłem na piechotę.

    FFT robiłem na piechotę, napisałem w języku C na podstawie kodu w języku MATLAB z książki. Pisałem to jeszcze do poprzedniej wersji oscyloskopu więc miałem gotowca.

    Do do skalowania wykresów - nie sprawdzam każdego pixela a jedynie skrajne wartości linii. Tu się przyznaję, zrobiłem to w sposób gorszy niż zaproponowałeś. Trudno :) Ale właśnie dlatego warto pokazać swój projekt, bo się można czegoś nauczyć i dowiedzieć jak zrobić to lepiej.

    Jeśli chodzi o trigger - odpowiada za to zewnętrzny komparator analogowy.
    Komparator porównuje i kopie w kostkę uC i ten już wie kiedy zaszły warunki wyzwalania.
  • #12
    Kcm2h2lz.sdvc;39_d3j
    Level 11  
    Jak zasilany jest oscyloskop? Jeśli autonomicznie, to jakimi ogniwami i ile wynosi czas pracy?
  • #13
    OldSkull
    Level 28  
    drzasiek wrote:
    Jest to praca inż więc sam nie wiem na ile mogę udostępniać cokolwiek.

    Skoro sam finansowałeś wszystko, to za pół roku będziesz mógł udostępnić wszystko, nawet treść pracy i kody źródłowe, o ile uczelnia się nie upomni. Urządzenie już jest Twoje. Wydaje mi się, że do tego czasu nei wolno Ci absolutnie udostępniać nic z treści pracy, czyli samego dokumentu, ale równeiż źródeł.
  • #14
    Zelu00
    Level 15  
    Czy do grafiki używałeś jakiś gotowych bibliotek, czy całe menu sam projektowałeś?
  • #15
    drzasiek
    CNC specialists
    Zasilanie z ogniwa li-ion 3.7V 1800 mAh.
    Ogniwo z jakiejś baterii ze starego laptopa.
    Miałem kilka sprawnych ogniw, to akurat udało się w nie najlepszej kondycji.
    Na tym akumulatorze pracuje krótko bo tylko ok 2 godziny.
    Oscyloskop posiada wbudowany kontroler ładowania akumulatora z diodami sygnalizującymi ten proces.

    Nie używałem żadnych gotowców.
    Jedyną gotową biblioteką z której skorzystałem było FatFs.
  • #16
    AndrzejJ_J
    Level 9  
    Świetny projekt, laikowi ciężko coś powiedzieć ;)
    Czy planujesz może kiedyś zaprojektować oscyloskop którego kod i pcb udostępniłbyś innym, tak aby osoby znające programowanie na duużo niższym poziomie mogły go zbudować?
    Pozdrawiam.
  • #17
    miszczo997
    Level 28  
    AndrzejJ_J wrote:
    Świetny projekt, laikowi ciężko coś powiedzieć ;)
    Czy planujesz może kiedyś zaprojektować oscyloskop którego kod i pcb udostępniłbyś innym, tak aby osoby znające programowanie na duużo niższym poziomie mogły go zbudować?
    Pozdrawiam.

    Przecież masz 3 poprzednie wersje oscyloskopu
    V1 https://www.elektroda.pl/rtvforum/topic1908810.html
    V2 https://www.elektroda.pl/rtvforum/topic1959596-0.html
    V3 https://www.elektroda.pl/rtvforum/topic2020182.html
  • #18
    electro
    Level 18  
    Gdyby nie obudowa można by pomylić z urządzeniem komercyjnym. Po okresie ochronnym możesz myśleć o sprzedaży tego jako kit do montażu, z zaprogramowanym procesorem.
    Gratulacje!
  • #19
    symndz
    Level 16  
    drzasiek wrote:

    Urządzenie zostało zbudowane z 3 modułów połączonych w sposób "kanapkowy".
    -Moduł STM32F4-Discovery
    -Moduł płyty głównej
    -Moduł z wyświetlaczem 3,2 cala z Panelem dotykowym

    i uC/GUI?
  • #22
    drzasiek
    CNC specialists
    Obudowa celowo wykonana z plexy.
    To jest model a nie urządzenie kieszonkowe więc ma być wszystko widać co jest w środku.
    Chyba, że chodzi o estetykę to przyznaję, piłką do metalu i wiertarką frezerki zastąpić się nie da.
    Co do produkcji i sprzedaży to nie ma szans na to. Halo, tu Polska.
    Za drogie podzespoły i koszty produkcji.

    Jak generuję podstawę czasu? W sensie zegar dla ADC?
    Timer w STMie.
  • #23
    Rinho
    Level 19  
    Quote:
    Co do produkcji i sprzedaży to nie ma szans na to. Halo, tu Polska.


    Nawet przenosząc wykonanie PCB i montaż do Chin a tu tylko programowanie i zapakowanie w ewentualną obudowę? Mam na myśli sprzedaż jako KIT a nie gotowe urządzenie.
  • #24
    symndz
    Level 16  
    drzasiek wrote:
    Nie.
    Paint i Matlab :)

    no chyba nie laczysz tego z PC/Matlabem, zeby potem wyslac GUI na urzadzenie? Przepraszam za trywialnosc watpliwosci jesli takie sa ale nie chce mi sie szukac co miales na mysli.

    drzasiek wrote:
    Obudowa celowo wykonana z plexy.

    haha mam nadzieje ze uzgodnione. Jak przypomne moja to dostalem mniejsza ocene za nowatorskie podejscie ktore dzis jest norma :)
  • #25
    OldSkull
    Level 28  
    Rinho wrote:
    Nawet przenosząc wykonanie PCB i montaż do Chin a tu tylko programowanie i zapakowanie w ewentualną obudowę? Mam na myśli sprzedaż jako KIT a nie gotowe urządzenie.

    Problemem jest cena gotowych urządzeń o prówkowaniu 1MHz - w granicah 200zł z wysyłką. A takie o paśmie 40MHz (próbkowanie 200MSps) to 400zł. To urządzenie byłoby droższe od tego pierwszego i gorsze od tego drugiego.

    symndz wrote:
    no chyba nie laczysz tego z PC/Matlabem, zeby potem wyslac GUI na urzadzenie? Przepraszam za trywialnosc watpliwosci jesli takie sa ale nie chce mi sie szukac co miales na mysli.

    Domyślam się, że skrypt w MatLabie zamieniał obrazki na treść zrozumiałą dla urządzenia.
  • #26
    Hoptymista
    Level 14  
    Super oscyloskop, chociaż poprzednie 3 też super.
    Hmmmm nigdy nie spotkałem się z oscyloskopem o próbkowaniu 40Mhz za 400 zł a chętnie bym kupił.
  • #27
    symndz
    Level 16  
    OldSkull wrote:

    symndz wrote:
    no chyba nie laczysz tego z PC/Matlabem, zeby potem wyslac GUI na urzadzenie? Przepraszam za trywialnosc watpliwosci jesli takie sa ale nie chce mi sie szukac co miales na mysli.

    Domyślam się, że skrypt w MatLabie zamieniał obrazki na treść zrozumiałą dla urządzenia.

    :) wydaje Ci się czy wiesz? Jakis konkret? Jednak być może się mylę i coś mnie ominęło!
    Nadal Matlab w kontekście GUI tego projektu pozostaje dla mnie nadal zagadką. Poczekajmy co powie Autor.
  • #28
    SylwekK
    Level 32  
    OldSkull wrote:
    ... cena gotowych urządzeń o prówkowaniu 1MHz - w granicah 200zł z wysyłką. A takie o paśmie 40MHz (próbkowanie 200MSps) to 400zł. ...


    Nie chce mi się wierzyć... Możesz podać jakieś namiary, bo chcę coś kupić, a jak przeglądałem allegro to za 1MHz cena od około 270zł w górę +wysyłka, a 25Mhz w granicach tysiaka.
    40Mhz za 400zł - biorę w ciemno...
  • #29
    drzasiek
    CNC specialists
    Paint + Matlab = tworzenie i edycja grafiki w Paint, konwersja na ciąg wartości pixeli w Matlab.
    Pewne rzeczy, takie jak graficzny interfejs użytkownika lubię robić na piechotę.
  • #30
    symndz
    Level 16  
    drzasiek wrote:
    takie jak graficzny interfejs użytkownika lubię robić na piechotę

    Nieźle :) Ciężko było mi uwierzyć w najprostsze rozwiązanie a tu sie to okazało prawdą. No i nie spotkałem nikogo wcześniej kto tak wykorzystuje Matlaba. Ma to jakieś zalety czy po prostu tak Ci wygodnie?