Максимальний показник вибірки Arduino Duemilanove?


11

Добрий день!

На даний момент у мене є Arduino Duemilanove, що розвішується запасно, і я подумав, що я можу спробувати кілька проектів аудіозв'язку. Мені просто цікаво, яку саме частоту дискретизації я можу досягти, використовуючи один аналоговий вхід та застосувавши кілька простих алгоритмів на чіпі, а потім звітувати за допомогою декількох цифрових виходів, прив’язаних до світлодіодів.

Я хотів би взяти вибірку на частоті ~ 44,1 кГц, якщо можливо.

Для довідки перше, що я хочу спробувати, це простий гітарний тюнер.


На жаль, це версія ATMega168.
Схематичний флечі

4
@Sketchy ви можете редагувати своє запитання, якщо вам потрібно, а не додавати деталі в коментар.
Клінт Лоуренс

1
Для гітарних тюнерів існує ряд питань щодо стартового потоку щодо оцінки частоти. stackoverflow.com/questions/65268 / ... Я відповів на купу з них і розміщені приклади коду для деяких методів тут: gist.github.com/255291
ендоліти

Відповіді:


15

Я не думаю, що ти можеш швидко пробувати при повній роздільній здатності. ATMega168 може пробувати вибірку лише зі швидкістю 15 кс / с при повному дозволі.

Сказавши це, ви повинні мати можливість отримати відповідний зразок, щоб отримати функціонуючий гітарний тюнер. 44,1 кГц - це, швидше за все, трохи швидше, ніж вам знадобиться, враховуючи, що основа високої струни E для гітари становить близько 330 Гц.


Блискучий - це чудово відповідає на моє запитання. Я не думав, що 168 буде здатний до повного відбору звукового спектру людського спектру, але якщо я можу отримати частоту вибірки принаймні 660 Гц, я маю змогу ідентифікувати високу струну e, не збиваючись. Я хоч трохи наб'ю це за безпеку та розважливість. Спасибі!
Скептичний флечі

Система телефонних зразків пробиває частоту 8000 Гц.
joeforker


4

Google для "гітарного тюнера AVR", є кілька проектів, які вже роблять це, і, здається, вони зможуть це зробити без особливих проблем зі швидкістю AVR.


3

Якщо ви використовуєте аналоговий компаратор (або внутрішній в AVR, або зовнішній підсилювач), який перетворює аналоговий вхід у квадратну хвилю, ви можете пробувати коливання зі значно більшими швидкостями. Хоча це не є справжньою вибіркою звуку, для побудови гітарного тюнера це часто все, що вам потрібно, оскільки весь ваш код так чи інакше буде рахувати нульові переправи за одиницю часу.


1
Думаю, я хвилююсь, що вам потрібно запустити FFT, щоб вибрати фундаментальний. Гітара виробляє всілякі частоти, коли струна зривається, а підрахунок нульових перетинів дає лише достатню інформацію для побудови квадратної хвилі, що робить FFT досить непотрібним.
wackyvorlon

Вихід з однотактною гітарою (особливо електричної) - це близьке наближення синусоїди, коли ви проходите повз початковий перехідний. Ніяких дивних гармонік ніде поблизу амплітуди фундаментальних. Усі цифрові гітари-тюнери просто роблять нульовий перетин часу і нічого не роблять у частотній області. Ось один приклад методики на AVR 2323 (близький відносно Arduino) myplace.nu/avr/gtuner/index.htm, і ось ще один використання Arduino з MIDI на youtube.com/watch?v=oGKE1vmAWCA
todbot

Я не думаю, що гітарні тюнери рахують нульові переправи, і це, звичайно, не дуже вдалий метод. Це навіть не близько до синусоїді, і може бути багато переходів через нуль за цикл: flic.kr/p/7ns9nu
ендоліти

Тюнери, які я бачив, мали низькочастотний фільтр, щоб перетворити вхідний сигнал якомога більше в синусоїду.
todbot

3

Існує ряд АЦП, які є серійними, I2S - це стандарт NXP, заснований на I2C. Вони дозволяють досить легко витягнути аналог навіть на набагато більшій швидкості. Це посилання має перейти до частини NXP, призначеної для аудіо: UDA1361TS

Безкоштовні зразки - ваш друг :)


1
Дуже дякую! Це буде трохи більше, ніж мені потрібно для того, щоб перейти на простий тюнер, але цей чіп ідеально підходить для деяких моїх майбутніх проектів. Зрештою, я хотів би отримати просту вбудовану колоду DSP для експерименту з обробкою ефектів. Спасибі!
Схематичний флешивий

1

По-перше, для вашої конкретної програми вам справді потрібна лише частота дискретизації 1 кГц або близько того, припускаючи, що ви налаштовуєте основну частоту, а не одну з негармонічних частин ...

У будь-якому випадку, що стосується максимально можливої ​​частоти відбору проб, у посібнику Arduino сказано:

Для читання аналогового входу потрібно приблизно 100 мікросекунд (0,0001 с), тому максимальна швидкість читання становить приблизно 10 000 разів на секунду.

Це означає, що частота дискретизації 10 кГц - макс. Однак. Ви можете отримати більш високі показники вибірки, звернувшись безпосередньо до регістрів АЦП . Сторінка обробки аудіо в режимі реального часу Arduino використовує, наприклад, два канали на частоті 15 кГц. Таким чином, 10 кГц макс є лише під час використання вбудованої функції AnalogRead (), оскільки вона має великі накладні витрати.

АЦП оптимізовано для найкращої роботи з тактовою частотою від 50 до 200 кГц:

За замовчуванням для послідовної схеми наближення потрібна вхідна тактова частота [тактова частота ADC] від 50 кГц до 200 кГц, щоб отримати максимальну роздільну здатність.

Оскільки перетворення АЦП займає 13 тактових циклів, це була б частота дискретизації від 4 кГц до 15 кГц. Відповідно до AVR120: Характеристика та калібрування АЦП на AVR :

Для оптимальної продуктивності тактова частота АЦП не повинна перевищувати 200 кГц. Однак частоти до 1 МГц не суттєво зменшують роздільну здатність АЦП.

Експлуатація АЦП з частотами більше 1 МГц не характеризується.

Тактова частота 1 МГц = частота дискретизації 77 кГц, так що це реалістичний макс.

Нитка форуму Швидше Аналоговий Прочитати? детальніше про це.


0

Вбудований мікросхему буде працювати для цього додатка, як вказували інші, але вам слід справді вивчити використання зовнішнього АЦП. Це дозволить заощадити багато клопоту, і звільнить мікропробник для вибірки на SPI або I2C на набагато більших швидкостях передачі даних, з меншим рівнем шуму від мікрохвильового годинника та більшою точністю, ніж використання внутрішнього АЦП. Якщо ви хочете отримати більшу роздільну здатність та / або більш високу швидкість передачі даних, тоді використовуйте щось на зразок LTC1867, що дозволить вам робити вибірку на швидкості до 175 кГц (Хоча ви можете це обробляти якнайшвидше), а потім читати 24-бітні дані на частоті до 20 МГц через SPI. Подивіться, що може зробити справжній АЦП? :) При такому харчуванні (і 24-або 32-бітному DSP) ви можете стискати і зберігати аудіо, фільтрувати його, модулювати, відтворювати ... можливості нескінченні.


0

Вас цікавить показник вибірки 64K? Подивіться тут

Зараз піднято до 150 кГц, 10 біт, без додаткових компонентів!

Подивіться туди

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.