Elektroda.pl
Elektroda.pl
X
Arrow Multisolution Day
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Roat v1.0 - Oscyloskop RS232

goreckidiy 26 Gru 2015 17:25 6009 20
  • Witam!

    Tym razem chciał bym się podzielić z wami bardzo nietypową konstrukcją, jaką jest aplikacja ;) - tak to nie żart. Być może nie do końca nadaje się do działu DiY, bo jest rzeczą nie materialną, lecz poświęciłem na jej stworzenie naprawdę dużo czasu, i sądzę, że może komuś się przydać.

    Roat v1.0 - Oscyloskop RS232

    O aplikacji
    Nazywa się Roat v1.0 - RS232 Oscilloscope AVR Tools.
    Jej działanie polega na wizualizacji stanów wejść ADC mikrokontrolera, za pośrednictwem portu szeregowego RS232 (działa również z przejściówkami).
    Aplikacja dysponuje kilkoma narzędziami, które są odpowiedzialne za prezentacje wyników. Najważniejsze z nich to "Oscyloskop" oraz "rejestrator", który potrafi zarejestrować wykres - ma bardzo bogate narzędzia do analizy, potrafi również zapisać wykres do pliku. Klikając na ikonkę "Help" można odnaleźć pomoc w zakresie podłączenia i programowania mikrokontrolera.

    Roat v1.0 - Oscyloskop RS232 Roat v1.0 - Oscyloskop RS232

    Hardware
    Jako urządzenie wejściowe może posłużyć każdy mikrokontroler, posiadający 4 wejścia ADC, oraz interfejs RS232. Najlepiej by był on taktowany dość szybkim zegarem (ja do testów użyłem Atmega8 z kwarcem 16MHz).
    W Helpie o którym wspomniałem wyżej, można odnaleźć kod źródłowy mikroprocesora napisany w języku Bascom. Jest bardzo krótki i śmiesznie prosty, więc jego implementacja do innych AVRów nie powinna sprawić nikomu problemu.

    Parametry pomiarowe
    Niestety prędkość próbkowania jest bardzo niska. Przyczyną nie jest sama aplikacja, lecz komunikacja RS232. Aplikacja umożliwia pomiary z 1 kanału (wynik zajmuje 2 bajty) lub z czterech naraz (11 bajtów!). Znając te wielkości można z łatwością obliczyć częstotliwość przy prędkości 19200bodów/s. Najlepiej jednak sprawdzić to w praktyce za pomocą generatora. Ja niestety takowym nie dysponuję, więc proszę was o pomoc.

    Reasumując...
    Nie ma szału - wolny pomiar, ale za darmo!
    Płytkę testową z portem RS232 posiada chyba każdy elektronik - to wystarczy by stworzyć małe laboratorium pomiarowe ;)

    Proszę o to byście dzielili się swoimi spostrzeżeniami, a przede wszystkim proszę o wykonanie pomiarów max próbkowania przy 1 kanale i przy wszystkich czterech.
    Print Screeny mile widziane ;)

    Wesołych Świąt!


    Fajne!
  • Arrow Multisolution Day
  • Arrow Multisolution Day
  • #3 26 Gru 2015 21:59
    wojtek_was
    Poziom 9  

    Witam

    Czy plik Help jest na pewno dobrze napisany??

    W dziale pomocy wyświetlają się 4 punkty lecz po kliknięciu w np. Program uC Bascom nic się nie wyswietla.

  • #4 26 Gru 2015 22:37
    fotomh-s
    Poziom 17  

    Cytat:
    Nie ma szału - wolny pomiar, ale za darmo!
    Płytkę testową z portem RS232 posiada chyba każdy elektronik - to wystarczy by stworzyć małe laboratorium pomiarowe.

    Może i każdy elektronik posiada taką płytkę. Chociaż tu nie chodzi o istnienie portu RS232 (bo każdy scalak AVR ma UART z którego można łatwo zrobić transmisję RS232 nawet na stykówce), chodzi o to że nie każdy scalak (i co za tym idzie nie każda płytka) ma ADC. Ale i to nie jest problemem bo i bez płytki można coś takiego zrobić. Wystarczy np. Mega 8 i masz teoretycznie aż 8 kanałów.

    Prawdziwe pytanie brzmi: Po co?
    Co z tego że każdy elektronik ma takową płytkę jeśli każdy komputer ma wejścia audio? Większość PCtów (może pomijając laptopy) ma ich kilka, a każde wejście jest stereo (czyli 2 kanały). Do tego rozdzielczość ADC na AVR ma chyba tylko 10 bitów, z tego co pamiętam karty dźwiękowe mają 24 bity oraz próbkowanie co najmniej 96kHz. Mogę się jednak mylić.

  • #5 26 Gru 2015 23:03
    Urgon
    Poziom 36  

    AVE...

    Używanie UARTu do czegoś takiego w obecnych czasach jest troszkę słabym pomysłem. Równie dobrze można wziąć jakiś przetwornik ADC o wyjściu równoległym i podpiąć do portu LPT, co zresztą dałoby prędkość do 2Msps. Problemem, jak zawsze zresztą w takich układach jest prędkość łącza. Dlatego dla takiego układu najlepszym rozwiązaniem byłaby łączność przez USB bez żadnych przejściówek. Wiele mikrokontrolerów ma sprzętową obsługę tego protokołu. Niestety, jest on dla początkujących i średnio-zaawansowanych ciężki do wykorzystania zarówno od strony mikrokontrolera, jak i komputera.

    Uważam, że ten projekt ma potencjał, tylko wymaga rozbudowania. Choćby możliwość wykorzystania portu równoległego czy USB lub zmiany wielkości próbki (8 bitów każdemu powinno wystarczyć) by zwiększyła znacznie użyteczność programu.

  • #6 26 Gru 2015 23:06
    fotomh-s
    Poziom 17  

    Ja się z Tobą nie zgodzę. Moim zdaniem projekt potencjału nie ma ponieważ zwykła karta dźwiękowa ma lepsze parametry i jest wiele gotowych programów do tego celu.

    Moim zdaniem to rozwiązanie jest trochę przerostem formy nad treścią.

    No i co do LPT to jest to teraz relikt lat 90tych i wczesnych lat 2000. Mało jaki komputer ma LPT w dzisiejszych czasach. USB jest lepszym rozwiązaniem, jednak wymaga większej wiedzy z zakresu programowania.

  • #7 27 Gru 2015 00:03
    pawel1029384756
    Poziom 20  

    Niema w programie nic nadzwyczajnego, bo już sporo takich widziałem, ale podoba mi się chęć do działania. Jak już wcześniej wspominano ograniczeniem jest szybkość transmisji, czego się nie da obejść korzystając z RS232, USB na pewno by pomogło, ale jest bardziej skomplikowane. Ciekawym rozwiązaniem było by to LPT, bo przy prostych aplikacjach okazuje się szybsze i łatwiejsze w obsłudze. Problem jest w tym, że niewiele osób ma jeszcze LPT w komputerach. Ja akurat jestem posiadaczem tego portu w prawie każdym komputerze, nawet w tych nowych. A do laptopa mam stacje dokującą z LPT, więc myślę, że nie jest to aż taki problem zdobyć urządzenie z tą transmisją. Jeśli chodzi o mnie to na pewno bym w to poszedł.

  • #8 27 Gru 2015 07:28
    goreckidiy
    Poziom 10  

    dp-mion7 napisał:
    A jest możliwość zapisu danych w do MS Excela lub do csv w postaci tabel?
    Dlaczego 11 bajtów przy czterech naraz (a nie 8)?

    Niestety nie ma możliwości zapisu do excel'a, i ja nie potrafie tego zrobić.
    Wykres można zapisać do pliku *.grf
    Po otwarciu go w notatniku wygląda tak:

    Code:

    Kurve
    255
    1462
     0.00000000000000E+0000
     0.00000000000000E+0000
     9.99999999999446E-0004
     0.00000000000000E+0000
     1.99999999999889E-0003
     0.00000000000000E+0000
     2.99999999999834E-0003
     0.00000000000000E+0000
     3.99999999999778E-0003
     0.00000000000000E+0000
     4.99999999999723E-0003
     0.00000000000000E+0000
     5.99999999999667E-0003
     0.00000000000000E+0000
     6.99999999999612E-0003
     0.00000000000000E+0000
     7.99999999999557E-0003
     0.00000000000000E+0000
     8.99999999999501E-0003
     0.00000000000000E+0000
     9.99999999999446E-0003
     0.00000000000000E+0000


    Być może da się dopisać jakąś formułe w Excelu, żeby interpretował te dane.

    Dlaczego 11 bajtów ?
    Jedna zmienna typu word która przechowuje wartość ADC zajmuje 2 bajty. Faktycznie 4 zmienne zajmują 8 bajtów. Żeby oddzielić je od siebie musiałem użyć 3 liter "P", a każda z nich zajmuje jeden bajt. Razem wychodzi 11 bajtów ;).

    wojtek_was napisał:
    W dziale pomocy wyświetlają się 4 punkty lecz po kliknięciu w np. Program uC Bascom nic się nie wyswietla.

    Słuszna uwaga! Zaraz to sprawdzę.

    fotomh-s napisał:
    Co z tego że każdy elektronik ma takową płytkę jeśli każdy komputer ma wejścia audio?

    fotomh-s napisał:
    Moim zdaniem projekt potencjału nie ma ponieważ zwykła karta dźwiękowa ma lepsze parametry i jest wiele gotowych programów do tego celu.

    A czy w każdej karcie dźwiękowej da się pozbyć filtra składowej stałej ? Niestety nie. Poza tym ja np nie chciał bym specjalnie do tego celu modyfikować mojej karty ;) Niedawno prezentowałem taki układ, ale filtra składowej stałej usunąć się nie da, co powoduje że nie da się oglądać niskich częstotliwości, napięcia stałego, a wszystko jest nieco zniekształcone (zaokrąglone). https://www.elektroda.pl/rtvforum/viewtopic.php?t=3106124&highlight=

    fotomh-s napisał:
    karty dźwiękowe mają 24 bity oraz próbkowanie co najmniej 96kHz. Mogę się jednak mylić.
    Owszem mają 24 bity, aczkolwiek przeważnie (przynajmniej te chińskie) nie przekraczają próbkowania 20kHz.

    fotomh-s napisał:
    USB jest lepszym rozwiązaniem, jednak wymaga większej wiedzy z zakresu programowania.
    Owszem, ale wymaga też solidnie zaprojektowanego hardware, a moja konstrukcja to prosty program, do którego elementy wykonawcze można złożyć na płytce stykowej w 5 minut - takie było założenie ;) Może kolejny mój projekt spróbuję oprzeć o USB - czas pokaże ;)

    Dodano po 12 [minuty]:

    Faktycznie plik się nie otwiera. Zamieszczam jeszcze raz działający plik pomocy, a gdyby pojawiały się problemy poniżej jest kod bascom do uC ;)



    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

  • #9 27 Gru 2015 09:04
    goreckidiy
    Poziom 10  

    Przypadkowo natknąłem się na ciekawy kit AVT
    https://sklep.avt.pl/avt527.html

    Jest to oscyloskop RS232. Zastanawia mnie tylko jedna rzecz....
    Jaki sposobem udało się uzyskać autorowi 500kHz ? :)
    Może na podstawie tego kitu można zrobić coś lepszego...

  • #10 27 Gru 2015 10:24
    Urgon
    Poziom 36  

    AVE...

    Zrobiono to tak, jak się robi w każdym oscyloskopie cyfrowym podłączanym do komputera: kolejne próbki są zapisywane w pamięci, a potem wysyłane przez wybrany port. Im większa pamięć, tym więcej próbek idzie zapisać. Proste rozwiązanie: układ ADC o wyjściu równoległym podłączasz do pamięci SRAM/DRAM i z pomocą szczypty logiki taktujesz wspólnym zegarem zwiększając adres o jeden. Im więcej pamięci, tym więcej próbek. Potem wstrzymujesz pracę przetwornika i odczytujesz zawartość pamięci z taką prędkością, na jaką pozwala połączenie z komputerem. Z pamięcią o czasie dostępu 10ns możesz mieć częstotliwość próbkowania 100MHz. Ale ja bym sugerował na początek częstotliwość o połowę mniejszą i dość próbek, by jednorazowo zebrać całą sekundę sygnału.
    Jedna uwaga co do próbkowania z pomocą mikrokontrolera: 8 bitów i lepsza część analogowa (jak w projekcie AVT527) da lepsze wyniki niż 10 bitów nic więcej. Jeszcze lepiej jest użyć zewnętrzny ADC, bo będzie dokładniejszy, szybszy i mniej zaszumiony...

  • #11 27 Gru 2015 10:25
    pawel1029384756
    Poziom 20  

    goreckidiy napisał:
    Przypadkowo natknąłem się na ciekawy kit AVT
    https://sklep.avt.pl/avt527.html

    Jest to oscyloskop RS232. Zastanawia mnie tylko jedna rzecz....
    Jaki sposobem udało się uzyskać autorowi 500kHz ?
    Może na podstawie tego kitu można zrobić coś lepszego...

    Jest tylko jeden kanał i przetwornik ADC jest 8 bitowy, więc tych danych jest mniej. Ale zwróć uwagę na to, że pasmo to jest do 500kHz, ale częstotliwość próbkowania musi być minimum dwukrotnie większa i tak też jest tam podana 1M próbek/s. Dalej jest to dla mnie zagadką jak to wyciągnęli, bo żeby wysłać wszystkie te próbki, to trzeba by mieć transmisje 8Mb/s, co jak dla mnie przy RS232 jest mało osiągalne.

  • #12 27 Gru 2015 12:57
    goreckidiy
    Poziom 10  

    Uwaga!
    Dodałem nową poprawioną wersję Roat v1.1. (pierwszy mój post)

    Zmiany:
    - Zrezygnowałem z pliku pomocy, bo faktycznie nie na każdym komputerze się otwierał. Zamiast niego jest przycisk "Bascom code", po którego kliknięciu otwiera się notatnik z kodem źródłowym dla mikroprocesora.
    - Opcja booster polega na tym że działa tylko jeden kanał, a jeden pomiar zajmuje 1byte. Pogarsza to rozdzielczość, ale za to znacznie wzrosła prędkość próbkowania (działa tylko na oscyloskopie) - Bardzo proszę o wasze testy i screeny z użyciem generatora
    - minimalne zmiany estetyki interfejsu

    Jeżeli chodzi o sens tego mini projektu...
    Można zrobić coś na wzór AVT, ale jak kolega AVE napisał, trzeba by było dołożyć RAM, porządny obwód wejściowy itp - zaprojektować cały układ. Założenie mojego programu było takie by wycisnąć wszystko co się da małym nakładem pracy, i mógł to zrobić każdy bez narażania się na koszty - wydaje mi się że się udało.

    Jeszcze raz bardzo was proszę o testy, żebyśmy w ogóle wiedzieli o czym rozmawiamy ;)

    Pozdrawiam

  • #13 27 Gru 2015 15:05
    Visher
    Poziom 8  

    Gratulacje projektu :) Zastanawiam się tylko nad tym ograniczeniem do bauda 19200, przy chińskiej przejściówce z UARTa na USB byłem w stanie wyciągać baud 0.5 M albo 1 M na Atmega8.

    Ja wraz ze współlokatorem od jakiegoś czasu bierzemy się za zbudowanie przystawki oscyloskopowej na bazie ATxmega128A3U, który posiada m.in. ADC 12-bit 2 Msps, DMA i sprzętowe USB w wersji full-speed (ok 12 Mbps). Oczywiście nie da się przez USB full-speed przesłać tylu danych, więc ograniczymy się z transferem. Po stronie komputera program w Javie, którego zalążki już powstały - potrafi odbierać sygnał z UARTa przez przejściówkę na USB, wyświetla jeden wykres który można przesuwać i skalować w każdej osi, wygląda to mniej więcej tak:

    Roat v1.0 - Oscyloskop RS232

    Ogółem schemat ideowy był by na bazie tego:
    https://sklep.avt.pl/avt2999.html

    Po nowym roku prace ostro ruszą, mam nadzieję :) Przydało by się jakieś wsparcie merytoryczne jeżeli chodzi o część analogową jeżeli mieli byśmy coś zmieniać. Myślałem nad zaprzęgnięciem do tego jakiegoś modułu FTDI np FT232H, ale nie mam pojęcia jak się z tym komunikować i czy przy zegarze 32 MHz w atxmedze byłym w stanie wykorzystać potencjał tego konwertera.

    Życzę powodzenia w rozwijaniu swojego projektu :)

  • #14 27 Gru 2015 18:31
    piotrd76
    Specjalista Automatyk

    A ja bym tak zupełnie nie skreślał projektu kolegi z powodu wykorzystania portu szeregowego. O ile jako "oscyloskop" jest to tylko sztuka dla sztuki, niewiele lepsza niż całkowicie bezużyteczne przystawki do karty dźwiękowej itp., o tyle może to być dobra baza dla taniego rejestratora np. temperatury, wilgotności, ciśnienia czy innych parametrów fizycznych. Dla większości typowych procesów taka prędkość pomiaru jest wystarczająca, a zaletą RSa jest spora dopuszczalna odległość, można by jeszcze zmienić transceivery na RS485 albo pętlę prądową a wtedy to już by miało naprawdę spory zasięg.

  • #15 27 Gru 2015 19:08
    fotomh-s
    Poziom 17  

    Cytat:
    karty dźwiękowe mają 24 bity oraz próbkowanie co najmniej 96kHz. Mogę się jednak mylić.
    Owszem mają 24 bity, aczkolwiek przeważnie (przynajmniej te chińskie) nie przekraczają próbkowania 20kHz.


    Ja mam kartę zintegrowaną firmy Realtek. Ponoć ma ona aż 192KHz.

  • #17 28 Gru 2015 14:19
    Arni85
    Poziom 12  

    @fotomh-s
    Proponuję koledze już odpuścić temat kart dźwiękowych. Ten układ ma jedną, piękną możliwość, która nie została tutaj chyba wspomniana: możliwość izolacji galwanicznej od PC. Po dodaniu transoptora w otrze RS232 i osobnego (względem PC) zasilania przystawki nasz komputer jest bezpieczny, jeśli coś pójdzie źle w układzie pomiarowym.
    No i mamy cztery kanały, a ile kanałów wejściowych ma standardowo zwykła karta dźwiękowa montowana w większości komputerów PC i laptopów? :)

  • #18 28 Gru 2015 15:27
    goreckidiy
    Poziom 10  

    Również uważam że temat karty dźwiękowej jest nie na miejscu. Jak już wcześniej wspomniałem problemem w kartach dźwiękowych jest filtr składowej stałej. Nie zawsze da się go "wyłączyć", a i nie sądzę byś zechciał robić doświadczenia na zintegrowanej karcie, którą posiadasz w swoim komputerze. Moje rozwiązanie służy bardziej do pomiarów o niskiej częstotliwości i rysowania wykresów (przykładowo: temperatura, tensometry, fotorezystory, itp...) Nie koniecznie musimy oglądać wejścia ADC. Równie dobrze można napisać program do uC, tak by wysyłał nam temperaturę z DS18B20. Oscyloskop to tylko dodatkowa opcja, choć to trochę za duże słowo.


    Jako że sam jestem ciekaw jaka jest graniczna częstotliwość próbkowania mojego ustrojstwa, chciał bym ponowić swoją prośbę skierowaną do osób posiadających generator przebiegów - będę naprawdę bardzo wdzięczny, i podzielę się punktami.
    Chodzi mi o to jakie jest maksymalne próbkowanie (np przy trójkącie) z załączonym trybem booster, oraz z wyłączonym. Z góry dziękuję!

  • #19 28 Gru 2015 18:08
    fotomh-s
    Poziom 17  

    Arni85 napisał:
    @fotomh-s
    Proponuję koledze już odpuścić temat kart dźwiękowych. Ten układ ma jedną, piękną możliwość, która nie została tutaj chyba wspomniana: możliwość izolacji galwanicznej od PC. Po dodaniu transoptora w otrze RS232 i osobnego (względem PC) zasilania przystawki nasz komputer jest bezpieczny, jeśli coś pójdzie źle w układzie pomiarowym.
    No i mamy cztery kanały, a ile kanałów wejściowych ma standardowo zwykła karta dźwiękowa montowana w większości komputerów PC i laptopów? :)


    W większości laptopów masz 2 kanały wejściowe oraz 0 portów RS232. Czyli i tak przewaga po stronie karty dźwiękowej w ilości kanałów ;-)
    Ja na moim PC mam 2 dedykowane wejścia mikrofonowe + co najmniej jedno liniowe. Czyli co najmniej 6 kanałów.

    Co do izolacji to można zastosować kartę dźwiękową pod USB i odizolować optycznie sygnał. No i do tego osobne zasilanie 5V i mamy izolację.

    Oczywiście obydwa rozwiązania mają swoje wady i nigdy nie będą perfekcyjnymi oscyloskopami.

    Cytat:
    Moje rozwiązanie służy bardziej do pomiarów o niskiej częstotliwości i rysowania wykresów

    Jeśli do niskich częstotliwości to ma to jeszcze sens. Gorzej z wysokimi.

  • #20 28 Gru 2015 18:26
    goreckidiy
    Poziom 10  

    fotomh-s napisał:
    W większości laptopów masz 2 kanały wejściowe oraz 0 portów RS232. Czyli i tak przewaga po stronie karty dźwiękowej w ilości kanałów ;-)


    Przeczytaj temat od początku, i spójrz co napisałem w pierwszym poście.
    goreckidiy napisał:
    Jej działanie polega na wizualizacji stanów wejść ADC mikrokontrolera, za pośrednictwem portu szeregowego RS232 (działa również z przejściówkami).

    Nie wiem czy to przewaga czy nie, ale wiem że mówimy o dwóch różnych urządzeniach. W przypadku k.dźwiękowej nadal jest problem z filtrami, o których nic nie napisałeś. Na pewno znalazł byś kartę w której można usunąć je bez problemu, ale podejrzewam że musiał byś ją po prostu zakupić, bo w Twojej może nie koniecznie to się udać. Tak może być z każdym użytkownikiem chcącym posiadać tanią namiastkę oscyloskopu. Tak czy siak karta dźwiękowa to zupełnie inne urządzenie niż mój miniprojekt, i ich przeznaczenie jest całkowicie różne. Myślę że temat karty dźwiękowej vs moje ustrojstwo wyjaśniliśmy sobie raz na zawsze, i proszę Cię o zakończenie tego tematu, bo myślę że nie tylko ja nie chce już tego czytać, tym bardziej że niema to żadnego związku z tematem. Jeżeli jesteś zainteresowany kartą dźwiękowa w roli oscyloskopu, możesz założyć przecież własny wątek, lub poszukać czegoś gotowego w sieci.

    Pozdrawiam

  • #21 04 Sty 2016 10:21
    goreckidiy
    Poziom 10  

    Z racji dość dużego zainteresowania tematem (wskazówki/sugestie udzielane na PW)
    powstała nowa, już ostateczna wersja programu Roat.
    Można ją pobrać z mojej strony Link

    Pozdrawiam!