
Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-23 12:52

Ich bin ein wirklich großer Fan von Akellyirls Anleitung zur zuverlässigen Frequenzerkennung mit DSP-Techniken, aber manchmal ist die von ihm verwendete Technik nicht gut genug, wenn Sie verrauschte Messungen haben.
Eine einfache Lösung, um einen saubereren Eingang für den Frequenzdetektor zu erhalten, besteht darin, eine Art Filter um die zu erkennende Frequenz herum anzuwenden.
Leider ist das Erstellen eines digitalen Filters nicht einfach und es ist ziemlich viel Mathematik erforderlich. Also dachte ich darüber nach, eine Art Programm zu entwickeln, um die Erstellung solcher Filter zu vereinfachen, damit jeder sie in seinen Projekten verwenden kann, ohne in die Details zu graben.
In diesem Instructable werde ich eine 50-Hz-Sinuswelle in einer verrauschten Messung mit einem Arduino Uno erkennen (Arduino ist nicht wirklich notwendig).
Schritt 1: Das Problem

Stellen Sie sich vor, die gemessenen Eingangsdaten sehen wie die obige Kurve aus - ziemlich verrauscht.
Wenn wir einen einfachen Frequenzdetektor wie den in akellyirl's Instructable konstruieren, ist das Ergebnis "-inf" oder im Fall des folgenden Codes: "Yeah, too much noise …"
Hinweis: Ich habe so ziemlich den gesamten Code von akellyirl verwendet, aber oben ein rawData-Array hinzugefügt, das die verrauschten Messungen enthält.
Unten finden Sie den gesamten Code in einer Datei namens "unfiltered.ino".
Schritt 2: Die Lösung

Da die Eingabedaten verrauscht sind, wir aber die gesuchte Frequenz kennen, können wir mit einem von mir erstellten Tool namens easyFIR einen Bandpassfilter erstellen und auf die Eingabedaten anwenden, was zu einer viel saubereren Eingabe für den Frequenzdetektor führt (Bild oben).
Schritt 3: EasyFIR

Das easyFIR-Tool ist ziemlich einfach zu bedienen, laden Sie einfach das GitHub-Repository herunter und führen Sie die Datei easyFIR.py mit einem Beispiel Ihrer Messungen (im CSV-Format) aus.
Wenn Sie die Datei easyFIR.py öffnen, finden Sie 5 Parameter (siehe Bild oben), die Sie je nach gewünschtem Ergebnis ändern können und sollten. Nachdem Sie die 5 Parameter optimiert und die Python-Datei ausgeführt haben, sehen Sie die berechneten Koeffizienten in Ihrem Terminal. Diese Koeffizienten sind entscheidend für den nächsten Schritt!
Weitere Informationen zur genauen Verwendung finden Sie hier:
Schritt 4: Filtern

Wenn Sie nun die benötigten Filterkoeffizienten berechnet haben, ist es ziemlich einfach, den tatsächlichen Filter auf den Frequenzdetektor anzuwenden.
Wie Sie im obigen Bild sehen können, müssen Sie nur die Koeffizienten hinzufügen, die Funktion applyFilter verwenden und dann die Eingabemessungen filtern.
Unten finden Sie den gesamten Code in einer Datei namens "filtered.ino".
Hinweis: Vielen Dank an diesen Stack Overflow Post für den großartigen Filteranwendungsalgorithmus!
Schritt 5: Genießen Sie

Wie Sie sehen, können wir jetzt auch in einer lauten Umgebung ein 50-Hz-Signal erkennen ?
Bitte passen Sie meine Idee und meinen Code an Ihre Bedürfnisse an. Über Verbesserungsvorschläge wäre ich sehr dankbar!
Wenn Ihnen meine Arbeit gefällt, würde ich mich sehr freuen, wenn Sie meine Arbeit mit star auf GitHub unterstützen!
Danke für deine Unterstützung!:)
Empfohlen:
Erhalten Sie eine Benachrichtigungs-E-Mail, wenn ein Kanal auf ThingSpeak eine Weile nicht aktualisiert wurde – wikiHow

Erhalten Sie eine Benachrichtigungs-E-Mail, wenn ein Kanal auf ThingSpeak eine Weile nicht aktualisiert wurde: HintergrundgeschichteIch habe sechs automatisierte Gewächshäuser, die über Dublin, Irland, verteilt sind. Durch die Verwendung einer maßgeschneiderten Handy-App kann ich die automatisierten Funktionen in jedem Gewächshaus aus der Ferne überwachen und mit ihnen interagieren. Ich kann den Win manuell öffnen / schließen
So erstellen Sie eine UML für Java in Microsoft Visio: 4 Schritte

So erstellen Sie eine UML für Java in Microsoft Visio: Das Erstellen einer UML kann zunächst etwas einschüchternd wirken. Es gibt viele komplizierte Notationsstile, und es kann sich anfühlen, als gäbe es keine guten Ressourcen, um eine lesbare und genaue UML zu formatieren. Microsoft Visio macht jedoch das Erstellen einer UML-Qu
So erstellen Sie eine einfache Webseite mit Klammern für Anfänger – wikiHow

So erstellen Sie eine einfache Webseite mit Klammern für Anfänger: EinführungDie folgenden Anweisungen bieten eine Schritt-für-Schritt-Anleitung zum Erstellen einer Webseite mit Klammern. Brackets ist ein Quellcode-Editor mit Schwerpunkt auf Webentwicklung. Es wurde von Adobe Systems erstellt und ist eine kostenlose Open-Source-Software, die
So erstellen Sie eine Website (eine Schritt-für-Schritt-Anleitung): 4 Schritte

So erstellen Sie eine Website (eine Schritt-für-Schritt-Anleitung): In dieser Anleitung zeige ich Ihnen, wie die meisten Webentwickler ihre Websites erstellen und wie Sie teure Website-Builder vermeiden können, die für eine größere Website oft zu begrenzt sind helfen Ihnen, einige Fehler zu vermeiden, die ich am Anfang gemacht habe
Eine wirklich einfache / einfache / nicht komplizierte Möglichkeit, Menschen / Menschen / Tiere / Roboter mit GIMP so aussehen zu lassen, als hätten sie eine wirklich kühle / helle

Eine wirklich einfache / einfache / nicht komplizierte Möglichkeit, Menschen / Menschen / Tiere / Roboter mit GIMP so aussehen zu lassen, als hätten sie eine wirklich kühle / helle Wärmesicht (Farbe Ihrer Wahl)