Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: QEI mbed-rtos mbed
Fork of DCmotor by
Revision 14:02411880ffb9, committed 2013-03-12
- Comitter:
- kosaka
- Date:
- Tue Mar 12 04:32:22 2013 +0000
- Parent:
- 13:ba71733c11d7
- Commit message:
- 130303;
Changed in this revision
--- a/Hbridge.h Fri Mar 01 02:10:59 2013 +0000 +++ b/Hbridge.h Tue Mar 12 04:32:22 2013 +0000 @@ -2,7 +2,7 @@ #define __Hbridge_h //************* 使用するポートなどの設定 (ここから) ***************** -#define PWM_FREQ 20000.0 // [Hz], PWMチョッピング周波数 pwm freq. (> 1/(DEAD_TIME*10)) +#define PWM_FREQ 10000.0 // [Hz], PWMチョッピング周波数 pwm freq. (> 1/(DEAD_TIME*10)) #define DEADTIME 0.0001 // [s], デッドタイム(モータに加える電圧の正負が変わるときに上下アーム短絡を避けるために同時オフする時間) // [s], deadtime to be set between plus volt. to/from minus #define fwdIN_PORT p21 //LED1 // ポート:fwdIN port for U phase fwdIN arm #define rvsIN_PORT p22 // ポート:rvsIN port for U phase rvsIN arm
--- a/controller.cpp Fri Mar 01 02:10:59 2013 +0000
+++ b/controller.cpp Tue Mar 12 04:32:22 2013 +0000
@@ -135,6 +135,7 @@
float e, ed;
e = vl.w_ref - vl.w_lpf; // 速度偏差の計算
+debug[1]=vl.w_ref/2/PI;//[Hz], for debug
vl.eI = vl.eI + TS1*e; // 速度偏差の積分値の計算
@@ -243,7 +244,7 @@
void data2mbedUSB(){ // PC上のmbed USB ディスクにセーブするためのデータをTS3[s]ごとに代入 save data to mbed USB drive
if( _countTS3<1000 ){ // データ数が1,000の5種類のデータをメモリーに貯める
- data[_countTS3][0]=p.th[0]/*vl.w_ref*/; data[_countTS3][1]=debug[0];
+ data[_countTS3][0]=debug[0]; data[_countTS3][1]=debug[1];
data[_countTS3][2]=vl.w_lpf; data[_countTS3][3]=_countTS0*TS0; data[_countTS3][4]=il.v_ref;
_countTS3++;
}
--- a/controller.h Fri Mar 01 02:10:59 2013 +0000
+++ b/controller.h Tue Mar 12 04:32:22 2013 +0000
@@ -16,7 +16,7 @@
#define CH_B p30 // B相用ポート A phase port
// タイマーのサンプル周期等
-//#define PWM_FREQ 20000.0 // [Hz], PWMチョッピング周波数 pwm freq. (> 1/(DEAD_TIME*10))
+//#define PWM_FREQ 10000.0 // [Hz], PWMチョッピング周波数 pwm freq. (> 1/(DEAD_TIME*10))
//#define DEADTIME 0.0001 // [s], デッドタイム(モータに加える電圧の正負が変わるときに上下アーム短絡を避けるために同時オフする時間) // [s], deadtime to be set between plus volt. to/from minus
#define TS0 0.002 // [s], timerTS0のサンプル時間(電流制御用) sampling time (priority highest: Ticker IRQ) of motor current i control PID using timer interrupt
#define TS1 0.002 // [s], timerTS1のサンプル時間(位置制御用) sampling time (priority high: RtosTimer) of motor angle th PID using rtos-timer
@@ -44,10 +44,10 @@
#else // 電流制御なしのとき
#define wKp 0.05 // [A/(rad/s)], 速度制御PIDのPゲイン
#define wKi 0.5//2.50 // [A/(rad/s) s], 速度制御PIDのIゲイン
- #define wKd 0 // [A/(rad/s)/s], 速度制御PIDのDゲイン
+ #define wKd 0.0005 // [A/(rad/s)/s], 速度制御PIDのDゲイン
#endif
#define iLPF 0.95 // 0-1, 速度に対する1次LPFの強さ; Low Pass Filter, G(z)=(1-a)/(z-a)
-#define iMAX 3.3 // [A], 電流指令の最大値
+#define iMAX 1.0//3.3 // [A], 電流指令の最大値
#define DA_PORT p18 // デバッグ用DAポート analog out (DA) port of mbed
/*********** 使用するポートやサンプル時間、制御ゲインなどの設定 (ここから) ***************/
--- a/main.cpp Fri Mar 01 02:10:59 2013 +0000
+++ b/main.cpp Tue Mar 12 04:32:22 2013 +0000
@@ -79,7 +79,7 @@
// osPriorityHigh = +2, ///< priority: high
// osPriorityRealtime = +3, ///< priority: realtime (highest)
// osPriorityError = 0x84 ///< system cannot determine priority or thread has illegal priority
- float w_ref_req[2] = {2* 2*PI, 4* 2*PI}; // [rad/s], 指令速度(第2要素は指令速度急変後の指令速度)
+ float w_ref_req[2] = {2* 2*PI, 10* 2*PI}; // [rad/s], 指令速度(第2要素は指令速度急変後の指令速度)
float t; // [s], 現在の時間
init_parameters(); // モータの機器定数等の設定, 制御器の初期化
