werkend filter: 50 hz notch 20 hz hoogdoorlaat 80 hz laagdoorlaat geabsoluteerd vermenigvuldigd met 10

Dependencies:   HIDScope mbed-dsp mbed

Fork of Project5-filtering2 by Dominique Clevers

Revision:
12:8a30e43337bb
Parent:
11:a598cb27907f
Child:
13:1f0ac2425368
--- a/main.cpp	Thu Oct 16 09:47:54 2014 +0000
+++ b/main.cpp	Thu Oct 16 10:11:07 2014 +0000
@@ -25,9 +25,14 @@
 float notch_states[4];
 arm_biquad_casd_df1_inst_f32 highpass;
 //constants for 5Hz highpass
-float highpass_const[] = {0.8948577513857248, -1.7897155027714495, 0.8948577513857248, 0.8008009266036016};
+float highpass_const[] = {0.8948577513857248, -1.7897155027714495, 0.8948577513857248, -1.7786300789392977, 0.8008009266036016};
 //state values
 float highpass_states[4];
+//constants for 80Hz lowpass
+arm_biquad_casd_df1_inst_f32 lowpass;
+float lowpass_const[] = {0.6389437261127493, 1.2778874522254986, 0.6389437261127493, 1.1429772843080919, 0.41279762014290533};
+//state values
+float lowpass_states[4];
 
  
 void looper()
@@ -39,6 +44,7 @@
     float filtered_emg_abs;
     float filtered_emg_env;
     float emg_value_f32;
+    float filtered_emg_lowpass;
     /*put raw emg value both in red and in emg_value*/
     emg_value = emg0.read_u16(); // read direct ADC result, converted to 16 bit integer (0..2^16 = 0..65536 = 0..3.3V)
     emg_value_f32 = emg0.read();
@@ -46,14 +52,15 @@
     //process emg
     arm_biquad_cascade_df1_f32(&highpass, &emg_value_f32, &filtered_emg, 1 );
     arm_biquad_cascade_df1_f32(&notch, &filtered_emg, &filtered_emg_notch, 1 );
-    filtered_emg_abs = fabs(filtered_emg_notch);
+    arm_biquad_cascade_df1_f32(&notch, &filtered_emg_notch, &filtered_emg_lowpass, 1 );
+    filtered_emg_abs = fabs(filtered_emg_lowpass);
        
     
     scope.set(0,emg_value);     //uint value
     scope.set(1,filtered_emg);  //processed float
     scope.set(2,filtered_emg_notch); 
     scope.set(3,filtered_emg_abs); 
-    scope.set(4,avg1);
+    scope.set(4,filtered_emg_lowpass);
     scope.send();
 }
  
@@ -63,6 +70,7 @@
    //set up filters. Use external array for constants
     arm_biquad_cascade_df1_init_f32(&notch,1 , notch_const, notch_states);
     arm_biquad_cascade_df1_init_f32(&highpass,1 ,highpass_const,highpass_states);
+    arm_biquad_cascade_df1_init_f32(&lowpass,1 ,lowpass_const,lowpass_states);
     
     log_timer.attach(looper, 0.005);
     while(1) //Loop