Skip to content

Instantly share code, notes, and snippets.

@sbasami
Created December 19, 2021 11:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sbasami/f6aad11ba5c87d174017c4801f0958bb to your computer and use it in GitHub Desktop.
Save sbasami/f6aad11ba5c87d174017c4801f0958bb to your computer and use it in GitHub Desktop.
Teensy4.0とDRV8320HでBLDCの強制転流を行うプログラム
#define INH_U 6
#define INH_V 7
#define INH_W 8
#define INL_U 9
#define INL_V 10
#define INL_W 11
#define ENABLE 13
#define delay_time 1
#define duty_high 50
void setup() {
// put your setup code here, to run once:
pinMode(INH_U, OUTPUT);
pinMode(INH_V, OUTPUT);
pinMode(INH_W, OUTPUT);
pinMode(INL_U, OUTPUT);
pinMode(INL_V, OUTPUT);
pinMode(INL_W, OUTPUT);
pinMode(ENABLE, OUTPUT);
analogWriteFrequency(INH_U, 45000);
analogWriteFrequency(INH_V, 45000);
analogWriteFrequency(INH_W, 45000);
analogWrite(INH_U, 0);
analogWrite(INH_V, 0);
analogWrite(INH_W, 0);
// digitalWrite(INH_U, LOW);
// digitalWrite(INH_V, LOW);
// digitalWrite(INH_W, LOW);
digitalWrite(INL_U, LOW);
digitalWrite(INL_V, LOW);
digitalWrite(INL_W, LOW);
digitalWrite(ENABLE, HIGH);
}
void loop() {
// U → V
analogWrite(INH_U, duty_high);
analogWrite(INH_V, 0);
analogWrite(INH_W, 0);
// digitalWrite(INH_U, HIGH);
// digitalWrite(INH_V, LOW);
// digitalWrite(INH_W, LOW);
digitalWrite(INL_U, LOW);
digitalWrite(INL_V, HIGH);
digitalWrite(INL_W, LOW);
#ifdef ENABLE_MICROSECOND
delayMicroseconds(delay_time);
#else
delay(delay_time);
#endif
// U → W
analogWrite(INH_U, duty_high);
analogWrite(INH_V, 0);
analogWrite(INH_W, 0);
// digitalWrite(INH_U, HIGH);
// digitalWrite(INH_V, LOW);
// digitalWrite(INH_W, LOW);
digitalWrite(INL_U, LOW);
digitalWrite(INL_V, LOW);
digitalWrite(INL_W, HIGH);
#ifdef ENABLE_MICROSECOND
delayMicroseconds(delay_time);
#else
delay(delay_time);
#endif
// V → W
analogWrite(INH_U, 0);
analogWrite(INH_V, duty_high);
analogWrite(INH_W, 0);
// digitalWrite(INH_U, LOW);
// digitalWrite(INH_V, HIGH);
// digitalWrite(INH_W, LOW);
digitalWrite(INL_U, LOW);
digitalWrite(INL_V, LOW);
digitalWrite(INL_W, HIGH);
#ifdef ENABLE_MICROSECOND
delayMicroseconds(delay_time);
#else
delay(delay_time);
#endif
// V → U
analogWrite(INH_U, 0);
analogWrite(INH_V, duty_high);
analogWrite(INH_W, 0);
// digitalWrite(INH_U, LOW);
// digitalWrite(INH_V, HIGH);
// digitalWrite(INH_W, LOW);
digitalWrite(INL_U, HIGH);
digitalWrite(INL_V, LOW);
digitalWrite(INL_W, LOW);
#ifdef ENABLE_MICROSECOND
delayMicroseconds(delay_time);
#else
delay(delay_time);
#endif
// W → U
analogWrite(INH_U, 0);
analogWrite(INH_V, 0);
analogWrite(INH_W, duty_high);
// digitalWrite(INH_U, LOW);
// digitalWrite(INH_V, LOW);
// digitalWrite(INH_W, HIGH);
digitalWrite(INL_U, HIGH);
digitalWrite(INL_V, LOW);
digitalWrite(INL_W, LOW);
#ifdef ENABLE_MICROSECOND
delayMicroseconds(delay_time);
#else
delay(delay_time);
#endif
// W → V
analogWrite(INH_U, 0);
analogWrite(INH_V, 0);
analogWrite(INH_W, duty_high);
// digitalWrite(INH_U, LOW);
// digitalWrite(INH_V, LOW);
// digitalWrite(INH_W, HIGH);
digitalWrite(INL_U, LOW);
digitalWrite(INL_V, HIGH);
digitalWrite(INL_W, LOW);
#ifdef ENABLE_MICROSECOND
delayMicroseconds(delay_time);
#else
delay(delay_time);
#endif
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment