ዝርዝር ሁኔታ:
- ደረጃ 1: የድግግሞሽ ሽግግር መግቢያ
- ደረጃ 2 - ፈጣን የፎሪየር ለውጥ
- ደረጃ 3 የኮድ ማብራሪያ
- ደረጃ 4 - የኮድ ማብራሪያ - ኤፍኤፍቲ ተግባር
- ደረጃ 5 - ኮዱን መሞከር
- ደረጃ 6 መደምደሚያ
ቪዲዮ: EasyFFT: ፈጣን Fourier Transform (FFT) ለአርዱዲኖ 6 ደረጃዎች
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:29
ከተያዘው ምልክት ድግግሞሽ መለካት በተለይም በአርዱዲኖ ላይ ዝቅተኛ የስሌት ኃይል ስላለው ከባድ ሥራ ሊሆን ይችላል። በተጠቀሰው ጊዜ ውስጥ ምልክቱ ዜሮ መስመሮችን ምን ያህል ጊዜ እንደሚያቋርጥ በመፈተሽ ድግግሞሽ በሚያዝበት ዜሮ ማቋረጫ ለመያዝ ዘዴዎች አሉ። ምልክቱ የተለያዩ ድግግሞሽዎች ጥምረት በሚሆንበት ጊዜ እንዲህ ዓይነቱ ዘዴ ላይሠራ ይችላል።
ከእንደዚህ ዓይነት ዳራ ካልሆኑ ይህ በሆነ መንገድ ኮድ ማድረግ ከባድ ነው። ግን ይህ ኮድ ከሙዚቃ ፣ ከምልክት ትንተና ጋር ለተያያዙ የተለያዩ ፕሮጄክቶች በጣም ጠቃሚ ሊሆን ይችላል። የዚህ ፕሮጀክት ዓላማ ወደ ዳራው ሳይገባ በአርዱዲኖ ላይ ለመተግበር ቀላል የሆነ ኮድ ማዘጋጀት ነበር።
ይህ ፕሮጀክት የ FFT ሥራን አይገልጽም ነገር ግን የ FFT ተግባሩን ትግበራ ያብራራል። ተመሳሳይ ሂደትም በተያያዘው ቪዲዮ ላይ ተብራርቷል።
እርስዎ ለኮዱ ትግበራ ብቻ ፍላጎት ካሎት እና ወደ እሱ ማብራሪያ ካልገቡ። ወደ ደረጃ ቁጥር 3 በቀጥታ መዝለል ይችላሉ።
ደረጃ 1: የድግግሞሽ ሽግግር መግቢያ
ማንኛውም ምልክት ከተለያዩ የ sinusoidal ሞገዶች ጥምረት ሊዋቀር ይችላል። ስለዚህ ማንኛውም ጊዜ-ተኮር ምልክት እንደ የተለያዩ ስፋቶች የተለያዩ ሳይን ጥምረት ሆኖ ሊታይ ይችላል።
ቀደም ሲል በተሰጡት ትምህርቶች በአንዱ ውስጥ የ DFT (discrete Fourier transform) ሥራን ለማብራራት ሞከርኩ (https://www.instructables.com/id/Arduino-Frequency…)። እነዚህ ዘዴዎች ለማንኛውም የእውነተኛ ጊዜ ትግበራ እጅግ በጣም ቀርፋፋ ናቸው። ይህም ማለት ይቻላል ከንቱ ያደርገዋል።
በምስሉ ውስጥ የሁለት ድግግሞሽ f2 እና f5 ጥምረት የሆነ ምልክት ይታያል። ይህ ምልክት ከ f1 እስከ f5 ባለው የሙከራ ሳይን ሞገዶች ተባዝቷል።
በሂሳብ ሊታይ ይችላል -የተለያዩ ተደጋጋሚነት ያላቸው የሁለት ሃርሞኒክ የውሂብ ስብስቦች ማባዛት ወደ ዜሮ (ከፍተኛ የውሂብ ብዛት ወደ ድብደባ ውጤት ሊያመራ ይችላል)። በእኛ ሁኔታ ፣ እነዚህ ሁለት የማባዛት ድግግሞሽ ተመሳሳይ (ወይም በጣም ቅርብ) ድግግሞሽ ካለው ፣ ያ የማባዛት ድምር nonzero ቁጥር ነው።
ስለዚህ የእኛ ምልክት በ f1 ማባዛት ማባዛት ዜሮ ይሆናል (ለእውነተኛ ትግበራ ወደ ዜሮ ቅርብ)። ተመሳሳይ ሁኔታ ለ f3 ፣ f4 ነው። ሆኖም ለእሴቱ ፣ f2 እና f5 ውፅዓት ዜሮ አይሆንም ፣ ግን ከቀሪዎቹ እሴቶች በእጅጉ ከፍ ያለ ነው።
እዚህ ምልክት በ 5 ድግግሞሽ ተፈትኗል ፣ ስለዚህ ምልክት በአምስት ድግግሞሽ ማባዛት ያስፈልጋል። እንዲህ ዓይነቱ ኃይለኛ ስሌት ከፍ ያለ ጊዜ ይወስዳል። በሂሳብ ለ N ናሙና ናሙናዎች N*N ውስብስብ ማባዛትን እንደሚወስድ ያሳያል።
ደረጃ 2 - ፈጣን የፎሪየር ለውጥ
የዲኤፍቲ ስሌትን ፈጣን ለማድረግ የ FFT ስልተ ቀመር በጄምስ ኩሊ እና በጆን ቱኪ ተዘጋጅቷል። ይህ ስልተ ቀመር እንዲሁ በ 20 ኛው ክፍለዘመን በጣም አስፈላጊ ስልተ ቀመሮች አንዱ ተደርጎ ይወሰዳል። ብዙ አስፈላጊ ስሌቶችን ዝቅ የሚያደርግ ምልክት ወደ ያልተለመደ እና አልፎ ተርፎም በተከታታይ ክፍል ይከፋፍላል። እሱን በመጠቀም አጠቃላይ አስፈላጊ ውስብስብ ማባዛት ወደ NlogN ሊቀንስ ይችላል። ይህም ጉልህ መሻሻል ነው።
ከ FFT በስተጀርባ ያለውን የሂሳብ ዝርዝር ለመረዳት ኮዱን በሚጽፉበት ጊዜ የጠቀስኳቸውን ማጣቀሻዎች ከዚህ በታች ሊያመለክቱ ይችላሉ-
1. https://flylib.com/books/en/2.729.1/ የማዋረድ_አስፈላጊ…
2.
3.
4. https://am.wikipedia.org/wiki/ ፈጣን_ፉሪየር_ ትራንስፎርሜሽን…
ደረጃ 3 የኮድ ማብራሪያ
1. ፈጣን ሳይን እና ኮሲን
ስሌት ኤፍኤፍቲ የተለያዩ ሳይን እና ኮሲን ዋጋን ብዙ ጊዜ ይወስዳል። የአርዱዲኖ ውስጠ -ግንቡ ተግባር በፍጥነት በቂ አይደለም እና አስፈላጊውን እሴት ለማቅረብ ጥሩ ጊዜ ይወስዳል። የትኛው ኮድ በከፍተኛ ሁኔታ ቀርፋፋ ያደርገዋል (ለ 64 ናሙናዎች ጊዜ በእጥፍ ይጨምራል)። ይህንን የሳይን እሴት ከ 0 እስከ 90 ዲግሪዎች ለመቋቋም በ 255 እንደ ብዙ ተከማችቷል። ይህን ማድረግ ቁጥሮችን እንደ ተንሳፋፊ የመጠቀም ፍላጎትን ያስወግዳል እና በአርዱዲኖ ላይ 1/4 ቦታ የሚወስድ እንደ ባይት ማከማቸት እንችላለን። ሳይን_ዳታ እንደ ዓለም አቀፋዊ ተለዋዋጭ ለማወጅ በኮዱ አናት ላይ መለጠፍ አለበት።
ከ sine_data ውጭ ፣ f_peaks የተባለ ድርድር እንደ ዓለም አቀፍ ተለዋዋጭ አወጀ። ከእያንዳንዱ የ FFT ተግባር በኋላ ይህ ድርድር ይዘምናል። F_peaks [0] በትልቁ ቅደም ተከተል ውስጥ በጣም የበላይነት ያለው ድግግሞሽ እና ተጨማሪ እሴቶች የት ነው።
ባይት sine_data [91] = {0, 4, 9, 13, 18, 22, 27, 31, 35, 40, 44, 49, 53, 57, 62, 66, 70 ፣ 75 ፣ 79 ፣ 83 ፣ 87 ፣ 91 ፣ 96 ፣ 100 ፣ 104 ፣ 108 ፣ 112 ፣ 116 ፣ 120 ፣ 124 ፣ 127 ፣ 131 ፣ 135 ፣ 139 ፣ 143 ፣ 146 ፣ 150 ፣ 153 ፣ 157 ፣ 160 ፣ 164 ፣ 167 ፣ 171 ፣ 174 ፣ 177 ፣ 180 ፣ 183 ፣ 186 ፣ 189 ፣ 192 ፣ 195 ፣ 198 ፣ 201 ፣ 204 ፣ 206 ፣ 209 ፣ 211 ፣ 214 ፣ 216 ፣ 219 ፣ 221 ፣ 223 ፣ 225 ፣ 227 ፣ 229 ፣ 231 ፣ 233 ፣ 235 ፣ 236 ፣ 238 ፣ 240 ፣ 241 ፣ 243 ፣ 244 ፣ 245 ፣ 246 ፣ 247 ፣ 248 ፣ 249 ፣ 250 ፣ 251 ፣ 252 ፣ 253 ፣ 253 ፣ 254 ፣ 254 ፣ 254 ፣ 255 ፣ 255 ፣ 255 ፣ 255}; ተንሳፋፊ f_peaks [5];
እኛ ከ 0 እስከ 90 ዲግሪ የኃጢአት እሴት እንዳከማቸን ማንኛውም የሳይን ወይም የኮሲን እሴት ሊሰላ ይችላል። ከዚህ በታች የቁጥሩን የመጀመሪያ ዙር ወደ ዜሮ የአስርዮሽ ነጥብ እና ከተከማቸ ውሂብ የመመለሻ ዋጋን ይሠራል። ይህ ዘዴ አንድ ተንሳፋፊ ክፍፍል ብቻ ይፈልጋል። ሳይን እሴቶችን በቀጥታ በማከማቸት (255 ባለ ብዙ አይደለም) ይህ የበለጠ ሊቀንስ ይችላል። ግን ያ በአርዱዲኖ ላይ ከፍተኛ ማህደረ ትውስታን ይበላል።
ከላይ ያለውን የአሠራር ሂደት መጠቀም ትክክለኛነትን ይቀንሳል ነገር ግን ፍጥነትን ያሻሽላል። ለ 64 ነጥቦች ፣ የ 8ms ጥቅምን ይሰጣል እና ለ 128 ነጥቦች ደግሞ 20ms ን ይሰጣል።
ደረጃ 4 - የኮድ ማብራሪያ - ኤፍኤፍቲ ተግባር
FFT ለ 2 ፣ 4 ፣ 8 ፣ 16 ፣ 32 ፣ 64 እና ለናሙና መጠን ብቻ ሊከናወን ይችላል። እሴቱ 2^n ካልሆነ ፣ የእሴቱን የታችኛው ጎን ይወስዳል። ለምሳሌ ፣ የናሙና መጠኑን 70 ከመረጥን የመጀመሪያዎቹን 64 ናሙናዎች ብቻ ግምት ውስጥ ያስገባል እና ዕረፍትን ያስቀራል።
የ 2^n የናሙና መጠን እንዲኖር ሁል ጊዜ ይመከራል። ሊሆን ይችላል
2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, …
ሁለት የሚንሳፈፉ_አርቀው እና ውጪ_ኤም ከፍተኛ ማህደረ ትውስታ ይወስዳሉ። የሚገኝ ማህደረ ትውስታ ባለመኖሩ ለ አርዱዲኖ ናኖ ከ 128 በላይ ለሆኑ ናሙናዎች (እና በአንዳንድ ሁኔታዎች 128) አይሰራም።
ያልተፈረመ int ውሂብ [13] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048};
int a, c1, f, o, x; ሀ = ኤን; ለ (int i = 0; i <12; i ++) // ደረጃዎቹን ማስላት {if (data <= a) {o = i;}} int in_ps [data [o] = {}; // ግብዓት በቅደም ተከተል ለመንሳፈፍ out_r [ውሂብ [o] = {}; // ትክክለኛው የለውጥ ክፍል ተንሳፋፊ out_im [ውሂብ [o] = {}; // ምናባዊ የለውጥ ክፍል
ተጨማሪ ፍሰት እንደሚከተለው ነው
1. ኮድ ለተሰጠው የናሙና መጠን ትዕዛዙን ትንሽ ገልብጦ ያመነጫል (በማጣቀሻዎች ላይ ስለ ቢት መቀልበስ ዝርዝሮች -ደረጃ 2)
2. በተፈጠረው ቅደም ተከተል መሠረት የግቤት ውሂብ ፣
3. FFT ተከናውኗል
4. የተሰላው ውስብስብ ቁጥር ስፋት ፣
5. ጫፎች ተገኝተው በቅደም ተከተል በቅደም ተከተል ታዝዘዋል
6. ውጤቶችን ከ f_peaks ማግኘት ይቻላል።
[የአከባቢው ተለዋዋጭ ወደ አንዳንድ ቅድመ -ተኮር ዓለም አቀፍ ተለዋጭ እንዲገለበጥ / ሌላ ውሂብን (ከከፍተኛው ድግግሞሽ በስተቀር) ኮድ መሻሻል አለበት።
ደረጃ 5 - ኮዱን መሞከር
የናሙና የሶስት ማዕዘን ሞገድ እንደ ግብዓት ተሰጥቷል። ለዚህ ሞገድ ናሙና ድግግሞሽ 10 Hz እና የሞገድ ድግግሞሽ ራሱ 1.25 Hz ነው።
ከጥሬው ውጤት እንደሚታየው ፣ እሴቱ በ Scilab ከተሰላው ኤፍኤፍቲ ጋር ይዛመዳል። ሆኖም ፣ እነዚህ እሴቶች እኛ ከዝቅተኛ ትክክለኛነት ጋር አንድ አይደሉም ፣ ግን ፈጣን የኃጢአት ሞገድ።
በውጤት ድግግሞሽ ድርድር ድግግሞሽ 1.25 እና 3.75 ናቸው። በእያንዳንዱ ጊዜ ትክክለኛውን ዋጋ ማግኘት አስፈላጊ አይደለም። በተለምዶ እነዚህ ቁጥሮች ድግግሞሽ ማጠራቀሚያዎች ተብለው ይጠራሉ። ስለዚህ የውጤት እሴቱ በተጠቀሱት ማሰሮዎች ውስጥ በማንኛውም ቦታ ሊሆን ይችላል።
ፍጥነት ፦
ለአርዱዲኖ ናኖ የሚከተሉትን ይወስዳል
16 ነጥቦች 4ms32 ነጥቦች 10ms 64 ነጥቦች 26ms 128 ነጥቦች 53ms
ደረጃ 6 መደምደሚያ
ይህ የ FFT ኮድ በእውነተኛ-ጊዜ መተግበሪያዎች ውስጥ ሊያገለግል ይችላል። ስሌቱን ለማጠናቀቅ 30 ሚ.ሜ አካባቢ እንደሚወስድ። ሆኖም ፣ የእሱ ጥራት በበርካታ ናሙናዎች የተገደበ ነው። የናሙናው ብዛት በአርዱዲኖ ማህደረ ትውስታ የተገደበ ነው። አርዱዲኖ ሜጋን ወይም ሌላ ከፍተኛ የአፈጻጸም ቦርድ ትክክለኛነትን በመጠቀም ሊሻሻል ይችላል።
ማናቸውም ጥያቄዎች ፣ ጥቆማዎች ወይም እርማቶች ካሉዎት አስተያየት ለመስጠት ነፃነት ይሰማዎ።
አዘምን (2/5/21)
ዝማኔዎች-// ----------------------------- FFT ተግባር --------------- ------------------------------- // float FFT (int in ፣ int N ፣ float Frequency)
የ N የውሂብ አይነት ወደ ኢንቲጀር (ነባር ባይት) ተለውጧል> 255 የናሙና መጠን። የናሙና መጠኑ <= 128 ከሆነ ፣ የባይት ውሂብ ዓይነት ጥቅም ላይ መዋል አለበት።
የሚመከር:
ከ 50 ዶላር በታች ፈጣን ፈላጊ! Kazeshifter Arduino የሚስተካከል ፈጣን መቀየሪያ 7 ደረጃዎች
ከ 50 ዶላር በታች ፈጣን ፈላጊ! Kazeshifter Arduino የሚስተካከለው ፈጣን መቀየሪያ -ሠላም ሱፐርቢክ ወይም የሞተር ሳይክል አፍቃሪዎች! በዚህ መመሪያ ላይ የራስዎን ፈጣን መቀየሪያ እንዴት በርካሽ ማድረግ እንደሚችሉ እጋራለሁ! ይህንን አስተማሪ ለማንበብ ሰነፎች ለሆኑ ሰዎች ቪዲዮዬን ብቻ ይመልከቱ! ቀድሞውኑ የነዳጅ ማስገቢያ ስርዓትን እየተጠቀመ ፣ የሆነ
QuickFFT: ለአርዱዲኖ ከፍተኛ ፍጥነት FFT 3 ደረጃዎች
QuickFFT: ለአርዱinoኖ ከፍተኛ ፍጥነት FFT: የተለመደው አርዱዲኖ ውስን ራም እና የማቀናበር ኃይል አለው ፣ እና ኤፍኤፍቲ ስሌት-ተኮር ሂደት ነው። ለብዙ የእውነተኛ-ጊዜ ትግበራዎች ብቸኛው መስፈርት ከከፍተኛው ስፋት ጋር ድግግሞሽ ማግኘት ወይም የድግግሞሽ ጫፎችን መለየት ያስፈልጋል። በአንዱ ውስጥ
ፈጣን ጊዜ ፊልሞችን ያለ ፈጣን ጊዜ ፊልሞችን ያውርዱ -4 ደረጃዎች
ያለ Quicktime PRO ያለ ፈጣን ጊዜ ፊልሞችን ያውርዱ -እኔ እስከማውቀው ድረስ ይህ ከፋየርፎክስ ጋር ብቻ ይሠራል። ግን ከሳፋሪ ጋርም ሊሠራ ይችላል። መጀመሪያ የፈጣን ጊዜ ቪዲዮ ያለው ድር ጣቢያ ላይ ይሂዱ። በማያ ገጹ አናት ላይ ባለው የመሣሪያ አሞሌ ላይ መሳሪያዎችን ጠቅ ያድርጉ ፣ ወደ ታች ይሂዱ እና በሚለው ቁልፍ ላይ ጠቅ ያድርጉ
555 ሰዓት ቆጣሪን በመጠቀም 5 ፈጣን እርምጃዎች (ከስዕሎች ጋር) በመዳፊትዎ ላይ ፈጣን የእሳት ቁልፍን ያክሉ።
555 ሰዓት ቆጣሪን በመጠቀም ፈጣን-የእሳት ቁልፍን ወደ አይጥዎ ያክሉ-የቪዲዮ ጨዋታዎችን ሲጫወቱ ጣትዎ በቀላሉ ይደክማልን? ላብ ሳይሰበር ከብርሃን ፍጥነት በበለጠ ፍጥነት በ n00bs በፍጥነት እንዲገፉ ይፈልጋሉ? ይህ አስተማሪ እንዴት እንደሆነ ያሳየዎታል
ፈጣን ፣ ፈጣን ፣ ርካሽ ፣ ጥሩ የሚመስል የ LED ክፍል መብራት (ለማንኛውም) 5 ደረጃዎች (ከስዕሎች ጋር)
ፈጣን ፣ ፈጣን ፣ ርካሽ ፣ ጥሩ የሚመስል የ LED ክፍል መብራት (ለማንኛውም ሰው)-ሁሉንም እንኳን ደህና መጡ ---) ይህ የመጀመሪያ አስተማሪዬ ነው ስለዚህ አስተያየቶች እንኳን ደህና መጡ--) ላሳይዎት የምፈልገው ነገር በ ላይ ያለው ፈጣን የ LED መብራት እንዴት እንደሚሠራ ነው። TINY buget. የሚያስፈልግዎ - CableLEDsResistors (510Ohms ለ 12V) StapelsSoldering ironCutters እና ሌላ ባሲ