Sida 2 av 6

Re: Lågpassfilter i mjukvara!

Postat: 12 april 2011, 12:42:37
av Gimbal
jesse skrev:Ta indata minus filter_output på lågpassfiltret så borde det väl bli högpass? (eller har jag helt fel?)
Ja det låter ju självklart nu när ni säger det. :humm:

Re: Lågpassfilter i mjukvara!

Postat: 12 april 2011, 12:55:24
av Nerre
Det beror väl lite på vad det är för filter, de flesta diskreta filter (kallas det väl när det handlar om sampel) innebär ju en viss fördröjning. Då kan man ju inte subtrahera en utsignal som kanske är fördröjd 3-4 sampel direkt från insignalen.

(Det är 15 år sen jag pillade med sånt där sist, som exjobb implementerade jag ett filter på en TMS320-C80, men det var inte jag som hade konstruerat filtret, jag bara kodade det.)

Re: Lågpassfilter i mjukvara!

Postat: 12 april 2011, 14:44:32
av Bonzo
Men man bör änndå alltid ha ett analogt filter innan gärna så brant som möjligt för att undvika vikning enligt Nyquistkriteriet.

Re: Lågpassfilter i mjukvara!

Postat: 12 april 2011, 15:00:40
av Kubbuth
Man kan köra unsigned på rubbet om man gör

Kod: Markera allt

data = |x|
tecken = x/data

bearbeta data osignerat här

retunera bearbetad_data*tecken
Så har jag alltid jobbat med samples.

Det fina är att man kan göra waveshape med x^y (edit, om x är mellan 0 och 1, jag har alltid använd en våg som är +-1 men inte större), låter man y öka/minska eller gå i våg får man effekter som påminner om filtersvep.

Re: Lågpassfilter i mjukvara!

Postat: 12 april 2011, 18:56:44
av Icecap
Skitbra! Har ett projekt där ett antal temperatursensorer behöver rensas till rimligt stabila data och detta är skitbra!

Ska sedan (när jag kommer hem, sitter vid stora tjejens fotbollsträning via mobilen) kolla om jag faktisk kan få lite extra bits på det vis, alltså om det är lagom med brus till att klämma ut lite extra bits.

Samtidig kan jag trilla ganska mycket på den utjämningsrutin jag skrev för att få stabila värden, ska se hur bra det blev senare ikväll.

Re: Lågpassfilter i mjukvara!

Postat: 12 april 2011, 19:54:09
av jesse
Jag läste i en bok om reglerteknik att detta filter (alltså "mitt" filter i första inlägget) även kallas Kalmanfilter. Det tog lite tid att fatta att det var samma sak, då de använde sig av ganska (onödigt) långa matematiska formler för att uttrycka det som skrivs med bara en rad kod.
Bild :wacko:

Här kommer högpassfiltret (blå kurva) (dvs indata (gul) minus utdata (orange) från lågpassfilter).
Av naturliga orsaker försvinner DC-komponenten, så resultatet hamnar kring noll-axeln:

Re: Lågpassfilter i mjukvara!

Postat: 12 april 2011, 20:02:29
av Gimbal
Nja ett kalmanfilter är väl ändå lite mer än en ett lågpassfilter.
Vad jag förstått (vilket inte är så mycket om just kalmanfilter, men ändå) är att kalmanfilter används för att mixa ihop flera olika signaler till en utsignal.

Re: Lågpassfilter i mjukvara!

Postat: 12 april 2011, 20:12:31
av jesse
Det kan hända att kalmanfilter går att applicera på fler dimensioner, men med en insignal så blir det samma formel, om man förenklar alla variabler och konstanter.

Kalman filter

Re: Lågpassfilter i mjukvara!

Postat: 12 april 2011, 20:42:45
av Gimbal
Nja igen, själva vitsen med ett kalmanfilter är (tror jag) iden att blanda flera signaler. Har man bara en signal så är det inte längre ett kalmanfilter.

Ett vanligt ex brukar vara en bil på en rak väg, vars hastighet och position fås från en gps med jämna mellanrum. Men om man nu vill veta positionerna mellan gps uppdateringarna då? Då sätter man upp en datormodell över hur bilen rör sig som då kan köras med högre frekvens, det får då bli signal två om GPS signalen är signal ett. Dessa två signaler kan då mixas med ett kalmanfilter på något lurigt sätt och ut får man position och hastighet med hög frekvens.

Re: Lågpassfilter i mjukvara!

Postat: 12 april 2011, 21:18:53
av jesse
Då har författaren till boken om reglersystem haft fel, för enligt den boken (minns ej titel) så var detta ett kalman-filter:

y(n) = 0.99 * y(n-1) + 0.009*x(n)

där y(n) är filter-utdata och x(n) är inkommande samples.

Re: Lågpassfilter i mjukvara!

Postat: 12 april 2011, 21:25:31
av Gimbal
Ja det låter mycket märkligt tycker jag, men å andra sidan så är jag kanske är ute och cyklar....

Re: Lågpassfilter i mjukvara!

Postat: 12 april 2011, 21:31:18
av jesse
Googla på "Kalman lowpass filter" ...

Re: Lågpassfilter i mjukvara!

Postat: 12 april 2011, 21:38:24
av Bonzo
y(n) = 0.99 * y(n-1) + 0.009*x(n) borde det inte vara typ y(n) = 0.99 * y(n-1) + 0.01*x(n) så att summan av filterkonstanterna = 1

Pröva i till exempel Excel (eller skriv ett program) med =0,99*B1+0,009*A2 i ruta B2 och fyll kolumn A med ettor, dra sedan ned formeln i ruta A2 så ser man att det inte fungerar om inte filterkonstanterna = 1.

Re: Lågpassfilter i mjukvara!

Postat: 12 april 2011, 22:43:14
av ToB
På vilket sätt menar du att det inte funkar?

Re: Lågpassfilter i mjukvara!

Postat: 12 april 2011, 23:07:04
av Gimbal
jesse skrev:Googla på "Kalman lowpass filter" ...
Ok, Jag gjorde en snabb-googling, hittar inget som stödjer att ett lowpass filter kan kallas för ett kalman filter.