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

Dependencies:   mbed

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

Revision:
0:3a3b03651663
Child:
1:0165e226b5af
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Jul 22 02:24:31 2014 +0000
@@ -0,0 +1,108 @@
+#include "mbed.h"
+
+DigitalOut l1(LED1);
+DigitalOut l2(LED2);
+DigitalOut l3(LED3);
+
+PwmOut uH(p21);
+PwmOut vH(p22);
+PwmOut wH(p23);
+
+PwmOut uL(p24);
+PwmOut vL(p25);
+PwmOut wL(p26);
+
+InterruptIn u(p16);
+InterruptIn v(p17);
+InterruptIn w(p18);
+
+int p;
+float period = 1;
+float pulse = period / 10;
+
+void mode(int);
+void out(int,int,int,int,int,int);
+void A();void B();void C();
+void D();void E();void F();
+
+void init(){
+    u.mode(PullUp);
+    v.mode(PullUp);
+    w.mode(PullUp);
+    
+    uH.period_us(period);
+    vH.period_us(period);
+    wH.period_us(period);
+    uH.pulsewidth_us(pulse);
+    vH.pulsewidth_us(pulse);
+    wH.pulsewidth_us(pulse);
+    
+    uL.period_us(period);
+    vL.period_us(period);
+    wL.period_us(period);
+    uL.pulsewidth_us(pulse);
+    vL.pulsewidth_us(pulse);
+    wL.pulsewidth_us(pulse);
+
+    p = 0;//start
+}
+
+int main() {
+    init();
+    while(1) {
+        u.rise(&A);
+        w.fall(&B);
+        v.rise(&C);
+        u.fall(&D);
+        w.rise(&E);
+        v.fall(&F);
+        mode(p);
+    }
+    return 0;
+}
+
+void mode(int p){
+    switch(p){
+        case 0:
+            out(1,1,1,0,0,0);
+            break;
+        case 1:
+            out(0,1,1,0,1,0);
+            break;
+        case 2:
+            out(0,1,1,0,0,1);
+            break;
+        case 3:
+            out(1,0,1,0,0,1);
+            break;
+        case 4:
+            out(1,0,1,1,0,0);
+            break;
+        case 5:
+            out(1,1,0,1,0,0);
+            break;
+        case 6:
+            out(1,1,0,0,1,0);
+            break;
+        default:
+            out(1,1,1,0,0,0);
+            break;
+    }
+}
+
+void out(int uh,int vh,int wh,int ul,int vl,int wl){
+    uL.write(ul);
+    vL.write(vl);
+    wL.write(vl);
+    uH.write(uh);
+    vH.write(vh);
+    wH.write(wh);
+}
+
+void A(){p = 1;}
+void B(){p = 2;}
+void C(){p = 3;}
+void D(){p = 4;}
+void E(){p = 5;}
+void F(){p = 6;}
+    
\ No newline at end of file