first
Dependents: 17robo_fuzi 17robo_tokyo_kaede
pid_encoder.h@1:0c64de09bd9b, 2017-09-27 (annotated)
- Committer:
- echo_piyo
- Date:
- Wed Sep 27 08:58:30 2017 +0000
- Revision:
- 1:0c64de09bd9b
- Parent:
- 0:929eee8e2c2c
?????????????; ???????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
echo_piyo | 1:0c64de09bd9b | 1 | /* |
echo_piyo | 1:0c64de09bd9b | 2 | [Encorder] |
echo_piyo | 1:0c64de09bd9b | 3 | **PositionPidを継承しているバージョン |
echo_piyo | 1:0c64de09bd9b | 4 | **エンコーダICからの出力を読み取りPprを指定することで, pulse, deg, rad, 回転数などを出力 |
echo_piyo | 1:0c64de09bd9b | 5 | **ターゲット角度を指定することでPID制御を通した出力値(-1.0~0.0~1.0)出力できる |
echo_piyo | 1:0c64de09bd9b | 6 | |
echo_piyo | 1:0c64de09bd9b | 7 | [Public Member Functions] |
echo_piyo | 1:0c64de09bd9b | 8 | Encoder (PinName A_Phase, PinName B_Phase); |
echo_piyo | 1:0c64de09bd9b | 9 | **<Create> 宣言 |
echo_piyo | 1:0c64de09bd9b | 10 | |
echo_piyo | 1:0c64de09bd9b | 11 | void setup(float Kp, float Ki, float Kd, float dt); |
echo_piyo | 1:0c64de09bd9b | 12 | **PIDのパラメータを設定 |
echo_piyo | 1:0c64de09bd9b | 13 | |
echo_piyo | 1:0c64de09bd9b | 14 | void cal(float target, float dt); |
echo_piyo | 1:0c64de09bd9b | 15 | **calを行うことでデータを更新できる |
echo_piyo | 1:0c64de09bd9b | 16 | |
echo_piyo | 1:0c64de09bd9b | 17 | float duty(); |
echo_piyo | 1:0c64de09bd9b | 18 | **PID計算を行ったモーターへの出力値(-1.0~1.0)を出力 |
echo_piyo | 1:0c64de09bd9b | 19 | |
echo_piyo | 1:0c64de09bd9b | 20 | float duty_enableWidth(float duty_min, float duty_max); |
echo_piyo | 1:0c64de09bd9b | 21 | **PID計算を行ったモーターへの出力値(-1.0~1.0)を出力 |
echo_piyo | 1:0c64de09bd9b | 22 | **引数でduty値を0と基準としたときの前後を指定することで、ストールさせないようにする |
echo_piyo | 1:0c64de09bd9b | 23 | |
echo_piyo | 1:0c64de09bd9b | 24 | void setPpr(int Ppr); |
echo_piyo | 1:0c64de09bd9b | 25 | **エンコーダのPPRを指定 |
echo_piyo | 1:0c64de09bd9b | 26 | |
echo_piyo | 1:0c64de09bd9b | 27 | float deg(); |
echo_piyo | 1:0c64de09bd9b | 28 | **設定したPPRに基づきdegを出力 |
echo_piyo | 1:0c64de09bd9b | 29 | |
echo_piyo | 1:0c64de09bd9b | 30 | float get_deg_cylinder(); |
echo_piyo | 1:0c64de09bd9b | 31 | **cylinder用のdegを出力 //基本的に17roboの大会用 |
echo_piyo | 1:0c64de09bd9b | 32 | |
echo_piyo | 1:0c64de09bd9b | 33 | float rad(); |
echo_piyo | 1:0c64de09bd9b | 34 | **設定したPPRに基づきradを出力 |
echo_piyo | 1:0c64de09bd9b | 35 | |
echo_piyo | 1:0c64de09bd9b | 36 | int pulse(); |
echo_piyo | 1:0c64de09bd9b | 37 | **設定したPPRに基づきradを出力 |
echo_piyo | 1:0c64de09bd9b | 38 | |
echo_piyo | 1:0c64de09bd9b | 39 | float N(); |
echo_piyo | 1:0c64de09bd9b | 40 | **設定したPPRに基づき回転数を出力 |
echo_piyo | 1:0c64de09bd9b | 41 | |
echo_piyo | 1:0c64de09bd9b | 42 | void origin(); |
echo_piyo | 1:0c64de09bd9b | 43 | **エンコーダ読み取り数を原点に指定する |
echo_piyo | 1:0c64de09bd9b | 44 | */ |
echo_piyo | 1:0c64de09bd9b | 45 | |
echo_piyo | 0:929eee8e2c2c | 46 | #ifndef MBED_PID_ENCORDER_H |
echo_piyo | 0:929eee8e2c2c | 47 | #define MBED_PID_ENCORDER_H |
echo_piyo | 0:929eee8e2c2c | 48 | |
echo_piyo | 0:929eee8e2c2c | 49 | #include "pid.h" |
echo_piyo | 0:929eee8e2c2c | 50 | #include "mbed.h" |
echo_piyo | 0:929eee8e2c2c | 51 | |
echo_piyo | 0:929eee8e2c2c | 52 | #define PI 3.141592654f |
echo_piyo | 0:929eee8e2c2c | 53 | #define Nmax 18000 |
echo_piyo | 0:929eee8e2c2c | 54 | #define invalidN 0.1 |
echo_piyo | 0:929eee8e2c2c | 55 | |
echo_piyo | 0:929eee8e2c2c | 56 | class Encoder : public PositionPid //: public Speed_pid |
echo_piyo | 0:929eee8e2c2c | 57 | { |
echo_piyo | 0:929eee8e2c2c | 58 | public: |
echo_piyo | 0:929eee8e2c2c | 59 | Encoder (PinName A_Phase, PinName B_Phase); |
echo_piyo | 0:929eee8e2c2c | 60 | void setPpr(int Ppr); |
echo_piyo | 0:929eee8e2c2c | 61 | void cal(float target, float dt); |
echo_piyo | 0:929eee8e2c2c | 62 | float deg(); |
echo_piyo | 0:929eee8e2c2c | 63 | float get_deg_cylinder(); |
echo_piyo | 0:929eee8e2c2c | 64 | float rad(); |
echo_piyo | 0:929eee8e2c2c | 65 | int pulse(); |
echo_piyo | 0:929eee8e2c2c | 66 | float N(); |
echo_piyo | 0:929eee8e2c2c | 67 | void origin(); |
echo_piyo | 0:929eee8e2c2c | 68 | |
echo_piyo | 0:929eee8e2c2c | 69 | private : |
echo_piyo | 0:929eee8e2c2c | 70 | InterruptIn A; |
echo_piyo | 0:929eee8e2c2c | 71 | InterruptIn B; |
echo_piyo | 0:929eee8e2c2c | 72 | |
echo_piyo | 0:929eee8e2c2c | 73 | int ppr; |
echo_piyo | 0:929eee8e2c2c | 74 | signed int count; |
echo_piyo | 0:929eee8e2c2c | 75 | float radian,oldtheta; |
echo_piyo | 0:929eee8e2c2c | 76 | float w,v,n; |
echo_piyo | 0:929eee8e2c2c | 77 | float degree, deg_cylinder; |
echo_piyo | 0:929eee8e2c2c | 78 | |
echo_piyo | 0:929eee8e2c2c | 79 | void A_count(); |
echo_piyo | 0:929eee8e2c2c | 80 | void B_count(); |
echo_piyo | 0:929eee8e2c2c | 81 | }; |
echo_piyo | 0:929eee8e2c2c | 82 | |
echo_piyo | 0:929eee8e2c2c | 83 | #endif |