Encoder QEi

Committer:
porizou
Date:
Wed Aug 08 14:04:47 2018 +0000
Revision:
0:28acb74250ee
first commit;

Who changed what in which revision?

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