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

Files at this revision

API Documentation at this revision

Comitter:
Daanmk
Date:
Fri Oct 10 12:10:52 2014 +0000
Parent:
6:168e7e03e166
Child:
8:27b5468c77bc
Commit message:
filter werkend Notch, Highpass, Absolute

Changed in this revision

Encoder.lib Show diff for this revision Revisions of this file
MODSERIAL.lib Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/Encoder.lib	Fri Oct 10 08:34:27 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-https://mbed.org/users/vsluiter/code/Encoder/#2dd7853c911a
--- a/MODSERIAL.lib	Fri Oct 10 08:34:27 2014 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-http://mbed.org/users/Sissors/code/MODSERIAL/#180e968a751e
--- a/main.cpp	Fri Oct 10 08:34:27 2014 +0000
+++ b/main.cpp	Fri Oct 10 12:10:52 2014 +0000
@@ -16,7 +16,7 @@
 //Define objects
 AnalogIn    emg0(PTB0); //Biceps
 AnalogIn    emg1(PTB1); //Triceps
-HIDScope scope(2);
+HIDScope scope(5);
  
 arm_biquad_casd_df1_inst_f32 notch;
 //constants for 50Hz notch
@@ -28,12 +28,20 @@
 float highpass_const[] = {0.8948577513857248, -1.7897155027714495, 0.8948577513857248, 0.8008009266036016};
 //state values
 float highpass_states[4];
+arm_biquad_casd_df1_inst_f32 envelop;
+//constants for 5Hz lowpass
+float envelop_const[] = {0.005542711916075981, 0.011085423832151962, 0.005542711916075981, -1.7786300789392977, 0.8008009266036016};
+//state values
+float envelop_states[4];
  
 void looper()
 {
     /*variable to store value in*/    
     uint16_t emg_value;
     float filtered_emg;
+    float filtered_emg_notch;
+    float filtered_emg_low;
+    float filtered_emg_abs;
     float emg_value_f32;
     /*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)
@@ -41,12 +49,17 @@
  
     //process emg
     arm_biquad_cascade_df1_f32(&highpass, &emg_value_f32, &filtered_emg, 1 );
-    filtered_emg = fabs(filtered_emg);
-    arm_biquad_cascade_df1_f32(&notch, &filtered_emg, &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(&envelop, &filtered_emg_abs, &filtered_emg_low, 1 );
+   
     
     /*send value to PC. */
     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,filtered_emg_low);
     scope.send();
  
 }
@@ -57,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(&envelop,1 ,envelop_const, envelop_states);
     
     log_timer.attach(looper, 0.005);
     while(1) //Loop