Bart Vaart / Mbed 2 deprecated EMGfilter

Dependencies:   HIDScope mbed MODSERIAL

Files at this revision

API Documentation at this revision

Comitter:
Bartvaart
Date:
Thu Oct 08 13:55:30 2015 +0000
Parent:
10:897db0bdb2fe
Child:
12:25e7b5a19d93
Commit message:
Nieuw filter toegevoegd

Changed in this revision

Filterdesign1.cpp Show annotated file Show diff for this revision Revisions of this file
Filterdesign1.h Show annotated file Show diff for this revision Revisions of this file
Filterdesign2.cpp Show annotated file Show diff for this revision Revisions of this file
Filterdesign2.h Show annotated file Show diff for this revision Revisions of this file
Filterdesigns.cpp Show diff for this revision Revisions of this file
Filterdesigns.h Show diff for this revision Revisions of this file
HIDScope.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Filterdesign1.cpp	Thu Oct 08 13:55:30 2015 +0000
@@ -0,0 +1,71 @@
+#include "Filterdesign1.h"
+#include "Filter.h"
+#include "Meanvalue.h"
+
+// Inputwaardes
+// Filter1a: 50Hz Notch
+double v1_50a = 0, v2_50a = 0;
+const double a1_50a = -1.56858163817, a2_50a = 0.96424138921;
+const double b0_50a = 1.00000000000, b1_50a = -1.61854514265, b2_50a = 1.00000000000;
+const double gain_50a = 1.000000;
+
+// Filter1b: 50Hz Notch
+double v1_50b = 0, v2_50b = 0;
+const double a1_50b = -1.61100357834, a2_50b = 0.96592171046;
+const double b0_50b = 1.00000000000, b1_50b = -1.61854514265, b2_50b = 1.00000000000;
+const double gain_50b = 0.965081;
+
+
+// Filter1: 20Hz HighPass
+double v1_HP = 0, v2_HP = 0;
+const double a1_HP = -0.76475499450, a2_HP = 0.27692273367;
+const double b0_HP = 1.00000000000, b1_HP = -2.00000000000, b2_HP = 1.00000000000;
+const double gain_HP = 0.510419;
+
+// Filter1: 5Hz LowPass
+double v1_LP = 0, v2_LP = 0;
+const double a1_LP = -1.16338171052, a2_LP = 0.42191097989;
+const double b0_LP = 1.00000000000, b1_LP = 2.00000000000, b2_LP = 1.00000000000;
+const double gain_LP = 0.064632;
+
+
+// constante variabelen:
+
+double gem = 0.4557; // gemiddelde waarde emgsignaal
+
+//gemiddelde bepalen
+double sum = 0;
+int a = 0;
+int delay = 40;
+int samples_length = 10;
+
+
+void Filterdesign1(double u, double &y, double &ymean)
+{
+    //u = input waarde
+    //y = output waarde
+
+    u = u - gem; // lees waarde van emg signaal uit
+
+    // Op deze manier worden de waardes ingelezen in Filter. Zorg dus voor dezelfde volgorde, zodat de waardes goed uitgelezen worden!:
+    // Filter(double u, double &v1, double &v2, const double a1, const double a2, const double b0, const double b1, const double b2, const double gain)
+
+    // 50Hz Notch filter
+    double y50a = Filter(u, v1_50a, v2_50a, a1_50a, a2_50a, b0_50a, b1_50a, b2_50a, gain_50a);
+    double y50b = Filter(y50a, v1_50b, v2_50b, a1_50b, a2_50b, b0_50b, b1_50b, b2_50b, gain_50b);
+
+    // High Pass filter. Tot 20Hz wordt weggefliterd
+    double yHP = Filter(y50b, v1_HP, v2_HP, a1_HP, a2_HP, b0_HP, b1_HP, b2_HP, gain_HP);
+
+    // Absolute waarde wordt genomen.
+    double y1 = fabs(yHP);
+
+    // Low Pass filter. Alles vanaf 5Hz wordt weggefilterd
+    double yLP = Filter(y1, v1_LP, v2_LP, a1_LP, a2_LP, b0_LP, b1_LP, b2_LP, gain_LP);
+
+    y = 10 * yLP;
+
+    //ymean = Meanvalue(y, sum, a, ymean, delay);
+    ymean = Meansmooth(y, samples_length, ymean);
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Filterdesign1.h	Thu Oct 08 13:55:30 2015 +0000
@@ -0,0 +1,3 @@
+#include "mbed.h"
+
+void Filterdesign1(double u, double &y, double &ymean);
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Filterdesign2.cpp	Thu Oct 08 13:55:30 2015 +0000
@@ -0,0 +1,102 @@
+#include "Filterdesign2.h"
+#include "Filter.h"
+#include "Meanvalue.h"
+
+// Inputwaardes
+
+
+//Notch 50Hz
+
+// Filter1a: 50Hz Notch
+double v1_50a = 0, v2_50a = 0;
+const double a1_50a = -4.45738754850584, a2_50a = 0.0;
+const double b0_50a = 1.00000000000, b1_50a = -4.45738754850584, b2_50a = 0.0;
+const double gain_50a = 1.000000;
+
+// Filter1b: 50Hz Notch
+double v1_50b = 0, v2_50b = 0;
+const double a1_50b = 6.24687974012662, a2_50b = 9.7558766219011;
+const double b0_50b = 1.00000000000, b1_50b = 6.24687974012659, b2_50b = 9.75279168287705;
+const double gain_50b = 1.0;
+
+// Filter1c: 50Hz Notch
+double v1_50c = 0, v2_50c = 0;
+const double a1_50c = -1.93013451976033, a2_50c = 0.931354816092608;
+const double b0_50c = 1.00000000000, b1_50c = -1.9313551886007, b2_50c = 0.931355188600704;
+const double gain_50c = 1.0;
+
+
+//HighPass 20Hz
+
+// Filter2a: 20Hz HighPass
+double v1_HPa = 0, v2_HPa = 0;
+const double a1_HPa = 1.67405904258534, a2_HPa = 0.0;
+const double b0_HPa = 1.00000000000, b1_HPa = 1.64732093404315, b2_HPa = 0.00000000000;
+const double gain_HPa = 0.510419;
+
+// Filter2b: 20Hz HighPass
+double v1_HPb = 0, v2_HPb = 0;
+const double a1_HPb = -1.67405904258534, a2_HPb = 0.70061841951544;
+const double b0_HPb = 1.00000000000, b1_HPb = -1.70079715112754, b2_HPb = 0.700797151127544;
+const double gain_HPb = 1.0;
+
+
+//LowPass 3Hz
+
+// Filter3a: 3Hz LowPass
+double v1_LPa = 0, v2_LPa = 0;
+const double a1_LPa = -0.000346314708316864, a2_LPa = 0.0;
+const double b0_LPa = 1.00000000000, b1_LPa = 1.94667622076668, b2_LPa = 0.00000000000;
+const double gain_LPa = 1.0;
+
+// Filter3b: 3Hz LowPass
+double v1_LPb = 0, v2_LPb = 0;
+const double a1_LPb = -0.00103894412495059, a2_LPb = 2.39867754393189e-07;
+const double b0_LPb = 1.00000000000, b1_LPb = -1.94806147959995, b2_LPb = 0.94806147959995;
+const double gain_LPb = 1.0;
+
+
+
+// constante variabelen:
+
+double gem = 0.4557; // gemiddelde waarde emgsignaal
+
+//gemiddelde bepalen
+double sum = 0;
+int a = 0;
+int delay = 40;
+int samples_length = 10;
+
+
+void Filterdesign1(double u, double &y, double &ymean)
+{
+    //u = input waarde
+    //y = output waarde
+
+    u = u - gem; // lees waarde van emg signaal uit
+
+    // Op deze manier worden de waardes ingelezen in Filter. Zorg dus voor dezelfde volgorde, zodat de waardes goed uitgelezen worden!:
+    // Filter(double u, double &v1, double &v2, const double a1, const double a2, const double b0, const double b1, const double b2, const double gain)
+
+    // 50Hz Notch filter
+    double y50a = Filter(u, v1_50a, v2_50a, a1_50a, a2_50a, b0_50a, b1_50a, b2_50a, gain_50a);
+    double y50b = Filter(y50a, v1_50b, v2_50b, a1_50b, a2_50b, b0_50b, b1_50b, b2_50b, gain_50b);
+    double y50c = Filter(y50b, v1_50c, v2_50c, a1_50c, a2_50c, b0_50c, b1_50c, b2_50c, gain_50c);
+
+    // High Pass filter. Tot 20Hz wordt weggefliterd
+    double yHPa = Filter(y50c, v1_HPa, v2_HPa, a1_HPa, a2_HPa, b0_HPa, b1_HPa, b2_HPa, gain_HPa);
+    double yHPb = Filter(yHPa, v1_HPb, v2_HPb, a1_HPb, a2_HPb, b0_HPb, b1_HPb, b2_HPb, gain_HPb);
+
+    // Absolute waarde wordt genomen.
+    double y1 = fabs(yHPb);
+
+    // Low Pass filter. Alles vanaf 5Hz wordt weggefilterd
+    double yLPa = Filter(y1, v1_LPa, v2_LPa, a1_LPa, a2_LPa, b0_LPa, b1_LPa, b2_LPa, gain_LPa);
+    double yLPb = Filter(yLPa, v1_LPb, v2_LPb, a1_LPb, a2_LPb, b0_LPb, b1_LPb, b2_LPb, gain_LPb);
+
+    y = yLPb;
+
+    //ymean = Meanvalue(y, sum, a, ymean, delay);
+    ymean = Meansmooth(y, samples_length, ymean);
+
+}
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Filterdesign2.h	Thu Oct 08 13:55:30 2015 +0000
@@ -0,0 +1,3 @@
+#include "mbed.h"
+
+void Filterdesign2(double u, double &y, double &ymean);
\ No newline at end of file
--- a/Filterdesigns.cpp	Wed Oct 07 14:34:55 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,71 +0,0 @@
-#include "Filterdesigns.h"
-#include "Filter.h"
-#include "Meanvalue.h"
-
-// Inputwaardes
-// Filter1a: 50Hz Notch
-double v1_50a = 0, v2_50a = 0;
-const double a1_50a = -1.56858163817, a2_50a = 0.96424138921;
-const double b0_50a = 1.00000000000, b1_50a = -1.61854514265, b2_50a = 1.00000000000;
-const double gain_50a = 1.000000;
-
-// Filter1b: 50Hz Notch
-double v1_50b = 0, v2_50b = 0;
-const double a1_50b = -1.61100357834, a2_50b = 0.96592171046;
-const double b0_50b = 1.00000000000, b1_50b = -1.61854514265, b2_50b = 1.00000000000;
-const double gain_50b = 0.965081;
-
-
-// Filter1: 20Hz HighPass
-double v1_HP = 0, v2_HP = 0;
-const double a1_HP = -0.76475499450, a2_HP = 0.27692273367;
-const double b0_HP = 1.00000000000, b1_HP = -2.00000000000, b2_HP = 1.00000000000;
-const double gain_HP = 0.510419;
-
-// Filter1: 5Hz LowPass
-double v1_LP = 0, v2_LP = 0;
-const double a1_LP = -1.16338171052, a2_LP = 0.42191097989;
-const double b0_LP = 1.00000000000, b1_LP = 2.00000000000, b2_LP = 1.00000000000;
-const double gain_LP = 0.064632;
-
-
-// constante variabelen:
-
-double gem = 0.4557; // gemiddelde waarde emgsignaal
-
-//gemiddelde bepalen
-double sum = 0;
-int a = 0;
-int delay = 40;
-int samples_length = 10;
-
-
-void Filterdesign1(double u, double &y, double &ymean)
-{
-    //u = input waarde
-    //y = output waarde
-
-    u = u - gem; // lees waarde van emg signaal uit
-
-    // Op deze manier worden de waardes ingelezen in Filter. Zorg dus voor dezelfde volgorde, zodat de waardes goed uitgelezen worden!:
-    // Filter(double u, double &v1, double &v2, const double a1, const double a2, const double b0, const double b1, const double b2, const double gain)
-
-    // 50Hz Notch filter
-    double y50a = Filter(u, v1_50a, v2_50a, a1_50a, a2_50a, b0_50a, b1_50a, b2_50a, gain_50a);
-    double y50b = Filter(y50a, v1_50b, v2_50b, a1_50b, a2_50b, b0_50b, b1_50b, b2_50b, gain_50b);
-
-    // High Pass filter. Tot 20Hz wordt weggefliterd
-    double yHP = Filter(y50b, v1_HP, v2_HP, a1_HP, a2_HP, b0_HP, b1_HP, b2_HP, gain_HP);
-
-    // Absolute waarde wordt genomen.
-    double y1 = fabs(yHP);
-
-    // Low Pass filter. Alles vanaf 5Hz wordt weggefilterd
-    double yLP = Filter(y1, v1_LP, v2_LP, a1_LP, a2_LP, b0_LP, b1_LP, b2_LP, gain_LP);
-
-    y = yLP;
-
-    //ymean = Meanvalue(y, sum, a, ymean, delay);
-    ymean = Meansmooth(y, samples_length, ymean);
-
-}
\ No newline at end of file
--- a/Filterdesigns.h	Wed Oct 07 14:34:55 2015 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-#include "mbed.h"
-
-void Filterdesign1(double u, double &y, double &ymean);
\ No newline at end of file
--- a/HIDScope.lib	Wed Oct 07 14:34:55 2015 +0000
+++ b/HIDScope.lib	Thu Oct 08 13:55:30 2015 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/tomlankhorst/code/HIDScope/#5020a2c0934b
+http://developer.mbed.org/users/tomlankhorst/code/HIDScope/#5020a2c0934b
--- a/main.cpp	Wed Oct 07 14:34:55 2015 +0000
+++ b/main.cpp	Thu Oct 08 13:55:30 2015 +0000
@@ -1,9 +1,10 @@
 #include "mbed.h"
 #include "HIDScope.h"
-#include "Filterdesigns.h"
+//#include "Filterdesign1.h"
+#include "Filterdesign2.h"
 
 AnalogIn    emg(A0); //Analog input van emg kabels
-HIDScope    scope(3); //2 scopes
+HIDScope    scope(3); //3 scopes
 Ticker      EMGticker;
 
 //Sample frequentie