Marijke Zondag / Mbed 2 deprecated Project_script_union_final_version

Dependencies:   HIDScope MODSERIAL QEI biquadFilter mbed

Fork of Project_script_union_final by Jorine Oosting

Files at this revision

API Documentation at this revision

Comitter:
MarijkeZondag
Date:
Fri Oct 19 14:13:59 2018 +0000
Parent:
9:c722418997b5
Child:
11:b95b0e9e1b89
Commit message:
EMG filter erin geprobeerd te bouwen

Changed in this revision

HIDScope.lib Show annotated file Show diff for this revision Revisions of this file
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/HIDScope.lib	Fri Oct 19 14:13:59 2018 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/tomlankhorst/code/HIDScope/#d23c6edecc49
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/biquadFilter.lib	Fri Oct 19 14:13:59 2018 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/tomlankhorst/code/biquadFilter/#26861979d305
--- a/main.cpp	Mon Oct 15 14:16:33 2018 +0000
+++ b/main.cpp	Fri Oct 19 14:13:59 2018 +0000
@@ -1,8 +1,13 @@
 #include "mbed.h"
 #include "MODSERIAL.h"
+#include "BiQuad.h"
+#include "HIDScope.h"
+#include <math.h>
 
-AnalogIn potmetervalue1     (A1);
-AnalogIn potmetervalue2     (A2);
+AnalogIn emg0_in            (A0);
+AnalogIn emg1_in            (A1);
+AnalogIn emg2_in            (A2);
+
 DigitalIn button2           (D10);                  //Let op, is deze niet bezet?
 InterruptIn encoderA        (D9);
 InterruptIn encoderB        (D8);
@@ -18,9 +23,55 @@
 
 //Global variables
 int encoder = 0;
-   
+
+//Biquad
+BiQuadChain emg0band;
+BiQuad emg0band1( 7.29441e-01, -1.89276e-08, -7.29450e-01, -1.64507e-01, -7.26543e-01 );
+BiQuad emg0band2( 1.00000e+00, 1.99999e+00, 9.99994e-01, 1.72349e+00, 7.79616e-01 );
+BiQuad emg0band3( 1.00000e+00, -1.99999e+00, 9.99994e-01, -1.93552e+00, 9.39358e-01 );
+
+BiQuadChain emg1band;
+BiQuad emg1band1( 7.29441e-01, -1.89276e-08, -7.29450e-01, -1.64507e-01, -7.26543e-01 );
+BiQuad emg1band2( 1.00000e+00, 1.99999e+00, 9.99994e-01, 1.72349e+00, 7.79616e-01 );
+BiQuad emg1band3( 1.00000e+00, -1.99999e+00, 9.99994e-01, -1.93552e+00, 9.39358e-01 );
+
+BiQuadChain emg2band;
+BiQuad emg2band1( 7.29441e-01, -1.89276e-08, -7.29450e-01, -1.64507e-01, -7.26543e-01 );
+BiQuad emg2band2( 1.00000e+00, 1.99999e+00, 9.99994e-01, 1.72349e+00, 7.79616e-01 );
+BiQuad emg2band3( 1.00000e+00, -1.99999e+00, 9.99994e-01, -1.93552e+00, 9.39358e-01 );
+
+BiQuad notch1( 9.91104e-01, -1.60364e+00, 9.91104e-01, -1.60364e+00, 9.82207e-01 );                //Notch filter
+
+
+//Tickers
+Ticker emg_filter_tick;
+Ticker Mov_av_tick;
 
 //Functions
+void EMGFilter0()
+{
+    double emg0         = emg0_in.read();
+    double bandpass     = emg0band.step(emg0);
+    double absolute     = fabs(bandpass);
+    double notch0       = notch1.step(absolute);
+}
+
+void EMGFilter1()
+{
+    double emg1         = emg1_in.read();
+    double bandpass     = emg1band.step(emg1);
+    double absolute     = fabs(bandpass);
+    double notch1       = notch1.step(absolute);
+}
+
+void EMGFilter2()
+{
+    double emg2         = emg2_in.read();
+    double bandpass     = emg2band.step(emg2);
+    double absolute     = fabs(bandpass);
+    double notch2       = notch1.step(absolute);
+}
+
 void encoderA_rise()       
 {
     if(encoderB==false)
@@ -76,6 +127,15 @@
 { 
     pc.baud(115200);
     pc.printf("hello\n\r");
+    
+    //EMG signaal filteren 
+        
+        // Deze? of die hierondbqc.add( &bq1 ).add( &bq2 ).add( &bq3 );
+        bqc = bq1 * bq2 * bq3;
+        emgSampleTicker.attach(&emgSample,0.01); //100 Hz
+        while(true){/*do not return from main()*/}
+        
+        
     pwmpin1.period_us(60); //60 microseconds PWM period, 16.7 kHz 
 
     encoderA.rise(&encoderA_rise);
@@ -85,7 +145,7 @@
     
     while (true)
     {
-          
+        //Motor aansturen en encoder uitlezen
           float u1 = potmetervalue1;
           float u2 = potmetervalue2;
           
@@ -97,8 +157,11 @@
         wait(0.01f);                   //zodat de code niet oneindig doorgaat.
         pwmpin2 = fabs(m2*0.6f)+0.4f;    
         directionpin2.write(m2>0);   
+        
+        float encoderDegrees = float(encoder)*(360.0/8400.0);
                 
-        pc.printf("Encoder count: %i \n\r",encoder);   //We moeten de encoder counts nog omzetten naar radialen of graden? 
+        pc.printf("Encoder count: %f \n\r",encoderDegrees);
+        
     }
 }