Tốc độ mẫu tối đa của Arduino Duemilanove?


11

G'day tất cả!

Hiện tại tôi có một Arduino Duemilanove treo xung quanh dự phòng và nghĩ rằng tôi có thể thử một vài dự án giao thoa âm thanh. Tôi chỉ tự hỏi loại tần số lấy mẫu nào tôi có thể đạt được bằng cách sử dụng một đầu vào tương tự duy nhất và áp dụng một số thuật toán đơn giản trên chip, sau đó báo cáo bằng cách sử dụng một vài đầu ra kỹ thuật số gắn với đèn LED.

Tôi muốn lấy mẫu ở mức ~ 44,1 kHz nếu có thể.

Để tham khảo điều đầu tiên tôi muốn thử là một bộ chỉnh guitar đơn giản.


Rất tiếc - đó là phiên bản ATMega168.
Phác thảo Fletchy

4
@Sketchy bạn có thể chỉnh sửa câu hỏi nếu bạn cần, thay vì thêm chi tiết trong một nhận xét.
Clint Lawrence

1
Đối với bộ chỉnh guitar, có một số câu hỏi về stackoverflow về ước tính tần số. stackoverflow.com/questions/65268/ Từ Tôi đã trả lời một loạt chúng và đăng mã mẫu cho một số phương pháp tại đây: gist.github.com/255291
endolith

Câu trả lời:


15

Tôi không nghĩ rằng bạn có thể lấy mẫu nhanh ở độ phân giải đầy đủ. ATMega168 chỉ có thể lấy mẫu ở tốc độ 15 ksps ở độ phân giải đầy đủ.

Đã nói rằng, bạn sẽ có thể có được một tỷ lệ mẫu phù hợp để có được một bộ chỉnh guitar hoạt động. 44,1 kHz rất có thể là một chút công bằng nhanh hơn bạn sẽ cần vì cơ bản của chuỗi E cao, một cây đàn guitar là khoảng 330 Hz.


Brilliant - đó trả lời câu hỏi của tôi một cách cẩn thận. Tôi không nghĩ 168 sẽ có khả năng lấy mẫu phổ âm thanh đầy đủ của con người, nhưng nếu tôi có thể có được tốc độ mẫu ít nhất là 660 Hz thì tôi có thể xác định được chuỗi e cao mà không có răng cưa. Tôi sẽ nâng nó lên một chút cho an toàn và cảm giác mặc dù. Cảm ơn!
Phác thảo Fletchy

Các mẫu hệ thống điện thoại ở 8000 Hz.
joeforker


4

Google cho 'Bộ điều chỉnh guitar AVR', có một vài dự án đã thực hiện điều này và họ dường như có thể làm điều đó mà không gặp quá nhiều khó khăn với tốc độ của AVR.


3

Nếu bạn sử dụng một bộ so sánh tương tự (có thể là một bộ so sánh bên trong trong AVR hoặc một opamp bên ngoài) để biến đầu vào tương tự thành một sóng vuông, bạn có thể lấy mẫu dao động ở tốc độ cao hơn nhiều. Mặc dù điều này không phải là lấy mẫu âm thanh thực sự, nhưng để xây dựng bộ chỉnh guitar, đó thường là tất cả những gì bạn cần vì tất cả mã của bạn sẽ được thực hiện bằng mọi cách sẽ được tính không giao nhau trên mỗi đơn vị thời gian.


1
Tôi nghĩ rằng mối quan tâm của tôi là bạn thực sự cần phải chạy FFT để chọn ra cơ bản. Đàn ghi ta tạo ra tất cả các loại tần số khi một chuỗi bị ngắt và việc đếm các điểm giao nhau bằng 0 chỉ cung cấp cho bạn đủ thông tin để tạo ra một sóng vuông, làm cho một FFT hoàn toàn vô dụng.
wackyvorlon

Đầu ra guitar một nốt (đặc biệt là điện) là một xấp xỉ gần đúng của sóng hình sin, một khi bạn vượt qua được thoáng qua ban đầu. Không có sóng hài kỳ lạ ở bất cứ đâu gần biên độ của cơ bản. Tất cả các bộ chỉnh guitar kỹ thuật số giá rẻ chỉ thực hiện thời gian giao nhau bằng 0 và không làm gì trong miền tần số. Đây là một ví dụ về kỹ thuật trên AVR 2323 (gần với Arduino) myplace.nu/avr/gtuner/index.htmlm và đây là một ví dụ khác sử dụng Arduino với MIDI ra youtube.com/watch?v=oGKE1vmAWCA
todbot

Tôi không nghĩ rằng bộ chỉnh guitar ghi số 0 và điều này chắc chắn không phải là một phương pháp tốt. Nó thậm chí không gần với sóng hình sin và có thể có nhiều điểm giao nhau bằng 0 trên mỗi chu kỳ: flic.kr/p/7ns9nu
endolith

