arduinoのA/D変換速度遅いなあ
●動機
今、Processing使って簡素なメディアアートもどきを作ってる。
メディアアートと言うからには珍妙な入力デバイスが必要なので
arduinoのA/D変換機能で入力デバイスを作ろうと思ってる。
そこで、A/D変換に要する時間が気になった。
変換にかかる時間が短ければ、精度の高い入力デバイスが作れるかも。
●目的
arduinoの1回あたりのA/D変換にかかる時間の計測
●方法
int ad; //A/D出力値を格納するだけ void setup() { } void loop() { digitalWrite(9, HIGH); //デジタル9pinをHIGHに ad = analogRead(2); //アナログ2pinから読み込み digitalWrite(9, LOW); ad = analogRead(2); }
のスケッチを書き込み。
全力でA/D変換して、変換ごとにデジタル9pinをON/OFFさせる。
このデジタル9pinをオシロで計測。
A/D変換に要する時間と周波数を求める。
●結果
変換にかかる時間:119μsec
最短繰り返し周波数:8.40kHz
LOWに下がりきってないけど、
これはプルダウン抵抗が付いているため。
電荷が抜けきってない、と思われる。
ってか、出力ポートの定義をきちんと設定して無いじゃん・・orz
●考察
もっと速く変換する方法あるのかもしれないけど、知らん。まあいいや。
標本化定理で考えると、
8.4(kHz) / 2 = 4.2(kHz)
の周波数までしかA/D変換でサンプリングできない。
標本化定理はあくまでsin波の話だから、一般データを計測しようと思ったら
さらに 1/2 で 2.1kHz が最大計測可能周波数って所。
電話音声をぎりぎり変換できる程度・・・。ちょと残念。