UVW 3 phases Brushless DC motor control
Dependencies: QEI mbed-rtos mbed
Fork of BLDCmotor by
Revision 5:2e53814aae4c, committed 2012-11-17
- Comitter:
- kosaka
- Date:
- Sat Nov 17 00:07:04 2012 +0000
- Parent:
- 4:6ccbf4d3cb6d
- Child:
- 6:16bee943a9fa
- Commit message:
- 121116ok
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- 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?... ");