Các bộ chỉnh mà tôi thấy có bộ lọc thông thấp để biến tín hiệu đầu vào thành sóng hình sin càng nhiều càng tốt.
todbot

3

Có một số ADC có sẵn nối tiếp, I2S là tiêu chuẩn của NXP dựa trên I2C. Chúng cho phép bạn dễ dàng kéo tương tự ngay cả ở tốc độ cao hơn nhiều. Liên kết này sẽ đưa bạn đến một phần NXP được thiết kế cho âm thanh: UDA1361TS

Mẫu miễn phí là bạn của bạn :)


1
Cảm ơn rất nhiều! Điều đó sẽ nhiều hơn một chút so với tôi cần để có một bộ điều chỉnh đơn giản, nhưng con chip đó có vẻ hoàn hảo cho một số dự án trong tương lai của tôi. Cuối cùng tôi muốn có một sàn DSP nội tuyến đơn giản sẽ thử nghiệm xử lý hiệu ứng. Cảm ơn!
Phác thảo Fletchy

1

Đầu tiên, đối với ứng dụng cụ thể của bạn, bạn thực sự chỉ cần 1 kHz hoặc hơn tốc độ lấy mẫu, giả sử bạn đang điều chỉnh tần số cơ bản và không phải là một trong những hạt không điều hòa ...

Dù sao, đối với tốc độ lấy mẫu tối đa có thể, hướng dẫn Arduino nói:

Mất khoảng 100 micro giây (0,0001 giây) để đọc một đầu vào tương tự, do đó tốc độ đọc tối đa là khoảng 10.000 lần một giây.

Điều này có nghĩa là tần số lấy mẫu 10 kHz là tối đa. Tuy nhiên. Bạn có thể nhận được tỷ lệ lấy mẫu cao hơn bằng cách truy cập trực tiếp vào các thanh ghi ADC . Các Arduino Realtime Audio Processing trang sử dụng hai kênh 15 kHz, ví dụ. Vì vậy, mức tối đa 10 kHz chỉ trong khi sử dụng chức năng AnalogRead () tích hợp, bởi vì nó có rất nhiều chi phí.

ADC được tối ưu hóa để hoạt động tốt nhất với tốc độ xung nhịp từ 50 kHz đến 200 kHz:

Theo mặc định, mạch xấp xỉ liên tiếp yêu cầu tần số xung nhịp đầu vào [xung nhịp ADC] trong khoảng từ 50 kHz đến 200 kHz để có được độ phân giải tối đa.

Do quá trình chuyển đổi ADC mất 13 chu kỳ xung nhịp, đây sẽ là tốc độ lấy mẫu từ 4 kHz đến 15 kHz. Theo AVR120: Đặc tính và hiệu chuẩn của ADC trên một AVR :

Để có hiệu suất tối ưu, đồng hồ ADC không được vượt quá 200 kHz. Tuy nhiên, tần số lên tới 1 MHz không làm giảm đáng kể độ phân giải ADC.

Vận hành ADC với tần số lớn hơn 1 MHz không được đặc trưng.

Tần số xung nhịp 1 MHz = tần số lấy mẫu 77 kHz, vì vậy đó là mức tối đa thực tế.

Chủ đề diễn đàn Đọc nhanh hơn? có nhiều hơn về điều này.


0

Bộ chuyển đổi trên chip sẽ hoạt động cho ứng dụng này như những người khác đã chỉ ra, nhưng bạn thực sự nên xem xét sử dụng ADC bên ngoài. Điều này sẽ giúp bạn tiết kiệm rất nhiều rắc rối và giải phóng micro của bạn qua SPI hoặc I2C với tốc độ dữ liệu cao hơn, với ít nhiễu hơn từ đồng hồ của micro và với độ chính xác cao hơn so với sử dụng ADC bên trong. Nếu bạn muốn độ phân giải cao hơn và / hoặc tốc độ dữ liệu cao hơn, thì hãy sử dụng cái gì đó như LTC1867, nó sẽ cho phép bạn lấy mẫu với tốc độ lên tới 175kHz (Mặc dù bạn có thể xem nhanh theo cách bạn muốn) và sau đó đọc dữ liệu 24 bit lên đến 20 MHz trên SPI. Xem những gì một ADC thực sự có thể làm gì? :) Với loại năng lượng đó (Và DSP 24 hoặc 32 bit), bạn có thể nén và lưu trữ âm thanh của mình, lọc, điều chỉnh nó, phát lại ... khả năng là vô tận.


0

Bạn có quan tâm đến tỷ lệ lấy mẫu 64K? Có một cái nhìn ở đây

Bây giờ được nâng lên 150 kHz, 10 bit, không có thành phần bổ sung!

Có một cái nhìn ở đó

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.