EMG filter. Waarden nog niet perfekt.

Dependencies:   HIDScope mbed

Committer:
janwillembisschop
Date:
Fri Oct 28 08:55:20 2016 +0000
Revision:
1:70dc835f3a37
Parent:
0:2956e3501f8a
EMG filter met goede waarden

Who changed what in which revision?

UserRevisionLine numberNew contents of line
janwillembisschop 0:2956e3501f8a 1 #include "FilterDesign.h"
janwillembisschop 0:2956e3501f8a 2 #include "Filter.h"
janwillembisschop 0:2956e3501f8a 3
janwillembisschop 1:70dc835f3a37 4 // Notch 50 Hz
janwillembisschop 0:2956e3501f8a 5 double v1_50 = 0, v2_50 = 0;
janwillembisschop 1:70dc835f3a37 6 const double a1_50 = -1.53713228931, a2_50 = 0.90250000000;
janwillembisschop 1:70dc835f3a37 7 const double b0_50 = 1.00000000000, b1_50 = -1.61803398875, b2_50 = 1.00000000000;
janwillembisschop 1:70dc835f3a37 8 const double gain_50 = 0.95500000000;
janwillembisschop 1:70dc835f3a37 9
janwillembisschop 1:70dc835f3a37 10 // Notch 100 Hz
janwillembisschop 1:70dc835f3a37 11 double v1_100 = 0, v2_100 = 0;
janwillembisschop 1:70dc835f3a37 12 const double a1_100 = -0.58713228931, a2_100 = 0.90250000000;
janwillembisschop 1:70dc835f3a37 13 const double b0_100 = 1.00000000000, b1_100 = -0.61803398875, b2_100 = 1.00000000000;
janwillembisschop 1:70dc835f3a37 14 const double gain_100 = 0.95200000000;
janwillembisschop 0:2956e3501f8a 15
janwillembisschop 1:70dc835f3a37 16 // Notch 200 Hz
janwillembisschop 1:70dc835f3a37 17 double v1_200 = 0, v2_200 = 0;
janwillembisschop 1:70dc835f3a37 18 const double a1_200 = 1.53713228931, a2_200 = 0.90250000000;
janwillembisschop 1:70dc835f3a37 19 const double b0_200 = 1.00000000000, b1_200 = 1.61803398875, b2_200 = 1.00000000000;
janwillembisschop 1:70dc835f3a37 20 const double gain_200 = 0.95500000000;
janwillembisschop 1:70dc835f3a37 21
janwillembisschop 1:70dc835f3a37 22 // High pass 50 Hz
janwillembisschop 1:70dc835f3a37 23 double v1_HP = 0, v2_HP = 0;
janwillembisschop 1:70dc835f3a37 24 const double a1_HP = -1.47413760026, a2_HP = 0.60062500000;
janwillembisschop 1:70dc835f3a37 25 const double b0_HP = 1.00000000000, b1_HP = -2.00000000000, b2_HP = 1.00000000000;
janwillembisschop 1:70dc835f3a37 26 const double gain_HP = 0.77000000000;
janwillembisschop 1:70dc835f3a37 27
janwillembisschop 1:70dc835f3a37 28 // Low pass 0.7 Hz
janwillembisschop 0:2956e3501f8a 29 double v1_LP = 0, v2_LP = 0;
janwillembisschop 1:70dc835f3a37 30 const double a1_LP = -1.80000000000, a2_LP = 0.81000000000;
janwillembisschop 0:2956e3501f8a 31 const double b0_LP = 1.00000000000, b1_LP = 2.00000000000, b2_LP = 1.00000000000;
janwillembisschop 1:70dc835f3a37 32 const double gain_LP = 0.0025100000000;
janwillembisschop 0:2956e3501f8a 33
janwillembisschop 0:2956e3501f8a 34 double FilterDesign(double u)
janwillembisschop 0:2956e3501f8a 35 {
janwillembisschop 0:2956e3501f8a 36
janwillembisschop 0:2956e3501f8a 37 double y_50 = Filter(u,v1_50,v2_50,a1_50,a2_50,b0_50,b1_50,b2_50,gain_50);
janwillembisschop 1:70dc835f3a37 38 double y_100 = Filter(y_50,v1_100,v2_100,a1_100,a2_100,b0_100,b1_100,b2_100,gain_100);
janwillembisschop 1:70dc835f3a37 39 double y_200 = Filter(y_100,v1_200,v2_200,a1_200,a2_200,b0_200,b1_200,b2_200,gain_200);
janwillembisschop 1:70dc835f3a37 40 double y_HP = Filter(y_200,v1_HP,v2_HP,a1_HP,a2_HP,b0_HP,b1_HP,b2_HP,gain_HP);
janwillembisschop 0:2956e3501f8a 41 double y_abs = fabs(y_HP);
janwillembisschop 0:2956e3501f8a 42 double y_LP = Filter(y_abs,v1_LP,v2_LP,a1_LP,a2_LP,b0_LP,b1_LP,b2_LP,gain_LP);
janwillembisschop 1:70dc835f3a37 43
janwillembisschop 1:70dc835f3a37 44 double y = y_LP;
janwillembisschop 0:2956e3501f8a 45
janwillembisschop 0:2956e3501f8a 46 return y;
janwillembisschop 0:2956e3501f8a 47
janwillembisschop 0:2956e3501f8a 48 }