![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
I2C PWM MOTOR Control for DRV8830
main.cpp@0:7d2d296b12e6, 2017-03-09 (annotated)
- Committer:
- oguro
- Date:
- Thu Mar 09 02:34:25 2017 +0000
- Revision:
- 0:7d2d296b12e6
I2C PWM Motor Control
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
oguro | 0:7d2d296b12e6 | 1 | #include "mbed.h" |
oguro | 0:7d2d296b12e6 | 2 | |
oguro | 0:7d2d296b12e6 | 3 | // Read temperature from LM75BD |
oguro | 0:7d2d296b12e6 | 4 | Serial pc(USBTX,USBRX); |
oguro | 0:7d2d296b12e6 | 5 | I2C i2c(PB_9, PB_8); |
oguro | 0:7d2d296b12e6 | 6 | AnalogIn V_adc(PB_1); |
oguro | 0:7d2d296b12e6 | 7 | |
oguro | 0:7d2d296b12e6 | 8 | const int addr = 0xC8; |
oguro | 0:7d2d296b12e6 | 9 | int i0=1,i1=0,i2=0,i3=0,i4=0,i5=0,i6=0,i7=0,i8=0,i9=0; |
oguro | 0:7d2d296b12e6 | 10 | float Vr_adc; |
oguro | 0:7d2d296b12e6 | 11 | |
oguro | 0:7d2d296b12e6 | 12 | DigitalIn H1(PA_15); |
oguro | 0:7d2d296b12e6 | 13 | DigitalIn H2(PB_3); |
oguro | 0:7d2d296b12e6 | 14 | DigitalIn H3(PB_10); |
oguro | 0:7d2d296b12e6 | 15 | unsigned short U,V,W; |
oguro | 0:7d2d296b12e6 | 16 | |
oguro | 0:7d2d296b12e6 | 17 | int main() { |
oguro | 0:7d2d296b12e6 | 18 | pc.baud(128000); |
oguro | 0:7d2d296b12e6 | 19 | char cmd[2]; |
oguro | 0:7d2d296b12e6 | 20 | cmd[0] = 0x0; |
oguro | 0:7d2d296b12e6 | 21 | cmd[1] = 0x65; |
oguro | 0:7d2d296b12e6 | 22 | |
oguro | 0:7d2d296b12e6 | 23 | i2c.write(addr,cmd, 2); |
oguro | 0:7d2d296b12e6 | 24 | |
oguro | 0:7d2d296b12e6 | 25 | cmd[0] = 0x1; |
oguro | 0:7d2d296b12e6 | 26 | cmd[1] = 0x80; |
oguro | 0:7d2d296b12e6 | 27 | |
oguro | 0:7d2d296b12e6 | 28 | i2c.write(addr,cmd, 2); |
oguro | 0:7d2d296b12e6 | 29 | |
oguro | 0:7d2d296b12e6 | 30 | while(1){ |
oguro | 0:7d2d296b12e6 | 31 | cmd[0] = 0x1; |
oguro | 0:7d2d296b12e6 | 32 | cmd[1] = 0x80; |
oguro | 0:7d2d296b12e6 | 33 | i2c.write(addr,cmd, 2); |
oguro | 0:7d2d296b12e6 | 34 | |
oguro | 0:7d2d296b12e6 | 35 | Vr_adc=V_adc.read(); |
oguro | 0:7d2d296b12e6 | 36 | if((Vr_adc>0.05f)&&(Vr_adc<=0.1f)&&(i0==1)){ |
oguro | 0:7d2d296b12e6 | 37 | cmd[0] = 0x0; |
oguro | 0:7d2d296b12e6 | 38 | cmd[1] = 0x25; //0.72V |
oguro | 0:7d2d296b12e6 | 39 | i0=0; |
oguro | 0:7d2d296b12e6 | 40 | i1=1; |
oguro | 0:7d2d296b12e6 | 41 | i2c.write(addr,cmd, 2); |
oguro | 0:7d2d296b12e6 | 42 | } |
oguro | 0:7d2d296b12e6 | 43 | if((Vr_adc>0.1f)&&(Vr_adc<=0.2f)&&(i1==1)){ |
oguro | 0:7d2d296b12e6 | 44 | cmd[0] = 0x0; |
oguro | 0:7d2d296b12e6 | 45 | cmd[1] = 0x35; //1.04V |
oguro | 0:7d2d296b12e6 | 46 | i0=1; |
oguro | 0:7d2d296b12e6 | 47 | i1=0; |
oguro | 0:7d2d296b12e6 | 48 | i2=1; |
oguro | 0:7d2d296b12e6 | 49 | i2c.write(addr,cmd, 2); |
oguro | 0:7d2d296b12e6 | 50 | } |
oguro | 0:7d2d296b12e6 | 51 | if((Vr_adc>0.2f)&&(Vr_adc<=0.3f)&&(i2==1)){ |
oguro | 0:7d2d296b12e6 | 52 | cmd[0] = 0x0; |
oguro | 0:7d2d296b12e6 | 53 | cmd[1] = 0x4D; //1.53V |
oguro | 0:7d2d296b12e6 | 54 | i1=1; |
oguro | 0:7d2d296b12e6 | 55 | i2=0; |
oguro | 0:7d2d296b12e6 | 56 | i3=1; |
oguro | 0:7d2d296b12e6 | 57 | i2c.write(addr,cmd, 2); |
oguro | 0:7d2d296b12e6 | 58 | } |
oguro | 0:7d2d296b12e6 | 59 | if((Vr_adc>0.3f)&&(Vr_adc<=0.4f)&&(i3==1)){ |
oguro | 0:7d2d296b12e6 | 60 | cmd[0] = 0x0; |
oguro | 0:7d2d296b12e6 | 61 | cmd[1] = 0x65; //2.01V |
oguro | 0:7d2d296b12e6 | 62 | i1=1; |
oguro | 0:7d2d296b12e6 | 63 | i2=1; |
oguro | 0:7d2d296b12e6 | 64 | i3=0; |
oguro | 0:7d2d296b12e6 | 65 | i4=1; |
oguro | 0:7d2d296b12e6 | 66 | i2c.write(addr,cmd, 2); |
oguro | 0:7d2d296b12e6 | 67 | } |
oguro | 0:7d2d296b12e6 | 68 | if((Vr_adc>0.4f)&&(Vr_adc<=0.5f)&&(i4==1)){ |
oguro | 0:7d2d296b12e6 | 69 | cmd[0] = 0x0; |
oguro | 0:7d2d296b12e6 | 70 | cmd[1] = 0x7D; //2.48V |
oguro | 0:7d2d296b12e6 | 71 | i1=1; |
oguro | 0:7d2d296b12e6 | 72 | i2=1; |
oguro | 0:7d2d296b12e6 | 73 | i3=1; |
oguro | 0:7d2d296b12e6 | 74 | i4=0; |
oguro | 0:7d2d296b12e6 | 75 | i5=1; |
oguro | 0:7d2d296b12e6 | 76 | i2c.write(addr,cmd, 2); |
oguro | 0:7d2d296b12e6 | 77 | } |
oguro | 0:7d2d296b12e6 | 78 | if((Vr_adc>0.5f)&&(Vr_adc<=0.6f)&&(i5==1)){ |
oguro | 0:7d2d296b12e6 | 79 | cmd[0] = 0x0; |
oguro | 0:7d2d296b12e6 | 80 | cmd[1] = 0x99; //3.05V |
oguro | 0:7d2d296b12e6 | 81 | i1=1; |
oguro | 0:7d2d296b12e6 | 82 | i2=1; |
oguro | 0:7d2d296b12e6 | 83 | i3=1; |
oguro | 0:7d2d296b12e6 | 84 | i4=1; |
oguro | 0:7d2d296b12e6 | 85 | i5=0; |
oguro | 0:7d2d296b12e6 | 86 | i6=1; |
oguro | 0:7d2d296b12e6 | 87 | i2c.write(addr,cmd, 2); |
oguro | 0:7d2d296b12e6 | 88 | } |
oguro | 0:7d2d296b12e6 | 89 | if((Vr_adc>0.6f)&&(Vr_adc<=0.7f)&&(i6==1)){ |
oguro | 0:7d2d296b12e6 | 90 | cmd[0] = 0x0; |
oguro | 0:7d2d296b12e6 | 91 | cmd[1] = 0xB1; //3.53V |
oguro | 0:7d2d296b12e6 | 92 | i1=1; |
oguro | 0:7d2d296b12e6 | 93 | i2=1; |
oguro | 0:7d2d296b12e6 | 94 | i3=1; |
oguro | 0:7d2d296b12e6 | 95 | i4=1; |
oguro | 0:7d2d296b12e6 | 96 | i5=1; |
oguro | 0:7d2d296b12e6 | 97 | i6=0; |
oguro | 0:7d2d296b12e6 | 98 | i7=1; |
oguro | 0:7d2d296b12e6 | 99 | i2c.write(addr,cmd, 2); |
oguro | 0:7d2d296b12e6 | 100 | } |
oguro | 0:7d2d296b12e6 | 101 | if((Vr_adc>0.7f)&&(Vr_adc<=0.8f)&&(i7==1)){ |
oguro | 0:7d2d296b12e6 | 102 | cmd[0] = 0x0; |
oguro | 0:7d2d296b12e6 | 103 | cmd[1] = 0xC9; //4.02V |
oguro | 0:7d2d296b12e6 | 104 | i1=1; |
oguro | 0:7d2d296b12e6 | 105 | i2=1; |
oguro | 0:7d2d296b12e6 | 106 | i3=1; |
oguro | 0:7d2d296b12e6 | 107 | i4=1; |
oguro | 0:7d2d296b12e6 | 108 | i5=1; |
oguro | 0:7d2d296b12e6 | 109 | i6=1; |
oguro | 0:7d2d296b12e6 | 110 | i7=0; |
oguro | 0:7d2d296b12e6 | 111 | i8=1; |
oguro | 0:7d2d296b12e6 | 112 | i2c.write(addr,cmd, 2); |
oguro | 0:7d2d296b12e6 | 113 | } |
oguro | 0:7d2d296b12e6 | 114 | if((Vr_adc>0.8f)&&(i8==1)){ |
oguro | 0:7d2d296b12e6 | 115 | cmd[0] = 0x0; |
oguro | 0:7d2d296b12e6 | 116 | cmd[1] = 0xE1; //4.50V |
oguro | 0:7d2d296b12e6 | 117 | i1=1; |
oguro | 0:7d2d296b12e6 | 118 | i2=1; |
oguro | 0:7d2d296b12e6 | 119 | i3=1; |
oguro | 0:7d2d296b12e6 | 120 | i4=1; |
oguro | 0:7d2d296b12e6 | 121 | i5=1; |
oguro | 0:7d2d296b12e6 | 122 | i6=1; |
oguro | 0:7d2d296b12e6 | 123 | i7=1; |
oguro | 0:7d2d296b12e6 | 124 | i8=0; |
oguro | 0:7d2d296b12e6 | 125 | i2c.write(addr,cmd, 2); |
oguro | 0:7d2d296b12e6 | 126 | } |
oguro | 0:7d2d296b12e6 | 127 | |
oguro | 0:7d2d296b12e6 | 128 | U=H1; V=H2; W=H3; |
oguro | 0:7d2d296b12e6 | 129 | pc.printf("%d,%d,%d \r" ,U,V,W); |
oguro | 0:7d2d296b12e6 | 130 | } |
oguro | 0:7d2d296b12e6 | 131 | |
oguro | 0:7d2d296b12e6 | 132 | |
oguro | 0:7d2d296b12e6 | 133 | } |