İçindekiler:

LabView ve NI USB-6008 Kullanan Ukelele Tuner: 5 Adım
LabView ve NI USB-6008 Kullanan Ukelele Tuner: 5 Adım

Video: LabView ve NI USB-6008 Kullanan Ukelele Tuner: 5 Adım

Video: LabView ve NI USB-6008 Kullanan Ukelele Tuner: 5 Adım
Video: LabVIEW + NI USB 6008 (Analog Signal Acquisition) 2024, Kasım
Anonim
LabView ve NI USB-6008 Kullanan Ukelele Tuner
LabView ve NI USB-6008 Kullanan Ukelele Tuner
LabView ve NI USB-6008 Kullanan Ukelele Tuner
LabView ve NI USB-6008 Kullanan Ukelele Tuner

Humber College'daki (Elektronik Mühendisliği Teknolojisi) LabVIEW ve Enstrümantasyon kursum için probleme dayalı bir öğrenme projesi olarak, bir analog giriş (ukulele tel tonu) alacak, temel frekansı bulabilecek, hangi notanın denediğine karar verecek bir ukulele tuner oluşturdum Ayarlanacak ve kullanıcıya dizenin yukarı veya aşağı ayarlanması gerekip gerekmediğini söyleyin. Analog girişi dijital girişe çevirmek için kullandığım cihaz National Instruments USB-6008 DAQ (veri toplama cihazı) idi ve kullanıcı arayüzü LabVIEW ile uygulandı.

Adım 1: Standart Ukelele Ayarlama

Standart Ukelele Ayarlama
Standart Ukelele Ayarlama
Standart Ukelele Ayarlama
Standart Ukelele Ayarlama

İlk adım, müzik notalarının temel frekanslarını ve ukulele tellerinin tipik olarak hangi aralıkta akort edildiğini bulmaktı. Bu iki grafiği kullandım ve ton aralığımı 262 Hz (C) ile 494Hz (Yüksek B) arasında yapmaya karar verdim. 252 Hz'den düşük herhangi bir şey, programın hangi notanın çalınmaya çalışıldığını deşifre etmesi için çok düşük olarak kabul edilecek ve 500 Hz'den büyük herhangi bir şey çok yüksek olarak kabul edilecektir. Ancak program, yine de kullanıcıya, en yakın deşifre edilebilir notadan kaç Hz uzakta olduğunu ve uygun bir nota ulaşmak için dizenin akort (not çok düşük) veya aşağı (not çok yüksek) olup olmadığını söyler.

Ek olarak, programın hangi notanın çalındığını bulmasını kolaylaştırmak için tek bir frekans yerine her nota için aralıklar oluşturdum. Örneğin, nota 252 Hz (B'nin yarısı) ve 269Hz (C#'nin yarısı) arasında bir temel frekansa sahipse, program kullanıcıya bir C'nin çalındığını söyler, ancak bunun ayarlanması gerekip gerekmediğine karar vermek için veya aşağı, hala çalınan notayı 262Hz olan C'nin temel frekansıyla karşılaştıracaktır.

2. Adım: Tamamen Dijital Bir Teorik Model Oluşturma

Tamamen Dijital Teorik Bir Model Oluşturma
Tamamen Dijital Teorik Bir Model Oluşturma
Tamamen Dijital Teorik Bir Model Oluşturma
Tamamen Dijital Teorik Bir Model Oluşturma

Projenin analog tarafına dalmadan önce, en azından bir ses.wav örneğini okumak, temel frekansı bulmak ve ses oluşturmak gibi bir ses örneğinin ana işlemlerini yapacak bir LabVIEW programı oluşturup oluşturamayacağımı görmek istedim. sesin yukarı mı yoksa aşağı mı ayarlanması gerektiğini bulmak için frekans tablosuyla gerekli karşılaştırmalar.

Belirlediğim bir yoldan bir.wav dosyasını okumak için LabVIEW'de bulunan SoundFileSimpleRead. VI'yı kullandım, sinyali indekslenmiş bir diziye koydum ve temel frekansı bulmak için bu sinyali HarmonicDistortionAnalyzer. VI'ya besledim. Ayrıca SoundFileSimpleRead. VI'dan sinyali aldım ve kullanıcının dosyanın dalga biçimini ön panelde görebilmesi için doğrudan bir dalga biçimi grafiği göstergesine bağladım.

