auto tracking car

Dependencies:   mbed-rtos mbed

Committer:
kosakaLab
Date:
Tue Jun 14 03:12:50 2016 +0000
Revision:
0:2af3980d8cc8
ver 0.1;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kosakaLab 0:2af3980d8cc8 1 #ifndef __controller_h
kosakaLab 0:2af3980d8cc8 2 #define __controller_h
kosakaLab 0:2af3980d8cc8 3
kosakaLab 0:2af3980d8cc8 4 #define PI 3.14159265358979 // 円周率πの定義
kosakaLab 0:2af3980d8cc8 5
kosakaLab 0:2af3980d8cc8 6 /*********** 使用するポート、サンプル時間、制御ゲインなどの設定 (ここから) ***************/
kosakaLab 0:2af3980d8cc8 7 // タイマーのサンプル周期等
kosakaLab 0:2af3980d8cc8 8 #define TS0 0.002 // [s], timerTS0のサンプル時間(電流制御用) sampling time (priority highest: Ticker IRQ) of motor current i control PID using timer interrupt
kosakaLab 0:2af3980d8cc8 9 #define TS1 0.002 // [s], timerTS1のサンプル時間(位置制御用) sampling time (priority high: RtosTimer) of motor angle th PID using rtos-timer
kosakaLab 0:2af3980d8cc8 10 #define TS2 0.2 // [s], timerTS2のサンプル時間(不使用) sampling time (priority =main(): precision 4ms) to save data to PC using thread. But, max data length is 1000.
kosakaLab 0:2af3980d8cc8 11 #define TS3 0.002 // [s], timerTS3のサンプル時間(データセーブ用) sampling time (priority low: precision 4ms)
kosakaLab 0:2af3980d8cc8 12 #define TS4 0.2 // [s], timerTS4のサンプル時間(モニタ表示用) sampling time (priority lowest: precision 4ms) to display data to PC tera term
kosakaLab 0:2af3980d8cc8 13 #define TMAX 5.0 // [s], プログラム開始から終了までの時間 experiment starts from 0[s] to TMAX[s]
kosakaLab 0:2af3980d8cc8 14 #define N_DATA 1000 // PC上のmbed USB ディスクにセーブするデータの数
kosakaLab 0:2af3980d8cc8 15
kosakaLab 0:2af3980d8cc8 16 #define DA_PORT p18 // デバッグ用DAポート analog out (DA) port of mbed
kosakaLab 0:2af3980d8cc8 17 /*********** 使用するポートやサンプル時間、制御ゲインなどの設定 (ここから) ***************/
kosakaLab 0:2af3980d8cc8 18
kosakaLab 0:2af3980d8cc8 19 // 制御器 K(s) の定数、変数の宣言
kosakaLab 0:2af3980d8cc8 20 typedef struct struct_controller_parameters{
kosakaLab 0:2af3980d8cc8 21 float y; // 出力(制御量)
kosakaLab 0:2af3980d8cc8 22 float r; // 目標値
kosakaLab 0:2af3980d8cc8 23 float u; // 制御入力
kosakaLab 0:2af3980d8cc8 24 float eI; // 偏差eの積分値(積分項)
kosakaLab 0:2af3980d8cc8 25 float e_old; // 偏差eの1サンプル過去の値
kosakaLab 0:2af3980d8cc8 26 float eI_old; // 偏差eの積分値の1サンプル過去の値
kosakaLab 0:2af3980d8cc8 27 }controller_parameters;
kosakaLab 0:2af3980d8cc8 28
kosakaLab 0:2af3980d8cc8 29 // タイマー宣言
kosakaLab 0:2af3980d8cc8 30 extern void timerTS0(); // TS0[s]ごとにコールされるタイマー timer called every TS0[s].
kosakaLab 0:2af3980d8cc8 31 extern void timerTS1(void const *argument); // TS1[s]ごとにコールされるタイマー timer called every TS1[s].
kosakaLab 0:2af3980d8cc8 32 extern void timerTS2(); // TS2[s]ごとにコールされるタイマー timer called every TS2[s].
kosakaLab 0:2af3980d8cc8 33 extern void timerTS3(); // TS3[s]ごとにコールされるタイマー timer called every TS3[s].
kosakaLab 0:2af3980d8cc8 34 extern void timerTS4(); // TS4[s]ごとにコールされるタイマー timer called every TS4[s].
kosakaLab 0:2af3980d8cc8 35
kosakaLab 0:2af3980d8cc8 36 extern void init_parameters(); // モータの機器定数等の設定, 制御器の初期化する関数の宣言
kosakaLab 0:2af3980d8cc8 37
kosakaLab 0:2af3980d8cc8 38 extern unsigned long _countTS0; // TS0[s]ごとのカウント数
kosakaLab 0:2af3980d8cc8 39 extern float _time; // [s], プログラム開始時からの経過時間
kosakaLab 0:2af3980d8cc8 40
kosakaLab 0:2af3980d8cc8 41 extern controller_parameters K[2]; // 制御器の定数、変数
kosakaLab 0:2af3980d8cc8 42
kosakaLab 0:2af3980d8cc8 43 extern float data[][5]; // PC上のmbed USB ディスクにセーブするデータ // memory to save data offline instead of "online fprintf".
kosakaLab 0:2af3980d8cc8 44 extern unsigned short _countTS3_data; // data[i][5]のカウンタ
kosakaLab 0:2af3980d8cc8 45
kosakaLab 0:2af3980d8cc8 46 #endif