Algorithmus

Dependencies:   mbed

Committer:
luethale
Date:
Sat Jun 30 09:49:06 2018 +0000
Revision:
35:5a4e1a87b3da
Parent:
1:2b5f79285a3e
Nacht_der_Technik

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Helvis 1:2b5f79285a3e 1 #ifndef CONTROLLER_H_
Helvis 1:2b5f79285a3e 2 #define CONTROLLER_H_
Helvis 1:2b5f79285a3e 3 #include <cstdlib>
Helvis 1:2b5f79285a3e 4 #include <mbed.h>
Helvis 1:2b5f79285a3e 5 #include "EncoderCounter.h"
Helvis 1:2b5f79285a3e 6 #include "LowpassFilter.h"
Helvis 1:2b5f79285a3e 7
Helvis 1:2b5f79285a3e 8 class Controller
Helvis 1:2b5f79285a3e 9 {
Helvis 1:2b5f79285a3e 10
Helvis 1:2b5f79285a3e 11 public:
Helvis 1:2b5f79285a3e 12
Helvis 1:2b5f79285a3e 13 Controller(PwmOut& pwmLeft, PwmOut& pwmRight,
Helvis 1:2b5f79285a3e 14 EncoderCounter& counterLeft, EncoderCounter& counterRight);
Helvis 1:2b5f79285a3e 15
Helvis 1:2b5f79285a3e 16 virtual ~Controller();
Helvis 1:2b5f79285a3e 17 void setDesiredSpeedLeft(float desiredSpeedLeft);
Helvis 1:2b5f79285a3e 18 void setDesiredSpeedRight(float desiredSpeedRight);
Helvis 1:2b5f79285a3e 19 float getSpeedLeft();
Helvis 1:2b5f79285a3e 20 float getSpeedRight();
Helvis 1:2b5f79285a3e 21 float getIntegralLeft();
Helvis 1:2b5f79285a3e 22 float getIntegralRight();
Helvis 1:2b5f79285a3e 23 float getProportionalLeft();
Helvis 1:2b5f79285a3e 24 float getProportionalRight();
Helvis 1:2b5f79285a3e 25 void counterReset();
Helvis 1:2b5f79285a3e 26
Helvis 1:2b5f79285a3e 27 private:
Helvis 1:2b5f79285a3e 28
Helvis 1:2b5f79285a3e 29 static const float PERIOD;
Helvis 1:2b5f79285a3e 30 static const float COUNTS_PER_TURN;
Helvis 1:2b5f79285a3e 31 static const float LOWPASS_FILTER_FREQUENCY;
Helvis 1:2b5f79285a3e 32 static const float KN;
Helvis 1:2b5f79285a3e 33 static const float KP;
Helvis 1:2b5f79285a3e 34 static const float KI;
Helvis 1:2b5f79285a3e 35 static const float I_MAX;
Helvis 1:2b5f79285a3e 36 static const float MAX_VOLTAGE;
Helvis 1:2b5f79285a3e 37 static const float MIN_DUTY_CYCLE;
Helvis 1:2b5f79285a3e 38 static const float MAX_DUTY_CYCLE;
Helvis 1:2b5f79285a3e 39
Helvis 1:2b5f79285a3e 40 PwmOut& pwmLeft;
Helvis 1:2b5f79285a3e 41 PwmOut& pwmRight;
Helvis 1:2b5f79285a3e 42 EncoderCounter& counterLeft;
Helvis 1:2b5f79285a3e 43 EncoderCounter& counterRight;
Helvis 1:2b5f79285a3e 44 short previousValueCounterLeft;
Helvis 1:2b5f79285a3e 45 short previousValueCounterRight;
Helvis 1:2b5f79285a3e 46 LowpassFilter speedLeftFilter;
Helvis 1:2b5f79285a3e 47 LowpassFilter speedRightFilter;
Helvis 1:2b5f79285a3e 48 float desiredSpeedLeft;
Helvis 1:2b5f79285a3e 49 float desiredSpeedRight;
Helvis 1:2b5f79285a3e 50 float actualSpeedLeft;
Helvis 1:2b5f79285a3e 51 float actualSpeedRight;
Helvis 1:2b5f79285a3e 52 float iSumLeft;
Helvis 1:2b5f79285a3e 53 float iSumRight;
Helvis 1:2b5f79285a3e 54 Ticker ticker;
Helvis 1:2b5f79285a3e 55
Helvis 1:2b5f79285a3e 56 void run();
Helvis 1:2b5f79285a3e 57
Helvis 1:2b5f79285a3e 58 };
Helvis 1:2b5f79285a3e 59
Helvis 1:2b5f79285a3e 60 #endif /* CONTROLLER_H_ */
Helvis 1:2b5f79285a3e 61
Helvis 1:2b5f79285a3e 62
Helvis 1:2b5f79285a3e 63
Helvis 1:2b5f79285a3e 64
Helvis 1:2b5f79285a3e 65