Skelton of EMG input method program using timer interrupt and thread.

Dependencies:   QEI mbed-rtos mbed

Fork of DCmotor by manabu kosaka

Revision:
5:2e53814aae4c
Parent:
4:6ccbf4d3cb6d
Child:
6:16bee943a9fa
--- a/main.cpp	Fri Nov 16 02:48:01 2012 +0000
+++ b/main.cpp	Sat Nov 17 00:07:04 2012 +0000
@@ -12,9 +12,9 @@
 //#define R_SIN               // Comment this line if not r = sin
 float   _freq_u = 0.3;      // [Hz], freq. of Frequency response, or Step response
 float   _rmax=100./180.*PI; // [rad], max. of reference signal
-float   _Kp=1;              // P gain for PID ... Kp=1, Ki=0, Kd=0 is good.
-float   _Ki=0;              // I gain for PID
-float   _Kd=0;              // D gain for PID
+float   _Kp=20;             // P gain for PID ... Kp=1, Ki=0, Kd=0 is good.
+float   _Ki=20;             // I gain for PID
+float   _Kd=5;              // D gain for PID
 #define TS      0.001       // [s], TS>=0.001[s], sampling time[s] of PID controller
 #define TS2     0.01        // [s], TS2>=0.001[s], sampling time[s] of data save to PC. But, max data length is 1000.
 #define TMAX    10          // [s], experiment starts from 0[s] to TMAX[s]
@@ -27,7 +27,7 @@
 #define VREF_PORT   p18     // Vref      port of mbed (available if USE_PWM is not defined)
 DigitalOut  debug_p17(p17); // p17 for debug
 
-#define N_ENC   (360*4)     // "*4": QEI::X4_ENCODING. Number of pulses in one revolution(=360 deg) of rotary encoder.
+#define N_ENC   (24*4)     // "*4": QEI::X4_ENCODING. Number of pulses in one revolution(=360 deg) of rotary encoder.
 QEI encoder (p29, p30, NC, N_ENC, QEI::X4_ENCODING);
 //  QEI(PinName     channelA, mbed pin for channel A input.
 //      PinName     channelB, mbed pin for channel B input.
@@ -280,6 +280,7 @@
 //        pc.scanf("%f",&_freq_u);
 //        pc.printf("%8.3f[Hz]\r\n", _freq_u);  // print to tera term
 //  #endif
+        pc.printf("Kp=%f, Ki=%f, Kd=%f, r=%f[deg], %f Hz\r\n",_Kp, _Ki, _Kd, _rmax*180./PI, _freq_u);
         pc.printf("Which number do you like to change?\r\n ... 0)no change, 1)Kp, 2)Ki, 3)Kd, 4)r(t) freq.[Hz], 5)r(t) amp.[deg] ?");
         f=pc.getc()-48; //int = char-48
         pc.printf("\r\n    Value?... ");