Cov txheej txheem:

QuickFFT: Kev Kub Ceev FFT rau Arduino: 3 Kauj Ruam
QuickFFT: Kev Kub Ceev FFT rau Arduino: 3 Kauj Ruam

Video: QuickFFT: Kev Kub Ceev FFT rau Arduino: 3 Kauj Ruam

Video: QuickFFT: Kev Kub Ceev FFT rau Arduino: 3 Kauj Ruam
Video: Kev Khaub Lig Mam Sib Tos - Lis Kub Hawj nkauj tawm tshiab 2023 official MV 2024, Kaum ib hlis
Anonim
QuickFFT: Kev kub ceev FFT rau Arduino
QuickFFT: Kev kub ceev FFT rau Arduino

Raug Arduino muaj qhov txwv RAM thiab ua lub zog, thiab FFT yog cov txheej txheem kev suav suav nrog. Rau ntau daim ntawv thov lub sijhawm tiag tiag, tsuas yog qhov xav tau yog kom tau txais qhov siab nrog qhov siab tshaj plaws lossis xav tau txhawm rau txheeb xyuas qhov nce siab.

Hauv ib qho ntawm kuv cov lus qhia, Kuv tau npaj tus lej rau FFT uas tuaj yeem pom nyob ntawm no: EasyFFT

Txoj cai no tuaj yeem ua FFT txog li 128 qhov piv txwv ntawm Arduino nano. Tus lej piv txwv siab dua qhov no tsis tuaj yeem ua tau vim lub cim xeeb txwv ntawm Arduino. Kuv tau hloov kho txoj haujlwm me ntsis txhawm rau txhim kho kev nrawm thiab txo kev siv nco. Qhov kev hloov kho no tso cai rau Arduino ua FFT tsib zaug sai dua thiab siv yuav luag ib nrab nco. Cov lus qhia no tsis suav nrog Kev Ua Haujlwm ntawm FFT, cov ntaub ntawv hais txog nws tuaj yeem pom ntawm EasyFFT.

Kauj ruam 1: Ua haujlwm

Ua hauj lwm
Ua hauj lwm
Ua hauj lwm
Ua hauj lwm
Ua hauj lwm
Ua hauj lwm
Ua hauj lwm
Ua hauj lwm

Qhov ua haujlwm FFT raug hloov kho txhawm rau txhim kho qhov nrawm nrog qhov raug tsawg dua. Raws li qhia hauv daim duab, cov cim ntsuas yuav tsum tau muab sib tw los ntawm sine lossis cosine waveforms. Cov txiaj ntsig no tuaj yeem nyob nruab nrab ntawm 0 txog 1, yog li ua kom ntab sib npaug yog qhov yuav tsum tau ua. hauv Arduino, Kev sib tw ntab qeeb qeeb piv rau cov haujlwm ua ke.

Hauv txoj haujlwm no, sine/cosine wave tau hloov los ntawm ib puag ncig yoj. Raws li peb yuav tsum muab cov cim ntsuas ntsuas nrog lub voos xwmfab uas yuav muaj tus nqi 0, 1 lossis -1. Vim li ntawd, peb tuaj yeem hloov pauv cov lej sib xyaw kom yooj yim sib ntxiv lossis rho tawm. Rau Arduino cov lej sib ntxiv lossis rho tawm nyob ib puag ncig 5 zaug sai dua. Qhov no ua rau daws ib puag ncig 5 zaug sai dua.

Vim qhov kev hloov kho tam sim no zaus bin qhov tseem ceeb tuaj yeem khaws cia ua ib qho lej (uas yav dhau los ntab) thiab peb tau txais lwm qhov kom zoo dua ntawm kev nco qis. Hauv Arduino Nano, int siv 2 bytes nco thaum ntab siv 4 bytes nco. Vim qhov txiaj ntsig zoo hauv txoj cai tshiab, peb tuaj yeem ua FFT rau yuav luag 256 qhov qauv (yav dhau los 128 qhov qauv).

Hauv Li qub FFT peb xav tau khaws cov nqi sine los daws qhov sai dua. Hauv txoj haujlwm tshiab, raws li peb tsis xav tau ntau dua sine/cosine qhov tseem ceeb peb tuaj yeem tshem tawm nws thiab khaws qee qhov cim xeeb.

Kev Siv:

Ua raws txoj haujlwm no yog ncaj nraim rau tom ntej. Peb tuaj yeem yooj yim luam cov haujlwm ntawm tus lej. Txoj haujlwm no tuaj yeem ua tiav siv cov lus txib hauv qab no:

ntab f = Q_FFT (cov ntaub ntawv, 256, 100); Hauv kev ua haujlwm Q_FFT, cov ntaub ntawv: lo lus no yog kab lus uas muaj cov txiaj ntsig teeb liab, cov qauv pom zoo yog 2, 4, 8, 32, 64, 128, 256, 512,…. yog tias qhov piv txwv me me tsis koom nrog cov txiaj ntsig no nws yuav raug txiav mus rau sab qis dua ntawm qhov tseem ceeb. piv txwv li, yog tias qhov piv txwv me me yog 75 dua li FFT yuav ua rau 64 tus lej ntawm cov qauv. Tus naj npawb ntawm cov qauv me me raug txwv los ntawm muaj RAM ntawm Arduino.

