Alles Gute!
Ich habe gerade einen Arduino Duemilanove in der Nähe und dachte, ich könnte ein paar Audio-Schnittstellenprojekte ausprobieren. Ich frage mich nur, welche Art von Abtastfrequenz ich mit einem einzigen analogen Eingang erreichen kann, indem ich einige einfache Algorithmen auf dem Chip anwende und dann mit ein paar an LEDs gebundenen digitalen Ausgängen berichte.
Ich würde wenn möglich bei ~ 44,1 kHz eintasten.
Als Referenz möchte ich als erstes einen einfachen Gitarrentuner ausprobieren.
Antworten:
Ich glaube nicht, dass Sie so schnell bei voller Auflösung probieren können. Der ATMega168 kann nur mit 15 ksps bei voller Auflösung abtasten.
Allerdings sollten Sie in der Lage sein, eine geeignete Samplerate zu erhalten, um einen funktionierenden Gitarrentuner zu erhalten. 44,1 kHz sind höchstwahrscheinlich ein gutes Stück schneller als Sie benötigen, da die Grundwelle der hohen E-Saite und einer Gitarre bei 330 Hz liegt.
quelle
http://arduino.cc/en/Reference/AnalogRead
Rauben.
quelle
Google für 'AVR-Gitarrentuner', es gibt bereits einige Projekte, die dies tun, und sie scheinen in der Lage zu sein, dies ohne allzu große Probleme mit der Geschwindigkeit des AVR zu tun.
quelle
Wenn Sie einen analogen Komparator verwenden (entweder den internen im AVR oder einen externen Operationsverstärker), der den analogen Eingang in eine Rechteckwelle verwandelt, können Sie Schwingungen mit viel höheren Geschwindigkeiten abtasten. Dies ist zwar kein echtes Audio-Sampling, aber für den Bau eines Gitarrentuners ist es oft alles, was Sie brauchen, da Ihr gesamter Code ohnehin Nulldurchgänge pro Zeiteinheit zählen würde.
quelle
Es gibt eine Reihe von ADCs, die seriell sind. I2S ist der auf I2C basierende NXP-Standard. Sie ermöglichen es Ihnen, auch bei viel höheren Geschwindigkeiten ganz einfach analog zu ziehen. Über diesen Link gelangen Sie zu einem NXP-Teil, der für Audio ausgelegt ist: UDA1361TS
Kostenlose Proben sind dein Freund :)
quelle
Erstens benötigen Sie für Ihre spezielle Anwendung wirklich nur eine Abtastrate von etwa 1 kHz, vorausgesetzt, Sie stimmen die Grundfrequenz und nicht eine der unharmonischen Teiltöne ab ...
Wie auch immer, was die maximal mögliche Abtastrate betrifft, heißt es im Arduino-Handbuch :
Dies würde bedeuten, dass die Abtastfrequenz von 10 kHz die max. Jedoch. Sie können höhere Abtastraten erzielen, indem Sie direkt auf die ADC-Register zugreifen . Die Arduino Realtime Audio Processing- Seite verwendet beispielsweise zwei Kanäle mit 15 kHz. Das Maximum von 10 kHz ist also nur bei Verwendung der integrierten AnalogRead () -Funktion möglich, da es viel Overhead hat.
Der ADC ist für den besten Betrieb mit einer Taktrate zwischen 50 kHz und 200 kHz optimiert:
Da eine ADC-Umwandlung 13 Taktzyklen dauert, wäre dies eine Abtastrate von 4 kHz bis 15 kHz. Laut AVR120: Charakterisierung und Kalibrierung des ADC auf einem AVR :
1 MHz Taktfrequenz = 77 kHz Abtastfrequenz, das ist also die realistische max.
Der Forenthread Schneller analog lesen? hat mehr darüber.
quelle
Der On-Chip-Konverter funktioniert für diese Anwendung, wie andere bereits betont haben. Sie sollten jedoch unbedingt einen externen ADC verwenden. Dies erspart Ihnen viel Ärger und gibt Ihrem Mikro die Möglichkeit, über SPI oder I2C mit viel höheren Datenraten abzutasten, mit weniger Rauschen von der Uhr des Mikros und mit größerer Präzision als mit dem internen ADC. Wenn Sie mehr Auflösung und / oder eine höhere Datenrate wünschen, verwenden Sie etwas wie den LTC1867, mit dem Sie mit bis zu 175 kHz abtasten können (obwohl Sie es so schnell takten können, wie Sie möchten) und dann die 24-Bit-Daten auslesen können bei bis zu 20 MHz über SPI. Sehen Sie, was ein echter ADC kann? :) Mit dieser Leistung (und einem 24- oder 32-Bit-DSP) können Sie Ihre Audiodaten komprimieren und speichern, filtern, modulieren, wiedergeben ... die Möglichkeiten sind endlos.
quelle
Interessieren Sie sich für eine 64K-Abtastrate? Schauen Sie hier
Jetzt auf 150 kHz, 10 Bit, keine zusätzlichen Komponenten erhöht!
Schau mal dort hin
quelle