Шаговый двигатель Arduino 5V очень медленно движется

У меня есть шаговый двигатель 5V 4-Phase 5-Wire и плата для него.

К сожалению, у меня нет схем и я не могу найти их где-нибудь в интернете для платы водителя. В любом случае, я подключил все, как должно было быть, и пробил в коде (см. Ниже), и он работает нормально, но вращается со скоростью около 20 об / мин, что ужасно медленно.

Я не могу уменьшить время на delayMicroseconds() больше, потому что если я это сделаю, мотор перестанет вращаться и начнет просто громко вибрировать. Пожалуйста, помогите, я застрял:

(Порт 8 подключен к IN1 на драйвере, порт 9 находится в IN2, порт 10 находится в IN3, а порт 11 в IN4)

int Pin0 = 8;
int Pin1 = 9;
int Pin2 = 10;
int Pin3 = 11;
int _step = 0;
boolean dir = true;// gre
void setup()
{
  pinMode(Pin0, OUTPUT);
  pinMode(Pin1, OUTPUT);
  pinMode(Pin2, OUTPUT);
  pinMode(Pin3, OUTPUT);
}
void loop()
{
  switch(_step){  
  case 0:
  digitalWrite(Pin0, LOW);
  digitalWrite(Pin1, LOW);
  digitalWrite(Pin2, LOW);
  digitalWrite(Pin3, HIGH);
  break;
  case 1:
  digitalWrite(Pin0, LOW);
  digitalWrite(Pin1, LOW);
  digitalWrite(Pin2, HIGH);
  digitalWrite(Pin3, HIGH);
  break;
  case 2:
  digitalWrite(Pin0, LOW);
  digitalWrite(Pin1, LOW);
  digitalWrite(Pin2, HIGH);
  digitalWrite(Pin3, LOW);
  break;
  case 3:
  digitalWrite(Pin0, LOW);
  digitalWrite(Pin1, HIGH);
  digitalWrite(Pin2, HIGH);
  digitalWrite(Pin3, LOW);
  break;
  case 4:
  digitalWrite(Pin0, LOW);
  digitalWrite(Pin1, HIGH);
  digitalWrite(Pin2, LOW);
  digitalWrite(Pin3, LOW);
  break;
  case 5:
  digitalWrite(Pin0, HIGH);
  digitalWrite(Pin1, HIGH);
  digitalWrite(Pin2, LOW);
  digitalWrite(Pin3, LOW);
  break;
  case 6:
  digitalWrite(Pin0, HIGH);
  digitalWrite(Pin1, LOW);
  digitalWrite(Pin2, LOW);
  digitalWrite(Pin3, LOW);
  break;
  case 7:
  digitalWrite(Pin0, HIGH);
  digitalWrite(Pin1, LOW);
  digitalWrite(Pin2, LOW);
  digitalWrite(Pin3, HIGH);
  break;
  default:
  digitalWrite(Pin0, LOW);
  digitalWrite(Pin1, LOW);
  digitalWrite(Pin2, LOW);
  digitalWrite(Pin3, LOW);
  break;
}
if(dir){
  _step++;
 }else{
  _step--;
}
if(_step>7){
  _step=0;
}
if(_step<0){
  _step=7;
}
   delayMicroseconds(800);
}

0 ответов

Другие вопросы по тегам