nog een mooie biquad geniet ervan

Dependencies:   HIDScope biquadFilter mbed

Committer:
Paashaas
Date:
Fri Oct 16 09:39:22 2015 +0000
Revision:
0:f9aed4422fcb
een nog veel mooiere filter;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Paashaas 0:f9aed4422fcb 1 #include "mbed.h"
Paashaas 0:f9aed4422fcb 2 #include "HIDScope.h"
Paashaas 0:f9aed4422fcb 3 #include "biquadFilter.h"
Paashaas 0:f9aed4422fcb 4
Paashaas 0:f9aed4422fcb 5 AnalogIn emg1(A0); //onderste board
Paashaas 0:f9aed4422fcb 6 AnalogIn emg2(A1); // 2e board
Paashaas 0:f9aed4422fcb 7 AnalogIn emg3(A2); // 3e board
Paashaas 0:f9aed4422fcb 8 AnalogIn emg4(A3); // bovenste board
Paashaas 0:f9aed4422fcb 9
Paashaas 0:f9aed4422fcb 10 Ticker sample_ticker; // naam van de emg-ticker
Paashaas 0:f9aed4422fcb 11
Paashaas 0:f9aed4422fcb 12 HIDScope scope(2); // aantal kanalen voor je HIDScope
Paashaas 0:f9aed4422fcb 13
Paashaas 0:f9aed4422fcb 14 //highpass filter 20 Hz
Paashaas 0:f9aed4422fcb 15 const double numhigh_1 = 0.956543225556877;
Paashaas 0:f9aed4422fcb 16 const double numhigh_2 = -1.91308645113754;
Paashaas 0:f9aed4422fcb 17 const double numhigh_3 = 0.956543225556877;
Paashaas 0:f9aed4422fcb 18 const double denhigh_2 = -1.91197067426073;
Paashaas 0:f9aed4422fcb 19 const double denhigh_3 = 0.9149758348014341;
Paashaas 0:f9aed4422fcb 20
Paashaas 0:f9aed4422fcb 21 //notchfilter 50Hz
Paashaas 0:f9aed4422fcb 22 //biquad 1
Paashaas 0:f9aed4422fcb 23 const double numnotch_1_1 = 1;
Paashaas 0:f9aed4422fcb 24 const double numnotch_1_2 = -1.97538661427765;
Paashaas 0:f9aed4422fcb 25 const double numnotch_1_3 = 1.00000018882502;
Paashaas 0:f9aed4422fcb 26 const double dennotch_1_2 = -1.97024348390877;
Paashaas 0:f9aed4422fcb 27 const double dennotch_1_3 = 0.995504923090779;
Paashaas 0:f9aed4422fcb 28
Paashaas 0:f9aed4422fcb 29 //biquad 2
Paashaas 0:f9aed4422fcb 30 const double numnotch_2_1 = 1;
Paashaas 0:f9aed4422fcb 31 const double numnotch_2_2 = -1.97538624436946;
Paashaas 0:f9aed4422fcb 32 const double numnotch_2_3 = 1.00000018882502;
Paashaas 0:f9aed4422fcb 33 const double dennotch_2_2 = -1.97175302143845;
Paashaas 0:f9aed4422fcb 34 const double dennotch_2_3 = 0.995629024908953;
Paashaas 0:f9aed4422fcb 35
Paashaas 0:f9aed4422fcb 36 //lowpass filter 7 Hz - envelop
Paashaas 0:f9aed4422fcb 37 const double numlow_1 = 0.000119046743110057;
Paashaas 0:f9aed4422fcb 38 const double numlow_2 = 0.000238093486220118;
Paashaas 0:f9aed4422fcb 39 const double numlow_3 = 0.000119046743110057;
Paashaas 0:f9aed4422fcb 40 const double denlow_2 = -1.968902268531908;
Paashaas 0:f9aed4422fcb 41 const double denlow_3 = 0.9693784555043481;
Paashaas 0:f9aed4422fcb 42
Paashaas 0:f9aed4422fcb 43
Paashaas 0:f9aed4422fcb 44 double u1 = emg1.read(); //inputvariables
Paashaas 0:f9aed4422fcb 45 double u2 = emg2.read();
Paashaas 0:f9aed4422fcb 46 double u3 = emg3.read();
Paashaas 0:f9aed4422fcb 47 double u4 = emg4.read();
Paashaas 0:f9aed4422fcb 48
Paashaas 0:f9aed4422fcb 49
Paashaas 0:f9aed4422fcb 50 biquadFilter highpass( denhigh_2 , denhigh_3 , numhigh_1 , numhigh_2 , numhigh_3); // removes artifacts
Paashaas 0:f9aed4422fcb 51 biquadFilter notch1( dennotch_1_2 , dennotch_1_3 , numnotch_1_1 , numnotch_1_2 , numnotch_1_3 ); // removes 49-51 Hz power interference
Paashaas 0:f9aed4422fcb 52 biquadFilter notch2( dennotch_2_2 , dennotch_2_3 , numnotch_2_1 , numnotch_2_2 , numnotch_2_3 ); //
Paashaas 0:f9aed4422fcb 53 biquadFilter lowpass( denlow_2 , denlow_3 , numlow_1 , numlow_2 , numlow_3 ); // EMG envelope
Paashaas 0:f9aed4422fcb 54
Paashaas 0:f9aed4422fcb 55 biquadFilter highpass_2( denhigh_2 , denhigh_3 , numhigh_1 , numhigh_2 , numhigh_3);
Paashaas 0:f9aed4422fcb 56 biquadFilter notch1_2( dennotch_1_2 , dennotch_1_3 , numnotch_1_1 , numnotch_1_2 , numnotch_1_3 ); // removes 49-51 Hz power interference
Paashaas 0:f9aed4422fcb 57 biquadFilter notch2_2( dennotch_2_2 , dennotch_2_3 , numnotch_2_1 , numnotch_2_2 , numnotch_2_3 ); //
Paashaas 0:f9aed4422fcb 58 biquadFilter lowpass_2( denlow_2 , denlow_3 , numlow_1 , numlow_2 , numlow_3 ); // EMG envelope
Paashaas 0:f9aed4422fcb 59
Paashaas 0:f9aed4422fcb 60 biquadFilter highpass_3( denhigh_2 , denhigh_3 , numhigh_1 , numhigh_2 , numhigh_3);
Paashaas 0:f9aed4422fcb 61 biquadFilter notch1_3( dennotch_1_2 , dennotch_1_3 , numnotch_1_1 , numnotch_1_2 , numnotch_1_3 ); // removes 49-51 Hz power interference
Paashaas 0:f9aed4422fcb 62 biquadFilter notch2_3( dennotch_2_2 , dennotch_2_3 , numnotch_2_1 , numnotch_2_2 , numnotch_2_3 ); //
Paashaas 0:f9aed4422fcb 63 biquadFilter lowpass_3( denlow_2 , denlow_3 , numlow_1 , numlow_2 , numlow_3 ); // EMG envelope
Paashaas 0:f9aed4422fcb 64
Paashaas 0:f9aed4422fcb 65 biquadFilter highpass_4( denhigh_2 , denhigh_3 , numhigh_1 , numhigh_2 , numhigh_3);
Paashaas 0:f9aed4422fcb 66 biquadFilter notch1_4( dennotch_1_2 , dennotch_1_3 , numnotch_1_1 , numnotch_1_2 , numnotch_1_3 ); // removes 49-51 Hz power interference
Paashaas 0:f9aed4422fcb 67 biquadFilter notch2_4( dennotch_2_2 , dennotch_2_3 , numnotch_2_1 , numnotch_2_2 , numnotch_2_3 ); //
Paashaas 0:f9aed4422fcb 68 biquadFilter lowpass_4( denlow_2 , denlow_3 , numlow_1 , numlow_2 , numlow_3 ); // EMG envelope
Paashaas 0:f9aed4422fcb 69
Paashaas 0:f9aed4422fcb 70 void myController()
Paashaas 0:f9aed4422fcb 71 {
Paashaas 0:f9aed4422fcb 72
Paashaas 0:f9aed4422fcb 73 highpass.step (u1);
Paashaas 0:f9aed4422fcb 74 notch1.step (u1);
Paashaas 0:f9aed4422fcb 75 notch2.step (u1);
Paashaas 0:f9aed4422fcb 76 lowpass.step (u1);
Paashaas 0:f9aed4422fcb 77
Paashaas 0:f9aed4422fcb 78 highpass_2.step (u2);
Paashaas 0:f9aed4422fcb 79 notch1_2.step (u2);
Paashaas 0:f9aed4422fcb 80 notch2_2.step (u2);
Paashaas 0:f9aed4422fcb 81 lowpass_2.step (u2);
Paashaas 0:f9aed4422fcb 82
Paashaas 0:f9aed4422fcb 83 highpass_3.step (u3);
Paashaas 0:f9aed4422fcb 84 notch1_3.step (u3);
Paashaas 0:f9aed4422fcb 85 notch2_3.step (u3);
Paashaas 0:f9aed4422fcb 86 lowpass_3.step (u3);
Paashaas 0:f9aed4422fcb 87
Paashaas 0:f9aed4422fcb 88 highpass_4.step (u4);
Paashaas 0:f9aed4422fcb 89 notch1_4.step (u4);
Paashaas 0:f9aed4422fcb 90 notch2_4.step (u4);
Paashaas 0:f9aed4422fcb 91 lowpass_4.step (u4);
Paashaas 0:f9aed4422fcb 92
Paashaas 0:f9aed4422fcb 93 }
Paashaas 0:f9aed4422fcb 94
Paashaas 0:f9aed4422fcb 95 int main()
Paashaas 0:f9aed4422fcb 96 {
Paashaas 0:f9aed4422fcb 97 sample_ticker.attach(&myController,0.002);
Paashaas 0:f9aed4422fcb 98 while (true){
Paashaas 0:f9aed4422fcb 99 }
Paashaas 0:f9aed4422fcb 100 }