AES-2015 / Mbed 2 deprecated Finalrobot

Dependencies:   mbed-rtos mbed

Committer:
tummie
Date:
Tue Dec 15 02:21:15 2015 +0000
Revision:
1:b3ee94985eca
Parent:
0:f15aa1706e16
??

Who changed what in which revision?

UserRevisionLine numberNew contents of line
BAC 0:f15aa1706e16 1 #include "pwm.h"
BAC 0:f15aa1706e16 2
BAC 0:f15aa1706e16 3 MotorDriver::MotorDriver() : M1(PA_6), M2(PA_7), M3(PB_6) {
BAC 0:f15aa1706e16 4 unsigned int i;
BAC 0:f15aa1706e16 5 M1.period_ms(20);
BAC 0:f15aa1706e16 6 M2.period_ms(20);
BAC 0:f15aa1706e16 7 M3.period_ms(20);
BAC 0:f15aa1706e16 8
BAC 0:f15aa1706e16 9 M1.pulsewidth_us(1900);
BAC 0:f15aa1706e16 10 M2.pulsewidth_us(600);
BAC 0:f15aa1706e16 11 M3.pulsewidth_us(2000);
BAC 0:f15aa1706e16 12 wait(2.0f);
BAC 0:f15aa1706e16 13 // first move
BAC 0:f15aa1706e16 14 for(i=0;i<1000;i++)
BAC 0:f15aa1706e16 15 {
BAC 0:f15aa1706e16 16 M1.pulsewidth_us(1900 - (unsigned int)(i*0.853));
BAC 0:f15aa1706e16 17 printf("%d",1900 - (unsigned int)(i*0.853));
BAC 0:f15aa1706e16 18 }
BAC 0:f15aa1706e16 19 for(i=0;i<1000;i++)
BAC 0:f15aa1706e16 20 {
BAC 0:f15aa1706e16 21 M3.pulsewidth_us(2000 - (unsigned int)(i*0.626));
BAC 0:f15aa1706e16 22 }
BAC 0:f15aa1706e16 23 M2.pulsewidth_us(591);
BAC 0:f15aa1706e16 24 wait(2.0f);
BAC 0:f15aa1706e16 25
BAC 0:f15aa1706e16 26 // Look up table
BAC 0:f15aa1706e16 27
tummie 1:b3ee94985eca 28 du1[0] = 1025;
tummie 1:b3ee94985eca 29 du2[0] = 591;
tummie 1:b3ee94985eca 30 du3[0] = 1347;
tummie 1:b3ee94985eca 31
tummie 1:b3ee94985eca 32 du1[1] = 1005;
tummie 1:b3ee94985eca 33 du2[1] = 626;
tummie 1:b3ee94985eca 34 du3[1] = 1371;
tummie 1:b3ee94985eca 35
tummie 1:b3ee94985eca 36 du1[2] = 991;
tummie 1:b3ee94985eca 37 du2[2] = 630;
tummie 1:b3ee94985eca 38 du3[2] = 1417;
tummie 1:b3ee94985eca 39
tummie 1:b3ee94985eca 40 du1[3] = 985;
tummie 1:b3ee94985eca 41 du2[3] = 636;
tummie 1:b3ee94985eca 42 du3[3] = 1430;
tummie 1:b3ee94985eca 43
tummie 1:b3ee94985eca 44 du1[4] = 963;
tummie 1:b3ee94985eca 45 du2[4] = 642;
tummie 1:b3ee94985eca 46 du3[4] = 1445;
tummie 1:b3ee94985eca 47
tummie 1:b3ee94985eca 48 du1[5] = 953;
tummie 1:b3ee94985eca 49 du2[5] = 680;
tummie 1:b3ee94985eca 50 du3[5] = 1461;
tummie 1:b3ee94985eca 51
tummie 1:b3ee94985eca 52 du1[6] = 947;
tummie 1:b3ee94985eca 53 du2[6] = 688;
tummie 1:b3ee94985eca 54 du3[6] = 1461;
tummie 1:b3ee94985eca 55
tummie 1:b3ee94985eca 56 du1[7] = 935;
tummie 1:b3ee94985eca 57 du2[7] = 710;
tummie 1:b3ee94985eca 58 du3[7] = 1467;
tummie 1:b3ee94985eca 59
tummie 1:b3ee94985eca 60 du1[8] = 913;
tummie 1:b3ee94985eca 61 du2[8] = 728;
tummie 1:b3ee94985eca 62 du3[8] = 1485;
tummie 1:b3ee94985eca 63
tummie 1:b3ee94985eca 64 du1[9] = 909;
tummie 1:b3ee94985eca 65 du2[9] = 750;
tummie 1:b3ee94985eca 66 du3[9] = 1503;
tummie 1:b3ee94985eca 67
tummie 1:b3ee94985eca 68 du1[10] = 913;
tummie 1:b3ee94985eca 69 du2[10] = 774;
tummie 1:b3ee94985eca 70 du3[10] = 1519;
tummie 1:b3ee94985eca 71
tummie 1:b3ee94985eca 72 du1[11] = 977;
tummie 1:b3ee94985eca 73 du2[11] = 792;
tummie 1:b3ee94985eca 74 du3[11] = 1570;
tummie 1:b3ee94985eca 75
tummie 1:b3ee94985eca 76 du1[12] = 999;
tummie 1:b3ee94985eca 77 du2[12] = 828;
tummie 1:b3ee94985eca 78 du3[12] = 1545;
tummie 1:b3ee94985eca 79
tummie 1:b3ee94985eca 80 du1[13] = 999;
tummie 1:b3ee94985eca 81 du2[13] = 855;
tummie 1:b3ee94985eca 82 du3[13] = 1570;
tummie 1:b3ee94985eca 83
tummie 1:b3ee94985eca 84 du1[14] = 1023;
tummie 1:b3ee94985eca 85 du2[14] = 863;
tummie 1:b3ee94985eca 86 du3[14] = 1592;
tummie 1:b3ee94985eca 87
tummie 1:b3ee94985eca 88 du1[15] = 1045;
tummie 1:b3ee94985eca 89 du2[15] = 875;
tummie 1:b3ee94985eca 90 du3[15] = 1590;
tummie 1:b3ee94985eca 91
tummie 1:b3ee94985eca 92 du1[16] = 1071;
tummie 1:b3ee94985eca 93 du2[16] = 890;
tummie 1:b3ee94985eca 94 du3[16] = 1605;
tummie 1:b3ee94985eca 95
tummie 1:b3ee94985eca 96 du1[17] = 1085;
tummie 1:b3ee94985eca 97 du2[17] = 898;
tummie 1:b3ee94985eca 98 du3[17] = 1590;
BAC 0:f15aa1706e16 99
tummie 1:b3ee94985eca 100 du1[18] = 1109;
tummie 1:b3ee94985eca 101 du2[18] = 910;
tummie 1:b3ee94985eca 102 du3[18] = 1590;
tummie 1:b3ee94985eca 103
tummie 1:b3ee94985eca 104 du1[19] = 1151;
tummie 1:b3ee94985eca 105 du2[19] = 930;
tummie 1:b3ee94985eca 106 du3[19] = 1611;
tummie 1:b3ee94985eca 107
tummie 1:b3ee94985eca 108 du1[20] = 1163;
tummie 1:b3ee94985eca 109 du2[20] = 906;
tummie 1:b3ee94985eca 110 du3[20] = 1575;
tummie 1:b3ee94985eca 111
tummie 1:b3ee94985eca 112 du1[21] = 1169;
tummie 1:b3ee94985eca 113 du2[21] = 864;
tummie 1:b3ee94985eca 114 du3[21] = 1533;
tummie 1:b3ee94985eca 115
tummie 1:b3ee94985eca 116 du1[22] = 1173;
tummie 1:b3ee94985eca 117 du2[22] = 794;
tummie 1:b3ee94985eca 118 du3[22] = 1519;
tummie 1:b3ee94985eca 119
tummie 1:b3ee94985eca 120 du1[23] = 1189;
tummie 1:b3ee94985eca 121 du2[23] = 790;
tummie 1:b3ee94985eca 122 du3[23] = 1511;
tummie 1:b3ee94985eca 123
tummie 1:b3ee94985eca 124 du1[24] = 1215;
tummie 1:b3ee94985eca 125 du2[24] = 776;
tummie 1:b3ee94985eca 126 du3[24] = 1479;
tummie 1:b3ee94985eca 127
tummie 1:b3ee94985eca 128 du1[25] = 1219;
tummie 1:b3ee94985eca 129 du2[25] = 752;
tummie 1:b3ee94985eca 130 du3[25] = 1455;
tummie 1:b3ee94985eca 131
tummie 1:b3ee94985eca 132 du1[26] = 1223;
tummie 1:b3ee94985eca 133 du2[26] = 732;
tummie 1:b3ee94985eca 134 du3[26] = 1429;
BAC 0:f15aa1706e16 135
tummie 1:b3ee94985eca 136 du1[27] = 1225;
tummie 1:b3ee94985eca 137 du2[27] = 704;
tummie 1:b3ee94985eca 138 du3[27] = 1405;
tummie 1:b3ee94985eca 139
tummie 1:b3ee94985eca 140 du1[28] = 1210;
tummie 1:b3ee94985eca 141 du2[28] = 676;
tummie 1:b3ee94985eca 142 du3[28] = 1385;
tummie 1:b3ee94985eca 143
tummie 1:b3ee94985eca 144 du1[29] = 1180;
tummie 1:b3ee94985eca 145 du2[29] = 650;
tummie 1:b3ee94985eca 146 du3[29] = 1370;
tummie 1:b3ee94985eca 147
tummie 1:b3ee94985eca 148 du1[30] = 1156;
tummie 1:b3ee94985eca 149 du2[30] = 614;
tummie 1:b3ee94985eca 150 du3[30] = 1344;
tummie 1:b3ee94985eca 151
tummie 1:b3ee94985eca 152 du1[31] = 1122;
tummie 1:b3ee94985eca 153 du2[31] = 596;
tummie 1:b3ee94985eca 154 du3[31] = 1334;
tummie 1:b3ee94985eca 155
tummie 1:b3ee94985eca 156 du1[32] = 1104;
tummie 1:b3ee94985eca 157 du2[32] = 586;
tummie 1:b3ee94985eca 158 du3[32] = 1330;
tummie 1:b3ee94985eca 159
tummie 1:b3ee94985eca 160 du1[33] = 1090;
tummie 1:b3ee94985eca 161 du2[33] = 566;
tummie 1:b3ee94985eca 162 du3[33] = 1328;
tummie 1:b3ee94985eca 163
tummie 1:b3ee94985eca 164 du1[34] = 1064;
tummie 1:b3ee94985eca 165 du2[34] = 560;
tummie 1:b3ee94985eca 166 du3[34] = 1324;
tummie 1:b3ee94985eca 167
tummie 1:b3ee94985eca 168 du1[35] = 1048;
tummie 1:b3ee94985eca 169 du2[35] = 558;
tummie 1:b3ee94985eca 170 du3[35] = 1320;
tummie 1:b3ee94985eca 171
tummie 1:b3ee94985eca 172 du1[36] = 1016;
tummie 1:b3ee94985eca 173 du2[36] = 580;
tummie 1:b3ee94985eca 174 du3[36] = 1330;
BAC 0:f15aa1706e16 175
BAC 0:f15aa1706e16 176 }
BAC 0:f15aa1706e16 177
BAC 0:f15aa1706e16 178 void MotorDriver::Actuate() {
BAC 0:f15aa1706e16 179 M1.pulsewidth_us(D1);
BAC 0:f15aa1706e16 180 M2.pulsewidth_us(D2);
BAC 0:f15aa1706e16 181 M3.pulsewidth_us(D3);
BAC 0:f15aa1706e16 182 //printf("d1 = %d, d2 = %d, d3 = %d\r\r",D1,D2,D3);
BAC 0:f15aa1706e16 183 }
BAC 0:f15aa1706e16 184
BAC 0:f15aa1706e16 185 // 100/9
BAC 0:f15aa1706e16 186 void MotorDriver::Angle2Duty(float a, float b, float c){
BAC 0:f15aa1706e16 187 float k;
BAC 0:f15aa1706e16 188
BAC 0:f15aa1706e16 189 k = (float) (100.0/9.0); // degree to radian
BAC 0:f15aa1706e16 190 D1 = (unsigned int) (k*a);
BAC 0:f15aa1706e16 191 D2 = (unsigned int) (k*b);
BAC 0:f15aa1706e16 192 D3 = (unsigned int) (k*c);
BAC 0:f15aa1706e16 193 }
BAC 0:f15aa1706e16 194
BAC 0:f15aa1706e16 195 void MotorDriver::DirectDrive(unsigned int d1, unsigned int d2, unsigned int d3){
BAC 0:f15aa1706e16 196 M1.pulsewidth_us(d1);
BAC 0:f15aa1706e16 197 M2.pulsewidth_us(d2);
BAC 0:f15aa1706e16 198 M3.pulsewidth_us(d3);
BAC 0:f15aa1706e16 199 printf("PW1 = %d us,PW2 = %d us,PW3 = %d us \n\r",d1,d2,d3);
BAC 0:f15aa1706e16 200
BAC 0:f15aa1706e16 201 }
BAC 0:f15aa1706e16 202 void MotorDriver::DriveTable(unsigned int index){
BAC 0:f15aa1706e16 203 M1.pulsewidth_us(du1[index]);
BAC 0:f15aa1706e16 204 M2.pulsewidth_us(du2[index]);
BAC 0:f15aa1706e16 205 M3.pulsewidth_us(du3[index]);
BAC 0:f15aa1706e16 206 }
BAC 0:f15aa1706e16 207
BAC 0:f15aa1706e16 208
BAC 0:f15aa1706e16 209 unsigned int MotorDriver::GetD1 (void){
BAC 0:f15aa1706e16 210 return D1;
BAC 0:f15aa1706e16 211 }
BAC 0:f15aa1706e16 212 unsigned int MotorDriver::GetD2 (void){
BAC 0:f15aa1706e16 213 return D2;
BAC 0:f15aa1706e16 214 }
BAC 0:f15aa1706e16 215 unsigned int MotorDriver::GetD3 (void){
BAC 0:f15aa1706e16 216 return D3;
BAC 0:f15aa1706e16 217 }
BAC 0:f15aa1706e16 218 unsigned int MotorDriver::Getdu1 (unsigned int i){
BAC 0:f15aa1706e16 219 return du1[i];
BAC 0:f15aa1706e16 220 }
BAC 0:f15aa1706e16 221 unsigned int MotorDriver::Getdu2 (unsigned int i){
BAC 0:f15aa1706e16 222 return du2[i];
BAC 0:f15aa1706e16 223 }
BAC 0:f15aa1706e16 224 unsigned int MotorDriver::Getdu3 (unsigned int i){
BAC 0:f15aa1706e16 225 return du3[i];
BAC 0:f15aa1706e16 226 }