2 durum yapısı oluşturdum: biri hangi notanın çalındığını analiz etmek için, diğeri ise dizenin yukarı veya aşağı açılması gerekip gerekmediğini belirlemek için. İlk durumda, her nota için aralıklar oluşturdum ve HarmonicDistortionAnalyzer. VI'dan gelen temel frekans sinyali bu aralıktaysa, kullanıcıya hangi notanın çalındığını söylerdi. Nota belirlendikten sonra, çalınan nota değeri notanın gerçek temel frekansından çıkarıldı ve ardından sonuç, aşağıdakileri belirleyen ikinci duruma taşındı: sonuç sıfırın üzerindeyse, o zaman dizenin ayarlanması gerekir; sonuç yanlışsa (sıfırın üzerinde değilse), durum, değerin sıfıra eşit olup olmadığını kontrol eder ve doğruysa, program kullanıcıya notanın akortlu olduğunu bildirir; değer sıfıra eşit değilse, bu, sıfırdan küçük olması gerektiği ve dizenin ayarlanması gerektiği anlamına gelir. Gerçek notadan kaç Hz uzakta olduğunu kullanıcıya göstermek için sonucun mutlak değerini aldım.

Notu uyumlu hale getirmek için ne yapılması gerektiğini kullanıcıya görsel olarak göstermek için bir sayaç göstergesinin en iyisi olacağına karar verdim.

Adım 3: Sonraki, Analog Devre

Ardından, Analog Devre
Ardından, Analog Devre
Ardından, Analog Devre
Ardından, Analog Devre
Ardından, Analog Devre
Ardından, Analog Devre

Bu proje için kullandığım mikrofon CMA-6542PF kondenser elektret mikrofondur. Bu mikrofonun veri sayfası aşağıdadır. Bu türdeki çoğu kondansatörlü mikrofonun aksine, polarite konusunda endişelenmeme gerek yoktu. Veri sayfası, bu mikrofon için çalışma voltajının 4,5 - 10V olduğunu, ancak 4,5 V'nin tavsiye edildiğini ve akım tüketiminin maksimum 0,5mA olduğunu gösteriyor, bu nedenle bunun için bir preamp devresi tasarlarken dikkatli olunması gereken bir şey. Çalışma frekansı, ses için mükemmel olan 20Hz ila 20kHz'dir.

Breadboard'a basit bir preamp devre tasarımı uyguladım ve mikrofonda 0,5mA'dan fazla olmadığından emin olarak giriş voltajını ayarladım. Kondansatör, elektrik sinyalleriyle (çıkış) birlikte bağlanabilecek DC gürültüsünü filtrelemek için kullanılır ve kapasitörün polaritesi vardır, bu nedenle pozitif ucu mikrofon çıkış pimine bağladığınızdan emin olun.

Devre tamamlandıktan sonra devrenin çıkışını USB-6008'in ilk analog giriş pinine (AI0, pin 2) bağladım ve breadboard'un topraklamasını analog topraklama pinine (GND, pin 1) bağladım. USB-6008'i bir USB ile PC'ye bağladım ve gerçek bir analog sinyali almak için LabVIEW programında ayarlamalar yapmanın zamanı gelmişti.

Adım 4: DAQ Assistant ile Analog Sinyalleri Okuma

DAQ Asistanı ile Analog Sinyalleri Okuma
DAQ Asistanı ile Analog Sinyalleri Okuma
DAQ Asistanı ile Analog Sinyalleri Okuma
DAQ Asistanı ile Analog Sinyalleri Okuma

SoundFileSimpleRead. VI ve HarmonicDistortionAnalyzer. VI kullanmak yerine, analog girişle uğraşmak için DAQ Assistant. VI ve ToneMeasurements. VI'yı kullandım. DAQ Assistant kurulumu oldukça basittir ve VI'nın kendisi sizi adımlardan geçirir. ToneMeasurements. VI'nın seçilebilecek birçok çıkışı vardır (genlik, frekans, faz), bu yüzden giriş tonunun temel frekansını veren frekans çıkışını kullandım (DAQ Assistant. VI'dan). ToneMeasurements. VI çıktısının durum yapılarında kullanılmadan önce dönüştürülmesi ve bir diziye yerleştirilmesi gerekiyordu, ancak LabVIEW programlamasının/göstergelerinin geri kalanı aynı kaldı.

Adım 5: Sonuç

Çözüm
Çözüm

Proje başarılıydı ama kesinlikle birçok kusur vardı. Gürültülü bir sınıfta radyoyu çalıştırırken, programın neyin gürültü ve çalınan tonun ne olduğunu belirlemesi çok zordu. Bunun nedeni muhtemelen ön amfi devresinin çok basit olması ve mikrofonun çok ucuz olmasıdır. Ancak ortam sessizken, program çalınmaya çalışılan notayı belirlemek için iyi bir güvenilirlikle çalıştı. Zaman kısıtlaması nedeniyle ek bir değişiklik yapmadım ama projeyi tekrar edecek olsam daha iyi bir mikrofon alır ve preamp devresine daha fazla zaman ayırırdım.

Önerilen: