G'day all!
現在、Arduino Duemilanoveをスペアにぶら下げて、オーディオインターフェイスプロジェクトをいくつか試してみようと思いました。単一のアナログ入力を使用して、チップにいくつかの単純なアルゴリズムを適用して、LEDに接続されたいくつかのデジタル出力を使用して報告できるサンプリング周波数の種類を知りたいだけです。
できれば〜44.1 kHzでサンプリングしたい。
参考までに、最初に試してみたいのはシンプルなギターチューナーです。
G'day all!
現在、Arduino Duemilanoveをスペアにぶら下げて、オーディオインターフェイスプロジェクトをいくつか試してみようと思いました。単一のアナログ入力を使用して、チップにいくつかの単純なアルゴリズムを適用して、LEDに接続されたいくつかのデジタル出力を使用して報告できるサンプリング周波数の種類を知りたいだけです。
できれば〜44.1 kHzでサンプリングしたい。
参考までに、最初に試してみたいのはシンプルなギターチューナーです。
回答:
フル解像度で高速にサンプリングできるとは思いません。ATMega168は、最大解像度で15 kspsでのみサンプリングできます。
とは言っても、適切なサンプルレートを取得して、機能するギターチューナーを取得できるはずです。ギターのハイEストリングの基本が約330 Hzであることを考えると、44.1 kHzはおそらく必要な速度よりもかなり高速です。
アナログ入力の読み取りには約100 us(0.0001秒)かかるため、最大読み取り速度は1秒あたり約10,000回です。
http://arduino.cc/en/Reference/AnalogRead
ロブ。
アナログ入力を方形波に変換するアナログコンパレータ(AVRの内部コンパレータまたは外部オペアンプのコンパレータ)を使用すると、はるかに高速で発振をサンプリングできます。これは本当のオーディオサンプリングではありませんが、ギターチューナーを構築する場合、コードが実行するすべてのコードが単位時間あたりのゼロクロッシングをカウントすることになるため、必要なのはそれだけです。
シリアルで利用可能なADCは多数あり、I2SはI2Cに基づくNXPの標準です。これにより、はるかに高速でもアナログを簡単に取り込むことができます。このリンクをクリックすると、オーディオ用に設計されたNXPパーツUDA1361TSが表示されます。
無料サンプルはあなたの友達です:)
まず、特定のアプリケーションでは、基本周波数を調整しており、非調和部分の1つを調整していない場合、実際に必要なのは1 kHz程度のサンプリングレートだけです...
とにかく、可能な最大のサンプリングレートについては、Arduinoのマニュアルには次のように書かれています。
アナログ入力の読み取りには約100マイクロ秒(0.0001秒)かかるため、最大読み取り速度は1秒あたり約10,000倍です。
これは、10 kHzのサンプリング周波数が最大であることを意味します。 しかしながら。ADCレジスタに直接アクセスして、 より高いサンプリングレートを得ることができます。Arduinoのリアルタイムオーディオ処理のページは、例えば、15 kHzで2つのチャネルを使用しています。したがって、10 kHzの最大値は、組み込みのAnalogRead()関数を使用しているときのみです。オーバーヘッドが多いためです。
ADCは、50 kHz〜200 kHzのクロック速度で最適な動作をするように最適化されています。
デフォルトでは、逐次比較回路は、最大の解像度を得るために50 kHzから200 kHzの入力クロック周波数[ADCクロック]を必要とします。
ADC変換には13クロックサイクルかかるため、これは4 kHz〜15 kHzのサンプリングレートになります。AVR120によると:AVR上のADCの特性評価とキャリブレーション:
最適なパフォーマンスを得るには、ADCクロックが200 kHzを超えないようにする必要があります。ただし、1 MHzまでの周波数では、ADCの分解能が大幅に低下することはありません。
1 MHzを超える周波数でADCを動作させることは特徴付けられていません。
1 MHzのクロック周波数= 77 kHzのサンプリング周波数なので、これが現実的な最大値です。
フォーラムのスレッドFaster Analog Read?これについての詳細があります。
他の人が指摘したように、オンチップコンバータはこのアプリケーションで機能しますが、実際には外部ADCの使用を検討する必要があります。これにより、多くの問題を回避し、マイクロを解放してSPIまたはI2Cでサンプリングし、データレートを高くし、マイクロのクロックからのノイズを減らし、内部ADCを使用するよりも高い精度でサンプリングできます。より高い解像度またはより高いデータレート、あるいはその両方が必要な場合は、LTC1867のようなものを使用します。これにより、最大175kHzでサンプリングでき(ただし、必要に応じてすばやくクロックを供給できます)、24ビットデータを読み取ります。 SPIで最大20MHz。実際のADCで何ができるか確認してください。:)この種のパワー(および24ビットまたは32ビットDSP)を使用すると、オーディオを圧縮して保存し、フィルターし、変調し、再生することができます...可能性は無限です。