ホールセンサの値を見てBLDCモータを回す。

Dependencies:   mbed

/media/uploads/mxy7/half_bridge.jpg /media/uploads/mxy7/high_side.jpg /media/uploads/mxy7/low_side.jpg

Committer:
mxy7
Date:
Tue Jul 22 02:24:31 2014 +0000
Revision:
0:3a3b03651663
Child:
1:0165e226b5af
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mxy7 0:3a3b03651663 1 #include "mbed.h"
mxy7 0:3a3b03651663 2
mxy7 0:3a3b03651663 3 DigitalOut l1(LED1);
mxy7 0:3a3b03651663 4 DigitalOut l2(LED2);
mxy7 0:3a3b03651663 5 DigitalOut l3(LED3);
mxy7 0:3a3b03651663 6
mxy7 0:3a3b03651663 7 PwmOut uH(p21);
mxy7 0:3a3b03651663 8 PwmOut vH(p22);
mxy7 0:3a3b03651663 9 PwmOut wH(p23);
mxy7 0:3a3b03651663 10
mxy7 0:3a3b03651663 11 PwmOut uL(p24);
mxy7 0:3a3b03651663 12 PwmOut vL(p25);
mxy7 0:3a3b03651663 13 PwmOut wL(p26);
mxy7 0:3a3b03651663 14
mxy7 0:3a3b03651663 15 InterruptIn u(p16);
mxy7 0:3a3b03651663 16 InterruptIn v(p17);
mxy7 0:3a3b03651663 17 InterruptIn w(p18);
mxy7 0:3a3b03651663 18
mxy7 0:3a3b03651663 19 int p;
mxy7 0:3a3b03651663 20 float period = 1;
mxy7 0:3a3b03651663 21 float pulse = period / 10;
mxy7 0:3a3b03651663 22
mxy7 0:3a3b03651663 23 void mode(int);
mxy7 0:3a3b03651663 24 void out(int,int,int,int,int,int);
mxy7 0:3a3b03651663 25 void A();void B();void C();
mxy7 0:3a3b03651663 26 void D();void E();void F();
mxy7 0:3a3b03651663 27
mxy7 0:3a3b03651663 28 void init(){
mxy7 0:3a3b03651663 29 u.mode(PullUp);
mxy7 0:3a3b03651663 30 v.mode(PullUp);
mxy7 0:3a3b03651663 31 w.mode(PullUp);
mxy7 0:3a3b03651663 32
mxy7 0:3a3b03651663 33 uH.period_us(period);
mxy7 0:3a3b03651663 34 vH.period_us(period);
mxy7 0:3a3b03651663 35 wH.period_us(period);
mxy7 0:3a3b03651663 36 uH.pulsewidth_us(pulse);
mxy7 0:3a3b03651663 37 vH.pulsewidth_us(pulse);
mxy7 0:3a3b03651663 38 wH.pulsewidth_us(pulse);
mxy7 0:3a3b03651663 39
mxy7 0:3a3b03651663 40 uL.period_us(period);
mxy7 0:3a3b03651663 41 vL.period_us(period);
mxy7 0:3a3b03651663 42 wL.period_us(period);
mxy7 0:3a3b03651663 43 uL.pulsewidth_us(pulse);
mxy7 0:3a3b03651663 44 vL.pulsewidth_us(pulse);
mxy7 0:3a3b03651663 45 wL.pulsewidth_us(pulse);
mxy7 0:3a3b03651663 46
mxy7 0:3a3b03651663 47 p = 0;//start
mxy7 0:3a3b03651663 48 }
mxy7 0:3a3b03651663 49
mxy7 0:3a3b03651663 50 int main() {
mxy7 0:3a3b03651663 51 init();
mxy7 0:3a3b03651663 52 while(1) {
mxy7 0:3a3b03651663 53 u.rise(&A);
mxy7 0:3a3b03651663 54 w.fall(&B);
mxy7 0:3a3b03651663 55 v.rise(&C);
mxy7 0:3a3b03651663 56 u.fall(&D);
mxy7 0:3a3b03651663 57 w.rise(&E);
mxy7 0:3a3b03651663 58 v.fall(&F);
mxy7 0:3a3b03651663 59 mode(p);
mxy7 0:3a3b03651663 60 }
mxy7 0:3a3b03651663 61 return 0;
mxy7 0:3a3b03651663 62 }
mxy7 0:3a3b03651663 63
mxy7 0:3a3b03651663 64 void mode(int p){
mxy7 0:3a3b03651663 65 switch(p){
mxy7 0:3a3b03651663 66 case 0:
mxy7 0:3a3b03651663 67 out(1,1,1,0,0,0);
mxy7 0:3a3b03651663 68 break;
mxy7 0:3a3b03651663 69 case 1:
mxy7 0:3a3b03651663 70 out(0,1,1,0,1,0);
mxy7 0:3a3b03651663 71 break;
mxy7 0:3a3b03651663 72 case 2:
mxy7 0:3a3b03651663 73 out(0,1,1,0,0,1);
mxy7 0:3a3b03651663 74 break;
mxy7 0:3a3b03651663 75 case 3:
mxy7 0:3a3b03651663 76 out(1,0,1,0,0,1);
mxy7 0:3a3b03651663 77 break;
mxy7 0:3a3b03651663 78 case 4:
mxy7 0:3a3b03651663 79 out(1,0,1,1,0,0);
mxy7 0:3a3b03651663 80 break;
mxy7 0:3a3b03651663 81 case 5:
mxy7 0:3a3b03651663 82 out(1,1,0,1,0,0);
mxy7 0:3a3b03651663 83 break;
mxy7 0:3a3b03651663 84 case 6:
mxy7 0:3a3b03651663 85 out(1,1,0,0,1,0);
mxy7 0:3a3b03651663 86 break;
mxy7 0:3a3b03651663 87 default:
mxy7 0:3a3b03651663 88 out(1,1,1,0,0,0);
mxy7 0:3a3b03651663 89 break;
mxy7 0:3a3b03651663 90 }
mxy7 0:3a3b03651663 91 }
mxy7 0:3a3b03651663 92
mxy7 0:3a3b03651663 93 void out(int uh,int vh,int wh,int ul,int vl,int wl){
mxy7 0:3a3b03651663 94 uL.write(ul);
mxy7 0:3a3b03651663 95 vL.write(vl);
mxy7 0:3a3b03651663 96 wL.write(vl);
mxy7 0:3a3b03651663 97 uH.write(uh);
mxy7 0:3a3b03651663 98 vH.write(vh);
mxy7 0:3a3b03651663 99 wH.write(wh);
mxy7 0:3a3b03651663 100 }
mxy7 0:3a3b03651663 101
mxy7 0:3a3b03651663 102 void A(){p = 1;}
mxy7 0:3a3b03651663 103 void B(){p = 2;}
mxy7 0:3a3b03651663 104 void C(){p = 3;}
mxy7 0:3a3b03651663 105 void D(){p = 4;}
mxy7 0:3a3b03651663 106 void E(){p = 5;}
mxy7 0:3a3b03651663 107 void F(){p = 6;}
mxy7 0:3a3b03651663 108