QEILibrary

Dependents:   MotorIdentification MotorPIcontrol Motor_P_PositionControl

Committer:
porizou3
Date:
Mon Mar 18 04:46:34 2019 +0000
Revision:
0:6d62a5947f59
commit;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
porizou3 0:6d62a5947f59 1 /* --- エンコーダから回転角を取得して速度を計算するクラス --- */
porizou3 0:6d62a5947f59 2
porizou3 0:6d62a5947f59 3 #ifndef __Encoder_h
porizou3 0:6d62a5947f59 4 #define __Encoder_h
porizou3 0:6d62a5947f59 5
porizou3 0:6d62a5947f59 6 /**
porizou3 0:6d62a5947f59 7 * Includes.
porizou3 0:6d62a5947f59 8 */
porizou3 0:6d62a5947f59 9 #include "mbed.h"
porizou3 0:6d62a5947f59 10 #include "QEI.h"
porizou3 0:6d62a5947f59 11
porizou3 0:6d62a5947f59 12 /**
porizou3 0:6d62a5947f59 13 * Defines.
porizou3 0:6d62a5947f59 14 */
porizou3 0:6d62a5947f59 15 #define PI 3.14159265358979
porizou3 0:6d62a5947f59 16
porizou3 0:6d62a5947f59 17 #define LPF 0.2 //0~1 速度計算,LPF係数
porizou3 0:6d62a5947f59 18
porizou3 0:6d62a5947f59 19 class Encoder {
porizou3 0:6d62a5947f59 20
porizou3 0:6d62a5947f59 21 public:
porizou3 0:6d62a5947f59 22
porizou3 0:6d62a5947f59 23 /**
porizou3 0:6d62a5947f59 24 *
porizou3 0:6d62a5947f59 25 * A エンコーダA相ピン変化割り込みピン
porizou3 0:6d62a5947f59 26 * B エンコーダB相ピン変化割り込みピン
porizou3 0:6d62a5947f59 27 * pulseNum 一回転辺りのパルス数
porizou3 0:6d62a5947f59 28 * aSample 回転角取得周期[s]
porizou3 0:6d62a5947f59 29 * vSample 回転速度取得周期[s]
porizou3 0:6d62a5947f59 30 */
porizou3 0:6d62a5947f59 31 Encoder(PinName A , PinName B , int pulseNum , float aSample, float vSample);
porizou3 0:6d62a5947f59 32
porizou3 0:6d62a5947f59 33 /* 初期値の設定 */
porizou3 0:6d62a5947f59 34 void initParam(void);
porizou3 0:6d62a5947f59 35
porizou3 0:6d62a5947f59 36 /* 回転角を取得するタイマー割り込み関数 */
porizou3 0:6d62a5947f59 37 void calcAngle(void);
porizou3 0:6d62a5947f59 38
porizou3 0:6d62a5947f59 39 /* 回転速度を取得するタイマー割り込み関数 */
porizou3 0:6d62a5947f59 40 void calcVelocity(void);
porizou3 0:6d62a5947f59 41
porizou3 0:6d62a5947f59 42 /* 回転速度を計算する関数 */
porizou3 0:6d62a5947f59 43 float getVelocity(void); //回転速度[rad/s]の取得
porizou3 0:6d62a5947f59 44
porizou3 0:6d62a5947f59 45 int getPulses(void); //パルス数の取得
porizou3 0:6d62a5947f59 46
porizou3 0:6d62a5947f59 47 float getAngle(void); //回転角度[rad]の取得
porizou3 0:6d62a5947f59 48
porizou3 0:6d62a5947f59 49 float getRevolution(void); //回転数の取得
porizou3 0:6d62a5947f59 50
porizou3 0:6d62a5947f59 51 private:
porizou3 0:6d62a5947f59 52
porizou3 0:6d62a5947f59 53 QEI qei;
porizou3 0:6d62a5947f59 54
porizou3 0:6d62a5947f59 55 Ticker AngleTicker; // 回転角度計算タイマー割り込み
porizou3 0:6d62a5947f59 56 Ticker VelocityTicker; //回転速度タイマー割り込み
porizou3 0:6d62a5947f59 57
porizou3 0:6d62a5947f59 58 int pulseNum_;
porizou3 0:6d62a5947f59 59
porizou3 0:6d62a5947f59 60 float aSample_;
porizou3 0:6d62a5947f59 61 float vSample_;
porizou3 0:6d62a5947f59 62
porizou3 0:6d62a5947f59 63 float Angle; // 回転角度 [rad]
porizou3 0:6d62a5947f59 64 float pAngle; // 前回の回転角度 [rad]
porizou3 0:6d62a5947f59 65
porizou3 0:6d62a5947f59 66 float Velocity; // 回転速度 [rad/s]
porizou3 0:6d62a5947f59 67 float pVelocity; // 前回の回転速度 [rad/s]
porizou3 0:6d62a5947f59 68
porizou3 0:6d62a5947f59 69
porizou3 0:6d62a5947f59 70 };
porizou3 0:6d62a5947f59 71
porizou3 0:6d62a5947f59 72 #endif