a

Dependencies:   mbed mbedWSEsbc

Committer:
m193516
Date:
Mon Nov 06 03:04:52 2017 +0000
Revision:
0:40605c19e1a6
Child:
1:ca98a3ae7a70
asdf;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
m193516 0:40605c19e1a6 1 /* Harrison Kubena and Rav Dhingra
m193516 0:40605c19e1a6 2 ES305 Lab 1 - Motor Ticker
m193516 0:40605c19e1a6 3 27 August 2017 */
m193516 0:40605c19e1a6 4
m193516 0:40605c19e1a6 5 #include "mbed.h"
m193516 0:40605c19e1a6 6 #include "mbedWSEsbc.h"
m193516 0:40605c19e1a6 7 #define PI (3.14159)
m193516 0:40605c19e1a6 8
m193516 0:40605c19e1a6 9 //declare objects
m193516 0:40605c19e1a6 10 Ticker Controller; //declare ticker obj
m193516 0:40605c19e1a6 11
m193516 0:40605c19e1a6 12 //declare variables
m193516 0:40605c19e1a6 13 float TotalTime;
m193516 0:40605c19e1a6 14 float Time;
m193516 0:40605c19e1a6 15 float Tsamp = 0.0083;
m193516 0:40605c19e1a6 16 float Tstream = 0.01;
m193516 0:40605c19e1a6 17 float userDC;
m193516 0:40605c19e1a6 18 float ang, angp, speed;
m193516 0:40605c19e1a6 19 float dc;
m193516 0:40605c19e1a6 20 float enc1;
m193516 0:40605c19e1a6 21 float lowDC;
m193516 0:40605c19e1a6 22
m193516 0:40605c19e1a6 23 void ctrCode();
m193516 0:40605c19e1a6 24 void twoStepCode();
m193516 0:40605c19e1a6 25
m193516 0:40605c19e1a6 26 //enter main
m193516 0:40605c19e1a6 27 int main() {
m193516 0:40605c19e1a6 28 //init mbed
m193516 0:40605c19e1a6 29
m193516 0:40605c19e1a6 30 mbedWSEsbcInit(115200);
m193516 0:40605c19e1a6 31 mot_en1.period(0.020);
m193516 0:40605c19e1a6 32
m193516 0:40605c19e1a6 33 while(1) {
m193516 0:40605c19e1a6 34
m193516 0:40605c19e1a6 35 pc.scanf("%f,%f", &TotalTime, &lowDC);
m193516 0:40605c19e1a6 36 Time = 0.0;
m193516 0:40605c19e1a6 37 t.reset();
m193516 0:40605c19e1a6 38 Controller.attach(&twoStepCode,Tsamp);
m193516 0:40605c19e1a6 39 t.start();
m193516 0:40605c19e1a6 40
m193516 0:40605c19e1a6 41 //data streaming
m193516 0:40605c19e1a6 42
m193516 0:40605c19e1a6 43 while(Time <= TotalTime) {
m193516 0:40605c19e1a6 44
m193516 0:40605c19e1a6 45 Time = t.read();
m193516 0:40605c19e1a6 46 pc.printf("%f, %f, %f\n", Time, speed, dc);
m193516 0:40605c19e1a6 47 wait(Tstream);
m193516 0:40605c19e1a6 48 }
m193516 0:40605c19e1a6 49 Controller.detach();
m193516 0:40605c19e1a6 50 mot_control(1,0.0);
m193516 0:40605c19e1a6 51 }
m193516 0:40605c19e1a6 52 }
m193516 0:40605c19e1a6 53 // additional function definitions
m193516 0:40605c19e1a6 54 void ctrCode() {
m193516 0:40605c19e1a6 55 //read encoder
m193516 0:40605c19e1a6 56 enc1 = LS7366_read_counter(1);
m193516 0:40605c19e1a6 57 //convert counts to rads
m193516 0:40605c19e1a6 58 ang = 2.0*PI*enc1/6400.0;
m193516 0:40605c19e1a6 59 //estimate speed
m193516 0:40605c19e1a6 60 speed = (ang-angp)/Tsamp;
m193516 0:40605c19e1a6 61 //age variables
m193516 0:40605c19e1a6 62 angp = ang;
m193516 0:40605c19e1a6 63 //compute duty cycle
m193516 0:40605c19e1a6 64 dc = userDC;
m193516 0:40605c19e1a6 65 //send the duty cycle to motor
m193516 0:40605c19e1a6 66 mot_control(1,dc); }
m193516 0:40605c19e1a6 67
m193516 0:40605c19e1a6 68 void twoStepCode() {
m193516 0:40605c19e1a6 69 //read encoder
m193516 0:40605c19e1a6 70 enc1 = LS7366_read_counter(1);
m193516 0:40605c19e1a6 71 //convert counts to rads
m193516 0:40605c19e1a6 72 ang = 2.0*PI*enc1/6400.0;
m193516 0:40605c19e1a6 73 //estimate speed
m193516 0:40605c19e1a6 74 speed = (ang-angp)/Tsamp;
m193516 0:40605c19e1a6 75 //age variables
m193516 0:40605c19e1a6 76 angp = ang;
m193516 0:40605c19e1a6 77 //compute duty cycle
m193516 0:40605c19e1a6 78 if(Time<0.1){
m193516 0:40605c19e1a6 79 dc = 0.0;
m193516 0:40605c19e1a6 80 } else if(Time<0.55){
m193516 0:40605c19e1a6 81 dc = lowDC;
m193516 0:40605c19e1a6 82 } else {
m193516 0:40605c19e1a6 83 dc = 0.10;
m193516 0:40605c19e1a6 84 }
m193516 0:40605c19e1a6 85 //send the duty cycle to motor
m193516 0:40605c19e1a6 86 mot_control(1,dc); }
m193516 0:40605c19e1a6 87
m193516 0:40605c19e1a6 88
m193516 0:40605c19e1a6 89
m193516 0:40605c19e1a6 90