Switches 2.0
Dependencies: mbed QEI HIDScope BiQuad4th_order biquadFilter MODSERIAL FastPWM
Filter/FilterDesign.cpp@9:0e838367ab6a, 2019-11-01 (annotated)
- Committer:
- JonaVonk
- Date:
- Fri Nov 01 10:23:02 2019 +0000
- Revision:
- 9:0e838367ab6a
- Child:
- 10:cbcb35182ef1
deze werkt bijna
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JonaVonk | 9:0e838367ab6a | 1 | #include "FilterDesign.h" |
JonaVonk | 9:0e838367ab6a | 2 | #include "BiQuad.h" |
JonaVonk | 9:0e838367ab6a | 3 | #include "BiQuad4.h" |
JonaVonk | 9:0e838367ab6a | 4 | |
JonaVonk | 9:0e838367ab6a | 5 | |
JonaVonk | 9:0e838367ab6a | 6 | |
JonaVonk | 9:0e838367ab6a | 7 | // Notch filter on 50 Hz |
JonaVonk | 9:0e838367ab6a | 8 | double nb0 = 0.999103206817809; |
JonaVonk | 9:0e838367ab6a | 9 | double nb1 = -1.994263409725146; |
JonaVonk | 9:0e838367ab6a | 10 | double nb2 = 0.999103206817809; |
JonaVonk | 9:0e838367ab6a | 11 | double na1 = -1.994263409725146; |
JonaVonk | 9:0e838367ab6a | 12 | double na2 = 0.998206413635618; |
JonaVonk | 9:0e838367ab6a | 13 | |
JonaVonk | 9:0e838367ab6a | 14 | // 4th order Butterworth High pass 9 Hz |
JonaVonk | 9:0e838367ab6a | 15 | double hpb0 = 0.862550850547179; |
JonaVonk | 9:0e838367ab6a | 16 | double hpb1 = -3.45020340218871; |
JonaVonk | 9:0e838367ab6a | 17 | double hpb2 = 5.17530510328307; |
JonaVonk | 9:0e838367ab6a | 18 | double hpb3 = -3.45020340218871; |
JonaVonk | 9:0e838367ab6a | 19 | double hpb4 = 0.862550850547179; |
JonaVonk | 9:0e838367ab6a | 20 | double hpa1 = -3.70453845798319; |
JonaVonk | 9:0e838367ab6a | 21 | double hpa2 = 5.15648369715094; |
JonaVonk | 9:0e838367ab6a | 22 | double hpa3 = -3.1957974837626; |
JonaVonk | 9:0e838367ab6a | 23 | double hpa4 = 0.743993969858123; |
JonaVonk | 9:0e838367ab6a | 24 | |
JonaVonk | 9:0e838367ab6a | 25 | //4th order Butterworth low pass 10 Hz |
JonaVonk | 9:0e838367ab6a | 26 | double lpb0 = 0.0000132937288987445 ; |
JonaVonk | 9:0e838367ab6a | 27 | double lpb1 = 0.0000531749155949779 ; |
JonaVonk | 9:0e838367ab6a | 28 | double lpb2 = 0.0000797623733924668; |
JonaVonk | 9:0e838367ab6a | 29 | double lpb3 = 0.0000531749155949779; |
JonaVonk | 9:0e838367ab6a | 30 | double lpb4 = 0.0000132937288987445; |
JonaVonk | 9:0e838367ab6a | 31 | double lpa1 = -3.67172908916193; |
JonaVonk | 9:0e838367ab6a | 32 | double lpa2 = 5.06799838673419; |
JonaVonk | 9:0e838367ab6a | 33 | double lpa3 = -3.11596692520174; |
JonaVonk | 9:0e838367ab6a | 34 | double lpa4 = 0.719910327291871; |
JonaVonk | 9:0e838367ab6a | 35 | |
JonaVonk | 9:0e838367ab6a | 36 | // Multiplication with the gain |
JonaVonk | 9:0e838367ab6a | 37 | double gain = 10.00000; |
JonaVonk | 9:0e838367ab6a | 38 | |
JonaVonk | 9:0e838367ab6a | 39 | BiQuad notch50(nb0, nb1, nb2, na1, na2); |
JonaVonk | 9:0e838367ab6a | 40 | BiQuad4 highpass(hpb0, hpb1, hpb2, hpb3, hpb4, hpa1, hpa2, hpa3, hpa4); |
JonaVonk | 9:0e838367ab6a | 41 | BiQuad4 lowpass(lpb0, lpb1, lpb2, lpb3, lpb4, lpa1, lpa2, lpa3, lpa4); |
JonaVonk | 9:0e838367ab6a | 42 | |
JonaVonk | 9:0e838367ab6a | 43 | double FilterDesign(double u) |
JonaVonk | 9:0e838367ab6a | 44 | { |
JonaVonk | 9:0e838367ab6a | 45 | double y_n = notch50.step(u); // First the notchfilter |
JonaVonk | 9:0e838367ab6a | 46 | double y_hp = highpass.step(y_n); // Secondly the highpassfilter |
JonaVonk | 9:0e838367ab6a | 47 | double y_abs = abs(y_hp); // Make the signal values absolute |
JonaVonk | 9:0e838367ab6a | 48 | double y_lp = lowpass.step(y_abs); // Then a lowpass filter |
JonaVonk | 9:0e838367ab6a | 49 | double y_gain = y_lp*gain; // Multiply by a gain |
JonaVonk | 9:0e838367ab6a | 50 | |
JonaVonk | 9:0e838367ab6a | 51 | return y_gain; // Return this filtered value |
JonaVonk | 9:0e838367ab6a | 52 | } |