Motor
motor.h@5:99fa6dffea40, 2013-09-16 (annotated)
- Committer:
- Reiko
- Date:
- Mon Sep 16 17:53:13 2013 +0000
- Revision:
- 5:99fa6dffea40
- Parent:
- 3:94db629c0a83
- Child:
- 6:37199f371bf8
Changed PI controller parameters, started with stall detection
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Reiko | 0:5cafacc2a607 | 1 | #ifndef MOTOR_H |
Reiko | 0:5cafacc2a607 | 2 | #define MOTOR_H |
Reiko | 0:5cafacc2a607 | 3 | |
Reiko | 0:5cafacc2a607 | 4 | #include "mbed.h" |
Reiko | 1:c97f8bcd6c0f | 5 | #include "PCA9555.h" |
Reiko | 1:c97f8bcd6c0f | 6 | #include "qed.h" |
Reiko | 0:5cafacc2a607 | 7 | |
Reiko | 0:5cafacc2a607 | 8 | class Motor { |
Reiko | 5:99fa6dffea40 | 9 | protected: |
Reiko | 5:99fa6dffea40 | 10 | FunctionPointer stallWarningCallback; |
Reiko | 5:99fa6dffea40 | 11 | FunctionPointer stallErrorCallback; |
Reiko | 0:5cafacc2a607 | 12 | public: |
Reiko | 1:c97f8bcd6c0f | 13 | Motor(PinName PWMpin, PCA9555 *ioExt, unsigned int dir1Pin, unsigned int dir2Pin, PinName encA, PinName encB); |
Reiko | 0:5cafacc2a607 | 14 | |
Reiko | 3:94db629c0a83 | 15 | void setPWM(int newPWM); |
Reiko | 0:5cafacc2a607 | 16 | void setSpeed(int newSpeed); |
Reiko | 0:5cafacc2a607 | 17 | int getSpeed(); |
Reiko | 1:c97f8bcd6c0f | 18 | void pid(); |
Reiko | 5:99fa6dffea40 | 19 | |
Reiko | 5:99fa6dffea40 | 20 | void stallWarning(void (*function)(void)); |
Reiko | 5:99fa6dffea40 | 21 | |
Reiko | 5:99fa6dffea40 | 22 | template<typename T> |
Reiko | 5:99fa6dffea40 | 23 | void stallWarning(T *object, void (T::*member)(void)) { |
Reiko | 5:99fa6dffea40 | 24 | stallWarningCallback.attach(object, member); |
Reiko | 5:99fa6dffea40 | 25 | } |
Reiko | 5:99fa6dffea40 | 26 | |
Reiko | 5:99fa6dffea40 | 27 | void stallError(void (*function)(void)); |
Reiko | 5:99fa6dffea40 | 28 | |
Reiko | 5:99fa6dffea40 | 29 | template<typename T> |
Reiko | 5:99fa6dffea40 | 30 | void stallError(T *object, void (T::*member)(void)) { |
Reiko | 5:99fa6dffea40 | 31 | stallErrorCallback.attach(object, member); |
Reiko | 5:99fa6dffea40 | 32 | } |
Reiko | 0:5cafacc2a607 | 33 | |
Reiko | 0:5cafacc2a607 | 34 | private: |
Reiko | 1:c97f8bcd6c0f | 35 | PwmOut pwm; |
Reiko | 1:c97f8bcd6c0f | 36 | PCA9555 *extIO; |
Reiko | 1:c97f8bcd6c0f | 37 | unsigned int dir1; |
Reiko | 1:c97f8bcd6c0f | 38 | unsigned int dir2; |
Reiko | 1:c97f8bcd6c0f | 39 | QED qed; |
Reiko | 1:c97f8bcd6c0f | 40 | |
Reiko | 1:c97f8bcd6c0f | 41 | int currentSpeed; |
Reiko | 1:c97f8bcd6c0f | 42 | int getDecoderCount(); |
Reiko | 0:5cafacc2a607 | 43 | |
Reiko | 2:3faf5dcde08f | 44 | void resetPID(); |
Reiko | 2:3faf5dcde08f | 45 | |
Reiko | 1:c97f8bcd6c0f | 46 | int setPoint; |
Reiko | 3:94db629c0a83 | 47 | int pMulti; |
Reiko | 3:94db629c0a83 | 48 | int iDiv; |
Reiko | 3:94db629c0a83 | 49 | int dMulti; |
Reiko | 3:94db629c0a83 | 50 | int error; |
Reiko | 3:94db629c0a83 | 51 | int prevError; |
Reiko | 3:94db629c0a83 | 52 | int P; |
Reiko | 3:94db629c0a83 | 53 | int I; |
Reiko | 3:94db629c0a83 | 54 | int D; |
Reiko | 3:94db629c0a83 | 55 | int minPwm; |
Reiko | 3:94db629c0a83 | 56 | int pidMulti; |
Reiko | 3:94db629c0a83 | 57 | int iMax; |
Reiko | 5:99fa6dffea40 | 58 | |
Reiko | 5:99fa6dffea40 | 59 | int currentPWM; |
Reiko | 5:99fa6dffea40 | 60 | int stallCounter; |
Reiko | 5:99fa6dffea40 | 61 | int stallCounterLimit; |
Reiko | 0:5cafacc2a607 | 62 | }; |
Reiko | 0:5cafacc2a607 | 63 | |
Reiko | 0:5cafacc2a607 | 64 | #endif |