Pitanje:
Maksimalna stopa uzorkovanja Arduino Duemilanove?
Sketchy Fletchy
2009-11-30 09:03:54 UTC
view on stackexchange narkive permalink

Dobar dan!

Imam Arduino Duemilanove koji se trenutno mota okolo i mislio sam da bih mogao isprobati nekoliko projekata audio povezivanja. Samo se pitam kakvu frekvenciju uzorkovanja mogu postići jednim analognim ulazom i primjenom nekih jednostavnih algoritama na čipu, a zatim izvještavanje pomoću nekoliko digitalnih izlaza vezanih za LED diode.

Volio bih uzorkovati ako je moguće na ~ 44,1 kHz.

Kao referencu prvo što želim isprobati je jednostavan gitarski tuner.

Ups - to je verzija ATMega168.
@Sketchy možete urediti svoje pitanje ako trebate, umjesto dodavanja detalja u komentaru.
Za gitarske tunere postoji niz pitanja o stackoverflowu o procjeni frekvencije. http://stackoverflow.com/questions/65268/music-how-do-you-analyse-the-fundamental-frequency-of-a-pcm-or-wac-sample/ Odgovorio sam na hrpu njih i objavio uzorak koda za neke metode ovdje: http://gist.github.com/255291
Osam odgovori:
#1
+15
Clint Lawrence
2009-11-30 09:48:32 UTC
view on stackexchange narkive permalink

Mislim da ne možete tako brzo uzorkovati u punoj razlučivosti. ATMega168 može uzorkovati samo pri 15 ksps u svojoj punoj razlučivosti.

Nakon što ste to rekli, trebali biste dobiti odgovarajuću brzinu uzorkovanja da biste dobili ispravni gitarski tuner. 44,1 kHz najvjerojatnije je prilično brži nego što će vam trebati s obzirom da je temelj visoke E žice i gitare oko 330 Hz.

Sjajno - to mi lako odgovara na pitanje. Nisam mislio da će 168 biti sposoban za uzorkovanje punog ljudskog audio spektra, ali ako uspijem dobiti brzinu uzorkovanja od najmanje 660 Hz, trebao bih moći identificirati visoki e niz bez aliasa. Ipak ću to malo povećati zbog sigurnosti i osjetljivosti.Hvala!
Uzorak telefonskog sustava radi na 8000 Hz.
#2
+8
robzy
2009-11-30 11:03:26 UTC
view on stackexchange narkive permalink

Za čitanje analognog ulaza potrebno je oko 100 nas (0,0001 s), pa je maksimalna brzina čitanja oko 10 000 puta u sekundi.

http: / /arduino.cc/en/Reference/AnalogRead

Rob.

#3
+4
davr
2009-12-01 08:41:23 UTC
view on stackexchange narkive permalink

Google za 'AVR gitarski tuner', postoji nekoliko projekata koji to već čine, a čini se da to mogu učiniti bez previše problema sa brzinom AVR-a.

#4
+3
todbot
2009-11-30 12:11:54 UTC
view on stackexchange narkive permalink

Ako koristite analognu usporedbu (bilo internu u AVR-u ili vanjsku opamp) koja pretvara analogni ulaz u kvadratni val, možete uzorkovati oscilacije pri mnogo većim brzinama. Iako ovo nije istinsko uzorkovanje zvuka, za izgradnju gitarskog tunera to je često sve što trebate jer bi sve što bi vaš kôd ionako radio brojalo nula prijelaza po jedinici vremena.

Mislim da je moja briga da stvarno trebate pokrenuti FFT da biste odabrali ono temeljno. Gitare proizvode sve vrste frekvencija kad se iščupa žica, a brojanje nultih prijelaza daje vam samo dovoljno podataka za konstrukciju kvadratnog vala, čineći FFT prilično temeljnim beskorisnim.
Izlaz s jedne note na gitari (posebno električni) bliska je aproksimacija sinusnog vala, nakon što prođete početni prijelazni tok. Nema čudnih harmonika ni blizu amplitude osnovnog. Svi jeftini digitalni gitarski tuneri jednostavno vrše nuliranje i ne rade ništa u frekvencijskoj domeni. Evo jednog primjera tehnike na AVR 2323 (bliskom u odnosu na Arduino) http://www.myplace.nu/avr/gtuner/index.htm, a evo još jednog korištenja Arduina s MIDI izlazom http://www.youtube. com / watch? v = oGKE1vmAWCA
Mislim da gitarski tuneri ne broje nula prijelaza, a ovo sigurno nije dobra metoda. To nije ni blizu sinusnog vala, a može postojati mnogo nultih prijelaza po ciklusu: http://flic.kr/p/7ns9nu
Ugađači koje sam vidio imali su niskopropusni filtar kako bi ulazni signal što više pretvorili u sinusni val.
#5
+3
wackyvorlon
2009-11-30 21:40:27 UTC
view on stackexchange narkive permalink

