Code to let Gr20's BioRobotics2017 robot come to live.

Dependencies:   FastPWM MODSERIAL QEI mbed

Committer:
megrootens
Date:
Mon Nov 13 10:45:29 2017 +0000
Revision:
8:383a0fb48121
Parent:
7:b9a209f889f5
Updated docs.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
megrootens 0:caa8ee3bd882 1 #ifndef _MOTOR_H_
megrootens 0:caa8ee3bd882 2 #define _MOTOR_H_
megrootens 0:caa8ee3bd882 3
megrootens 0:caa8ee3bd882 4 #include "FastPWM.h"
megrootens 0:caa8ee3bd882 5 #include "QEI.h"
megrootens 0:caa8ee3bd882 6
megrootens 2:df0c6af898ac 7 // Very high-frequency PWM signal so as to cut out noise.
megrootens 0:caa8ee3bd882 8 #define PWM_PERIOD_US 10
megrootens 0:caa8ee3bd882 9
megrootens 2:df0c6af898ac 10 /**
megrootens 8:383a0fb48121 11 * Motor representation.
megrootens 8:383a0fb48121 12 * Speed (pwm); direction (dout); with QEI-encoder read-out.
megrootens 2:df0c6af898ac 13 */
megrootens 0:caa8ee3bd882 14 class Motor
megrootens 0:caa8ee3bd882 15 {
megrootens 0:caa8ee3bd882 16 public:
megrootens 2:df0c6af898ac 17 /**
megrootens 2:df0c6af898ac 18 * Constructor
megrootens 2:df0c6af898ac 19 */
megrootens 0:caa8ee3bd882 20 Motor(PinName pwm, PinName dir, PinName enc_a, PinName enc_b,
megrootens 7:b9a209f889f5 21 int pulses_per_rev, bool invert_dir = false);
megrootens 7:b9a209f889f5 22 void Stop();
megrootens 7:b9a209f889f5 23 void Start();
megrootens 7:b9a209f889f5 24
megrootens 7:b9a209f889f5 25 bool has_power();
megrootens 7:b9a209f889f5 26
megrootens 7:b9a209f889f5 27 void set_pwm(double pwm);
megrootens 0:caa8ee3bd882 28
megrootens 0:caa8ee3bd882 29
megrootens 7:b9a209f889f5 30 double get_angle();
megrootens 7:b9a209f889f5 31 void set_angle(double angle);
megrootens 0:caa8ee3bd882 32
megrootens 0:caa8ee3bd882 33 private:
megrootens 0:caa8ee3bd882 34
megrootens 2:df0c6af898ac 35 // Encoder, direction pin, pwm pin
megrootens 0:caa8ee3bd882 36 QEI encoder_;
megrootens 0:caa8ee3bd882 37 DigitalOut dir_;
megrootens 0:caa8ee3bd882 38 FastPWM speed_;
megrootens 2:df0c6af898ac 39
megrootens 2:df0c6af898ac 40 // encoder/gear box constants
megrootens 0:caa8ee3bd882 41 const int kPulsesPerRev_;
megrootens 0:caa8ee3bd882 42 const bool kInvertDir_;
megrootens 2:df0c6af898ac 43
megrootens 2:df0c6af898ac 44 // allowed to move
megrootens 0:caa8ee3bd882 45 bool power_;
megrootens 2:df0c6af898ac 46
megrootens 2:df0c6af898ac 47 // internal offset s.t. the angle can be set.
megrootens 0:caa8ee3bd882 48 double offset_;
megrootens 0:caa8ee3bd882 49
megrootens 2:df0c6af898ac 50 // get encoder pulses; only for internal use
megrootens 7:b9a209f889f5 51 int get_pulses();
megrootens 0:caa8ee3bd882 52
megrootens 0:caa8ee3bd882 53 };
megrootens 0:caa8ee3bd882 54
megrootens 2:df0c6af898ac 55 #endif