Simon Krogedal / Karbot_wheel_control

Dependencies:   mbed ros_lib_melodic

Committer:
krogedal
Date:
Thu May 27 18:53:26 2021 +0000
Revision:
1:7c355adbc977
Parent:
0:441289ea4e29
Child:
2:aeaa1c1e0d33
fixed a bunch of typos

Who changed what in which revision?

UserRevisionLine numberNew contents of line
krogedal 0:441289ea4e29 1 /* Karbot motor controller
krogedal 0:441289ea4e29 2 * Written by Simon Krogedal
krogedal 0:441289ea4e29 3 * 26/05/21
krogedal 0:441289ea4e29 4 * Team 9 4th Year project
krogedal 0:441289ea4e29 5 *
krogedal 0:441289ea4e29 6 * for NUCLEO-F401RE
krogedal 0:441289ea4e29 7 *
krogedal 0:441289ea4e29 8 */
krogedal 0:441289ea4e29 9
krogedal 0:441289ea4e29 10 //LIBRARIES
krogedal 0:441289ea4e29 11 #include "mbed.h"
krogedal 0:441289ea4e29 12
krogedal 0:441289ea4e29 13 #include "motor.h"
krogedal 0:441289ea4e29 14 #include "encoder.h"
krogedal 0:441289ea4e29 15 #include "MotorControl.h"
krogedal 0:441289ea4e29 16
krogedal 0:441289ea4e29 17 //PIN DEFINITIONS
krogedal 0:441289ea4e29 18 #define L_MOTOR_PIN PC_6
krogedal 0:441289ea4e29 19 #define R_MOTOR_PIN PB_14
krogedal 0:441289ea4e29 20 #define L_MOTOR_DIR PC_15
krogedal 0:441289ea4e29 21 #define R_MOTOR_DIR PC_14
krogedal 0:441289ea4e29 22 #define L_ENC_PIN_A PA_14
krogedal 0:441289ea4e29 23 #define L_ENC_PIN_B PB_15
krogedal 0:441289ea4e29 24 #define R_ENC_PIN_A PA_13
krogedal 0:441289ea4e29 25 #define R_ENC_PIN_B PB_1
krogedal 0:441289ea4e29 26
krogedal 0:441289ea4e29 27
krogedal 0:441289ea4e29 28 //VARIABLES
krogedal 0:441289ea4e29 29 #define MOTOR_FREQ 25000.0 //25 kHz
krogedal 0:441289ea4e29 30 #define MOTOR_TS 0.05 //sample time, ie the time between every PID calculation
krogedal 0:441289ea4e29 31 #define MOTOR_KP 0.00002
krogedal 0:441289ea4e29 32 #define MOTOR_KI 0.0000001
krogedal 0:441289ea4e29 33
krogedal 0:441289ea4e29 34
krogedal 0:441289ea4e29 35 //CONSTANTS
krogedal 0:441289ea4e29 36 #define WHEEL_RAD 0.1025 //radius in meters
krogedal 0:441289ea4e29 37 #define PI 3.1415
krogedal 0:441289ea4e29 38 #define ENCODER_PERIOD 0.05 //encoder sampling period in seconds (currently 1/20 sec)
krogedal 0:441289ea4e29 39 #define ENCODER_CPR 980 //clicks per revolution
krogedal 0:441289ea4e29 40 #define L_MAX_SPEED 1
krogedal 0:441289ea4e29 41 #define R_MAX_SPEED 1
krogedal 0:441289ea4e29 42
krogedal 0:441289ea4e29 43 /* Functionality Summary
krogedal 0:441289ea4e29 44
krogedal 0:441289ea4e29 45 */
krogedal 0:441289ea4e29 46
krogedal 0:441289ea4e29 47 int main() {
krogedal 0:441289ea4e29 48
krogedal 0:441289ea4e29 49 // Constant used by QEI libraries
krogedal 0:441289ea4e29 50 double enc_const = ((WHEEL_RAD * 2.0 * PI) / ((double)(4 * ENCODER_CPR)));
krogedal 0:441289ea4e29 51 // Motor PWM frequency
krogedal 0:441289ea4e29 52 double motT = 1/MOTOR_FREQ;
krogedal 0:441289ea4e29 53
krogedal 0:441289ea4e29 54 // Initialisation
krogedal 0:441289ea4e29 55 motor leftMot(L_MOTOR_PIN, L_MOTOR_DIR, motT);
krogedal 0:441289ea4e29 56 //motor rightMot(R_MOTOR_PIN, R_MOTOR_DIR, motT);
krogedal 0:441289ea4e29 57
krogedal 0:441289ea4e29 58 MotorControl leftCtrl(L_ENC_PIN_A, L_ENC_PIN_B, NC, ENCODER_CPR, 1, MOTOR_TS, &leftMot, L_MAX_SPEED, MOTOR_KP, MOTOR_KI, enc_const);
krogedal 0:441289ea4e29 59 //MotorControl rightCtrl(R_ENC_PIN_A, R_ENC_PIN_B, NC, ENCODER_CPR, 0, MOTOR_TS, &rightMot, R_MAX_SPEED, MOTOR_KP, MOTOR_KI, enc_const);
krogedal 0:441289ea4e29 60
krogedal 0:441289ea4e29 61
krogedal 0:441289ea4e29 62 leftCtrl.setSpeed(0.5);
krogedal 0:441289ea4e29 63 leftCtrl.driveManual();
krogedal 0:441289ea4e29 64
krogedal 0:441289ea4e29 65 while (true) {
krogedal 0:441289ea4e29 66 leftCtrl.setSpeed(0.5);
krogedal 0:441289ea4e29 67 ThisThread::sleep_for(3s);
krogedal 0:441289ea4e29 68 leftCtrl.setSpeed(1.2);
krogedal 0:441289ea4e29 69 ThisThread::sleep_for(3s);
krogedal 0:441289ea4e29 70 }
krogedal 0:441289ea4e29 71 }