Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: HIDScope biquadFilter mbed
Revision 2:e3259334299e, committed 2015-10-19
- Comitter:
- RichellBooyink
- Date:
- Mon Oct 19 13:23:10 2015 +0000
- Parent:
- 1:16165e207e70
- Child:
- 3:61f0fc41f3bc
- Commit message:
- Made the input of the biquad the output of the previous biquad. So y1=u2
Changed in this revision
| biquadFilter.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/biquadFilter.lib Mon Oct 19 13:23:10 2015 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/tomlankhorst/code/biquadFilter/#e3bf917ae0a3
--- a/main.cpp Thu Oct 15 14:55:16 2015 +0000
+++ b/main.cpp Mon Oct 19 13:23:10 2015 +0000
@@ -7,8 +7,7 @@
// Standaard formule voor het biquad filter
double biquad(double u, double &v1, double &v2, const double a1, const double a2, const double b0, const double b1, const double b2)
-{
- u = EMG.read();
+{
double v = u - a1*v1 - a2*v2;
double y = b0*v + b1*v1 + b2*v2;
v2=v1;
@@ -16,57 +15,49 @@
return y;
}
// Filter1 = High pass filter tot 20 Hz
-
double fh1_v1=0, fh1_v2=0, fh2_v1=0, fh2_v2=0;
const double fh1_a1=-0.84909054461, fh1_a2=0.00000000000, fh1_b0= 1, fh1_b1=-1, fh1_b2=0;
const double fh2_a1=-1.82553264091, fh2_a2=0.85001416809, fh2_b0= 1, fh2_b1=-2, fh2_b2=1;
-Ticker FHIGH;
-void Highpass_filter()
-{
- biquad (u, fh1_v1, fh1_v2, fh1_a1, fh1_a2, fh1_b0, fh1_b1, fh1_b2);
- biquad (u, fh2_v1, fh2_v2, fh2_a1, fh2_a2, fh2_b0, fh2_b1, fh2_b2);
-}
-
// Filter2 = Low pass filter na 60 Hz
double fl1_v1=0, fl1_v2=0, fl2_v1=0, fl2_v2=0;
const double fl1_a1=-0.66979455390, fl1_a2=0.00000000000, fl1_b0= 1, fl1_b1=1, fl1_b2=0;
const double fl2_a1=-1.55376616139, fl2_a2=0.68023470431, fl2_b0= 1, fl2_b1=2, fl2_b2=1;
-Ticker FLOW;
-void Lowpass_filter()
-{
- biquad (u, fl1_v1, fl1_v2, fl1_a1, fl1_a2, fl1_b0, fl1_b1, fl1_b2);
- biquad (u, fl2_v1, fl2_v2, fl2_a1, fl2_a2, fl2_b0, fl2_b1, fl2_b2);
-}
-
// Filter3 = Notch filter at 50 Hz
double fno1_v1=0, fno1_v2=0, fno2_v1=0, fno2_v2=0, fno3_v1=0, fno3_v2=0;
const double fno1_a1 = -1.87934916386, fno1_a2= 0.97731851355, fno1_b0= 1, fno1_b1= -1.90090686046, fno1_b2= 1;
const double fno2_a1 = -1.88341028603, fno2_a2= 0.98825147717, fno2_b0= 1, fno2_b1= -1.90090686046, fno2_b2= 1;
const double fno3_a1 = -1.89635403726, fno3_a2= 0.98894004849, fno3_b0= 1, fno3_b1= -1.90090686046, fno3_b2= 1;
-Ticker FNOTCH;
-void Notch_filter ()
+double y1, y2, y3, y4, y5, y6, y7, u1, u2, u3, u4, u5, u6, u7;
+void Filters()
{
- biquad (u, fno1_v1, fno1_v2, fno1_a1, fno1_a2, fno1_b0, fno1_b1, fno1_b2);
- biquad (u, fno2_v1, fno2_v2, fno2_a1, fno2_a2, fno2_b0, fno2_b1, fno2_b2);
- biquad (u, fno3_v1, fno3_v2, fno3_a1, fno3_a2, fno3_b0, fno3_b1, fno3_b2);
-}
-
-// HIDScope
-Ticker timer;
-void signal (){
- scope.set (0, Highpass_filter);
- scope.set (0, Lowpass_filter);
- scope.set (0, Notch_filter);
+ u1 = EMG.read();
+ //Highpass
+ y1 = u2;
+ y1 = biquad (u1, fh1_v1, fh1_v2, fh1_a1, fh1_a2, fh1_b0, fh1_b1, fh1_b2);
+ y2 = biquad (u2, fh2_v1, fh2_v2, fh2_a1, fh2_a2, fh2_b0, fh2_b1, fh2_b2);
+ //Lowpass
+ u3 = y2;
+ u4 = y3;
+ y3 = biquad (u3, fl1_v1, fl1_v2, fl1_a1, fl1_a2, fl1_b0, fl1_b1, fl1_b2);
+ y4 = biquad (u4, fl2_v1, fl2_v2, fl2_a1, fl2_a2, fl2_b0, fl2_b1, fl2_b2);
+ // Notch
+ u5 = y4;
+ u6 = y5;
+ u7 = y6;
+ y5 = biquad (u5, fno1_v1, fno1_v2, fno1_a1, fno1_a2, fno1_b0, fno1_b1, fno1_b2);
+ y6 = biquad (u6, fno2_v1, fno2_v2, fno2_a1, fno2_a2, fno2_b0, fno2_b1, fno2_b2);
+ y7 = biquad (u7, fno3_v1, fno3_v2, fno3_a1, fno3_a2, fno3_b0, fno3_b1, fno3_b2);
+ scope.set (0, u1);
+ scope.set (1, y2);
+ scope.set (2, y4);
+ scope.set (3, y7);
scope.send ();
}
-
+Ticker filter;
int main ()
-{
- FHIGH.attach_us(Highpass_filter, 1e4);
- FLOW.attach_us(Lowpass_filter, 1e4);
- FNOTCH.attach_us (Notch_filter, 1e4);
- timer.attach_us (signal, 1e4);
-}
+{filter.attach_us(Filters,1e3);}
+
+