PM2_Lib
Dependencies: LSM9DS1 RangeFinder FastPWM
PositionController.h
- Committer:
- pmic
- Date:
- 2022-02-10
- Revision:
- 10:fe74e8909d3f
- Parent:
- 8:6b747ad59ff5
File content as of revision 10:fe74e8909d3f:
#ifndef PositionController_H_ #define PositionController_H_ #include <cstdlib> #include <mbed.h> #include "EncoderCounter.h" #include "LowpassFilter.h" #include "ThreadFlag.h" #include "FastPWM.h" class PositionController { public: PositionController(float counts_per_turn, float kn, float max_voltage, FastPWM& pwm, EncoderCounter& encoderCounter); PositionController(float counts_per_turn, float kn, float kp, float max_voltage, FastPWM& pwm, EncoderCounter& encoderCounter); PositionController(float counts_per_turn, float kn, float kp, float p, float max_voltage, FastPWM& pwm, EncoderCounter& encoderCounter); virtual ~PositionController(); float getSpeedRPM(); float getSpeedRPS(); void setDesiredRotation(float desiredRotation); void setDesiredRotation(float desiredRotation, float maxSpeedRPS); float getRotation(); void setFeedForwardGain(float kn); void setSpeedCntrlGain(float kp); void setPositionCntrlGain(float p); private: static const float TS; static const float LOWPASS_FILTER_FREQUENCY; static const float MIN_DUTY_CYCLE; static const float MAX_DUTY_CYCLE; float counts_per_turn; float kn; float kp; float max_voltage; float max_speed; float p; FastPWM& pwm; EncoderCounter& encoderCounter; short previousValueCounter; LowpassFilter speedFilter; float desiredSpeed; float actualSpeed; float initialRotation; float actualRotation; float desiredRotation; ThreadFlag threadFlag; Thread thread; Ticker ticker; void run(); void sendThreadFlag(); }; #endif /* PositionController_H_ */