Last active
July 1, 2024 01:05
-
-
Save takanotaiga/a3f12aa834d51668994497c85676df4a to your computer and use it in GitHub Desktop.
BLDC ↑
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "mbed.h" | |
// ピンの定義 | |
#define PWM_U PC_9 | |
#define CWCCW_U PA_5 | |
#define PWM_V PB_8 | |
#define CWCCW_V PA_7 | |
#define PWM_W PB_9 | |
#define CWCCW_W PC_8 | |
#define delayTime 1000ms | |
// PWM出力用のPwmOutオブジェクト | |
// ToDo: ここは使うNucleに合わせて変える | |
PwmOut pwm_U(PWM_U); | |
PwmOut pwm_V(PWM_V); | |
PwmOut pwm_W(PWM_W); | |
// デジタル出力用のDigitalOutオブジェクト | |
DigitalOut sd_U(CWCCW_U); | |
DigitalOut sd_V(CWCCW_V); | |
DigitalOut sd_W(CWCCW_W); | |
int main() { | |
// 初期設定 | |
pwm_U.period_ms(1); // PWM周期を1msに設定 | |
pwm_V.period_ms(1); | |
pwm_W.period_ms(1); | |
pwm_U.write(0.0f); // PWMデューティサイクルを0%に設定 | |
pwm_V.write(0.0f); | |
pwm_W.write(0.0f); | |
sd_U = 1; // 通電 | |
sd_V = 1; | |
sd_W = 1; | |
wait_us(100000); // 100ms待機 | |
while (true) { | |
// 1 U->W | |
pwm_U.write(1.0f); // PWMデューティサイクルを100%に設定 | |
pwm_V.write(0.0f); | |
pwm_W.write(0.0f); | |
sd_U = 1; | |
sd_V = 0; | |
sd_W = 1; | |
ThisThread::sleep_for(delayTime); | |
// 2 U->V | |
pwm_U.write(1.0f); | |
pwm_V.write(0.0f); | |
pwm_W.write(0.0f); | |
sd_U = 1; | |
sd_V = 1; | |
sd_W = 0; | |
ThisThread::sleep_for(delayTime); | |
// 3 W->V | |
pwm_U.write(0.0f); | |
pwm_V.write(0.0f); | |
pwm_W.write(1.0f); | |
sd_U = 0; | |
sd_V = 1; | |
sd_W = 1; | |
ThisThread::sleep_for(delayTime); | |
// 4 W->U | |
pwm_U.write(0.0f); | |
pwm_V.write(0.0f); | |
pwm_W.write(1.0f); | |
sd_U = 1; | |
sd_V = 0; | |
sd_W = 1; | |
ThisThread::sleep_for(delayTime); | |
// 5 V->U | |
pwm_U.write(0.0f); | |
pwm_V.write(1.0f); | |
pwm_W.write(0.0f); | |
sd_U = 1; | |
sd_V = 1; | |
sd_W = 0; | |
ThisThread::sleep_for(delayTime); | |
// 6 V->W | |
pwm_U.write(0.0f); | |
pwm_V.write(1.0f); | |
pwm_W.write(0.0f); | |
sd_U = 0; | |
sd_V = 1; | |
sd_W = 1; | |
ThisThread::sleep_for(delayTime); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment