DC motor control program using TA7291P type driver and rotary encoder with A, B phase.
Dependencies: QEI mbed-rtos mbed
Diff: main.cpp
- 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?... ");