Filter emg 7-10-15 v1

Dependencies:   HIDScope mbed MODSERIAL

Committer:
Bartvaart
Date:
Wed Oct 12 15:31:14 2016 +0000
Revision:
24:38cd27737a43
Parent:
23:855c4bcb2284
andries

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Bartvaart 0:557b1ff83a8a 1 #include "mbed.h"
Bartvaart 7:040591b3f019 2 #include "HIDScope.h"
Bartvaart 5:b400209df739 3 #include "Filterdesigns.h"
Bartvaart 17:cfe44346645c 4 #include "Kalibratie.h"
Bartvaart 17:cfe44346645c 5 #include "MODSERIAL.h" //bugfix
Bartvaart 18:eec0880fcded 6 #include "Mode.h"
Bartvaart 0:557b1ff83a8a 7
Bartvaart 7:040591b3f019 8 AnalogIn emg(A0); //Analog input van emg kabels
Bartvaart 18:eec0880fcded 9 HIDScope scope(3); //3 scopes
Bartvaart 0:557b1ff83a8a 10 Ticker EMGticker;
Bartvaart 17:cfe44346645c 11 MODSERIAL pc(USBTX, USBRX); //bugfix
Bartvaart 17:cfe44346645c 12 DigitalOut LedBlue(LED3);
Bartvaart 22:c1811e60bfce 13 DigitalIn button(PTA4);
Bartvaart 0:557b1ff83a8a 14
Bartvaart 0:557b1ff83a8a 15 //Sample frequentie
Bartvaart 22:c1811e60bfce 16 double Fs = 200; //Hz
Bartvaart 1:98be4152a539 17 double t = 1/ Fs; // voor EMGticker
Bartvaart 5:b400209df739 18
Bartvaart 17:cfe44346645c 19 bool readymax = 0;
Bartvaart 17:cfe44346645c 20 bool readymin = 0;
Bartvaart 18:eec0880fcded 21 double ymin;
Bartvaart 18:eec0880fcded 22 double ymax;
Bartvaart 18:eec0880fcded 23 double thresholdlow;
Bartvaart 18:eec0880fcded 24 double thresholdmid;
Bartvaart 18:eec0880fcded 25 double thresholdhigh;
Bartvaart 22:c1811e60bfce 26 bool go_flag = 0;
Bartvaart 18:eec0880fcded 27
Bartvaart 19:6c0245063b96 28 void EMGkalibratie()
Bartvaart 19:6c0245063b96 29 {
Bartvaart 18:eec0880fcded 30 LedBlue = 1;
Bartvaart 18:eec0880fcded 31 Init();
Bartvaart 24:38cd27737a43 32 ymin = KalibratieMin(readymin, emg);
Bartvaart 19:6c0245063b96 33 wait(1);
Bartvaart 24:38cd27737a43 34 ymax = KalibratieMax(readymax, emg);
Bartvaart 19:6c0245063b96 35
Bartvaart 18:eec0880fcded 36 // bepalen van thresholds voor aan/uit
Bartvaart 22:c1811e60bfce 37 thresholdlow = 8 * ymin; // standaardwaarde
Bartvaart 20:11e1244ad2ad 38 thresholdmid = 0.5 * ymax; // afhankelijk van max output gebruiker
Bartvaart 21:8fe8419de3e9 39 thresholdhigh = 0.8 * ymax;
Bartvaart 22:c1811e60bfce 40
Bartvaart 22:c1811e60bfce 41 pc.printf("ymax = %f en ymin = %f \n",ymax, ymin); //bugfix
Bartvaart 19:6c0245063b96 42 }
Bartvaart 7:040591b3f019 43
Bartvaart 19:6c0245063b96 44 void EMGfilter()
Bartvaart 19:6c0245063b96 45 {
Bartvaart 7:040591b3f019 46 //uitlezen emg signaal
Bartvaart 7:040591b3f019 47 double u = emg.read();
Bartvaart 20:11e1244ad2ad 48 double y = Filterdesigns(u);
Bartvaart 18:eec0880fcded 49 //pc.printf("%f \n",y); //bugfix
Bartvaart 7:040591b3f019 50 // Plotten in HIDscope
Bartvaart 18:eec0880fcded 51 int mode = Mode(y, ymax, thresholdlow, thresholdmid, thresholdhigh); //bepaald welk signaal de motor krijgt (aan, uit, middel)
Bartvaart 15:c1a8f28d6583 52 scope.set(0,u); //ongefilterde waarde naar scope 1
Bartvaart 15:c1a8f28d6583 53 scope.set(1,y); //gefilterde waarde naar scope 2
Bartvaart 19:6c0245063b96 54 scope.set(2,mode);
Bartvaart 7:040591b3f019 55 scope.send(); //stuur de waardes naar HIDscope
Bartvaart 19:6c0245063b96 56 }
Bartvaart 0:557b1ff83a8a 57
Bartvaart 22:c1811e60bfce 58 void Go_flag(){
Bartvaart 22:c1811e60bfce 59 go_flag = 1;
Bartvaart 22:c1811e60bfce 60 }
Bartvaart 22:c1811e60bfce 61
Bartvaart 19:6c0245063b96 62 int main()
Bartvaart 19:6c0245063b96 63 {
Bartvaart 22:c1811e60bfce 64 //pc.baud(115200);
Bartvaart 22:c1811e60bfce 65 EMGticker.attach(&Go_flag, t); //500H
Bartvaart 19:6c0245063b96 66 while(1) {
Bartvaart 23:855c4bcb2284 67 if(go_flag) { // als deze true is dan gaat hij de onderstaande gebeuren aan
Bartvaart 22:c1811e60bfce 68 go_flag = 0;
Bartvaart 19:6c0245063b96 69 if(button == 0) {
Bartvaart 19:6c0245063b96 70 readymax = 0;
Bartvaart 19:6c0245063b96 71 readymin = 0;
Bartvaart 22:c1811e60bfce 72 }
Bartvaart 22:c1811e60bfce 73 else if(readymax == 0 || readymin == 0) {
Bartvaart 22:c1811e60bfce 74 EMGkalibratie();
Bartvaart 22:c1811e60bfce 75 }
Bartvaart 22:c1811e60bfce 76 else if(readymax == 1 && readymin == 1) {
Bartvaart 22:c1811e60bfce 77 EMGfilter();
Bartvaart 19:6c0245063b96 78 }
Bartvaart 17:cfe44346645c 79 }
Bartvaart 0:557b1ff83a8a 80 }
Bartvaart 19:6c0245063b96 81 }