ዝርዝር ሁኔታ:
ቪዲዮ: QuickFFT: ለአርዱዲኖ ከፍተኛ ፍጥነት FFT 3 ደረጃዎች
2024 ደራሲ ደራሲ: John Day | [email protected]. ለመጨረሻ ጊዜ የተሻሻለው: 2024-01-30 07:30
የተለመደው አርዱዲኖ ውስን ራም እና የማቀናበር ኃይል አለው ፣ እና ኤፍኤፍቲ ስሌት-ተኮር ሂደት ነው። ለብዙ የእውነተኛ ጊዜ ትግበራዎች ብቸኛው መስፈርት ከከፍተኛው ስፋት ጋር ድግግሞሽ ማግኘት ወይም የድግግሞሽ ጫፎችን መለየት ያስፈልጋል።
በአንዱ አስተማሪዬ ውስጥ ፣ እዚህ ሊገኝ የሚችል ለ FFT ኮድ አዘጋጀሁ - EasyFFT
ይህ ኮድ በአርዱዲኖ ናኖ ላይ እስከ 128 ናሙናዎችን FFT ማከናወን ችሏል። በአርዱዲኖ ውስን ማህደረ ትውስታ ምክንያት ከዚህ ከፍ ያለ የናሙና ቁጥር አይቻልም። ፍጥነትን ለማሻሻል እና የማህደረ ትውስታ ፍጆታን ለመቀነስ ተግባሩን ትንሽ ቀይሬዋለሁ። ይህ ማሻሻያ አርዱዲኖ FFT ን አምስት ጊዜ በፍጥነት እንዲያከናውን ያስችለዋል እና ግማሽ ማህደረ ትውስታን ያጠፋል። ይህ አስተማሪ የ FFT ሥራን አይሸፍንም ፣ ለእሱ ማጣቀሻዎች በ EasyFFT ላይ ሊገኙ ይችላሉ።
ደረጃ 1: መሥራት
በአነስተኛ ትክክለኛነት ፍጥነቱን ለማሻሻል የተለመደው የ FFT ተግባር ተስተካክሏል። በምስሉ ላይ እንደሚታየው የሙከራ ምልክት በሲን ወይም በኮሲን ሞገድ ቅርጾች ማባዛት ያስፈልጋል። እነዚህ እሴቶች ከ 0 እስከ 1 ሊሆኑ ይችላሉ ፣ ስለዚህ ተንሳፋፊ ማባዛት የግድ አስፈላጊ ነው። በአርዱዲኖ ውስጥ ተንሳፋፊ ማባዛት ከ ኢንቲጀር ሥራዎች ጋር ሲነፃፀር ቀርፋፋ ነው።
በዚህ ተግባር ውስጥ የሲን/ኮሲን ሞገድ በካሬ ሞገድ ይተካል። እሴት 0 ፣ 1 ወይም -1 ሊኖረው በሚችል የካሬ ሞገድ የሙከራ ምልክት ማባዛት ስላለብን። በዚያ ምክንያት ተንሳፋፊ ማባዛትን በቀላሉ ወደ ኢንቲጀር መደመር ወይም መቀነስ መተካት እንችላለን። ለ Arduino ኢንቲጀር መደመር ወይም መቀነስ በ 5 እጥፍ ያህል ፈጣን ነው። ይህ 5 ጊዜ አካባቢ መፍታት ፈጣን ያደርገዋል።
በዚህ ማሻሻያ ምክንያት አሁን የድግግሞሽ ማጠራቀሚያ እሴቶች እንደ ኢንቲጀር (ቀደም ሲል ተንሳፋፊ የነበረው) ሊከማች ይችላል እና እኛ ዝቅተኛ የማስታወስ ፍጆታ ሌላ ጥቅም እናገኛለን። በአርዱዲኖ ናኖ ፣ ኢንተር 2 ባይት ማህደረ ትውስታን ይጠቀማል ፣ ተንሳፋፊ ደግሞ 4 ባይት ማህደረ ትውስታን ይጠቀማል። በአዲሱ ኮድ በዚህ ጥቅም ምክንያት ለ 256 ናሙናዎች (ከዚህ ቀደም 128 ናሙናዎች) ኤፍኤፍቲ ማከናወን ችለናል።
በመደበኛ ኤፍኤፍቲ ውስጥ መፍትሄን በፍጥነት ለማድረግ የኃጢአትን እሴት ማከማቸት ነበረብን። በአዲስ ተግባር ፣ እኛ የኃጢያት/ኮሲን እሴቶችን ስለማንፈልግ እሱን ማስወገድ እና አንዳንድ ማህደረ ትውስታን ማዳን እንችላለን።
ትግበራ -
ይህንን ተግባር መተግበር በቀጥታ ወደ ፊት ነው። እኛ በቀላሉ በኮድ ዋን ላይ ተግባሩን መገልበጥ እንችላለን። ከዚህ በታች ያለውን ትእዛዝ በመጠቀም ይህ ተግባር ሊከናወን ይችላል-
ተንሳፋፊ f = Q_FFT (ውሂብ ፣ 256 ፣ 100) ፤ በተግባር Q_FFT ፣
ውሂብ - ይህ ቃል የምልክት እሴቶች ያለው ድርድር ነው ፣ የሚመከረው የናሙና መጠን 2 ፣ 4 ፣ 8 ፣ 32 ፣ 64 ፣ 128 ፣ 256 ፣ 512 ፣… የናሙና መጠኑ የእነዚህ እሴቶች ካልሆነ በአቅራቢያው ወደሚገኙት ዝቅተኛ እሴቶች ጎን ይቆረጣል። ለምሳሌ ፣ የናሙና መጠኑ ከ FFT 75 ከሆነ ለ 64 የናሙና ቁጥሮች ይከናወናል። ከፍተኛው የናሙና መጠን በአርዱዲኖ ላይ ባለው ራም የተገደበ ነው።
ሁለተኛው ቃል በአንድ ድርድር ውስጥ የናሙናዎችን ብዛት ይገልጻል እና የመጨረሻው ቃል በ Hz ውስጥ የናሙና ድግግሞሽ ነው።
ደረጃ 2 ኮድ
ይህ ክፍል በኮድ ውስጥ ማሻሻያ በሚደረግበት ጊዜ ሊታወስ የሚገባውን በ EasyFFT ኮድ ውስጥ የተደረገውን ማሻሻያ ያብራራል ፣
1. ቀደም ሲል እንደተገለፀው እዚህ ኢንቲጀሮች FFT ን ለመሥራት ያገለግላሉ። Int ውስጥ በአርዱዲኖ ባለ 16 ቢት ቁጥር ሲሆን ከ -32768 እስከ 32768 ድረስ እሴቶችን ሊይዝ ይችላል። የዚህ int ዋጋ ከዚህ ክልል በወጣ ቁጥር ችግሩን ያስከትላል። ከመደበኛ ስሌት በኋላ ይህንን ችግር ለማስወገድ። ማናቸውም እሴቱ ከ 15000 የተሟሉ ድርድሮች በ 100 የሚበልጥ ከሆነ ይህ int እንዳይፈስ ይከላከላል።
2. ስፋቱ ስሌት - ስፋትን ለማስላት እውነተኛው እና ምናባዊው ክፍል አራት ማዕዘን መሆን እና የድምር ካሬ ሥር ያስፈልጋል። ስኩዊድ እና የተግባሩ ካሬ ሥሩ ጊዜ ይወስዳል። ሂደቱን በበለጠ ፍጥነት ለማድረግ ፣ ይህ ኮድ አንዳንድ የእውነተኛ እና ምናባዊ ክፍሎችን መጠኖች በቀላሉ ያደርጋል። ይህ በእርግጠኝነት ያነሰ ትክክለኛ እና በአንዳንድ ሁኔታዎች ወደ የተሳሳተ መደምደሚያ ሊያመራ ይችላል። ለትልቅ ስሌት ወደ መደበኛው ዘዴ ለመመለስ ሊመርጡ ይችላሉ ፣ ግን የበለጠ ጊዜ ይወስዳል እና እነዚህን ቁጥሮች ለማከማቸት አንዳንድ ዝግጅቶችን ማድረግ ያስፈልግዎታል።
3. ይህ ኮድ ለበርካታ ከፍተኛ ማወቂያ ሞዱል የለውም። በቀላሉ ዋጋውን በከፍተኛ ስፋት (ዲሲ ማካካሻ የሆነውን የመጀመሪያውን ቁጥር ሳይጨምር) ይመርጣል። ብዙ ጫፎች ከፈለጉ የ EasyFFT ኮድን መጥቀስ እና እዚህ ላይ አስፈላጊውን ማሻሻያ ማድረግ ይችላሉ። በዚያ ሁኔታ ፣ አንዳንድ ድርድር/ተለዋዋጭ እንዲሁ እንደ ዓለም አቀፍ ተለዋዋጭ መገለጽ አለበት።
4. ተግባሩ የሚከተለውን መስመር ይ containsል
ያልተፈረመ int Pow2 [13] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048};
ከላይ የተጠቀሱትን ተለዋዋጮች እንደ ዓለም አቀፍ ተለዋዋጭ (በኮድ መጀመሪያ ላይ መለጠፍ) ማወጅ በእያንዳንዱ አፈፃፀም 1 ሚሊሰከንዶች ጊዜ ይቆጥባል።
5. ከላይ ከተጠቀሱት ድርድር ውስጥ ከፍተኛዎቹ 5 ጫፎች ከተከማቹበት ከ EasyFFT ተግባር በተቃራኒ። ይህ ተግባር ተንሳፋፊ እሴት ይመልሳል። ይህ እሴት በ Hz ውስጥ ከፍተኛውን ስፋት ያለው ድግግሞሽ ይወክላል። ስለዚህ የኮዱ ውክልና እንደዚህ ያለ ነገር ይመስላል።
ተንሳፋፊ f = Q_FFT (ውሂብ ፣ 256 ፣ 100);
6. Peak Detection - አንዴ ከፍተኛ መጠን ያለው ድግግሞሽ ከተገኘ በኋላ ይህ ተግባር ትክክለኛውን ውጤት ለማስላት ከእሱ በፊት እና በኋላ የተደጋጋሚነት ስፋት ይጠቀማል። በዚህ ስሌት ውስጥ ጥቅም ላይ የዋለው ስፋት የሞዱል ድምር ነው (የካሬዎች ድምር ካሬ ሥር አይደለም)
Fn ድግግሞሽ ከከፍተኛው ስፋት ጋር ከሆነ ድግግሞሹ ከዚህ በታች ካለው ቀመር ሊሰላ ይችላል።
ትክክለኛ ኤፍ = (A n-1 *Fn-1+An-1 *Fn-1+An-1 *Fn-1) / (አን -1+አን+አንድ+1)
የት ኤ የ n ድግግሞሽ እና Fn-1 ድግግሞሽ እሴት ነው።
ደረጃ 3 ውጤቶች
የመፍትሄ ጊዜ ከ EasyFFT ጋር ከላይ ባለው የምስል ንፅፅር ውስጥ ይታያል። በንፅፅሩ የታየው የእሱ ፍጥነት።
ለናሙና መረጃ ከተለያዩ ድግግሞሽ ጋር 3 የ sinusoidal ሞገዶች አሉት። ከ QuickFFT ያለው ውጤት ከ Scilab ውፅዓት ጋር ይነፃፀራል። በምስሉ ላይ እንደምንመለከተው ከፍተኛው ስፋት ያላቸው 3 ጫፎች ከ Scilab ውፅዓት ጋር ይዛመዳሉ። ሆኖም ፣ ውጤቱ ብዙ ጫጫታዎችን ያቀፈ ነው ፣ ይህም ለአንዳንድ መተግበሪያዎች አሳሳች ሊሆን ይችላል። ስለዚህ ለማመልከቻዎ ከማመልከትዎ በፊት ኮዱን በትክክል መፈተሽ ይመከራል።
ይህ ኮድ ለፕሮጀክትዎ ጠቃሚ ሆኖ እንዳገኙት ተስፋ አደርጋለሁ። ማንኛውም ጥያቄ ወይም አስተያየት ካለ እባክዎን አስተያየት ይስጡ።
የሚመከር:
የቤት ውስጥ ከፍተኛ ፍጥነት የኤሌክትሪክ መኪና 7 ደረጃዎች
በቤት ውስጥ የሚሠራ ከፍተኛ ፍጥነት ያለው ኤሌክትሪክ መኪና - የራስዎን የኤሌክትሪክ መኪና ለመሥራት መሞከር ከፈለጉ ፣ ይህ ከተለመዱ ቁሳቁሶች እና እንዲሁም ከኤሌክትሮኒክስ መደብር አንድ ባልና ሚስት ርካሽ ነገሮችን ለማድረግ በጣም ቀላል መንገድ ነው። በ RC መኪናዎች ላይ ከእንግዲህ ከ 30-60 ዶላር ዶላር ማውጣት የለብዎትም ፣
24v ዲሲ ሞተር ወደ ከፍተኛ ፍጥነት ሁለንተናዊ ሞተር (30 ቮልት) 3 ደረጃዎች
24v ዲሲ ሞተር ወደ ከፍተኛ ፍጥነት ሁለንተናዊ ሞተር (30 ቮልት) - ሠላም! በዚህ ፕሮጀክት ውስጥ የተለመደ መጫወቻ 24V ዲሲ ሞተርን ወደ 30 ቮ ዩኒቨርሳል ሞተር እንዴት እንደሚለውጡ አስተምራችኋለሁ። በግል የቪዲዮ ምስል ማሳያ ፕሮጀክትን በተሻለ እንደሚገልፅ አምናለሁ። . ስለዚህ ወንዶች ቪዲዮውን መጀመሪያ እንዲመለከቱ እመክራለሁ። ፕሮጀክት V
ከፍተኛ ፍጥነት ጨዋታ ላፕቶፕ 9 ደረጃዎች (ከስዕሎች ጋር)
ባለከፍተኛ ፍጥነት ጨዋታ ላፕቶፕ-ሰላም ወዳጆች ፣ ዛሬ በቤትዎ ውስጥ አብሮገነብ የዊንዶውስ 10 ኦፕሬቲንግ ሲስተም ያለው በጣም ኃይለኛ እና ከፍተኛ ፍጥነት ያለው የኪስ መጠን ያለው ላፕቶፕ እንዴት እንደሚሠሩ አሳያችኋለሁ። በዚህ ጽሑፍ ውስጥ ይህንን በቀላሉ በቤትዎ መገንባት እንዲችሉ ሁሉንም መረጃ እሰጥዎታለሁ
በዝግታ ለሚንቀሳቀሱ ቪዲዮዎች ከፍተኛ ፍጥነት ያለው ሰዓት-4 ደረጃዎች
በዝግታ ለሚንቀሳቀሱ ቪዲዮዎች ከፍተኛ ፍጥነት ያለው ሰዓት-ዘመናዊው ስማርትፎን ያለው ሁሉም ሰው ማለት ይቻላል አስደናቂ የዘገየ እንቅስቃሴ ቪዲዮዎችን ለመሥራት የሚያገለግል ከፍተኛ ፍጥነት ያለው ካሜራ አለው። ግን ያ የሳሙና አረፋ እስኪፈነዳ ወይም ሐብሐቡ እስኪፈነዳ ድረስ ምን ያህል ጊዜ እንደሚወስድ ለመለካት ከፈለጉ ፣
Yout PC ን እንዴት በከፍተኛ ፍጥነት ማፋጠን እና ያንን ፍጥነት ለስርዓቱ ሕይወት ማቆየት። 9 ደረጃዎች
Yout PC ን እንዴት በከፍተኛ ፍጥነት ማፋጠን እና ያንን ፍጥነት ለስርዓቱ ሕይወት ማቆየት ።: ይህ መጀመሪያ ከገዙበት ጊዜ በበለጠ በፍጥነት እንዲሮጥ ለማድረግ ፒሲን እንዴት ማፅዳት ፣ ማረም እና ማሻሻል ላይ ያደረግሁት ትምህርት ነው። እሱ እና በዚያ መንገድ እንዲቆይ ለመርዳት። እድሉን እንዳገኘሁ ወዲያውኑ ሥዕሎችን እለጥፋለሁ ፣ እንደ አለመታደል ሆኖ አሁን እኔ አላደርግም