ec
Fork of EC by
Diff: EC.h
- Revision:
- 5:4abba4f54406
- Parent:
- 3:65ecbd28545c
- Child:
- 7:87c135463de7
diff -r 1b333860dd41 -r 4abba4f54406 EC.h --- a/EC.h Wed Nov 02 02:43:15 2016 +0000 +++ b/EC.h Sat Nov 12 06:50:56 2016 +0000 @@ -16,14 +16,24 @@ int solution; //分解能 double dt; //角速度の計算間隔 + //z相用 + bool first; + int rev; + double now_time,old_time; + double RPM,RPM_old; InterruptIn signalA_; InterruptIn signalB_; + InterruptIn signalZ_; + + Timer timer; void upA(); void downA(); void upB(); void downB(); + void upZ(); + void downZ(); public: double omega; //角速度 @@ -38,7 +48,8 @@ * @param s エンコーダの分解能(省略可) * @param t 角速度計算の間隔(省略可) */ - Ec(PinName signalA,PinName signalB,int s,double t); + Ec(PinName signalA,PinName signalB,PinName signalZ,int s,double t); + Ec(PinName signalZ); ///countの値を返す関数(int型) int getCount(); @@ -78,6 +89,9 @@ ///角速度計算の間隔dtを決めることができる(デフォルトは0.05秒) void setTime(double t); + double getRPM(); + int getrev(); + ///角速度計算の間隔 static double deftime; ///エンコーダの分解能のデフォルト値 @@ -132,7 +146,7 @@ double Kv_p,Kv_d,Kv_i; double diff,diff_old,integral; double out_duty,out; - + //Serial pc(USBTX,USBRX); protected: public: @@ -148,7 +162,8 @@ * @param pwm_B motorを後転させるpwmピン名 * motorを正転させるとencoderのcountが正のほうに加算されるようにencoderとmotorを設置する */ - SpeedControl( PinName signalA , PinName signalB , int s, double t, PinName pwm_F , PinName pwm_B); + SpeedControl( PinName signalA , PinName signalB , PinName signalZ , int s, double t, PinName pwm_F , PinName pwm_B); + //SpeedControl( PinName signalZ , PinName pwm_F , PinName pwm_B); /** duty比を角速度に変換させるための定数 * * 使うモーターやギア比や供給電圧によって変化するので一度duty比と角速度の関係を調べてグラフの傾きから求める @@ -192,6 +207,7 @@ * @param i i制御パラメータ * @param d d制御パラメータ */ + void setPIDparam(double p,double i,double d); /** 角速度・duty比変換定数(C)の設定関数 * @@ -216,5 +232,8 @@ /** 出力duty比 */ double duty; + + void ScZ(double target_RPM); + void Accelarate(double target_duty); }; #endif \ No newline at end of file