first test of done filter

Dependencies:   biquadFilter mbed HIDScope

Committer:
s1604554
Date:
Wed Oct 26 10:40:04 2016 +0000
Revision:
7:f99e7ca907f1
Parent:
6:7223ff6719b7
Child:
8:3c9f2e6ea1cd
moving average filter added, if it does not work there are 3 alternative bqc's commented, just used those;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
s1604554 0:eb47e42019a4 1 #include "mbed.h"
s1604554 0:eb47e42019a4 2 #include "BiQuad.h"
s1604554 0:eb47e42019a4 3 #include "stdlib.h"
s1604554 0:eb47e42019a4 4 #include <iostream>
s1604554 0:eb47e42019a4 5 #include <cmath>
s1604554 0:eb47e42019a4 6 #include <string>
s1604554 1:e7cf79380e24 7 #include "HIDScope.h"
s1604554 0:eb47e42019a4 8
s1604554 6:7223ff6719b7 9
s1604554 1:e7cf79380e24 10 AnalogIn emg0(A0);
carlmaykel 2:812bb0deedef 11 AnalogIn emg1(A1);
s1604554 7:f99e7ca907f1 12 DigitalOut led2(LED2);
carlmaykel 2:812bb0deedef 13 DigitalOut led1(LED1);
s1604554 7:f99e7ca907f1 14
s1604554 1:e7cf79380e24 15 //
carlmaykel 2:812bb0deedef 16 HIDScope scope( 2 );
s1604554 1:e7cf79380e24 17 Ticker emgticker;
s1604554 1:e7cf79380e24 18
s1604554 1:e7cf79380e24 19
s1604554 0:eb47e42019a4 20
s1604554 0:eb47e42019a4 21 BiQuadChain bqc;
s1604554 7:f99e7ca907f1 22 BiQuad bq1( 5.79192e-01, -9.37153e-01, 5.79192e-01, -9.37153e-01, 1.58384e-01 );
s1604554 7:f99e7ca907f1 23 BiQuad bq2( 7.69910e-09, 1.53982e-08, 7.69910e-09, -1.96542e+00, 9.65769e-01 );
s1604554 7:f99e7ca907f1 24 BiQuad bq3( 1.00000e+00, 2.00000e+00, 1.00000e+00, -1.98532e+00, 9.85677e-01 );
s1604554 7:f99e7ca907f1 25 BiQuad bq4( 9.91824e-01, -1.98365e+00, 9.91824e-01, -1.98842e+00, 9.88457e-01 );
s1604554 7:f99e7ca907f1 26 BiQuad bq5( 1.00000e+00, -2.00000e+00, 1.00000e+00, -1.99516e+00, 9.95203e-01 );
s1604554 7:f99e7ca907f1 27 BiQuad bq6( 1.00000e-01, 1.00000e-01, 0.00000e+00, 0.00000e+00, 0.00000e+00 );
s1604554 7:f99e7ca907f1 28 BiQuad bq7( 1.00000e+00, -6.18034e-01, 1.00000e+00, 0.00000e+00, 0.00000e+00 );
s1604554 7:f99e7ca907f1 29 BiQuad bq8( 1.00000e+00, 6.18034e-01, 1.00000e+00, 0.00000e+00, 0.00000e+00 );
s1604554 7:f99e7ca907f1 30 BiQuad bq9( 1.00000e+00, 1.61803e+00, 1.00000e+00, 0.00000e+00, 0.00000e+00 );
s1604554 7:f99e7ca907f1 31 BiQuad bq10( 1.00000e+00, -1.61803e+00, 1.00000e+00, 0.00000e+00, 0.00000e+00 );
s1604554 7:f99e7ca907f1 32 //BiQuad bq1( 5.79192e-01, -9.37153e-01, 5.79192e-01, -9.37153e-01, 1.58384e-01 ); //notch
s1604554 7:f99e7ca907f1 33 //BiQuad bq2( 2.00834e-02, 4.01667e-02, 2.00834e-02, -1.56102e+00, 6.41352e-01 ); //low pass
s1604554 7:f99e7ca907f1 34 //BiQuad bq3( 8.94859e-01, -1.78972e+00, 8.94859e-01, -1.77863e+00, 8.00803e-01 ); //high pass
s1604554 6:7223ff6719b7 35
s1604554 1:e7cf79380e24 36
s1604554 0:eb47e42019a4 37
s1604554 1:e7cf79380e24 38 void Sample ()
s1604554 1:e7cf79380e24 39 {
s1604554 1:e7cf79380e24 40
s1604554 1:e7cf79380e24 41 double emgSignal = emg0.read();
s1604554 6:7223ff6719b7 42
s1604554 1:e7cf79380e24 43
s1604554 4:81f889cd0c2e 44 double emgFiltered1 = bqc.step(emgSignal);
s1604554 4:81f889cd0c2e 45 double emgFiltered2 = fabs(emgFiltered1);
s1604554 0:eb47e42019a4 46
s1604554 6:7223ff6719b7 47 scope.set(0, emgSignal);
s1604554 6:7223ff6719b7 48 scope.set(1, emgFiltered2);
s1604554 6:7223ff6719b7 49 scope.send();
s1604554 7:f99e7ca907f1 50
s1604554 7:f99e7ca907f1 51 if (emgFiltered2 >= 0.03)
s1604554 7:f99e7ca907f1 52
s1604554 7:f99e7ca907f1 53 {
s1604554 7:f99e7ca907f1 54 led2 = !led2;
s1604554 6:7223ff6719b7 55 led1 = !led1;
s1604554 7:f99e7ca907f1 56
s1604554 7:f99e7ca907f1 57
s1604554 6:7223ff6719b7 58 }
s1604554 6:7223ff6719b7 59 }
s1604554 6:7223ff6719b7 60
s1604554 6:7223ff6719b7 61 int main()
s1604554 6:7223ff6719b7 62 {
s1604554 7:f99e7ca907f1 63
s1604554 7:f99e7ca907f1 64 led1 = 0;
s1604554 6:7223ff6719b7 65 led2 = 1;
s1604554 7:f99e7ca907f1 66
s1604554 7:f99e7ca907f1 67 bqc.add( &bq1 ).add( &bq2 ).add( &bq3 ).add( &bq4 ).add( &bq5 ).add( &bq6 ).add( &bq7 ).add( &bq8 ).add( &bq9 ).add( &bq10 );
s1604554 6:7223ff6719b7 68 emgticker.attach(&Sample, 0.002);
s1604554 7:f99e7ca907f1 69
s1604554 7:f99e7ca907f1 70
s1604554 6:7223ff6719b7 71 while (true) {
s1604554 6:7223ff6719b7 72
s1604554 6:7223ff6719b7 73 }
s1604554 6:7223ff6719b7 74 }
s1604554 6:7223ff6719b7 75
s1604554 6:7223ff6719b7 76
s1604554 6:7223ff6719b7 77
s1604554 6:7223ff6719b7 78
s1604554 6:7223ff6719b7 79
s1604554 6:7223ff6719b7 80
s1604554 6:7223ff6719b7 81
s1604554 6:7223ff6719b7 82
s1604554 6:7223ff6719b7 83
s1604554 6:7223ff6719b7 84
s1604554 6:7223ff6719b7 85
s1604554 6:7223ff6719b7 86
s1604554 6:7223ff6719b7 87
s1604554 6:7223ff6719b7 88
s1604554 1:e7cf79380e24 89 //int N = 50;
s1604554 1:e7cf79380e24 90 //double x = 2;
s1604554 1:e7cf79380e24 91 //double average;
s1604554 0:eb47e42019a4 92
s1604554 1:e7cf79380e24 93 //for (int i = N;i<=10000;i++)
s1604554 1:e7cf79380e24 94 //{
s1604554 1:e7cf79380e24 95 // average = sqrt(( pow(abs(M[i-49]),x)+pow(abs(M[i-48]),x)+pow(abs(M[i-47]),x)+pow(abs(M[i-46]),x)+pow(abs(M[i-45]),x)+pow(abs(M[i-44]),x)+pow(abs(M[i-43]),x)+pow(abs(M[i-42]),x)+pow(abs(M[i-41]),x)+pow(abs(M[i-40]),x)+pow(abs(M[i-39]),x)+pow(abs(M[i-38]),x)+pow(abs(M[i-37]),x)+pow(abs(M[i-36]),x)+pow(abs(M[i-35]),x)+pow(abs(M[i-34]),x)+pow(abs(M[i-33]),x)+pow(abs(M[i-32]),x)+pow(abs(M[i-31]),x)+pow(abs(M[i-30]),x)+pow(abs(M[i-29]),x)+pow(abs(M[i-28]),x)+pow(abs(M[i-27]),x)+pow(abs(M[i-26]),x)+pow(abs(M[i-25]),x)+pow(abs(M[i-24]),x)+pow(abs(M[i-23]),x)+pow(abs(M[i-22]),x)+pow(abs(M[i-21]),x)+pow(abs(M[i-20]),x)+pow(abs(M[i-19]),x)+pow(abs(M[i-18]),x)+pow(abs(M[i-17]),x)+pow(abs(M[i-16]),x)+pow(abs(M[i-15]),x)+pow(abs(M[i-14]),x)+pow(abs(M[i-13]),x)+pow(abs(M[i-12]),x)+pow(abs(M[i-11]),x)+pow(abs(M[i-10]),x)+pow(abs(M[i-9]),x)+pow(abs(M[i-8]),x)+pow(abs(M[i-7]),x)+pow(abs(M[i-6]),x)+pow(abs(M[i-5]),x)+pow(abs(M[i-4]),x)+pow(abs(M[i-3]),x)+pow(abs(M[i-2]),x)+pow(abs(M[i-1]),x)+pow(abs(M[i]),x))/static_cast<double>(N));
s1604554 1:e7cf79380e24 96
s1604554 1:e7cf79380e24 97 // }
s1604554 1:e7cf79380e24 98
s1604554 1:e7cf79380e24 99
s1604554 0:eb47e42019a4 100 //Full wave rectifier, moving average, and RMS
s1604554 0:eb47e42019a4 101
s1604554 0:eb47e42019a4 102
s1604554 0:eb47e42019a4 103