Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Labview: Karta dźwiękowa jako źródło danych

Labview jest środowiskiem służącym do wizualizacji danych pomiarowych i ich przetwarzania. Tworzenie wizualizacji składa się z dwóch warstw. Z pierwszej na której widoczne są różne przyciski, wykresy itd. Drugiej, która opiera się na graficznym języku programowania „G”.

Źródłem danych dla programu mogą być różne media np.:

  • Karty pomiarowe(Daq,dźwiękowe)
  • Sygnały generowane przez sam program
  • Pliki z próbkami
  • Program multisim

We wpisie wykorzystamy kartę dźwiękową (konkretniej mikrofon) jako źródło danych. W tym przypadku wejściem będzie dźwięk jednak nie istnieje nic na przeszkodzie aby zbudować własny 'oscyloskop' do pomiarów sygnałów elektrycznych jednak tu należy uważać aby nie zniszczyć karty dźwiękowej.

Testową wersję Labview można pobrać z stron National Instrument, wystarczy się zarejestrować i możemy ściągnąć 30 dniową wersję, dostępne są też dodatkowe moduły do ściągnięcia.

Pobieranie danych

Aby maksymalnie uprościć program zdecydowałem się na pobieranie danych z karty tylko przez pewien czas, na końcu powrócimy do tematy pobierania danych w czasie rzeczywistym(tylko wspomnę gdzie można znaleźć).

Tworzymy nowy projekt, powinien nam pokazać się tak zwany front panel (opis na belce okna) tutaj umieścimy wykresy klikamy prawym przyciskiem rozwijamy listę i wybieramy następujące elementy:

  • WaveGraph Form, przerzucamy dwa
  • Przyciski: Stop Button i Push Button

Klikamy prawym przyciskiem na Push Button wybieramy Mechanical Action i wybieramy Switch Until Relased, oznacza to że przycisk będzie wciśnięty dopóki przytrzymamy go myszką.

Klikamy prawym przyciskiem na Push Button wybieramy Mechanical Action i wybieramy Switch Until Relased, oznacza to że przycisk będzie wciśnięty dopóki przytrzymamy go myszką.

Aby wejść do bloku programowania z menu Window wybieramy Show Block Diagram. Pojawi się okno w którym będą znajdowały się reprezentacje graficznych elementów z poprzedniego bloku, elementy te można łączyć ze sobą ale teraz czas na programowanie. Przed programowanie warto uruchomić Help programu ponieważ wystarczy wpisać tam nazwę bloku, i w w jego opisie znajdzie się przycisk który umożliwi dodanie tego bloku, skróci to znacznie czas szukania. Klikamy prawym przyciskiem na pustym miejscu i w menu odszukujemy Aquire Sound po wybraniu otworzy się nam okno z opcjami wszystko powinno tam już być w porządku ale w opcji Duration(s) możemy ustawić czas próbkowania aczkolwiek rzeczywisty czas pobierania danych będzie krótszy. Jak można zauważyć bloczek bo lewej stronie ma małe kolorowe trójkąciki, są to wejścia na dane(po prawej mamy wyjścia), po prawdzie podczas dodawania ukazuje się okno z parametrami jednak w czasie działania programu mogłaby zajść potrzeba zmiany parametrów i po to właśnie są wejścia. Kolejny krok to odnalezienie bloku Spectral Measurments (dokonamy analizy widmowej sygnału) podobnie jak poprzednio pokaże się okno konfiguracyjne, żadne zmiany nie są potrzebne. Teraz czas na połączenie ze sobą elementów. Jest to trywialne ,z wyjścia Data bloku Aquire Sound łapiemy końcówkę która się podświetli jeśli się na nią najedzie ,po czym przeciągamy ją do jednego z bloków WaveForm, kolejno z wejścia Signal bloku Spectral Measurments ciągniemy linię która ma się połączyć z uprzednio stworzoną linią. Teraz z wyjścia Spectral Measurments FFT (RMS) ciągniemy linię do drugiego bloku WaveForm(kompletny rysunek wraz z pętlami znajduje się poniżej).

Gdybyśmy teraz uruchomili program pobierał by on przez czas t próbki dźwięku i zakończył się ale nam zależy aby program działał ciągle i pobierał dane po przyciśnięciu przycisku.

Teraz odszukujemy strukturę While Loop(zakładka Programming). Po wybraniu jej, za pomocą myszki zaznaczamy wszystkie elementy, wtedy automatycznie znajdą się wewnątrz. W prawym dolnym rogu ramki znajduje się czerwone kółko. Teraz z przycisku stop ciągniemy linię do niego, oznacza to że przyciśnięcie tego przycisku zakończy pętle a tym samym program.

Teraz czas na kolejną strukturę ponieważ jak wspomniałem wcześniej chcemy pobierać dane tylko po przyciśnięciu przycisku. W tym celu odszukujemy Case Structure teraz wewnątrz While Loop zaznaczamy tylko elementy takie jak: Spectral Measurments, oba WaveForm, Aquire Sound. Teraz PushButton który wrzuciliśmy wcześniej powinien być poza strukturą Case, z tego przycisku wyprowadzamy linię do wejścia struktury Case tzn. kiedy przycisk ma wartość true rozpoczyna się zbieranie danych.jJak można zauważyć na ramce struktury znajduje się napis TRUE oznacza to że jeśli sygnał ma wartość true to wykonuje się kod wewnątrz, po kliknięciu można zmienić to na opcję FALSE co jak nazwa mówi wykonuje się kiedy warunek jest niespełniony . Uruchamiamy program(crtl+r). I cieszymy się wynikami ,a konkretniej amplitudą sygnału w czasie i jej widem(tzn. Reprezentacja w częstotliwości sygnału wej.).

