Forum: Mikrocontroller und Digitale Elektronik Hochpass - digital, quick & dirty für 8-bit Controller


von X- R. (x-rocka)


Lesenswert?

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

von Bernd (Gast)


Lesenswert?

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?"

von Armin (Gast)


Angehängte Dateien:

Lesenswert?

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

von Armin (Gast)


Lesenswert?

hmm mist -.-
beim Hochpass müsste die Amplitude des Ausgangs ja steigen...


sieht nach Rechenfehler aus.
toll...

von Armin (Gast)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.