Inhoudsopgave:
- Stap 1: Hoe het werkt (concept):
- Stap 2: Hoe het werkt (in code):
- Stap 3: Code gebruiken voor frequentieanalyse:
- Stap 4: Uitgang:
- Stap 5: Verschillende venster- en voorbeeldgroottes controleren:
- Stap 6: Voorbeeld:
Video: Arduino: frequentietransformatie (DFT): 6 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:15
dit programma is om frequentietransformatie op Arduino te berekenen met beslagcontrole over parameters. Het wordt opgelost met behulp van desecrate fouriior-transformatie.
dit is geen FFT
FFT is een algoritme dat wordt gebruikt om DFT in kortere tijd op te lossen.
Code voor FFT vindt u hier.
Stap 1: Hoe het werkt (concept):
Het gegeven programma voor frequentietransformatie biedt geweldige controle over de output die u nodig hebt. dit programma evalueert het door de gebruiker opgegeven frequentiebereik voor de dataset.
- In figuur een dataset gemaakt van twee frequenties genaamd f2 en f5 gegeven die moeten worden getest. f2 en f5 zijn willekeurige namen voor twee frequenties, een hoger getal voor een relatief hogere frequentie. hier heeft een kleinere frequentie f2 een hogere amplitude en heeft f5 een kleinere amplitude.
- Het kan wiskundig worden aangetoond dat -sommatie van vermenigvuldiging van twee harmonische datasets met verschillende frequentie naar nul neigt (een hoger aantal gegevens kan leiden tot beslagresultaat). In ons geval Als deze twee vermenigvuldigingsfrequenties dezelfde (of zeer dichte) frequentie hebben, is de som van de vermenigvuldiging niet nul, waarbij de amplitude afhangt van de amplitude van de gegevens.
- om een specifieke frequentie te detecteren, kan de gegeven dataset worden vermenigvuldigd met verschillende testfrequenties en het resultaat kan een component van die frequentie in gegevens geven.
Stap 2: Hoe het werkt (in code):
voor die gegeven gegevens (f2+f5) wordt één voor één f1 tot f6 vermenigvuldigd en wordt de waarde van de som genoteerd. die eindsom vertegenwoordigt de inhoud van die frequentie. rust (niet-overeenkomend) van frequentie zou idealiter nul moeten zijn, maar het is niet mogelijk in het echte geval. om de som nul te maken, is een oneindige hoeveelheid datasets vereist.
- zoals kan worden getoond in figuur f1 tot f6 proeffrequentie en de vermenigvuldiging met dataset op elk punt wordt getoond.
- in de tweede figuur wordt de som van die vermenigvuldiging bij elke frequentie uitgezet. twee pieken bij 1 en 5 is herkenbaar.
dus met dezelfde benadering voor willekeurige gegevens kunnen we voor zoveel frequenties evalueren en de frequentie-inhoud van gegevens analyseren.
Stap 3: Code gebruiken voor frequentieanalyse:
laten we bijvoorbeeld deze code gebruiken om DFT van blokgolf te vinden.
plak eerst de bijgevoegde code (dft-functie) na de lus zoals weergegeven afbeelding
8 VOORWAARDEN DIE MOETEN WORDEN GESPECIFICEERD
- een array waarvan dft moet worden genomen
- grootte van een array
- tijdsinterval tussen 2 metingen in array in milliSECONDS
- lagere waarde van frequentiebereik in Hz
- bovenste waarde van frequentiebereik in Hz
- grootte van stappen voor frequentiebereik
- herhaling van een signaal (minimaal 1) hogere nauwkeurigheid van de slagman maar langere oplossingstijd
-
venster functie:
0 voor geen raam1 voor plat dakraam 2 voor hannraam 3 voor sluitraam
(als je geen idee hebt over het selecteren van venster, blijf standaard 3)
voorbeeld: dft(a, 8, 0,5, 0, 30, 0,5, 10, 3); hier is een array van maat 8-elementen die moeten worden gecontroleerd op 0 Hz tot 30 Hz met 0,5 stap (0, 0,5, 1, 1,5, …, 29, 29,5, 30) 10 herhaling en hamming-venster
hier is het mogelijk om een grotere array te gebruiken, zoveel als Arduino aankan.
Stap 4: Uitgang:
als je commentaar geeft
Serial.print(f);Serial.print("\t");
van code zal de seriële plotter de aard van het frequentiespectrum geven, zo niet zou een seriële monitor frequentie geven met zijn amplitude.
Stap 5: Verschillende venster- en voorbeeldgroottes controleren:
in figuur wordt de frequentie van de sinusgolf gemeten met behulp van verschillende instellingen.
Stap 6: Voorbeeld:
in figuur transformatie van gegevens met behulp van SciLab en arduino wordt vergeleken.
Aanbevolen:
Game Design in Flick in 5 stappen: 5 stappen
Game-ontwerp in Flick in 5 stappen: Flick is een heel eenvoudige manier om een game te maken, vooral zoiets als een puzzel, visuele roman of avonturengame
Gezichtsdetectie op Raspberry Pi 4B in 3 stappen: 3 stappen
Gezichtsdetectie op Raspberry Pi 4B in 3 stappen: In deze Instructable gaan we gezichtsdetectie uitvoeren op Raspberry Pi 4 met Shunya O/S met behulp van de Shunyaface-bibliotheek. Shunyaface is een bibliotheek voor gezichtsherkenning/detectie. Het project streeft naar de hoogste detectie- en herkenningssnelheid met
Doe-het-zelfspiegel in eenvoudige stappen (met LED-stripverlichting): 4 stappen
DIY make-upspiegel in eenvoudige stappen (met behulp van LED-stripverlichting): In dit bericht heb ik een doe-het-zelfspiegel gemaakt met behulp van de LED-strips. Het is echt gaaf en je moet ze ook proberen
Hoe plug-ins in WordPress te installeren in 3 stappen: 3 stappen
Hoe plug-ins in WordPress te installeren in 3 stappen: In deze tutorial laat ik je de essentiële stappen zien om de WordPress-plug-in op je website te installeren. In principe kunt u plug-ins op twee verschillende manieren installeren. De eerste methode is via ftp of via cpanel. Maar ik zal het niet opsommen, want het is echt compl
Akoestische levitatie met Arduino Uno stap voor stap (8 stappen): 8 stappen
Akoestische levitatie met Arduino Uno Stap voor stap (8-stappen): ultrasone geluidstransducers L298N Vrouwelijke DC-adapter voeding met een mannelijke DC-pin Arduino UNOBreadboardHoe dit werkt: eerst upload je code naar Arduino Uno (het is een microcontroller uitgerust met digitale en analoge poorten om code te converteren (C++)