Dzień dobry!
W tej chwili mam Arduino Duemilanove w zapasie i pomyślałem, że mogę wypróbować kilka projektów interfejsów audio. Zastanawiam się tylko, jaką częstotliwość próbkowania mogę osiągnąć za pomocą pojedynczego wejścia analogowego i zastosowania kilku prostych algorytmów na chipie, a następnie raportowania za pomocą kilku cyfrowych wyjść związanych z diodami LED.
Jeśli to możliwe, chciałbym próbkować przy ~ 44,1 kHz.
Dla porównania, pierwszą rzeczą, którą chcę wypróbować, jest prosty tuner gitarowy.
Odpowiedzi:
Nie sądzę, że można tak szybko próbkować w pełnej rozdzielczości. ATMega168 może próbkować tylko przy 15 ksps w pełnej rozdzielczości.
Powiedziawszy to, powinieneś być w stanie uzyskać odpowiednią częstotliwość próbkowania, aby uzyskać działający tuner gitarowy. 44,1 kHz jest najprawdopodobniej nieco szybsze niż potrzebujesz, biorąc pod uwagę, że podstawa wysokiej struny E gitary wynosi około 330 Hz.
źródło
http://arduino.cc/en/Reference/AnalogRead
Obrabować.
źródło
Google dla „tunera gitarowego AVR”, istnieje kilka projektów, które już to robią, i wydaje się, że są w stanie to zrobić bez większych problemów z prędkością AVR.
źródło
Jeśli używasz komparatora analogowego (wewnętrznego w AVR lub zewnętrznego opampa), który zamienia wejście analogowe w falę kwadratową, możesz próbkować oscylacje przy znacznie wyższych prędkościach. Chociaż nie jest to prawdziwe próbkowanie dźwięku, do zbudowania tunera gitarowego często jest to wszystko, czego potrzebujesz, ponieważ wszystko, co robiłby kod, i tak liczyłoby zero przejść na jednostkę czasu.
źródło
Dostępnych jest szereg ADC, które są szeregowe, I2S to standard NXP oparty na I2C. Pozwalają dość łatwo wciągnąć analog nawet przy znacznie wyższych prędkościach. Ten link powinien przejść do części NXP, która jest przeznaczona dla dźwięku: UDA1361TS
Darmowe próbki są twoim przyjacielem :)
źródło
Po pierwsze, dla konkretnego zastosowania naprawdę potrzebujesz tylko częstotliwości próbkowania około 1 kHz, zakładając, że dostrajasz częstotliwość podstawową, a nie jedną z części nieharmonicznych ...
W każdym razie, jeśli chodzi o maksymalną możliwą częstotliwość próbkowania, instrukcja Arduino mówi:
Oznaczałoby to, że częstotliwość próbkowania 10 kHz jest maksymalna. Jednak. Wyższe częstotliwości próbkowania można uzyskać, uzyskując bezpośredni dostęp do rejestrów ADC . Na przykład strona przetwarzania audio Arduino w czasie rzeczywistym wykorzystuje dwa kanały o częstotliwości 15 kHz. Tak więc maks. 10 kHz występuje tylko podczas korzystania z wbudowanej funkcji AnalogRead (), ponieważ ma duży narzut.
ADC jest zoptymalizowany pod kątem najlepszej pracy z częstotliwością taktowania od 50 kHz do 200 kHz:
Ponieważ konwersja ADC zajmuje 13 cykli zegara, byłaby to częstotliwość próbkowania od 4 kHz do 15 kHz. Zgodnie z AVR120: Charakterystyka i kalibracja ADC na AVR :
Częstotliwość taktowania 1 MHz = częstotliwość próbkowania 77 kHz, więc to jest realistyczne maks.
Wątek na forum Faster Analog Read? ma o tym więcej.
źródło
Konwerter na chipie będzie działał dla tej aplikacji, jak zauważyli inni, ale naprawdę powinieneś rozważyć użycie zewnętrznego ADC. Pozwoli ci to zaoszczędzić wiele kłopotów i uwolni twój mikro do próbkowania przez SPI lub I2C przy znacznie, znacznie wyższych szybkościach transmisji danych, przy mniejszym hałasie z zegara mikro i z większą precyzją niż przy użyciu wewnętrznego ADC. Jeśli chcesz uzyskać większą rozdzielczość i / lub wyższą szybkość transmisji danych, użyj czegoś takiego jak LTC1867, który pozwoli Ci próbkować z częstotliwością do 175 kHz (chociaż możesz tak szybko ustawić taktowanie, jak chcesz), a następnie odczytać dane 24-bitowe do 20 MHz przez SPI. Zobacz, co potrafi prawdziwy ADC? :) Dzięki tego rodzaju mocy (i 24- lub 32-bitowemu procesorowi DSP) możesz kompresować i przechowywać dźwięk, filtrować go, modulować, odtwarzać ... możliwości są nieograniczone.
źródło
Czy jesteś zainteresowany częstotliwością próbkowania 64K? Spójrz tutaj
Teraz podniesiony do 150 kHz, 10 bitów, bez dodatkowych komponentów!
Spójrz tam
źródło