kakding

Dependencies:   HIDScope biquadFilter mbed

Fork of biquad2_2 by group14 - k9

Committer:
Paashaas
Date:
Thu Oct 22 12:18:58 2015 +0000
Revision:
3:faa029d96ac3
Parent:
2:192bd1385db6
elke filter in een aparte ticker

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 3:faa029d96ac3 10 Ticker sample_ticker_1; // naam van 1e emg-ticker
Paashaas 3:faa029d96ac3 11 Ticker sample_ticker_2; // naam van 2e emg-ticker
Paashaas 3:faa029d96ac3 12 Ticker sample_ticker_3; // naam van 3e emg-ticker
Paashaas 3:faa029d96ac3 13 Ticker sample_ticker_4; // naam van 4e emg-ticker
Paashaas 0:f9aed4422fcb 14
Paashaas 3:faa029d96ac3 15
Paashaas 3:faa029d96ac3 16 HIDScope scope(4); // aantal kanalen voor je HIDScope
Paashaas 0:f9aed4422fcb 17
Paashaas 0:f9aed4422fcb 18 //highpass filter 20 Hz
Paashaas 0:f9aed4422fcb 19 const double numhigh_1 = 0.956543225556877;
Paashaas 0:f9aed4422fcb 20 const double numhigh_2 = -1.91308645113754;
Paashaas 0:f9aed4422fcb 21 const double numhigh_3 = 0.956543225556877;
Paashaas 0:f9aed4422fcb 22 const double denhigh_2 = -1.91197067426073;
Paashaas 0:f9aed4422fcb 23 const double denhigh_3 = 0.9149758348014341;
Paashaas 0:f9aed4422fcb 24
Paashaas 0:f9aed4422fcb 25 //notchfilter 50Hz
Paashaas 0:f9aed4422fcb 26 //biquad 1
Paashaas 0:f9aed4422fcb 27 const double numnotch_1_1 = 1;
Paashaas 0:f9aed4422fcb 28 const double numnotch_1_2 = -1.97538661427765;
Paashaas 0:f9aed4422fcb 29 const double numnotch_1_3 = 1.00000018882502;
Paashaas 0:f9aed4422fcb 30 const double dennotch_1_2 = -1.97024348390877;
Paashaas 0:f9aed4422fcb 31 const double dennotch_1_3 = 0.995504923090779;
Paashaas 0:f9aed4422fcb 32
Paashaas 0:f9aed4422fcb 33 //biquad 2
Paashaas 0:f9aed4422fcb 34 const double numnotch_2_1 = 1;
Paashaas 0:f9aed4422fcb 35 const double numnotch_2_2 = -1.97538624436946;
Paashaas 0:f9aed4422fcb 36 const double numnotch_2_3 = 1.00000018882502;
Paashaas 0:f9aed4422fcb 37 const double dennotch_2_2 = -1.97175302143845;
Paashaas 0:f9aed4422fcb 38 const double dennotch_2_3 = 0.995629024908953;
Paashaas 0:f9aed4422fcb 39
Paashaas 0:f9aed4422fcb 40 //lowpass filter 7 Hz - envelop
Paashaas 0:f9aed4422fcb 41 const double numlow_1 = 0.000119046743110057;
Paashaas 0:f9aed4422fcb 42 const double numlow_2 = 0.000238093486220118;
Paashaas 0:f9aed4422fcb 43 const double numlow_3 = 0.000119046743110057;
Paashaas 0:f9aed4422fcb 44 const double denlow_2 = -1.968902268531908;
Paashaas 0:f9aed4422fcb 45 const double denlow_3 = 0.9693784555043481;
Paashaas 0:f9aed4422fcb 46
Paashaas 0:f9aed4422fcb 47
Paashaas 0:f9aed4422fcb 48 double u1 = emg1.read(); //inputvariables
Paashaas 0:f9aed4422fcb 49 double u2 = emg2.read();
Paashaas 0:f9aed4422fcb 50 double u3 = emg3.read();
Paashaas 0:f9aed4422fcb 51 double u4 = emg4.read();
Paashaas 0:f9aed4422fcb 52
Paashaas 0:f9aed4422fcb 53
Paashaas 0:f9aed4422fcb 54 biquadFilter highpass( denhigh_2 , denhigh_3 , numhigh_1 , numhigh_2 , numhigh_3); // removes artifacts
Paashaas 0:f9aed4422fcb 55 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 56 biquadFilter notch2( dennotch_2_2 , dennotch_2_3 , numnotch_2_1 , numnotch_2_2 , numnotch_2_3 ); //
Paashaas 0:f9aed4422fcb 57 biquadFilter lowpass( denlow_2 , denlow_3 , numlow_1 , numlow_2 , numlow_3 ); // EMG envelope
Paashaas 0:f9aed4422fcb 58
Paashaas 0:f9aed4422fcb 59 biquadFilter highpass_2( denhigh_2 , denhigh_3 , numhigh_1 , numhigh_2 , numhigh_3);
Paashaas 0:f9aed4422fcb 60 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 61 biquadFilter notch2_2( dennotch_2_2 , dennotch_2_3 , numnotch_2_1 , numnotch_2_2 , numnotch_2_3 ); //
Paashaas 0:f9aed4422fcb 62 biquadFilter lowpass_2( denlow_2 , denlow_3 , numlow_1 , numlow_2 , numlow_3 ); // EMG envelope
Paashaas 0:f9aed4422fcb 63
Paashaas 0:f9aed4422fcb 64 biquadFilter highpass_3( denhigh_2 , denhigh_3 , numhigh_1 , numhigh_2 , numhigh_3);
Paashaas 0:f9aed4422fcb 65 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 66 biquadFilter notch2_3( dennotch_2_2 , dennotch_2_3 , numnotch_2_1 , numnotch_2_2 , numnotch_2_3 ); //
Paashaas 0:f9aed4422fcb 67 biquadFilter lowpass_3( denlow_2 , denlow_3 , numlow_1 , numlow_2 , numlow_3 ); // EMG envelope
Paashaas 0:f9aed4422fcb 68
Paashaas 0:f9aed4422fcb 69 biquadFilter highpass_4( denhigh_2 , denhigh_3 , numhigh_1 , numhigh_2 , numhigh_3);
Paashaas 0:f9aed4422fcb 70 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 71 biquadFilter notch2_4( dennotch_2_2 , dennotch_2_3 , numnotch_2_1 , numnotch_2_2 , numnotch_2_3 ); //
Paashaas 0:f9aed4422fcb 72 biquadFilter lowpass_4( denlow_2 , denlow_3 , numlow_1 , numlow_2 , numlow_3 ); // EMG envelope
Paashaas 0:f9aed4422fcb 73
Paashaas 2:192bd1385db6 74 double y5_1, y5_2, y5_3, y5_4;
Paashaas 2:192bd1385db6 75
Paashaas 3:faa029d96ac3 76 void emg_sample_1()
Paashaas 0:f9aed4422fcb 77 {
Paashaas 0:f9aed4422fcb 78
Paashaas 2:192bd1385db6 79 double y1_1 = highpass.step ( emg1.read() );
Paashaas 1:911daa1a9f4a 80 double y2_1 = notch1.step (y1_1);
Paashaas 1:911daa1a9f4a 81 double y3_1 = notch2.step (y2_1);
Paashaas 1:911daa1a9f4a 82 double y4_1 = abs(y3_1);
Paashaas 2:192bd1385db6 83 y5_1 = lowpass.step (y4_1);
Paashaas 3:faa029d96ac3 84
Paashaas 3:faa029d96ac3 85 scope.set(0,y5_1);
Paashaas 3:faa029d96ac3 86
Paashaas 3:faa029d96ac3 87 }
Paashaas 3:faa029d96ac3 88
Paashaas 3:faa029d96ac3 89 void emg_sample_2()
Paashaas 3:faa029d96ac3 90 {
Paashaas 0:f9aed4422fcb 91
Paashaas 2:192bd1385db6 92 double y1_2 = highpass_2.step ( emg2.read() );
Paashaas 1:911daa1a9f4a 93 double y2_2 = notch1_2.step (y1_2);
Paashaas 1:911daa1a9f4a 94 double y3_2 = notch2_2.step (y2_2);
Paashaas 1:911daa1a9f4a 95 double y4_2 = abs(y3_2);
Paashaas 2:192bd1385db6 96 y5_2 = lowpass_2.step (y4_2);
Paashaas 3:faa029d96ac3 97
Paashaas 3:faa029d96ac3 98 scope.set(1,y5_2);
Paashaas 3:faa029d96ac3 99 }
Paashaas 3:faa029d96ac3 100
Paashaas 3:faa029d96ac3 101 void emg_sample_3()
Paashaas 3:faa029d96ac3 102 {
Paashaas 0:f9aed4422fcb 103
Paashaas 2:192bd1385db6 104 double y1_3 = highpass_3.step ( emg3.read() );
Paashaas 1:911daa1a9f4a 105 double y2_3 = notch1_3.step (y1_3);
Paashaas 1:911daa1a9f4a 106 double y3_3 = notch2_3.step (y2_3);
Paashaas 1:911daa1a9f4a 107 double y4_3 = abs(y3_3);
Paashaas 2:192bd1385db6 108 y5_3 = lowpass_3.step (y4_3);
Paashaas 3:faa029d96ac3 109
Paashaas 3:faa029d96ac3 110 scope.set(2,y5_3);
Paashaas 3:faa029d96ac3 111 }
Paashaas 1:911daa1a9f4a 112
Paashaas 3:faa029d96ac3 113 void emg_sample_4()
Paashaas 3:faa029d96ac3 114 {
Paashaas 0:f9aed4422fcb 115
Paashaas 2:192bd1385db6 116 double y1_4 = highpass_4.step ( emg4.read() );
Paashaas 1:911daa1a9f4a 117 double y2_4 = notch1_4.step (y1_4);
Paashaas 1:911daa1a9f4a 118 double y3_4 = notch2_4.step (y2_4);
Paashaas 1:911daa1a9f4a 119 double y4_4 = abs(y3_4);
Paashaas 2:192bd1385db6 120 y5_4 = lowpass_4.step (y4_4);
Paashaas 0:f9aed4422fcb 121
Paashaas 1:911daa1a9f4a 122
Paashaas 3:faa029d96ac3 123 scope.set(3,y5_4);
Paashaas 1:911daa1a9f4a 124 scope.send();
Paashaas 0:f9aed4422fcb 125 }
Paashaas 0:f9aed4422fcb 126
Paashaas 0:f9aed4422fcb 127 int main()
Paashaas 0:f9aed4422fcb 128 {
Paashaas 3:faa029d96ac3 129 sample_ticker_1.attach(&emg_sample_1,0.002);
Paashaas 3:faa029d96ac3 130 sample_ticker_2.attach(&emg_sample_2,0.002);
Paashaas 3:faa029d96ac3 131 sample_ticker_3.attach(&emg_sample_3,0.002);
Paashaas 3:faa029d96ac3 132 sample_ticker_4.attach(&emg_sample_4,0.002);
Paashaas 2:192bd1385db6 133 while (true){}
Paashaas 0:f9aed4422fcb 134 }