Handboek · hoofdstuk 21Filters en signaalverwerking
Ruis beperken terwijl betekenis en reactietijd behouden blijven
Een glad sensorsignaal kan fout zijn door vertraging of aliasing. Je bouwt RC-filters op, leest hun amplitude en fase en kiest digitale verwerking die bij de fysica en de alarmen van Habitat past.

- Je leidt RC-laag- en hoogdoorlaat af met complexe impedanties.
- Je rekent amplitudes in decibel en leest Bodecurves.
- Je verklaart Fouriercomponenten en aliasing met sampletijdstippen.
- Je vergelijkt gemiddelde en exponentieel filter op ruis en vertraging.
- Je ontwerpt een sensorpad dat alarmen en traceerbaarheid behoudt.
Een sensor meet ook zijn omgeving
Een NTC-signaal bevat nuttige temperatuurverandering, thermische vertraging, ruis en soms periodieke storing. Schrijf . Een filter kan alleen scheiden als de componenten een verschillend patroon of frequentiegebied hebben. Een trage echte verandering verwijderen maakt het signaal schoner en tegelijk minder juist.
e06 gaf de NTC-ruis als 1,2 ADC-stap, ongeveer 0,10 K per meting. Een ijkfout blijft na middelen bestaan. De CO₂-waarschuwing gebruikt een minuutgemiddelde; de 5000 ppm-grens blijft op losse geldige metingen. Filterontwerp begint daarom bij doel en maximale detectietijd.
RC-laagdoorlaat uit Kirchhoff
Bij een onbelaste RC-laagdoorlaat loopt door R dezelfde stroom als in C. . Daardoor . De tijdconstante is τ = RC. Na een spanningssprong is ; snelle veranderingen worden beperkt doordat C niet onmiddellijk van lading kan veranderen.
Voor een sinus mag je met complexe impedantie rekenen: . De spanningsdeler wordt . Een laagdoorlaat geeft gelijkspanning vrijwel door, zolang ingang en belasting aan de modelaannames voldoen.
De bestaande batterijdeler heeft 64 Hz
- A3: 100 kΩ boven, 33 kΩ onder, 100 nF over de onderste weerstand; de spanningsbron is voor wisselsignalen ideaal.
- De genoemde filter- en signaalkenmerken.
- 1De DC-verhouding is 33/(100+33) = 0,24812. Voor een kleine AC-storing ziet C de Théveninweerstand 100 kΩ parallel 33 kΩ = 24,812 kΩ.
- 2τ = RthC = 2,481 ms; fc = 1/(2πτ) = 64,144 Hz.
- 3Een bronimpedantie of ADC-belasting kan dit verschuiven; controleer ook settling wanneer de ADC van kanaal wisselt.
Kantelfrequentie is geen harde grens
De amplitude is en de fase . Bij is de amplitude en de fase −45°. Een component wordt daar dus niet afgesneden maar circa 29 % kleiner.
Bij zeer hoge frequentie wordt . Iedere vertienvoudiging kost een factor tien in spanning. De staprespons en sinusrespons beschrijven hetzelfde systeem in twee domeinen; meer afvlakking betekent een tragere reactie.
Hoogdoorlaat: gelijkspanning blokkeren
Neem de uitgang over R in een seriekring van C en R. . De amplitude is ; fase . Gelijkspanning wordt nul; hoge frequenties gaan door.
Een stap veroorzaakt aanvankelijk een puls die uitdooft. Een hoogdoorlaat kan een ECG-baseline beperken, maar kan ook een langzame echte verandering verwijderen. Hij lost geen hoogfrequente storing op.
Decibel rekent verhoudingen, geen losse volt
- Vergelijk een uitgangsspanning met ingang bij gelijke impedanties; voorbeeldverhouding 0,10.
- De genoemde filter- en signaalkenmerken.
- 1Voor vermogen: L = 10 log10(Puit/Pin). Bij gelijke impedanties geldt P∝U², dus L = 20 log10(Uuit/Uin).
- 20,10 in amplitude geeft −20 dB; 0,50 geeft −6,02 dB; 1/√2 geeft −3,01 dB en halveert vermogen.
- 3Twee onafhankelijke cascades vermenigvuldigen amplitudes, dus dB-waarden tellen op. Twee maal −20 dB geeft 0,01 amplitude = −40 dB.
Bode: amplitude én fase lezen
Een Bodeplot heeft een logaritmische frequentieas. Een eerste-ordelaagdoorlaat benadert 0 dB ver onder fc en een helling van −20 dB per decade erboven. De fase loopt van 0° naar −90°. Een hoogdoorlaat loopt van +20 dB/decade naar 0 dB en van +90° naar 0°.
Bij cascades tel je dB en fase. Twee identieke RC-trappen geven op hun eigen fc samen −6,02 dB en −90°, niet −3 dB. Een tweede-ordefilter kan een andere vorm hebben, afhankelijk van demping; twee simpele RC's zijn niet automatisch een Butterworthfilter.
Een filter in een regelkring voegt fasevertraging toe. De gesloten lus kan daardoor minder stabiel worden. e39's sensor heeft al 60 s thermische vertraging; daarboven nog tientallen seconden middelen vergt een nieuwe luscontrole.
PWM-storing op A3
- PWM van de Mega: f = 16 MHz/(64·510) = 490,196 Hz; A3-filter fc = 64,144 Hz.
- De genoemde filter- en signaalkenmerken.
- 1Amplitudeoverdracht bij de fundamentele PWM-frequentie: 0,1297, dus −17,74 dB.
- 2Een vóór dit filter aanwezige sinuscomponent 100 mV wordt ongeveer 12,97 mV. Een echte blokvorm bevat ook harmonischen.
- 3De ±10 mV uit e07 is al de residuele A3-rimpel na het bestaande filter. Daar de RC-onderdrukking nogmaals op toepassen zou dubbel rekenen.
Fourier: een signaal als som van frequenties
Een periodiek signaal kan worden beschreven als DC plus sinussen en cosinussen op f0, 2f0, 3f0, … . Een symmetrische blokgolf bevat oneven harmonischen met amplitudes die als 1/n dalen. Een andere duty-cycle verandert ook de harmonische verdeling.
Een lineair tijdinvariant filter verandert elke sinus apart in amplitude en fase. Hun som levert de uitgang. Dat verklaart waarom een RC een blokgolf afrondt: hoge harmonischen worden veel sterker verzwakt dan de grondtoon.
Een DFT/FFT van een eindige reeks heeft frequentieafstand fs/N. Een niet-geheel aantal perioden in het meetvenster verspreidt energie over meerdere bins: spectrale lekkage. Een venster helpt bij inspectie, maar maakt geen verdwenen frequentie-informatie terug.
Nyquist: bemonstering maakt frequenties ononderscheidbaar
Een sinus gemeten op heeft samples . Een frequentie f + mfs geeft exact dezelfde samples, want de extra fase is 2πmk. Daarom kan je uit de monsters alleen een frequentie binnen de gekozen Nyquistband terugvinden.
Voor een bandbegrensd basissignaal tot fmax is fs > 2fmax nodig; op de grens kan een bepaalde fase zelfs overal nul geven. Praktische filters hebben een overgangsband, dus kies marge. Een digitaal filter achter de ADC kan al samengevallen frequenties niet opnieuw uit elkaar halen.
490,196 Hz wordt een trage golf
- Bemonstering fs = 1 Hz; sinuscomponent op de exacte Mega-PWM-frequentie.
- De genoemde filter- en signaalkenmerken.
- 1Kies m = 490. falias = |490,196078−490·1| = 0,196078 Hz.
- 2De schijnperiode is 1/falias = 5,10 s. Een schijnbare langzame verandering kan daardoor in een regellus terechtkomen.
- 3De echte code vergelijkt beide monsterreeksen; zij zijn op numerieke afronding na gelijk. Een PWM-blok bevat meer harmonischen en kan een ingewikkelder patroon geven.
Analoog filter, oversampling en decimatie
Een traag logtempo hoeft geen traag ADC-tempo te betekenen. Neem eerst voldoende snelle monsters, beperk digitale bandbreedte en geef pas daarna bijvoorbeeld één gemiddelde per seconde door. Dat laatste verlagen van het tempo heet decimatie.
Anti-aliasontwerp specificeert toegelaten rimpel in de passband en maximaal residu in de stopband. Een RC met 64 Hz is een bruikbare bestaande A3-voortrap, maar niet automatisch voldoende voor sampletempo 1 Hz. Sample sneller of gebruik aanvullende geschikte analoge beperking. PWM-harmonischen en breedbandruis blijven onderdeel van de controle.
Analog Devices beschrijft waarom ingangfilters nodig zijn. Voor INA226-stroommeting geldt bovendien de interne conversie-/middeltijd uit i30, geen nieuw A3-schema. Verschillende sensoren krijgen verschillende signaalpaden.
Voortschrijdend gemiddelde: ruis versus groepsvertraging
- N = 10 monsters, Δt = 1 s, onafhankelijke witte ruis σ = 0,10 K.
- De genoemde filter- en signaalkenmerken.
- 1y[k] = (x[k]+…+x[k−9])/10. Onafhankelijke varianties tellen op: var(y) = Nσ²/N² = σ²/N.
- 2σy = 0,10/√10 = 0,03162 K. Correlatie of een ijkfout verlaagt niet volgens deze regel.
- 3Het midden van het venster ligt (N−1)Δt/2 = 4,5 s terug. Een stap heeft tien nieuwe monsters nodig om volledig in het venster te liggen.
Exponentieel filter afleiden
Een eerste-ordeproces met constant x gedurende een sampleinterval heeft exact . Definieer α = 1−exp(−Δt/τ). Zo blijft de tijdconstante betekenis houden wanneer Δt verandert.
Voor witte ruis geldt in rust . Oplossen geeft . Dit voorspelt de statistische spreiding, geen garantie op iedere afzonderlijke meting.
Filters vergelijken op een bekende modelstap
De voorbeeldreeks start om 12:00 UTC+1. De echte temperatuur springt na 40 s van 20 naar 21 °C; de sensorruis is synthetisch met vaste seed. Het voortschrijdende gemiddelde begint pas na een volledig venster. De code toont echte uitvoer en de ononderscheidbaarheid van aliasmonsters.
# filters.py — modelreeks; t=0 bij 12:00 UTC+1, geen echte sensormetingimport numpy as npdt, tau, N = 1.0, 5.0, 10t = np.arange(0,121)*dtwaar = np.where(t<40,20.0,21.0)x = waar + np.random.default_rng(21).normal(0,0.10,len(t))alpha = 1-np.exp(-dt/tau)y = np.empty_like(x)y[0] = x[0]for k in range(1,len(x)): y[k] = y[k-1]+alpha*(x[k]-y[k-1])# causaal, pas na volledig venster een geldig gemiddeldema = np.convolve(x,np.ones(N)/N,mode="valid")print(f"alpha {alpha:.6f}; theoretische witte-ruisfactor {np.sqrt(alpha/(2-alpha)):.4f}")print(f"ruis standaardafwijking N={N}: {0.10/np.sqrt(N):.4f} K")print(f"vertraging gemiddelde: {(N-1)*dt/2:.1f} s")for s in (40,45,50,60): print(f"t={s:3d} s: ruw {x[s]:.4f}, exponentieel {y[s]:.4f} °C")fs, f = 1.0, 16e6/64/510sample = np.sin(2*np.pi*f*np.arange(21)/fs)laag = np.sin(2*np.pi*(f-round(f/fs)*fs)*np.arange(21)/fs)print(f"PWM {f:.6f} Hz wordt {abs(f-round(f/fs)*fs):.6f} Hz")print(f"zelfde monsters: maximale afwijking {max(abs(sample-laag)):.2e}")alpha 0.181269; theoretische witte-ruisfactor 0.3157 ruis standaardafwijking N=10: 0.0316 K vertraging gemiddelde: 4.5 s t= 40 s: ruw 21.0189, exponentieel 20.1790 °C t= 45 s: ruw 20.9712, exponentieel 20.6924 °C t= 50 s: ruw 20.9732, exponentieel 20.8679 °C t= 60 s: ruw 20.9278, exponentieel 20.9458 °C PWM 490.196078 Hz wordt 0.196078 Hz zelfde monsters: maximale afwijking 6.78e-12
Een NTC-filter met vijf seconden tijdconstante
- Δt = 1 s, τ = 5 s; onafhankelijke σin = 0,10 K; sensor zelf heeft nog een thermische tijdconstante van 60 s.
- De genoemde filter- en signaalkenmerken.
- 1α = 1−exp(−1/5) = 0,181269. De theoretische ruisfactor is 0,3157, dus σuit ≈ 0,0316 K.
- 2Zonder extra sensorvertraging bereikt een gefilterde stap 95 % na −5 ln(0,05) = 14,98 s.
- 3De 60 s-sensor en het 5 s-filter staan in cascade. Een totale detectietijd kan je niet uit het filter alleen halen; simuleer beide.
Een RC meten zonder de opstelling te belasten
- functiegenerator op veilige laagspanning
- R = 10 kΩ, C = 1 µF
- oscilloscoop met hoge ingangsimpedantie
- 1Bouw de laagdoorlaat en controleer R/C.
- 2Meet ingang en uitgang bij 1, 16, 160 en 1600 Hz met gelijke ingangs-amplitude.
- 3Bepaal Uuit/Uin en fase uit tijdverschil: φ = 360°·Δt/T, met teken.
- 4Vergelijk met fc≈15,9 Hz; onderzoek daarna een eindige uitgangsbelasting.
Een goed opgenomen signaal kan toch de verkeerde frequentie tonen
Een nauwkeurige ADC bewaart alleen de waarde op zijn meettijdstippen. Daardoor kan een spectaculair rustige meetreeks nog een snelle storing als langzaam gedrag weergeven. Dat is een informatieprobleem, niet alleen een probleem van sensorresolutie.
De technische uitleg van Analog Devices over bandbegrensde bemonstering verbindt de samplekeuze met het frequentiegebied dat je wil bewaren. Voor Habitat is de praktische les eenvoudig: controleer bij de logger ook het analoge ingangspad, de feitelijke ADC-tijdstippen en het PWM-schema. Een mooi grafiekprogramma herstelt een verkeerd opgenomen signaal niet.
Filterregels met geldigheidsvoorwaarden
| symbool | betekenis | eenheid |
|---|---|---|
| effectieve bronweerstand | Ω | |
| capaciteit | F |
| symbool | betekenis | eenheid |
|---|---|---|
| relatief niveau | dB |
| symbool | betekenis | eenheid |
|---|---|---|
| aantal onafhankelijke monsters | 1 |
| symbool | betekenis | eenheid |
|---|---|---|
| sampleinterval | s | |
| tijdconstante | s |
| Keuze | Winst | Prijs |
|---|---|---|
| analoog RC | storing vóór ADC | fase, settling, beperkte filterorde |
| gemiddelde N | eenvoudig, σ/√N bij witte ruis | (N−1)Δt/2 vertraging |
| exponentieel | weinig geheugen, instelbare τ | stapvertraging, init nodig |
| decimatie | minder logdata | eerst digitale bandbreedte beperken |
Het geheel: filters in het brein
e07 beschreef sinus en fasor, i25 de ADC/PWM. e06 scheidde ruis van ijkonzekerheid. Hier kies je een uitvoerbaar signaalpad. e40 zal sensoren samenvoegen: filtering lost een foutieve sensor niet op en maakt twee afgeleide signalen niet onafhankelijk.
Complexe overdracht en fase.
PWM en samplevalkuil.
Meetruis en toestandsschatting.
Filterfase en alarmvertraging.
A3 behoudt 100 kΩ/33 kΩ plus 100 nF, effectieve fc = 64,144 Hz. Voor de NTC is Δt = 1 s, τfilter = 5 s, α = 0,181269 een getoetst ontwerpvoorstel, geen wijziging van de sensorvertraging van 60 s. Log ruwe geldige en gefilterde waarde naast elkaar. De 5000 ppm-CO₂-grens en sensorvaliditeit blijven afzonderlijk beoordeeld.
In het kort
- RC-filters hebben een geleidelijke amplitudeoverdracht en een bijbehorende fase.
- Decibel maakt een verhouding logaritmisch; 20 log bij amplitude en 10 log bij vermogen.
- Fourier beschrijft de frequentie-inhoud; de samplefrequentie bepaalt welke informatie ononderscheidbaar wordt.
- Analoog anti-aliasfilteren gebeurt vóór de ADC; digitaal filteren kan daarna bandbreedte en ruis beperken.
- Gemiddelden en exponentiële filters vragen een kwantitatieve afweging tussen ruis en detectietijd.
Wat je nu kent
- kantelfrequentie
- Frequentie waarbij een enkel RC-filter 1/√2 van de passbandamplitude geeft.
- aliasing
- Ononderscheidbaarheid van verschillende bronfrequenties na bemonstering.
- decimatie
- Verlagen van een digitale samplefrequentie na passende bandbreedtebeperking.
- Bode-diagram
- Amplitude in dB en fase tegen logaritmische frequentie.
- groepsvertraging
- Tijdsvertraging van de omhullende van componenten in een bepaald frequentiegebied.