Dependencies:   BNO055_fusion_tom FastPWM mbed

Fork of NucleoCube1 by Will Church

Committer:
tomras12
Date:
Wed Apr 12 00:29:45 2017 +0000
Revision:
23:abe76b7c377a
Child:
24:c7b3bac429c5
Refactor to make code more adaptable

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tomras12 23:abe76b7c377a 1 /*
tomras12 23:abe76b7c377a 2 * cube.h
tomras12 23:abe76b7c377a 3 * April 11, 2017
tomras12 23:abe76b7c377a 4 *
tomras12 23:abe76b7c377a 5 * Control software for balancing cube senior design project
tomras12 23:abe76b7c377a 6 *
tomras12 23:abe76b7c377a 7 * Will Church
tomras12 23:abe76b7c377a 8 * Tom Rasmussen
tomras12 23:abe76b7c377a 9 */
tomras12 23:abe76b7c377a 10
tomras12 23:abe76b7c377a 11 #ifndef CUBE_H
tomras12 23:abe76b7c377a 12 #define CUBE_H
tomras12 23:abe76b7c377a 13
tomras12 23:abe76b7c377a 14 /* -- INCLUDES -- */
tomras12 23:abe76b7c377a 15 #include "mbed.h"
tomras12 23:abe76b7c377a 16 #include "BNO055.h"
tomras12 23:abe76b7c377a 17
tomras12 23:abe76b7c377a 18 /* -- STRUCT -- */
tomras12 23:abe76b7c377a 19 struct config {
tomras12 23:abe76b7c377a 20 double Kbt; // Body angle gain
tomras12 23:abe76b7c377a 21 double Kbv; // Body velocity gain
tomras12 23:abe76b7c377a 22 double Kwv; // Wheel velocity gain
tomras12 23:abe76b7c377a 23 double eqAngle; // Equilibrium angle
tomras12 23:abe76b7c377a 24 double *angle; // Points to angle in IMU Euler_angle struct
tomras12 23:abe76b7c377a 25 double *vel; // Points to vel in IMU VEL struct
tomras12 23:abe76b7c377a 26 PwmOut *pwm; // PWM out for motor control
tomras12 23:abe76b7c377a 27 AnalogIn *hall; // Analog in for wheel velocity
tomras12 23:abe76b7c377a 28 };
tomras12 23:abe76b7c377a 29
tomras12 23:abe76b7c377a 30 /* -- CONSTANTS -- */
tomras12 23:abe76b7c377a 31 // 1D gains, other wheels detached
tomras12 23:abe76b7c377a 32 /*const double Kbt = -89.9276;
tomras12 23:abe76b7c377a 33 const double Kbv = -14.9398;
tomras12 23:abe76b7c377a 34 const double Kwv = -0.001; //-0.0909;
tomras12 23:abe76b7c377a 35
tomras12 23:abe76b7c377a 36 1d gains, others wheels attached
tomras12 23:abe76b7c377a 37 const double Kbt_x = 0;
tomras12 23:abe76b7c377a 38 const double Kbv_x = 0;
tomras12 23:abe76b7c377a 39 const double Kwv_x = 0;
tomras12 23:abe76b7c377a 40
tomras12 23:abe76b7c377a 41 const double Kbt_y = 0;
tomras12 23:abe76b7c377a 42 const double Kbv_y = 0;
tomras12 23:abe76b7c377a 43 const double Kwv_y = 0;
tomras12 23:abe76b7c377a 44
tomras12 23:abe76b7c377a 45 const double Kbt_z = 0;
tomras12 23:abe76b7c377a 46 const double Kbv_z = 0;
tomras12 23:abe76b7c377a 47 const double Kwv_z = 0;*/
tomras12 23:abe76b7c377a 48
tomras12 23:abe76b7c377a 49 // Other constants
tomras12 23:abe76b7c377a 50 const double pi = 3.14159265;
tomras12 23:abe76b7c377a 51
tomras12 23:abe76b7c377a 52 /* -- NOTES -- */
tomras12 23:abe76b7c377a 53 //------------------------------------
tomras12 23:abe76b7c377a 54 // Hyperterminal configuration
tomras12 23:abe76b7c377a 55 // 9600 bauds, 8-bit data, no parity
tomras12 23:abe76b7c377a 56 //------------------------------------
tomras12 23:abe76b7c377a 57
tomras12 23:abe76b7c377a 58 /* -- PROTOTYPES -- */
tomras12 23:abe76b7c377a 59
tomras12 23:abe76b7c377a 60 /*
tomras12 23:abe76b7c377a 61 * TODO: Documentation here
tomras12 23:abe76b7c377a 62 * Note: should this function be inline?
tomras12 23:abe76b7c377a 63 */
tomras12 23:abe76b7c377a 64 double calcPWM(config *c);
tomras12 23:abe76b7c377a 65 void updatePWM(config *c);
tomras12 23:abe76b7c377a 66 #endif