Inhoudsopgave:
Video: FIR-filtering voor betrouwbaardere frequentiedetectie - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:14
Ik ben echt een grote fan van akellyirl's instructable over betrouwbare frequentiedetectie met behulp van DSP-technieken, maar soms is de techniek die hij gebruikte niet goed genoeg als je luidruchtige metingen hebt.
Een eenvoudige oplossing om een schonere invoer voor de frequentiedetector te krijgen, is door een soort filter toe te passen rond de frequentie die u wilt detecteren.
Helaas is het maken van een digitaal filter niet eenvoudig en komt er nogal wat rekenwerk bij kijken. Dus ik dacht erover om een soort programma te maken om het maken van dergelijke filters te vereenvoudigen, zodat iedereen ze in hun projecten kan gebruiken zonder in de details te hoeven graven.
In deze Instructable ga ik een sinusgolf van 50 Hz detecteren in een luidruchtige meting met een Arduino Uno (Arduino is niet echt nodig).
Stap 1: Het probleem
Stel je voor dat de gemeten invoergegevens eruitzien als de bovenstaande curve - behoorlijk luidruchtig.
Als we een eenvoudige frequentiedetector construeren zoals die in Instructable van akellyirl, is het resultaat "-inf" of in het geval van de onderstaande code: "Ja, te veel ruis …"
Opmerking: ik heb vrijwel alle code van akellyirl gebruikt, maar bovenaan een rawData-array toegevoegd met de ruismetingen.
Hieronder vind je de hele code in een bestand genaamd "unfiltered.ino".
Stap 2: De oplossing
Omdat de invoergegevens ruis bevatten, maar we de frequentie kennen waarnaar we op zoek zijn, kunnen we een tool gebruiken die ik heb gemaakt, genaamd easyFIR, om een Bandpass-filter te maken en dit toe te passen op de invoergegevens, wat resulteert in een veel schonere invoer voor de frequentiedetector (afbeelding hierboven).
Stap 3: EasyFIR
De easyFIR-tool is vrij eenvoudig te gebruiken, download gewoon de GitHub-repository en voer het easyFIR.py-bestand uit met één voorbeeld van uw metingen (in CSV-indeling).
Als u het bestand easyFIR.py opent, vindt u 5 parameters (zie afbeelding hierboven) die u kunt en moet wijzigen, afhankelijk van het resultaat dat u wilt bereiken. Nadat u de 5 parameters hebt aangepast en het python-bestand hebt uitgevoerd, ziet u de berekende coëfficiënten in uw terminal. Deze coëfficiënten zijn cruciaal voor de volgende stap!
Meer informatie over het exacte gebruik vindt u hier:
Stap 4: Filteren
Als u nu de benodigde filtercoëfficiënten hebt berekend, is het vrij eenvoudig om de eigenlijke filer op de frequentiedetector toe te passen.
Zoals u in de bovenstaande afbeelding kunt zien, hoeft u alleen de coëfficiënten, de functie ApplyFilter toe te voegen en vervolgens de invoermetingen te filteren.
Hieronder vindt u de hele code in een bestand met de naam "filtered.ino".
Opmerking: grote dank aan deze Stack Overflow Post voor het geweldige filtertoepassingsalgoritme!
Stap 5: Geniet ervan
Zoals u kunt zien, zijn we nu in staat om een 50Hz-signaal te detecteren, zelfs in een lawaaierige omgeving?
Aarzel niet om mijn idee en code aan uw behoeften aan te passen. Ik zou het zeer op prijs stellen om uw verbeteringen op te nemen!
Als je mijn werk leuk vindt, zou ik het erg op prijs stellen als je mijn werk met star op GitHub zou steunen!
Bedankt voor uw steun!:)
Aanbevolen:
Installatie voor externe Bluetooth GPS-provider voor Android-apparaten: 8 stappen
Installatie voor externe Bluetooth GPS-provider voor Android-apparaten: deze instructable legt uit hoe u uw eigen externe Bluetooth-compatibele GPS voor uw telefoon kunt maken, wat dan ook voor ongeveer $ 10. Materiaallijst: NEO 6M U-blox GPSHC-05 bluetooth-module Kennis van interface Blutooth Low energy-modulesArdui
Idee voor doe-het-zelf-activiteit voor weerstations voor 12+ jaar: 4 stappen
Idee voor doe-het-zelf-weerstationactiviteit voor 12-plussers: in deze activiteit zullen deelnemers hun weerstation opzetten, de lucht in sturen en de opnames (licht, temperatuur, vochtigheid) in realtime volgen via de Blynk-app. Bovendien leert u hoe u de geregistreerde waarden publiceert
Systeem voor het bewaken van de luchtkwaliteit voor fijnstofverontreiniging: 4 stappen
Systeem voor monitoring van luchtkwaliteit voor fijnstofverontreiniging: INTRO: 1 In dit project laat ik zien hoe ik een deeltjesdetector bouw met dataweergave, databack-up op SD-kaart en IOT. Visueel geeft een neopixels ringdisplay de luchtkwaliteit aan. 2 Luchtkwaliteit is een steeds belangrijker zorg t
Relaisbord voor Arduino voor minder dan $8: 5 stappen
Relaisbord voor Arduino voor minder dan $8.: Hallo vrienden, vandaag ga ik je vertellen hoe je een relaisbord voor Arduino maakt voor minder dan $8. In dit circuit gaan we geen IC of transistor gebruiken. Dus laten we het doen
3.3V Mod voor ultrasone sensoren (bereid HC-SR04 voor 3.3V Logic op ESP32/ESP8266, Particle Photon, enz.): 4 stappen
3.3V Mod voor ultrasone sensoren (bereid HC-SR04 voor 3.3V Logic op ESP32/ESP8266, Particle Photon, enz.): TL;DR: Knip op de sensor het spoor naar de Echo-pin en sluit het opnieuw aan met een spanningsdeler (Echo trace -> 2.7kΩ -> Echo pin -> 4.7kΩ -> GND). Bewerken: Er is enige discussie geweest over de vraag of de ESP8266 daadwerkelijk 5V-tolerant is op GPIO in