kazuyoshi makisumi
/
BLDC
ホールセンサの値を見てBLDCモータを回す。
main.cpp
- Committer:
- mxy7
- Date:
- 2014-07-22
- Revision:
- 0:3a3b03651663
- Child:
- 1:0165e226b5af
File content as of revision 0:3a3b03651663:
#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;}