AES-2015 / Mbed 2 deprecated Finalrobot

Dependencies:   mbed-rtos mbed

Committer:
BAC
Date:
Tue Dec 15 02:42:41 2015 +0000
Revision:
2:d7cd4deef7be
Parent:
0:f15aa1706e16
the newest

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