Lub sijhawm thib ob qhia txog tus naj npawb ntawm cov qauv hauv ib qho array thiab lub sijhawm kawg yog piv txwv zaus hauv Hz.

Kauj ruam 2: Code

Nqe lus no piav qhia qhov kev hloov kho hauv EasyFFT tus lej uas yuav tsum tau khaws cia hauv siab thaum ua kev hloov pauv hauv txoj cai, 1. Raws li tau piav ua ntej, ntawm no cov lej tau siv los ua FFT. Int hauv Arduino yog tus lej 16 -ntsis thiab tuaj yeem muaj qhov tseem ceeb los ntawm -32768 txog 32768. thaum twg tus nqi ntawm qhov kev nkag siab ntau tshaj qhov no nws ua rau muaj teeb meem. kom tshem tawm qhov teeb meem no tom qab qib suav. yog tias ib qho ntawm tus nqi ntau dua 15000 ua tiav arrays yuav muab faib los ntawm 100. qhov no yuav tiv thaiv kom tsis txhob nkag mus.

2. Kev suav qhov dav: Txhawm rau suav qhov dav, qhov tiag thiab kev xav xav tau yuav tsum tau muab faib ua ob sab thiab cov hauv paus hauv paus ntawm qhov sib npaug yuav tsum tau ua. squaring thiab lub hauv paus cag ntawm txoj haujlwm yog siv sijhawm. txhawm rau ua kom cov txheej txheem nrawm dua, cov cai no yuav yooj yim ua qee qhov loj ntawm qhov tiag thiab kev xav. Qhov no yog qhov tseeb tsis raug thiab tej zaum yuav ua rau qhov xaus tsis raug hauv qee kis. koj tuaj yeem xaiv rov qab mus rau Txoj Kev Ib txwm rau kev suav qhov ntau tab sis nws yuav siv sijhawm ntau dua thiab koj kuj yuav tsum tau ua qee qhov kev npaj los khaws cov lej no.

3. Txoj cai no tsis muaj tus qauv rau ntau qhov kev tshawb pom ncov. Nws yuav yooj yim xaiv tus nqi nrog qhov siab tshaj plaws (tsis suav thawj tus lej uas yog DC offset). Yog tias koj xav tau ntau qhov siab koj tuaj yeem xa mus rau EasyFFT tus lej thiab yuav tsum hloov kho qhov no. Hauv qhov xwm txheej ntawd, qee qhov array/sib txawv kuj tseem yuav tsum tau tshaj tawm tias yog thoob ntiaj teb sib txawv.

4. Txoj haujlwm muaj cov kab hauv qab no:

unsigned int Pow2 [13] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048};

tshaj tawm cov kev hloov pauv saum toj no raws li kev hloov pauv thoob ntiaj teb (tso nws thaum pib ntawm cov cai) yuav txuag qhov chaw 1 milliseconds lub sijhawm ntawm txhua qhov kev ua tiav.

5. Tsis zoo li EasyFFT muaj nuj nqi, qhov twg saum 5 peaks tau muab khaws cia rau hauv kab ntawv ua ntej. Qhov haujlwm no yuav rov qab tus nqi ntab. tus nqi no sawv cev rau zaus nrog qhov siab tshaj plaws hauv Hz. Yog li sawv cev ntawm cov cai yuav zoo ib yam li qhov no.

ntab f = Q_FFT (cov ntaub ntawv, 256, 100);

6. Peak Detection: Ib zaug zaus nrog qhov siab tshaj plaws tau pom qhov haujlwm no siv qhov dav ntawm qhov zaus ua ntej thiab tom qab nws los xam qhov tseeb raug. Amplitude siv hauv qhov kev suav no kuj yog cov lej ntawm cov lej (tsis yog lub hauv paus cag ntawm cov lej sib npaug)

yog Fn yog qhov zaus nrog qhov siab tshaj plaws ces qhov zaus tuaj yeem suav los ntawm cov qauv hauv qab no.

Qhov tseeb F = (A n-1 *Fn-1+An-1 *Fn-1+An-1 *Fn-1) / (An-1+An+An+1)

qhov twg An yog qhov dav ntawm n qhov zaus thiab Fn-1 yog tus nqi zaus.

Kauj Ruam 3: Cov txiaj ntsig:

Cov txiaj ntsig
Cov txiaj ntsig
Cov txiaj ntsig
Cov txiaj ntsig

Kev daws lub sijhawm yog qhia hauv cov duab saum toj no piv nrog EasyFFT. Ceev ntawm nws qhia nrog kev sib piv.

Rau cov piv txwv cov ntaub ntawv muaj 3 sinusoidal nthwv dej nrog ntau qhov sib txawv tau qhia. Qhov tshwm sim los ntawm QuickFFT yog piv nrog Scilab cov zis. Raws li peb tuaj yeem pom hauv daim duab 3 qhov siab tshaj plaws nrog qhov siab tshaj plaws yog txuam nrog Scilab cov zis. Txawm li cas los xij, cov zis muaj ntau lub suab nrov, uas tej zaum yuav yuam kev rau qee cov ntawv thov. Yog li nws tau qhia kom txheeb xyuas cov cai kom raug ua ntej thov rau koj daim ntawv thov.

Kuv vam tias koj pom cov cai no muaj txiaj ntsig rau koj txoj haujlwm. Yog tias muaj lus nug lossis lus pom zoo thov tawm tswv yim.

Pom zoo: