Guten Morgen, ich suche einen einfachen schnellen Hochpass Algorithmus für einen 8-bit Controller. Ich muss "nur" den offset eines Beschleunigungssensors wegbekommen, der mit dem AVR internen 10-bit ADC aufgenommen wird. Eine Variante: - über langes Interval mitteln => Offset - vom aktuellen Messwert Offset abziehen. Geht das eleganter mit 8-bit & 16bit Messwerten/Variablen? Oder doch IIR (mit floats?)? Danke, X
Genau so, wie du es vor hast, sollte es doch optimal gehen. Du musst ja nicht ein derart langes Intervall wählen, da es sich ja hier um einen Offset handelt, welcher nahezu konstant bleibt. 4-10 Messwerte sollten da durchaus ausreichend sein! Vllt ist der Thread auch hilfreich: Beitrag "MOVING AVERAGE FILTER in FastAVR?"
warum nicht die Tustin-Trafo auf einen Hochpass anwenden? ich hab das mal für ein RC-Glied, also Hochpass 1. Ordnung durchgerechnet: u[n] Eingang y[n] Ausgang RC gibt die Grenzfrequenz an: f=1/(2*pi*RC) T Abtastrate in 1/sek y[n] = RC*T/(T+2*RC)*(u[n] + u[n-1]) - (T-2*RC)/(T+2*RC) y[n-1] für die Umsetzung brauchst du 2 Speicherzellen: u[n-1] und y[n-1] u[n] ist ja der aktuelle Wert am Eingang hab das mal ins Excel getippt und funktioniert ganz gut. Als Test habe ich die Eingangsfunktion u[n] = Sin [n²] gewählt Der Ausgang schwächt sich schön ab... hoffe, das passt soweit
hmm mist -.- beim Hochpass müsste die Amplitude des Ausgangs ja steigen... sieht nach Rechenfehler aus. toll...
okay, ich hab den Fehler: y[n] = 2RC/(T + 2RC)*(u[n] - u[n-1]) - (T - 2RC)/(T + 2RC)*y[n-1]
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.