Elektroda.pl
Elektroda.pl
X

Search our partners

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

rejestracja przebiegow mikroprocesor + PC

zwora 30 Mar 2006 13:21 2827 7
  • #1
    zwora
    Level 18  
    Witam wszystkich.
    Chcialbym wykonac urzadzenie, ktore za posrednictwem mikrokontrolera rejestrowaloby przebiegi czasowe napiecia i w czasie rzeczywistym mozliwa bylaby ich obserwacja (tzn dostep do juz zarejestrowanych danych w czasie ich dalszej rejestracji) na ekranie monitora jednoczesnie przy mozliwosci wyboru zakresu danych/podstawy czasu napiec do wyswietlenia. Od strony mikrokontrolera mniej wiecej wiedzialbym jak sie za to zabrac, problem zaczyna sie po stronie komputera. Otóz chcialbym stworzyc program pobierajacy dane z portu COM komputera, demultipleksacje (czy jak to nazwac - chcialbym rejestrowac kilka napiec na raz) i obrobke danych w sposob podany powyzej. I najlepiej gdyby byl to samodzielny program pod windowsa, z przyjemnym dla uzytkownika interfejsem. I tutaj moja prosba. Czy wie ktos moze, gdzie moge zdobyc wiedze potrzebna do realizacji tego projektu? Dostępne w Polsce ksiazki, czasopisma, linki, porady, ktory jezyk programowania nadawalby sie najlepiej do tego celu (choc najbardziej wolalbym C++), itp. Po prostu chodzi mi o wiedze praktyczna. Z gory dzieki.
  • #2
    lbugiera
    Level 21  
    Witam. Rozumiem że chodzi ci poprostu o oscyloskop do PC. Nie wiem jak szybkie przebiegi chcesz rejestrować ale port COM jest raczej za wolny na takie działania. Np dla prędkości 115200 bodów dla przebiegu 5kHz zdążysz przesłać tylko 2 punkty na okres!. Więc lepiej to zrobić po porcie USB używając choćby FT232R. Wtedy masz maks 3Mbit co daje 300kB/s, czyli przebieg 150 kHz zobrazujesz 2 punktami na okres (czyli i tak wolno). Do tego trzeba użyć szybkiego przetwornika A/C. Ilość danych które trzeba obrobic jest naprawde spora.

    Jeśli chodzi o strone programową to proponuje QT ponieważ świetnie wykorzystuje C++ i jest dosyć szybka. Aplikacje okienkowe pisze się naprawde szybko. Jednak będziesz musiał też się zapoznać z funkcjami Windows API choćby do obsługi RS232. Ksiazki do QT to np. Daniel Solin "Poznaj programowanie przy użyciu biblioteki QT w 24 godziny". A do Windows API polecam Charles Petzold "Windows Programming". Kompilator to np darmowy DevC++.

    Jeśli ma to być na własny użytek to lepiej poszukać gotowego, bo to naprawde sporo pracy

    Pozdrawiam
    Boogie
  • #3
    _Matik_
    Level 19  
    Predkosc portu RS232 jest w zupelnosci wystarczajaca dla podgladu. Mozna sie pokusic o wykorzystanie USB ale nie o to tutaj chodzi. Jesli kolega chce ogladac przebieg na ekranie, to "wystarczy" zrobic zapis probek do pamieci podrecznej znajdujacej sie na plytce mikrokontrolera z maksymalna predkoscia (maksymalna predkosc bedzie nam okreslac tutaj dopuszczalne pasmo naszego "oscyloskopu", twierdzenie shanona i te sprawy). Potem dopiero wysylamy odpowiednie probki do PC i wyswietlamy je - nie musimy wysylac wszystkich - mozemy wyzwalac wysylanie probek tak aby uzyskac na ekranie komputera stabilny obraz przebiegu okresowego, czyli wyswietlac probki zaczynajace sie od tego samego miejsca w okresie badanego sygnalu.
    Inaczej bedzie jesli chcemy dokladnie zarejestrowac dany przebieg na PC. W tym przypadku po wyzwoleniu przetwarzania ladujemy do pamieci tyle probek ile tylko sie zmiesci i potem po zakonczeniu wysylamy je sobie powoli do PC. Oczywiscie zarejestrujemy taki kawalek przebiegu na jaki starczy pamieci ale przeciez to w wiekszosci przypadkow wystarczy.

    Caly czas chodzi mi po glowie oscyloskop/analizator stanow logicznych na ukladzie FPGA+SRAM+szybki ADC. Po co kupowac g**** przystawke do PC na bazie karty muzycznej z pasmem 22kHz jak mozna uzyskac dziesiatki megahercow. Przy obecnych cenach analizatorow/oscyloskopow dziwie sie ze nikt czegos takiego jeszcze nie zaprojektowal :>
  • #4
    zwora
    Level 18  
    Witam ponownie.

    Dzieki za odpowiedzi. Przebiegi, które bede chcial rejestrowac to przebiegi z mostka tyrystorowego 3-pulsowego na napiecie wejsciowe 3-fazowe 50Hz. Dobrze byloby zlapac tak ze 20 punktow na pol okresu, wiec czestotliwosc probkowania 2kHz. Oprocz napiecia chcialbym rejestrowac prad i predkosc (z taka sama czestotliwoscia probkowania) - uklad bedzie sluzyl do regulacji predkosci obrotowej silnika, poprzez zmiane czestotliwosci napiecia zasilajacego (trzy mostki 3-pulsowe, czyli cyklokonwertor). Do tego dobrze byloby wykonac pomiary dla wszystkich trzech faz a wiec prad + napiecie x 3 = 6 + 1 -predkosc = 7 roznych pomiarow kazdy z czestotliwoscia 2 kHz. Oprocz tego dobrze byloby mierzyc napiecie i prad wzbudzenia (bedzie to silnik synchroniczny) z juz mniejsza czestotliwoscia. Wiec rzeczywiscie leiej byloby przez USB. Choc na razie chcialbym sprobowac mierzyc choc jedna z tych wielkosci przez COMa, a pozniej rozbudowac na USB. Ksiazke juz jakas znalazlem tj. "RS232C Praktyczne Programowanie" na razie tylko rzucilem na nia okiem ale wyglada obiecujaco. Sa rozdzialy o Win 32 API, ale poszukam tez tej:

    Quote:
    Daniel Solin "Poznaj programowanie przy użyciu biblioteki QT w 24 godziny".


    Dzieki
    Pozdrawiam
  • #5
    lbugiera
    Level 21  
    _Matik_ : Racja .... nie pomyślałem o tym :). Przecież i tak człowiek nie będzie tego w stanie zobaczyć. Zakładając że chcemy pokazywac obraz na ekranie z częstotliwościa 25fps to dla prędkości 115200 bitów mamy 11520 bajtów/s, a to daje na jedną klatke 460 bajtów, czyli w sumie może być pod warunkiem, że przesyłamy tylko jeden kanał z rozdzielczością 8 bitów.

    Co do oscyloskopu na fpga to widziałem jakiś taki projekt w elektronice praktycznej, ale nie ma teraz czasu tego szukać. Też musze sobie zrobić/kupić jakiś oscyloskop bo bez tego jak bez ręki, trzeba się domyślać wszystkiego.

    Boogie
  • #6
    migod
    Level 21  
    www.rxtx.org a to, jakby ktos wolal uzyc do tego Java (biblioteka do komunikacji po serialu).
    co do GUI - mozna to napisac potem w Swingu.

    Zalety - pelna portowalnosc Win32<->Linux.

    PS. Znajac C++ pierwszy program w Java mozna samodzielnie napisac jeszcze teg o samego wieczoru co rozpoczelo sie nauke. ;-)

    pozdro,
    --
    migod
  • #7
    marek_Łódź
    Level 36  
    Uruchomiłem kilka takich zestawów w układzie wejścia analogowe>>ATMega8/16/32<>RS232<>PC. Dane przesyłam do 115 kbaud, były też próby przez konwerter USB<>RS do 1 MBaud. Po stronie PC oprogramowanie pisałem w DELPHI. Jeśli interesuje Cię taka wersja, mogę podesłać źródła na pw.
  • #8
    marqa
    Level 12  
    Jeśli potrzebujesz tego na własny użytek (1szt) można to zrobic w miarę tanim kosztem:
    Szybki ADC np. MAX1198 - dwa kanały 8bit 100Msps - aż nadto - do tego za darmo :)
    Pamięc FIFO synchroniczna. Z tego co wiem Texas Instruments posiada takie pamięci na 100 i wiecej MHz 512, 1k, 2k, 4k, nawet do 64k słów 16bitowych - też za darmo :) - wysyłają próbki
    Do tego jakiś mały CPLD do sterowania tymi dwoma układami i ewenutalnego podziału częstotliwości zegara dla uzyskania różnych f próbkowania, do wyzwalania itp. Najlepszym chyba rozwiązaniem byłby jakiś Xilinx serii 9000 - 32makrocele w zupełności wystarczą - cena ok 10 - 20zł. Do tego oprogramowanie darmowe i dostępny schemat kabla do programowania JTAG.

    Na koniec procesorek np. jakiś ATMega - do komunikacji z PC - ewentualnie obsługi wyświetlacza :)
    Do tego jakiś tor analogowy i niewielkim kosztem masz gotowy dośc szybki, dwukanałowy oscyloskop cyfrowy.
    Jestem w trakcie przymiarek do zrobienia czegoś takiego. Zobaczymy co z tego wyjdzie :).

    Jeśli chcesz zbudowac cos wolniejszego to wystarczy procek z 8 kanałowym przetwornikiem i obsługą zewnętrznej pamięci RAM (ATMega168 czy cos takiego), lub podłączyc RAM i obsługiwac go programowo. Możesz spokojnie zarejestrowac odpowiednio długi ciąg próbek i potem powoli wysłac po RS232 - w zupełności powinno wystarczyc. Ewentualnie dobrac taki procek, żeby wystarczyło wewnętrznej pamięci do Twoich potrzeb - ale jeśli chcesz rejestrowa siedem kanałow jednocześnie - powiedzmy tylko 512probek/okno, to chyba takiego procka nie znajdziesz (w sensownej cenie oczywiście).

    P.S. Chyba w zeszłym roku albo pod koniec 2004, w Elektronice Praktycznej był projekt oscyloskopu na '51 Dallasa z przetwornikiem Analog Devices - chyba nawet 40Msps - nie chcę skłamac - jak znajdę to dam znac. Idea ogólnie ta sama - zbierasz np 512próbek, wysyłasz do PC, zbierasz następne próbki itd.

    P.P.S. Jeśli chodzi o komunikację po RS232 i wizualizację, mogę trochę pomóc.