W ten oto prosty sposób wykorzystujemy kartę dźwiękową. Wejściowy sygnał możemy przekształcać, filtrować itd. I uwaga wyprowadzić do na zewnątrz! Ale może o tym kiedy indziej. Dodam że matlab czy scilab także pozwala na takie manewry :).

Dobrze a teraz pytanie jak robić to cały czas? Cóż tu trzeba zastosować nieco inne bloki. Ale uwaga taki przykład znajduje się w przykładach dostarczonych z programem. Uruchamiamy wyszukiwarkę przykładów po czym znajdujemy Continuius Sound Input.vi , i przystępujemy do analizy. Program jest trywialny ale w paru słowach wygląda to tak, za pomocą bloku Sound Input Configuration uzyskujemy dostęp do karty(blok ten zbiera dane potrzebne z innych bloków!) po czym w pętli zbieramy dane za pomocą Sound Input Read i wyprowadzamy je do WaveForm. Prawda że proste? :)

Podsumowanie

Mam nadzieję że zachęciłem was do zapoznania się z Labview, środowiskiem które powinien znać każdy inżynier elektryk/elektronik/mechanik i nie tylko. 

oprogramowanie porady

Komentarze

0 nowych
alucosoftware   7 #1 23.01.2012 18:04

Ciekawy wpis, gratuluję. Czy korzystasz z LabView w pracy czy na uczelni?

pamix   7 #2 23.01.2012 19:45

Ja znam podstawy języka G i program LabView. Czytając twój wpis niestety nie wywołałeś we mnie chęci rzucenia wszystkiego i natychmiastowego ściągnięcia tego oprogramowania. Wpis o LabView to ciekawy pomysł. Tylko trzeba przemyśleć jak to zrobić. Myślę że ma szansę nawet seria wpisów. Miej na względzie to, że nie wszyscy tutaj mają chociaż ogólne pojęcie czym jest to oprogramowanie.

revcorey   6 #3 23.01.2012 20:51

@alucosoftware
Miałem na uczelni, obecnie zajmuje się prywatnie ponieważ pojawiło się pewne zapotrzebowanie na rynku a że myślę podjąć staż(jeśli otworzą mi II stopień studiów) lub pracę(jak nie otworzą) także przygotowuje się :)
@panoramix88 wpisy kieruję do uczniów techników i studentów politechnik. Generalnie nie da rady wytłumaczyć przydatności programu ludziom bez podstawowej wiedzy. Chodzi o to że pojawia się problem z pojęciami, po prostu taki program wymaga aby wiedzieć co to pętla itd. i wymaga też zapoznania się z nieznanymi pojęciami takimi jak fft na własną rękę. Osobną sprawą jest to że jestem dość słabym nauczycielem ale warto się szkolić pisząc :) Dodajmy że to blog a nie pełno prawne artykuły i wpisy są krótkie i omijam wiele podstawowych zagadnień podobnie jak to było w wpisie o scilab, chociaż tam był rzut ukośny i poziom LO. Ale obiecuje poprawę.

alucosoftware   7 #4 23.01.2012 21:47

@revcorey

Mój pierwszy, wykonany całkowicie we własnym zakresie projekt w LabVIEW był tematem mojej pracy inżynierskiej (fizyka). Zastanawiałem się czym mógłbym zaskoczyć komisję i wpadłem na zupełnie ciekawy pomysł. Ponieważ całość oprogramowania miała sterować urządzeniem wysokonapięciowym w zdumiewającym nawet teraz dla mnie eksperymencie, wykorzystałem interfejs COM Windows'a XP komponentu Windows Image Acquisition (WIA) na potrzeby "cykania fotek" kamerą podłaczoną pod USB. A profesor od LabVIEW na to: "ale mnie interesuje jak Pan to zrobił?"... to było całkiem miłe odczucie...

LabVIEW, jak każdy język pozwala na całkiem przyjazną komunikację z systemem operacyjnym (choć wtedy wydawało mi się to wyjątkowo uprzykrzające)

Jeśli chcesz mogę poszukać kodu źródłowego (VI), może zaskoczysz swoich wykładowców i wykorzystasz podobne do moich rozwiązania. Chyba wykorzystywałem LabVIEW w wersji 7. Zaznaczam, że nie był to wówczas szczyt moich marzeń programistycznych...

revcorey   6 #5 23.01.2012 23:59

Na razie planuje połączyć labview z arduino i sterować paroma urządzeniami i pobierać temperaturę + napięcia i stany urządzeń. Nie mam potrzeby zaskakiwania ludzi z uczelni wolę sam dziergać :P, a studia skończyłem a czy II stopień mi otworzą czas pokaże.

  #6 13.01.2015 15:44

W jaki sposób wypuścić sygnał na zewnątrz (głośniki komputera)?

revcorey   6 #7 13.01.2015 16:54

Jest w labview taki komponent do tego tylko nie pamiętam nazwy poszukaj.