Libary for PM2.

Dependencies:   LSM9DS1 RangeFinder FastPWM

Dependents:   PM2_Example_PES_board PM2_Example_PES_board PM2_Example_PES_board PM2_Example_PES_board ... more

Committer:
pmic
Date:
Fri May 13 20:53:33 2022 +0000
Revision:
29:335fb9b01ca7
Parent:
10:fe74e8909d3f
Motion integrated into SpeedController and PositionController class

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pmic 8:6b747ad59ff5 1 #ifndef PositionController_H_
pmic 8:6b747ad59ff5 2 #define PositionController_H_
pmic 8:6b747ad59ff5 3 #include <cstdlib>
pmic 8:6b747ad59ff5 4 #include <mbed.h>
pmic 8:6b747ad59ff5 5 #include "EncoderCounter.h"
pmic 8:6b747ad59ff5 6 #include "LowpassFilter.h"
pmic 8:6b747ad59ff5 7 #include "ThreadFlag.h"
pmic 8:6b747ad59ff5 8 #include "FastPWM.h"
pmic 29:335fb9b01ca7 9 #include "Motion.h"
pmic 8:6b747ad59ff5 10
pmic 8:6b747ad59ff5 11 class PositionController
pmic 8:6b747ad59ff5 12 {
pmic 8:6b747ad59ff5 13 public:
pmic 8:6b747ad59ff5 14
pmic 8:6b747ad59ff5 15 PositionController(float counts_per_turn, float kn, float max_voltage, FastPWM& pwm, EncoderCounter& encoderCounter);
pmic 29:335fb9b01ca7 16
pmic 8:6b747ad59ff5 17 virtual ~PositionController();
pmic 8:6b747ad59ff5 18
pmic 8:6b747ad59ff5 19 float getSpeedRPM();
pmic 8:6b747ad59ff5 20 float getSpeedRPS();
pmic 8:6b747ad59ff5 21 void setDesiredRotation(float desiredRotation);
pmic 8:6b747ad59ff5 22 float getRotation();
pmic 10:fe74e8909d3f 23 void setFeedForwardGain(float kn);
pmic 10:fe74e8909d3f 24 void setSpeedCntrlGain(float kp);
pmic 10:fe74e8909d3f 25 void setPositionCntrlGain(float p);
pmic 29:335fb9b01ca7 26 void setMaxVelocityRPS(float maxVelocityRPS);
pmic 29:335fb9b01ca7 27 void setMaxVelocityRPM(float maxVelocityRPM);
pmic 29:335fb9b01ca7 28 void setMaxAccelerationRPS(float maxAccelerationRPS);
pmic 29:335fb9b01ca7 29 void setMaxAccelerationRPM(float maxAccelerationRPM);
pmic 8:6b747ad59ff5 30
pmic 8:6b747ad59ff5 31 private:
pmic 8:6b747ad59ff5 32
pmic 8:6b747ad59ff5 33 static const float TS;
pmic 8:6b747ad59ff5 34 static const float LOWPASS_FILTER_FREQUENCY;
pmic 8:6b747ad59ff5 35 static const float MIN_DUTY_CYCLE;
pmic 8:6b747ad59ff5 36 static const float MAX_DUTY_CYCLE;
pmic 8:6b747ad59ff5 37
pmic 8:6b747ad59ff5 38 float counts_per_turn;
pmic 8:6b747ad59ff5 39 float kn;
pmic 8:6b747ad59ff5 40 float kp;
pmic 8:6b747ad59ff5 41 float max_voltage;
pmic 8:6b747ad59ff5 42 float max_speed;
pmic 8:6b747ad59ff5 43 float p;
pmic 8:6b747ad59ff5 44
pmic 8:6b747ad59ff5 45 FastPWM& pwm;
pmic 8:6b747ad59ff5 46 EncoderCounter& encoderCounter;
pmic 8:6b747ad59ff5 47 short previousValueCounter;
pmic 8:6b747ad59ff5 48 LowpassFilter speedFilter;
pmic 8:6b747ad59ff5 49 float desiredSpeed;
pmic 8:6b747ad59ff5 50 float actualSpeed;
pmic 8:6b747ad59ff5 51 float initialRotation;
pmic 8:6b747ad59ff5 52 float actualRotation;
pmic 8:6b747ad59ff5 53 float desiredRotation;
pmic 29:335fb9b01ca7 54
pmic 29:335fb9b01ca7 55 Motion motion;
pmic 8:6b747ad59ff5 56
pmic 8:6b747ad59ff5 57 ThreadFlag threadFlag;
pmic 8:6b747ad59ff5 58 Thread thread;
pmic 8:6b747ad59ff5 59 Ticker ticker;
pmic 8:6b747ad59ff5 60
pmic 8:6b747ad59ff5 61 void run();
pmic 8:6b747ad59ff5 62 void sendThreadFlag();
pmic 8:6b747ad59ff5 63 };
pmic 8:6b747ad59ff5 64
pmic 8:6b747ad59ff5 65 #endif /* PositionController_H_ */