Maksimum örnek oranı Arduino Duemilanove?


11

Herkese iyi günler!

Şu anda yedek etrafında asılı bir Arduino Duemilanove var ve birkaç ses arayüz projeleri deneyebilirsiniz düşündüm. Sadece tek bir analog giriş kullanarak ve çip üzerinde bazı basit algoritmalar uygulayarak ne tür örnekleme frekansı elde edebileceğimi merak ediyorum, sonra LED'lere bağlı birkaç dijital çıkış kullanarak raporlama yapıyorum.

Mümkünse ~ 44.1 kHz'de numune almak istiyorum.

Referans olarak denemek istediğim ilk şey basit bir gitar tuneri.


Hata! Bu ATMega168 sürümüdür.
Sketchy Fletchy

4
@Sketchy, bir yoruma ayrıntı eklemek yerine, gerekiyorsa sorunuzu düzenleyebilirsiniz.
Clint Lawrence

1
Gitar tunerleri için, yığın tahmini hakkında frekans tahmini hakkında bir dizi soru vardır. stackoverflow.com/questions/65268/... Ben onlardan bir demet yanıtladı ve burada bazı yöntemler için örnek kod gönderdiniz: gist.github.com/255291
Endolit

Yanıtlar:


15

Bunu tam çözünürlükte hızlı bir şekilde örnekleyebileceğinizi sanmıyorum. ATMega168 tam çözünürlüğünde yalnızca 15 ksps'de numune alabilir.

Bunu söyledikten sonra, çalışan bir gitar tuneri almak için uygun bir örnekleme hızı elde edebilmelisiniz. 44.1 kHz, yüksek E telli bir gitarın temelinin 330 Hz civarında olduğu göz önüne alındığında, muhtemelen ihtiyacınız olandan biraz daha hızlıdır.


Parlak - bu sorumu kolayca cevaplıyor. 168'in tam insan ses spektrumu örneklemesi yapabileceğini düşünmüyordum, ancak en az 660 Hz'lik bir örnekleme hızı elde edersem, yüksek e-dizeyi hiçbir örtüşme olmadan tanımlayabilmeliyim. Yine de güvenlik ve duyarlılık için biraz çarpacağım. Teşekkürler!
Sketchy Fletchy

Telefon sistemi 8000 Hz'de örnek alıyor.
joeforker


4

Google 'AVR gitar tuner' için, bunu zaten yapan birkaç proje var ve AVR'nin hızı ile çok fazla sorun yaşamadan bunu yapabiliyorlar.


3

