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
Diff: main.cpp
- Revision:
- 11:a598cb27907f
- Parent:
- 10:1efe8b0cddd0
- Child:
- 12:8a30e43337bb
--- a/main.cpp Thu Oct 16 09:39:45 2014 +0000 +++ b/main.cpp Thu Oct 16 09:47:54 2014 +0000 @@ -18,11 +18,6 @@ AnalogIn emg1(PTB1); //Triceps HIDScope scope(5); -int const windowsamples = 300; //aantal samples waaruit het window voor MOVAG bestaat, Met toestemming van Nik HuisintVeld - -float buffer1 [windowsamples]; -//float buffer2 [windowsamples]; - arm_biquad_casd_df1_inst_f32 notch; //constants for 50Hz notch float notch_const[] = {0.5857841106784856, -1.3007020142696517e-16, 0.5857841106784856, -1.3007020142696517e-16, 0.17156822135697122}; @@ -33,15 +28,10 @@ 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() { - int i = 0; /*variable to store value in*/ uint16_t emg_value; float filtered_emg; @@ -57,29 +47,7 @@ arm_biquad_cascade_df1_f32(&highpass, &emg_value_f32, &filtered_emg, 1 ); arm_biquad_cascade_df1_f32(¬ch, &filtered_emg, &filtered_emg_notch, 1 ); filtered_emg_abs = fabs(filtered_emg_notch); - arm_biquad_cascade_df1_f32(&envelop, &filtered_emg_abs, &filtered_emg_env, 1 ); - - //buffers - buffer1[i] = filtered_emg_abs; - //buffer2[i] = - - i++; - //Als buffer vol zit, opnieuw vanaf 0 bijvullen - if (i==windowsamples) - i=0; - - //moving average filter - float avg1,avg2; - avg1=avg2=0; - - //Inhoud van een buffer (=gefilterd signaal) optellen - for(int x=0; x<windowsamples; x++) { - avg1 = avg1 + abs(buffer1[x]); - //avg2 = avg2 + abs(buffer2[x]); - } - //Gemiddelde berekenen en relativeren tov maximum voluntary contraction - avg1 = avg1/windowsamples; - avg2 = avg2/windowsamples; + scope.set(0,emg_value); //uint value scope.set(1,filtered_emg); //processed float @@ -95,7 +63,6 @@ //set up filters. Use external array for constants arm_biquad_cascade_df1_init_f32(¬ch,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