Postoji niz ADC-ova koji su serijski, I2S je NXP-ov standard zasnovan na I2C. Omogućuju vam prilično lako uvlačenje analognih podataka čak i pri mnogo većim brzinama. Ova veza trebala bi vas odvesti do dijela NXP-a koji je dizajniran za audio: UDA1361TS

Besplatni uzorci su vaš prijatelj :)

Puno hvala! To će biti malo više nego što mi treba za pokretanje jednostavnog tunera, ali taj čip izgleda savršeno za neke moje buduće projekte. Na kraju bih želio dobiti jednostavni DSP modul za eksperimentiranje s obradom efekata.
#6
+1
endolith
2010-07-15 01:10:35 UTC
view on stackexchange narkive permalink

Prvo, za vašu određenu aplikaciju treba vam samo 1 kHz ili nešto manje, uz pretpostavku da podešavate osnovnu frekvenciju, a ne jedan od neharmoničnih djelomičnih dijelova...

U svakom slučaju, što se tiče najveće moguće brzine uzorkovanja, priručnik za Arduino kaže:

Za čitanje analognog ulaza potrebno je oko 100 mikrosekundi (0,0001 s), pa je maksimalna brzina čitanja oko 10 000 puta u sekundi.

To bi značilo da je frekvencija uzorkovanja 10 kHz maksimalna Međutim. Možete dobiti veće stope uzorkovanja ako izravno pristupite ADC registrima. Stranica Arduino obrada zvuka u stvarnom vremenu, na primjer, koristi dva kanala na 15 kHz. Dakle, maksimum od 10 kHz je samo dok se koristi ugrađena funkcija AnalogRead (), jer ima puno dodatnih troškova.

ADC je optimiziran za najbolji rad s radnim taktom između 50 kHz i 200 kHz:

Prema zadanim postavkama, uzastopni približni sklop zahtijeva ulaznu frekvenciju takta [ADC clock] između 50 kHz i 200 kHz da bi se postigla maksimalna razlučivost.

Budući da ADC pretvorba traje 13 taktova, to bi bila brzina uzorkovanja od 4 kHz do 15 kHz. Prema AVR120: Karakterizacija i kalibracija ADC-a na AVR-u:

Za optimalne performanse, ADC-sat ne smije prelaziti 200 kHz. Međutim, frekvencije do 1 MHz ne smanjuju bitno ADC rezoluciju.

Rad ADC-a s frekvencijama većim od 1 MHz nije karakterističan.

Taktna frekvencija 1 MHz = 77 kHz frekvencija uzorkovanja, pa je to realni maks.

Tema foruma Brže analogno čitanje? ima više o tome.

#7
  0
Kevin Vermeer
2010-07-15 06:38:31 UTC
view on stackexchange narkive permalink

Pretvarač na čipu će raditi za ovu aplikaciju kao što su drugi istaknuli, ali trebali biste zaista razmotriti upotrebu vanjskog ADC-a. To će vam uštedjeti puno problema i omogućiti mikrofonu da uzorkuje preko SPI-a ili I2C-a pri mnogo, znatno višim brzinama prijenosa podataka, s manje šuma od mikro sata i s većom preciznošću od upotrebe internog ADC-a. Ako želite veću razlučivost i / ili veću brzinu prijenosa podataka, upotrijebite nešto poput LTC1867, koji će vam omogućiti uzorkovanje do 175 kHz (iako ga možete taktirati koliko god želite), a zatim pročitajte 24-bitne podatke na do 20MHz preko SPI. Pogledajte što pravi ADC može učiniti? :) S takvom snagom (i 24- ili 32-bitnim DSP-om) možete komprimirati i pohraniti zvuk, filtrirati ga, modulirati, reproducirati ... mogućnosti su bezbrojne.

#8
  0
user3057
2011-02-17 14:14:29 UTC
view on stackexchange narkive permalink

Jeste li zainteresirani za brzinu uzorkovanja od 64K? Pogledajte ovdje

Sada je povišen na 150 kHz, 10 bita, bez dodatnih komponenti!

Pogledajte tamo



Ova pitanja su automatski prevedena s engleskog jezika.Izvorni sadržaj dostupan je na stackexchange-u, što zahvaljujemo na cc by-sa 2.0 licenci pod kojom se distribuira.
Loading...