ec

Dependents:   F3RC

Fork of EC by ROBOSTEP_LIBRARY

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