自分用QEI

Dependents:   FourOmniMecha

エンコーダの回転方向はデフォの状態の反対を正としたいならrotReverce()を呼び出すと反対になる.

22020/3/6 移動平均を使ってパルスを平滑化し,RPSを算出している. useAvePRS()を書くことで,エンコーダのパルスを時間平均しそのままRPSを算出する関数MoveAve_pulse_to_RPS()がタイマー割り込みで呼び出される.移動平均を使うことでエンコーダのパルスのばらつきを無くし,平均をとらないとガタガタになるRPSがそこそこ綺麗になる.3000usごとの割り込み.この時間が長いほど精度は高い.あとclass内で配列の格納数をconst int で定義しているため黄色いエラーが出るけど無視. この方法でとったRPSの呼び出しはgetRPS()を使う.

Revision:
1:2b1d4925ea1c
Parent:
0:47508ccc086b
Child:
2:98811a31580a
--- a/QEI.h	Thu Mar 05 08:27:36 2020 +0000
+++ b/QEI.h	Mon Mar 09 01:49:34 2020 +0000
@@ -14,7 +14,7 @@
         void MoveAve_pulse();
     */
     void MoveAve_pulse_to_RPS();
-    float getRPS();
+    double getRPS();
     void rotReverce();
 
 private:
@@ -23,12 +23,12 @@
     Timer *_timer;
     Ticker *_ticker;
     int _PPR;
-    float current_rps;
+    double current_rps;
     uint8_t pre_ABstate;
     const int data_sizeof = 30;
     int pulse,pulseData[data_sizeof];
-    float pulseAve;
-    float rps;
+    double pulseAve;
+    double rps;
     int8_t NrotDIR;
 };