Saturday 28 October 2017

Exponential Moving Average Arduino


Ich arbeite an einem mobilen Roboter, der über einen drahtlosen 2,4 GHz Link gesteuert wird. Der Empfänger ist mit dem Arduino Uno verbunden, der als Hauptregler an Bord dient. Der kritischste (und Haupt-) Eingangskanal des Empfängers erzeugt ein sehr verrauschtes Signal, was zu vielen kleinen Änderungen am Ausgang der Aktoren führt, obwohl diese nicht benötigt werden. Ich suche Bibliotheken, die effiziente Glättung durchführen können. Gibt es ein Signal Glättung Bibliotheken zur Verfügung für die Arduino (Uno) Ich glaube, ich sehe eine Menge von Single-Sample Rauschspitzen in Ihrem lauten Signal. Der Medianfilter ist besser bei der Beseitigung von Einzelprobenrauschspitzen als bei jedem linearen Filter. (Es ist besser als jedes Tiefpaßfilter, gleitender Durchschnitt, gewichteter gleitender Durchschnitt usw. in Bezug auf seine Ansprechzeit und seine Fähigkeit, solche Einzelproben-Rauschspitzen-Ausreißer zu ignorieren). Es gibt in der Tat viele Signalglättungsbibliotheken für den Arduino, von denen viele einen Medianfilter enthalten. Signalglättungsbibliotheken bei arduino. cc: Signalglättungsbibliotheken bei github: Würde sowas in Deinem Roboter so funktionieren (Der Median-of-3 erfordert sehr wenig CPU-Leistung und damit schnell): Du könntest diese digital mit einem Tief filtern Filter: Ändern Sie die 0,99, um die Grenzfrequenz zu ändern (näher an 1,0 ist die niedrigere Frequenz). Der tatsächliche Ausdruck für diesen Wert ist exp (-2pif fs), wobei f die Grenzfrequenz ist, die gewünscht wird und fs die Frequenz ist, an der die Daten abgetastet werden. Ein anderer Typ eines digitalen Filters ist ein Ereignisfilter. Es funktioniert gut auf Daten, die Ausreißer, z. B. 9,9,8,10,9,25,9. Ein Ereignisfilter gibt den häufigsten Wert zurück. Statistisch ist dies der Modus. Statistische Mittelwerte wie Mean, Mode etc. können mit Hilfe der Arduino Average Library berechnet werden. Ein Beispiel aus der Arduino Library-Seite: Double Exponential Moving Average Filter 8211 Beschleunigung der EMA Manchmal haben Sie ein verrauschtes Signal, das Sie zu einem weniger verrauschten Signal tiefpassieren möchten. Der exponentielle Moving Average Filter (EMA) ist ein schöner und einfacher Filter für das eingebettete System. Lesen Sie hier mehr über den EMA-Filter. Allerdings kann manchmal die EMA zu langsam sein. Der Kompromiss zwischen Geräuschunterdrückung und Geschwindigkeit könnte einfach nicht gut genug sein. Entweder bewegt sich das gefilterte Signal nicht schnell genug oder das Signal ist zu laut. Dies ist kein sehr gutes Vergleichsbild zwischen EMA und DEMA. Wir wollten nur ein cooles Bild hier. Lesen Sie weiter unten für einen richtigen Vergleich 8230die DEMA ist untergedämpft, während die EMA überbeansprucht wird. Eine Lösung hierfür könnte der Double Exponential Moving Average (DEMA) Filter sein. Bei einer gegebenen der DEMA hat schnellere Reaktion als die EMA, während immer noch die Aufrechterhaltung der gleichen Rauschunterdrückung. Ein möglicher Nachteil beim DEMA-Filter besteht darin, dass Sie ein Überschwingen erhalten. Mit anderen Worten, die DEMA wird unterdrückt, während die EMA überbeansprucht wird. Schauen Sie sich diesen Beitrag an, um herauszufinden, was wir damit meinen. Der Algorithmus ist ziemlich direkt: Die heikelste Sache hier ist das letzte Wort, wo Sie die EMA der EMA. Um dies zu erreichen, müssen wir zwei globale Variablen anstelle von einem haben. Implementierung Hierbei handelt es sich um eine schnelle Implementierung des DEMA-Filters auf Arduino. Beachten Sie, dass wir zwei globale Variablen für die Filterung anstelle von eins verwenden. Blaue Linie: ursprüngliches Signal, orange Linie: reguläre EMA, rote Linie: DEMA. Wie Sie hier sehen können, gelingt es der DEMA, dem Originalsignal besser ohne Lärm zu folgen. Beachten Sie auch das Überschwingen bei der Sprungantwort. Das Kapitel an der Unterseite Die DEMA wurde im Seesaw-Projekt mit positiven Ergebnissen nach dem Schreiben des letzten Blogposts getestet. Dies ist ein Szenario, in dem wir die hohe Geschwindigkeit benötigen, die die DEMA bereitstellen kann. Es gibt auch etwas, das als Triple Exponential Moving Average (TEMA) bezeichnet wird. Dieser Filter verwendet die gleichen Prinzipien wie DEMA, aber nehmen sie noch weiter. In Verbindung stehende Artikel

No comments:

Post a Comment