first
Dependents: 17robo_fuzi 17robo_tokyo_kaede
pid_encoder.h
- Committer:
- echo_piyo
- Date:
- 2017-09-27
- Revision:
- 1:0c64de09bd9b
- Parent:
- 0:929eee8e2c2c
File content as of revision 1:0c64de09bd9b:
/* [Encorder] **PositionPidを継承しているバージョン **エンコーダICからの出力を読み取りPprを指定することで, pulse, deg, rad, 回転数などを出力 **ターゲット角度を指定することでPID制御を通した出力値(-1.0~0.0~1.0)出力できる [Public Member Functions] Encoder (PinName A_Phase, PinName B_Phase); **<Create> 宣言 void setup(float Kp, float Ki, float Kd, float dt); **PIDのパラメータを設定 void cal(float target, float dt); **calを行うことでデータを更新できる float duty(); **PID計算を行ったモーターへの出力値(-1.0~1.0)を出力 float duty_enableWidth(float duty_min, float duty_max); **PID計算を行ったモーターへの出力値(-1.0~1.0)を出力 **引数でduty値を0と基準としたときの前後を指定することで、ストールさせないようにする void setPpr(int Ppr); **エンコーダのPPRを指定 float deg(); **設定したPPRに基づきdegを出力 float get_deg_cylinder(); **cylinder用のdegを出力 //基本的に17roboの大会用 float rad(); **設定したPPRに基づきradを出力 int pulse(); **設定したPPRに基づきradを出力 float N(); **設定したPPRに基づき回転数を出力 void origin(); **エンコーダ読み取り数を原点に指定する */ #ifndef MBED_PID_ENCORDER_H #define MBED_PID_ENCORDER_H #include "pid.h" #include "mbed.h" #define PI 3.141592654f #define Nmax 18000 #define invalidN 0.1 class Encoder : public PositionPid //: public Speed_pid { public: Encoder (PinName A_Phase, PinName B_Phase); void setPpr(int Ppr); void cal(float target, float dt); float deg(); float get_deg_cylinder(); float rad(); int pulse(); float N(); void origin(); private : InterruptIn A; InterruptIn B; int ppr; signed int count; float radian,oldtheta; float w,v,n; float degree, deg_cylinder; void A_count(); void B_count(); }; #endif