Spisu treści:

Ukelele Tuner przy użyciu LabView i NI USB-6008: 5 kroków
Ukelele Tuner przy użyciu LabView i NI USB-6008: 5 kroków

Wideo: Ukelele Tuner przy użyciu LabView i NI USB-6008: 5 kroków

Wideo: Ukelele Tuner przy użyciu LabView i NI USB-6008: 5 kroków
Wideo: Jak stroić ukulele za pomocą stroika/tunera? - Bez Nut - PKU #17 2024, Lipiec
Anonim
Ukelele Tuner przy użyciu LabView i NI USB-6008
Ukelele Tuner przy użyciu LabView i NI USB-6008
Ukelele Tuner przy użyciu LabView i NI USB-6008
Ukelele Tuner przy użyciu LabView i NI USB-6008

Jako projekt nauczania oparty na problemach dla mojego kursu LabVIEW & Instrumentation w Humber College (technologia inżynierii elektronicznej), stworzyłem tuner ukulele, który pobierał wejście analogowe (dźwięk struny ukulele), znajdował podstawową częstotliwość, decydował, jaka nuta była próbowana dostrojenia i poinformuj użytkownika, czy struna musi zostać podniesiona w górę lub w dół. Urządzeniem, którego użyłem do tłumaczenia wejścia analogowego na wejście cyfrowe, był National Instruments USB-6008 DAQ (urządzenie do akwizycji danych), a interfejs użytkownika został zaimplementowany za pomocą LabVIEW.

Krok 1: Standardowe strojenie Ukelele

Standardowe strojenie ukelele
Standardowe strojenie ukelele
Standardowe strojenie ukelele
Standardowe strojenie ukelele

Pierwszym krokiem było ustalenie podstawowych częstotliwości dźwięków i zakresu, w jakim zwykle nastrojone są struny ukulele. Użyłem tych dwóch wykresów i zdecydowałem, że mój zakres tonów będzie mieścił się w zakresie od 262 Hz (C) do 494 Hz (High B). Wszystko poniżej 252 Hz byłoby uważane za zbyt niskie, aby program mógł rozszyfrować, jaką nutę próbuje zagrać, a wszystko powyżej 500 Hz byłoby uważane za zbyt wysokie. Program jednak nadal informuje użytkownika, o ile Hz znajduje się on od najbliższej możliwej do odczytania nuty i czy struna powinna zostać podniesiona (nuta zbyt nisko) czy w dół (nuta zbyt wysoka), aby osiągnąć dostępną nutę.

