Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
pwm.cpp@1:b3ee94985eca, 2015-12-15 (annotated)
- Committer:
- tummie
- Date:
- Tue Dec 15 02:21:15 2015 +0000
- Revision:
- 1:b3ee94985eca
- Parent:
- 0:f15aa1706e16
??
Who changed what in which revision?
| User | Revision | Line number | New 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 | } |