Script zelf doet het, waardes van de Biquads kloppen wss niet. Na filteren is aanspannen niet meer te detecteren

Dependencies:   mbed QEI HIDScope biquadFilter MODSERIAL FastPWM

main.cpp

Committer:
linde101
Date:
2019-10-29
Revision:
6:ee304066e301
Parent:
5:0e197bf776fc

File content as of revision 6:ee304066e301:

#include "mbed.h"
#include "HIDScope.h"
#include "QEI.h"
#include "MODSERIAL.h"
#include "BiQuad.h"
#include "FastPWM.h"
#include "math.h"
#include <stdio.h>      /* printf */
#include <stdlib.h>     /* abs */
#include <complex>


MODSERIAL pc(USBTX, USBRX);

//Filters EMG
//Filters Linker Biceps
//In de volgorde High pass, notch, low pass
BiQuad LBHP1(1, 2.000000023182220, 0.999999981993818, 1.893415601022358, 0.896255659548714); 
BiQuad LBHP2(1, 1.999999976817780, 0.999999976817780, 1.778313488139574, 0.790599715524785);

BiQuad LBN1( 0.5, 0, 0.5, 0, 0);

BiQuad LBLP1( 0.000155148423475721, 0.000310296846951441, 0.000155148423475721,-1.96446058020523, 0.965081173899135);
BiQuad LBLP2( 0.000155148423475721, 0.000310296846951441, 0.000155148423475721,-1.96446058020523, 0.965081173899135);
BiQuadChain LeftBicep;



//Filters Rechter Biceps
//In de volgorde High pass, notch, low pass
BiQuad RBHP1(1, 2.000000023182220, 0.999999981993818, 1.893415601022358, 0.896255659548714); 
BiQuad RBHP2(1, 1.999999976817780, 0.999999976817780, 1.778313488139574, 0.790599715524785);

BiQuad RBN1( 0.5, 0, 0.5, 0, 0);

BiQuad RBLP1( 0.000155148423475721, 0.000310296846951441, 0.000155148423475721,-1.96446058020523, 0.965081173899135);
BiQuad RBLP2( 0.000155148423475721, 0.000310296846951441, 0.000155148423475721,-1.96446058020523, 0.965081173899135);
BiQuadChain RightBicep;


//Filters Rechter Quadriceps
//In de volgorde High pass, notch, low pass
BiQuad RQHP1(1, 2.000000023182220, 0.999999981993818, 1.893415601022358, 0.896255659548714); 
BiQuad RQHP2(1, 1.999999976817780, 0.999999976817780, 1.778313488139574, 0.790599715524785);

BiQuad RQN1( 0.5, 0, 0.5, 0, 0);

BiQuad RQLP1( 0.000155148423475721, 0.000310296846951441, 0.000155148423475721,-1.96446058020523, 0.965081173899135);
BiQuad RQLP2( 0.000155148423475721, 0.000310296846951441, 0.000155148423475721,-1.96446058020523, 0.965081173899135);
BiQuadChain RightLeg;
//BiQuadChain bqc;
//bqc.add( &bq1 ).add( &bq2 );

//double emgLBHP;
//double emgLBNotch;
//double emgAbsLPHP;
//double emgLBLP;
//double emgAbsLBNotch;
 
//double emgRBHP;
//double emgRBNotch;
//double emgAbsRBHP;
//double emgRBLP;
//double emgAbsRBNotch;
 
//double emgRQNotch;
//double emgRQHP;
//double emgAbsRQHP;
//double emgRQLP;
//double emgAbsRQNotch;

double emgLBfiltered;
double emgRBfiltered;
double emgRQfiltered;
double emgLBraw;
double emgRBraw;
double emgRQraw;


AnalogIn emgLB(A0);     //read EMG
AnalogIn emgRB(A1);     //read EMG
AnalogIn emgRQ(A2);     //read EMG

HIDScope scope(6);

Ticker filter;

void Filteren() 
{
    //linkerbicep
    /*emgLBHP = LBHP.step(emgLB.read() );     // High-pass filter
    emgLBNotch = LBN.step(emgLBHP);         // Notch filter
    emgAbsLBNotch = abs(emgLBNotch);        // Absolute value
    emgLBLP = LBLP.step(emgAbsLBNotch);     // Low-pass filter
    */
    emgLBraw= emgLB.read();
    emgLBfiltered=LeftBicep.step(emgLB.read());
    scope.set(0, emgLBraw);
    scope.set(1, emgLBfiltered);

    //rechterbicep
    /*emgRBHP = RBHP.step(emgRB.read()); 
    emgRBNotch = RBN.step(emgRBHP);     
    emgAbsRBNotch = abs(emgRBNotch);            
    emgRBLP = RBLP.step(emgAbsRBNotch);    
    */
    emgRBraw= emgRB.read();
    emgRBfiltered=RightBicep.step(emgRB.read());
    scope.set(2, emgRBraw);
    scope.set(3, emgRBfiltered);

       
    /*
    emgRQHP = RQHP.step(emgRQ.read());     
    emgRQNotch = RQN.step(emgRQHP);  
    emgAbsRQNotch = abs(emgRQNotch);            
    emgRQLP = RQLP.step(emgAbsRQNotch);
    */
    emgRQraw= emgRQ.read();
    emgRQfiltered=RightLeg.step(emgRQ.read());
    scope.set(4, emgRQ.read());
    scope.set(5, emgRQfiltered);
    scope.send();
    
    }
    
int main() {
        LeftBicep.add( &LBHP1 ).add( &LBHP2 ).add( &LBN1 ).add( &LBLP1 ).add( &LBLP2 );
        RightBicep.add( &RBHP1 ).add( &RBHP2 ).add( &RBN1 ).add( &RBLP1 ).add( &RBLP2 );
        RightLeg.add( &RQHP1 ).add( &RQHP2 ).add( &RQN1 ).add( &RQLP1 ).add( &RQLP2 );
        

        filter.attach(Filteren, 0.001f); //ticker aanroepen van filter
    }