Dodatkowo stworzyłem zakresy dla każdej nuty, a nie tylko pojedynczą częstotliwość, aby program mógł łatwiej znaleźć nutę, która jest grana. Na przykład program poinformuje użytkownika, że grane jest C, jeśli nuta ma częstotliwość podstawową między 252 Hz (w połowie drogi do B) a 269 Hz (w połowie drogi do C#), ale w celu podjęcia decyzji, czy trzeba ją dostroić lub w dół, nadal porównuje odtwarzaną nutę z podstawową częstotliwością C, która wynosi 262 Hz.

Krok 2: Tworzenie czysto cyfrowego modelu teoretycznego

Tworzenie czysto cyfrowego modelu teoretycznego
Tworzenie czysto cyfrowego modelu teoretycznego
Tworzenie czysto cyfrowego modelu teoretycznego
Tworzenie czysto cyfrowego modelu teoretycznego

Zanim zagłębiłem się w analogową stronę projektu, chciałem sprawdzić, czy mógłbym stworzyć program LabVIEW, który wykonałby przynajmniej główne przetwarzanie próbki dźwiękowej, takie jak odczytywanie próbki dźwiękowej.wav, znajdowanie częstotliwości podstawowej i tworzenie wymagane porównania z wykresem częstotliwości, aby dowiedzieć się, czy dźwięk powinien być dostrojony w górę czy w dół.

Użyłem SoundFileSimpleRead. VI dostępnego w LabVIEW, aby odczytać plik.wav ze ścieżki, którą wyznaczyłem, umieściłem sygnał w indeksowanej tablicy i wprowadziłem ten sygnał do HarmonicDistortionAnalyzer. VI w celu znalezienia częstotliwości podstawowej. Wziąłem również sygnał z SoundFileSimpleRead. VI i podłączyłem go bezpośrednio do wskaźnika wykresu przebiegu, aby użytkownik mógł zobaczyć przebieg pliku na przednim panelu.

Stworzyłem 2 struktury przypadków: jedną, aby przeanalizować, jaka nuta została zagrana, a drugą, aby określić, czy struna musi być podkręcona, czy opuszczona. W pierwszym przypadku stworzyłem zakresy dla każdej nuty i jeśli podstawowy sygnał częstotliwości z HarmonicDistortionAnalyzer. VI był w tym zakresie, powiedziałby użytkownikowi, jaka nuta jest odtwarzana. Po ustaleniu nuty, wartość granej nuty została odjęta od rzeczywistej częstotliwości podstawowej nuty, a następnie wynik został przeniesiony do drugiego przypadku, który określił, co następuje: jeśli wynik jest powyżej zera, struna musi zostać dostrojona; jeśli wynik jest fałszywy (nie powyżej zera), to sprawa sprawdza, czy wartość jest równa zero, a jeśli prawda, to program powiadomi użytkownika, że nuta jest nastrojona; jeśli wartość nie jest równa zero, oznacza to, że musi być mniejsza od zera i że struna musi zostać dostrojona. Wziąłem wartość bezwzględną wyniku, aby pokazać użytkownikowi, o ile Hz są oddaleni od prawdziwej nuty.

Zdecydowałem, że wskaźnik miernika będzie najlepszym, aby wizualnie pokazać użytkownikowi, co należy zrobić, aby nuta była dostrojona.

Krok 3: Następnie obwód analogowy

Następnie obwód analogowy
Następnie obwód analogowy
Następnie obwód analogowy
Następnie obwód analogowy
Następnie obwód analogowy
Następnie obwód analogowy

Mikrofon, którego użyłem w tym projekcie, to pojemnościowy mikrofon elektretowy CMA-6542PF. Karta katalogowa tego mikrofonu znajduje się poniżej. W przeciwieństwie do większości mikrofonów pojemnościowych tego typu nie musiałem martwić się o polaryzację. Karta katalogowa pokazuje, że napięcie robocze dla tego mikrofonu wynosi 4,5 - 10 V, ale zalecane jest 4,5 V, a jego pobór prądu wynosi maksymalnie 0,5 mA, więc należy na to uważać przy projektowaniu obwodu przedwzmacniacza. Częstotliwość robocza wynosi od 20 Hz do 20 kHz, co jest idealne dla dźwięku.

Zaimplementowałem prosty projekt obwodu przedwzmacniacza na płytce stykowej i wyregulowałem napięcie wejściowe, upewniając się, że na mikrofonie nie ma więcej niż 0,5 mA. Kondensator służy do filtrowania szumu stałego, który może być sprzężony z sygnałami elektrycznymi (wyjściem), a kondensator ma polaryzację, więc upewnij się, że dodatni koniec jest podłączony do pinu wyjściowego mikrofonu.

Po zakończeniu obwodu podłączyłem wyjście obwodu do pierwszego analogowego pinu wejściowego (AI0, pin 2) USB-6008 i podłączyłem masę płytki stykowej do analogowego pinu masy (GND, pin 1). Podłączyłem USB-6008 do komputera za pomocą USB i nadszedł czas, aby wprowadzić poprawki w programie LabVIEW, tak aby odbierał rzeczywisty sygnał analogowy.

Krok 4: Odczytywanie sygnałów analogowych za pomocą DAQ Assistant

Odczytywanie sygnałów analogowych za pomocą DAQ Assistant
Odczytywanie sygnałów analogowych za pomocą DAQ Assistant
Odczytywanie sygnałów analogowych za pomocą DAQ Assistant
Odczytywanie sygnałów analogowych za pomocą DAQ Assistant

Zamiast używać SoundFileSimpleRead. VI i HarmonicDistortionAnalyzer. VI, użyłem DAQ Assistant. VI i ToneMeasurements. VI do obsługi wejścia analogowego. Konfiguracja Asystenta DAQ jest dość prosta, a sam VI prowadzi Cię przez kolejne kroki. ToneMeasurements. VI ma wiele wyjść do wyboru (amplituda, częstotliwość, faza), więc użyłem wyjścia częstotliwościowego, które daje podstawową częstotliwość tonu wejściowego (z DAQ Assistant. VI). Wyjście ToneMeasurements. VI musiało zostać przekonwertowane i umieszczone w tablicy, zanim mogło być użyte w strukturach spraw, ale reszta programowania/wskaźników LabVIEW pozostała taka sama.

Krok 5: Wniosek

Wniosek
Wniosek

Projekt zakończył się sukcesem, ale na pewno było wiele wad. Kiedy obsługiwałem tuner w hałaśliwej klasie, programowi bardzo trudno było określić, co to był hałas i jaki ton był odtwarzany. Jest to prawdopodobnie spowodowane tym, że obwód przedwzmacniacza jest bardzo prosty, a mikrofon jest bardzo tani. Jednak gdy było cicho, program działał z dużą niezawodnością, aby określić nutę, która próbowała zostać zagrana. Ze względu na ograniczenia czasowe nie wprowadziłem żadnych dodatkowych zmian, ale gdybym miał powtórzyć projekt, kupiłbym lepszy mikrofon i poświęciłbym więcej czasu na układ przedwzmacniacza.

Zalecana: