Lågpassfilter i mjukvara!
Re: Lågpassfilter i mjukvara!
Borgen: Jo jag tänker lite som du. Det är därför jag tjafsar lite i frågan.
ahlsten: du sätter väl dt till 1, och det funkar väl lika bra som något för att räkna ut dc-förstärkningen(?).
ahlsten: du sätter väl dt till 1, och det funkar väl lika bra som något för att räkna ut dc-förstärkningen(?).
Re: Lågpassfilter i mjukvara!
Formellt sett inte.snigelen skrev:Så detta är inte heller ett lågpassfilter?
Frågan är ju hur man skall definiera lågpassfilter.
Det rimligaste är ju "släpper igenom låga frekvenser opåverkat". Men det implicerar ju mer eller mindre ett ideellt filter.
Kan man nöja sig med "har en fast dämpning upp till brytfrekvensen" så kan man kanske acceptera att DC-gain är mindre än 1, men för att filtret då ska fungera som önskat måste det antagligen kombineras med en förstärkare som gör att total DC-gain blir 1.
Om du har ett lågpassfilter med en brytfrekvens på 10 kHz som går att koppla in och ur med en switch, vad förväntar du dig händer med en signal på 100 Hz när du kopplar in filtret? Du kan väl inte mena att du förväntar dig att 100 Hz-signalen dämpas när du kopplar in lågpassfiltret?
Re: Lågpassfilter i mjukvara!
Nu har du målat in dig i ett hörn. Det är väl självklart att ett lågpassfilter kallas lågpassfilter även om det har en fast dämpning av DC.
Re: Lågpassfilter i mjukvara!
Jag upprepar frågan: Om du har ett lågpassfilter med en brytfrekvens på 10 kHz som går att koppla in och ur med en switch, vad förväntar du dig händer med en signal på 100 Hz när du kopplar in filtret? Du kan väl inte mena att du förväntar dig att 100 Hz-signalen dämpas när du kopplar in lågpassfiltret?bearing skrev:Nu har du målat in dig i ett hörn. Det är väl självklart att ett lågpassfilter kallas lågpassfilter även om det har en fast dämpning av DC.
Re: Lågpassfilter i mjukvara!
Just det. Jag har inte sett någon definition som slagit igenom och blivit allrådande i alla läger.Nerre skrev:Frågan är ju hur man skall definiera lågpassfilter.
Det är din åsikt/tolkning. Inte t.ex min.Nerre skrev:Det rimligaste är ju "släpper igenom låga frekvenser opåverkat". Men det implicerar ju mer eller mindre ett ideellt filter.
Jodå. Det kan den väl. Jag tycker inte filtret är fullständigt specificerat. Men man kan ju prova och se hur det beter sig.Nerre skrev:Jag upprepar frågan: Om du har ett lågpassfilter med en brytfrekvens på 10 kHz som går att koppla in och ur med en switch, vad förväntar du dig händer med en signal på 100 Hz när du kopplar in filtret? Du kan väl inte mena att du förväntar dig att 100 Hz-signalen dämpas när du kopplar in lågpassfiltret?
Lägger du till att det t.ex är ett elliptiskt filter kan man ju vara ganska säker på att förstärkningen inte är ett genom hela passbandet. Men det dyker rackarns snabbt vid brytfrekvensen

Re: Lågpassfilter i mjukvara!
Jag tycker liksom att ordet gör definitionen: Lågpass
"Låga" frekvenser "passerar igenom" medans höga inte gör det.
Då blir frågan vad som räknas som "passerar igenom". Jag tror inte särskilt många håller med om att "dämpas 6 dB" är samma sak som "passerar igenom".
"Låga" frekvenser "passerar igenom" medans höga inte gör det.
Då blir frågan vad som räknas som "passerar igenom". Jag tror inte särskilt många håller med om att "dämpas 6 dB" är samma sak som "passerar igenom".
Re: Lågpassfilter i mjukvara!
För att ytterligare förklara varför filtret får dämpa insignalen i passbandet:
Definition av brytfrekvens:
Med brytfrekvens menas vanligen den frekvens där insignalen dämpas med 3dB. Det innebär att endast halva effekten av insignalen kommer infinna sig på utgången. Andra definitioner relativt erfoderlig storlek på dämpningen finns för enskilda användningsområden.
Med den definitionen är det självklart att passbandet får dämpas.
Varför en definition på brytfrekvensen som relaterar till dämpningen:
Om vi tittar på hur RC- och RL-nät fungerar så kan de inte ha dämpning 0dB i mer än en oändligt liten punkt. Rita diagrammen för ideala RC/RL-nät så får du se. Om man tar hänsyn till den inneboende resistansen (om än oftast relativt sett mycket liten) i kondensatorn/induktorn får man garanterat en spänningsdelning. Att vi sedan kan använda oss av en OPAMP för att jämna ut kurvan gör inte saken så mycket bättre. Det finns alltid ett frekvensberoende i komponenterna vilket gör att att vi inte kan ha dämpningen 0dB i mer än en oändligt liten punkt i ett enpoligt filter, två punkter för ett tvåpoligt...
När man letar efter ett lämpligt filter tittar man på passbandets brytfrekvenser, ordningstal, fasvridning och vilken typ av filter det rör sig om i fall man är intresserad av eventuellt rippel i passbandet med mera. Så länge som utsignalen från filtret ligger inom hanterbara gränser är det okej, behövs det sätter man in en förstarkare. Inom elektroniken måste man alltid använda sig av kompromisser.
Exempel på olika typer av normerade filter http://en.wikipedia.org/wiki/Elliptic_f ... ar_filters
Att tjafsa om dämpning 0dB i passbandet är därför ointressant.
Definition av brytfrekvens:
Med brytfrekvens menas vanligen den frekvens där insignalen dämpas med 3dB. Det innebär att endast halva effekten av insignalen kommer infinna sig på utgången. Andra definitioner relativt erfoderlig storlek på dämpningen finns för enskilda användningsområden.
Med den definitionen är det självklart att passbandet får dämpas.
Varför en definition på brytfrekvensen som relaterar till dämpningen:
Om vi tittar på hur RC- och RL-nät fungerar så kan de inte ha dämpning 0dB i mer än en oändligt liten punkt. Rita diagrammen för ideala RC/RL-nät så får du se. Om man tar hänsyn till den inneboende resistansen (om än oftast relativt sett mycket liten) i kondensatorn/induktorn får man garanterat en spänningsdelning. Att vi sedan kan använda oss av en OPAMP för att jämna ut kurvan gör inte saken så mycket bättre. Det finns alltid ett frekvensberoende i komponenterna vilket gör att att vi inte kan ha dämpningen 0dB i mer än en oändligt liten punkt i ett enpoligt filter, två punkter för ett tvåpoligt...
När man letar efter ett lämpligt filter tittar man på passbandets brytfrekvenser, ordningstal, fasvridning och vilken typ av filter det rör sig om i fall man är intresserad av eventuellt rippel i passbandet med mera. Så länge som utsignalen från filtret ligger inom hanterbara gränser är det okej, behövs det sätter man in en förstarkare. Inom elektroniken måste man alltid använda sig av kompromisser.
Exempel på olika typer av normerade filter http://en.wikipedia.org/wiki/Elliptic_f ... ar_filters
Att tjafsa om dämpning 0dB i passbandet är därför ointressant.
Senast redigerad av Borgen 19 april 2011, 15:28:34, redigerad totalt 1 gång.
Re: Lågpassfilter i mjukvara!
Om kravet för konstruktionen är en brytfrekvens relativt mer än 6dB dämpning så är det det.Nerre skrev:Jag tror inte särskilt många håller med om att "dämpas 6 dB" är samma sak som "passerar igenom".
Inte helt ovanligt är att man man pratar om brytfrekvensens dämpning som relativt den normerade dämpningen som är 0dB. Att den faktiska dämpningen är större får man i så fall läsa sig fram i databladet och räkna ut vad den faktiska dämpningen i så fall blir. Räknar man i dB är det vanlig addition/subtraktion man då räknar med.
Re: Lågpassfilter i mjukvara!
Nu har jag kollat lite på ditt filter igen, och det är ju enkelt och bra.
Det har ju ett nollställe i origo och en pol i 1-2^(-k) i z-planet. Men för att få bättre undertryckning av höga frekvenser tänkte jag man kunde flytta nollstället till z = -1 i stället, utan att göra avkall på enkelheten i filtret. Det fås genom att lägga till föregående insignal och skala output med ett extra shift för att få DC-förstärkning 1 (för det skall väl ett lågpassfilter ha
).
Skillnaderna och likheter:
- Bättre dämpning av höga frekvenser
- Ungefär samma bandbredd (något lägre för k=1 och 2, men annars ungefär samma)
- Ungefär samma stigtid.
- Fasen kommer ett gå hela vägen till -90 gr eftersom det inte längre är minimum fas.
En plot av frekvensfunktionen för k=1,...,8 för orginalfiltret och med min modifikation (de som dyker vid höga f).
Det har ju ett nollställe i origo och en pol i 1-2^(-k) i z-planet. Men för att få bättre undertryckning av höga frekvenser tänkte jag man kunde flytta nollstället till z = -1 i stället, utan att göra avkall på enkelheten i filtret. Det fås genom att lägga till föregående insignal och skala output med ett extra shift för att få DC-förstärkning 1 (för det skall väl ett lågpassfilter ha

Skillnaderna och likheter:
- Bättre dämpning av höga frekvenser
- Ungefär samma bandbredd (något lägre för k=1 och 2, men annars ungefär samma)
- Ungefär samma stigtid.
- Fasen kommer ett gå hela vägen till -90 gr eftersom det inte längre är minimum fas.
Kod: Markera allt
#define FILTER_SHIFT 4 // Parameter K
// int32_t = Specify 32-bit integer
// int16_t Specify 16-bit integer
int32_t filter_reg; // Delay element – 32 bits
int16_t filter_input, old_input = 0; // Filter input – 16 bits
int16_t filter_output ; // Filter output – 16 bits
// Update filter with current sample.
filter_reg = filter_reg - ( filter_reg >> FILTER_SHIFT) + filter_input + old_input;
// Save old input
old_input = filter_input
// Scale output for unity gain.
output = filter_reg >> (FILTER_SHIFT + 1);
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Lågpassfilter i mjukvara!
Intressant. Tyvärr hänger jag inte med i terminologin (origo, pol etc.. och vadå z-planet?) Det var längesen jag läste om sånt. Kan ju vara intressant att experimentera lite. Hur blir det om du gör samma sak fast med fyra samples istället för två (jag tänkte skriva tre, men det bli sån ojämn division då).... dvs man sparar även older_input = old_input; och oldest_input = older_input; och adderar alla fyra 
