main.cpp: Sensoren einlesen und Motoren ansteuern

Dependencies:   mbed

Committer:
maddajan
Date:
Mon Apr 16 12:49:50 2018 +0000
Revision:
7:8d60a2ff4c2b
Parent:
0:9a3e7847a4be
rfesfs

Who changed what in which revision?

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