Semua hari ini!
Saya memiliki Arduino Duemilanove yang berkeliaran saat ini dan berpikir saya mungkin akan mencoba beberapa proyek penghubung audio. Saya hanya ingin tahu seperti apa frekuensi sampling yang dapat saya capai dengan menggunakan input analog tunggal dan menerapkan beberapa algoritma sederhana pada chip, kemudian melaporkan menggunakan beberapa output digital yang terkait dengan LED.
Saya ingin sampel di ~ 44,1 kHz jika memungkinkan.
Sebagai referensi, hal pertama yang ingin saya coba adalah tuner gitar sederhana.
Jawaban:
Saya tidak berpikir Anda dapat mencicipi secepat itu dengan resolusi penuh. ATMega168 hanya dapat sampel pada 15 ksp pada resolusi penuhnya.
Karena itu, Anda harus bisa mendapatkan sampel rate yang cocok untuk mendapatkan tuner gitar yang berfungsi. 44.1 kHz kemungkinan besar agak lebih cepat daripada yang Anda perlukan mengingat bahwa dasar dari senar E tinggi sebuah gitar adalah sekitar 330 Hz.
sumber
http://arduino.cc/en/Reference/AnalogRead
Rampok.
sumber
Google untuk 'AVR guitar tuner', ada beberapa proyek di luar sana yang sudah melakukan ini, dan mereka tampaknya dapat melakukannya tanpa terlalu banyak kesulitan dengan kecepatan AVR.
sumber
Jika Anda menggunakan komparator analog (baik yang internal AVR atau opamp eksternal) yang mengubah input analog menjadi gelombang persegi, Anda dapat mencicipi osilasi pada kecepatan yang jauh lebih tinggi. Walaupun ini bukan pengambilan sampel audio yang benar, untuk membuat tuner gitar, sering kali hanya itu yang Anda butuhkan karena semua kode Anda tetap akan menghitung nol penyeberangan per satuan waktu.
sumber
Ada sejumlah ADC yang tersedia bersifat serial, I2S adalah standar NXP berdasarkan I2C. Mereka memungkinkan Anda untuk dengan mudah menarik analog bahkan pada kecepatan yang lebih tinggi. Tautan ini akan membawa Anda ke bagian NXP yang dirancang untuk audio: UDA1361TS
Sampel gratis adalah teman Anda :)
sumber
Pertama, untuk aplikasi khusus Anda, Anda benar-benar hanya perlu 1 kHz atau lebih laju pengambilan sampel, dengan asumsi Anda menyetel frekuensi dasar dan bukan salah satu parsial inharmonik ...
Bagaimanapun, untuk tingkat pengambilan sampel maksimum yang mungkin, manual Arduino mengatakan:
Ini akan berarti frekuensi pengambilan sampel 10 kHz adalah maks. Namun. Anda bisa mendapatkan tingkat pengambilan sampel yang lebih tinggi dengan mengakses register ADC secara langsung . The Arduino Realtime Audio Processing halaman menggunakan dua saluran di 15 kHz, misalnya. Jadi maks 10 kHz hanya ketika menggunakan fungsi AnalogRead () bawaan, karena memiliki banyak overhead.
ADC dioptimalkan untuk operasi terbaik dengan kecepatan clock antara 50 kHz dan 200 kHz:
Karena konversi ADC membutuhkan 13 siklus clock, ini akan menjadi laju sampling dari 4 kHz hingga 15 kHz. Menurut AVR120: Karakterisasi dan Kalibrasi ADC pada AVR :
Frekuensi clock 1 MHz = frekuensi sampling 77 kHz, jadi itulah maks yang realistis.
Utas forum Baca Analog Lebih Cepat? memiliki lebih banyak tentang ini.
sumber
Konverter on-chip akan berfungsi untuk aplikasi ini seperti yang ditunjukkan orang lain, tetapi Anda harus benar-benar melihat menggunakan ADC eksternal. Ini akan menghemat banyak masalah, dan membebaskan mikro Anda untuk mengambil sampel melalui SPI atau I2C, dengan kecepatan data yang lebih tinggi, dengan lebih sedikit noise dari jam mikro, dan dengan presisi lebih besar daripada menggunakan ADC internal. Jika Anda ingin lebih banyak resolusi dan / atau kecepatan data yang lebih tinggi, maka gunakan sesuatu seperti LTC1867, yang akan memungkinkan Anda sampel hingga 175kHz (Meskipun Anda dapat clock itu bagaimanapun cepat yang Anda inginkan) dan kemudian baca data 24-bit hingga 20MHz lebih dari SPI. Lihat apa yang dapat dilakukan ADC nyata? :) Dengan kekuatan seperti itu (Dan DSP 24-atau 32-bit), Anda dapat mengompres dan menyimpan audio Anda, memfilternya, memodulasinya, memainkannya kembali ... kemungkinannya tidak terbatas.
sumber
Apakah Anda tertarik dengan laju pengambilan sampel 64 ribu? Silahkan lihat di sini
Sekarang dinaikkan menjadi 150 kHz, 10 bit, tanpa komponen tambahan!
Silahkan lihat di sana
sumber