Analog girişi kare dalgaya dönüştüren bir analog karşılaştırıcı (AVR'deki dahili veya harici opamp olan) kullanıyorsanız, çok daha yüksek hızlarda salınımları örnekleyebilirsiniz. Bu gerçek bir ses örneklemesi olmasa da, bir gitar tuneri oluşturmak için genellikle ihtiyacınız olan tek şey budur, çünkü tüm kodlarınız yine de yapacağınız birim zaman başına sıfır geçiş saymaktadır.


1
Endişem, bence, temelini seçmek için gerçekten bir FFT çalıştırmanız gerekiyor. Gitarlar bir ip koparıldığında her türlü frekansı üretir ve sıfır geçişlerini saymak size sadece kare bir dalga oluşturmak için yeterli bilgi verir ve FFT'yi tamamen işe yaramaz hale getirir.
wackyvorlon

Tek nota gitar çıkışı (özellikle elektrik), ilk geçici geçişi geçtikten sonra sinüs dalgasının yakın bir yaklaşımıdır. Temelin genliğinin yakınında garip harmonikler yok. Tüm ucuz dijital gitar tunerleri sıfır geçiş zamanlaması yapar ve frekans alanında hiçbir şey yapmaz. İşte bir AVR 2323 ( Arduino'ya yakın) myplace.nu/avr/gtuner/index.htm'deki tekniğe bir örnek ve işte Arduino'yu MIDI ile youtube.com/watch?v=oGKE1vmAWCA
todbot

Gitar tunerlerinin sıfır geçiş saydığını düşünmüyorum ve bu kesinlikle iyi bir yöntem değil. Hatta yakın bir sinüs dalgasına değildir ve döngü başına sayıda sıfır geçişleri olabilir: flic.kr/p/7ns9nu
Endolit

Gördüğüm tunerlerin giriş sinyalini olabildiğince sinüs dalgasına dönüştürmek için düşük geçişli bir filtresi vardı.
todbot

3

Seri olarak kullanılabilen birkaç ADC vardır, I2S, I2C'ye dayanan NXP'nin standardıdır. Çok daha yüksek hızlarda bile analogları kolayca çekmenizi sağlar. Bu bağlantı sizi ses için tasarlanmış bir NXP parçasına götürmelidir : UDA1361TS

Ücretsiz örnekleri arkadaşın :)


1
Çok teşekkürler! Bu, basit bir tunerin gitmesi için ihtiyacımdan biraz daha fazla olacak, ancak bu çip gelecekteki projelerim için mükemmel görünüyor. Sonunda efekt işleme ile deney yapacak basit bir satır içi DSP deste almak istiyorum. Teşekkürler!
Sketchy Fletchy

1

İlk olarak, özel uygulamanız için, harmonik parsiyellerden birini değil, temel frekansı ayarladığınızı varsayarak, gerçekten sadece 1 kHz veya daha fazla örnekleme hızına ihtiyacınız vardır ...

Her neyse, mümkün olan maksimum örnekleme oranına gelince , Arduino kılavuzu şunları söylüyor:

Bir analog girişi okumak yaklaşık 100 mikrosaniye (0.0001 s) sürer, bu nedenle maksimum okuma hızı saniyede yaklaşık 10.000 kez olur.

Bu, 10 kHz örnekleme frekansının maks. Ancak. Doğrudan ADC kayıtlarına erişerek daha yüksek örnekleme oranları elde edebilirsiniz . Arduino Gerçek Zamanlı Ses İşleme sayfada örneğin, 15 kHz iki kanal kullanır. Bu nedenle, 10 kHz maks yalnızca dahili AnalogRead () işlevini kullanırken kullanılır, çünkü çok fazla ek yüke sahiptir.

ADC, 50 kHz ile 200 kHz arasında bir saat hızı ile en iyi çalışma için optimize edilmiştir:

Varsayılan olarak, art arda yaklaşma devresi maksimum çözünürlük elde etmek için 50 kHz ile 200 kHz arasında bir giriş saat frekansı [ADC saati] gerektirir.

ADC dönüşümü 13 saat döngü aldığından, bu örnekleme hızı 4 kHz ila 15 kHz arasında olacaktır. AVR120'ye göre : Bir AVR'de ADC'nin Karakterizasyonu ve Kalibrasyonu :

Optimum performans için ADC saati 200 kHz'i geçmemelidir. Bununla birlikte, 1 MHz'e kadar olan frekanslar ADC çözünürlüğünü önemli ölçüde azaltmaz.

ADC'yi 1 MHz'den daha yüksek frekanslarda çalıştırmak karakterize değildir.

1 MHz saat frekansı = 77 kHz örnekleme frekansı, bu yüzden gerçekçi maks.

Forum iplik hızlı Analog Oku? bu konuda daha fazlası var.


0

On-chip dönüştürücü, diğerlerinin işaret ettiği gibi bu uygulama için çalışacaktır, ancak gerçekten harici bir ADC kullanmaya bakmalısınız. Bu size çok fazla sorun kazandıracak ve mikro saatinizden daha az gürültü ve dahili ADC kullanmaktan daha büyük bir hassasiyetle mikro, SPI veya I2C üzerinden numune almak için serbest bırakacaktır. Daha fazla çözünürlük ve / veya daha yüksek bir veri hızı istiyorsanız, 175 kHz'e kadar örneklemenize izin veren LTC1867 gibi bir şey kullanın (Her ne kadar hızlı bir şekilde isterseniz de), ancak 24 bitlik verileri okuyun SPI üzerinden 20MHz'e kadar. Gerçek bir ADC'nin neler yapabileceğini görüyor musunuz? :) Bu tür bir güçle (Ve 24 veya 32 bit DSP), sesinizi sıkıştırabilir ve saklayabilir, filtreleyebilir, modüle edebilir, oynatabilirsiniz ... olasılıklar sonsuzdur.


0

64K örnekleme hızıyla ilgileniyor musunuz? Buraya bir bak

Şimdi 150 kHz, 10 bit, ek bileşen yok!

Göz var

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.