Проблема с шаговым двигателем 28byj-48

Тролфасе324

✩✩✩✩✩✩✩
13 Янв 2025
1
0
Добрый вечер. Мне нужна помощь)

Я хочу настроить работу шаговика с библиотекой GyverStepper, однако возникают трудности
Вот подключение к UNO:
1736776838362.png 1736776849339.png
IN1 - D2
IN2 - D3
IN3 - D4
IN4 - D5

Когда я использую данный код:

C++:
#include <GyverStepper.h>
GStepper<STEPPER4WIRE> stepper(2038, 5, 3, 4, 2);

void setup() {
  Serial.begin(115200);

  // режим следования к целевй позиции
  stepper.setRunMode(FOLLOW_POS);

  // установка макс. скорости в шагах/сек
  stepper.setMaxSpeed(400);

  // установка ускорения в шагах/сек/сек
  stepper.setAcceleration(50);
}

void loop() {
  if (!stepper.tick()) {
    stepper.setTargetDeg(4000);
  }
}
Шаговик реагирует так:
1736777419923.png
Светодиоды постоянно мигают в правильной последовательности (типа последовательно загораются), но шаговик иногда начинает прокручиваться немного, затем останавливается, а потом опять немного пытается крутится. Так происходит какое-то время (5-15 сек) затем он перестаёт двигаться, оставляя светодиоды в таком состоянии.

Затем я решаюсь попробовать такое топорное решение:

C++:
int in1 = 2;
int in2 = 3;
int in3 = 4;
int in4 = 5;

int dl = 850;

void setup() {
  pinMode (in1, OUTPUT);
  pinMode (in2, OUTPUT);
  pinMode (in3, OUTPUT);
  pinMode (in4, OUTPUT);
}

void loop() {
  digitalWrite (in1,LOW);
  digitalWrite (in2,LOW);
  digitalWrite (in3,HIGH);
  digitalWrite (in4,HIGH);
  delayMicroseconds(dl);

  digitalWrite (in1,LOW);
  digitalWrite (in2,LOW);
  digitalWrite (in3,HIGH);
  digitalWrite (in4,LOW);
  delayMicroseconds(dl);

  digitalWrite (in1,LOW);
  digitalWrite (in2,HIGH);
  digitalWrite (in3,HIGH);
  digitalWrite (in4,LOW);
  delayMicroseconds(dl);

  digitalWrite (in1,LOW);
  digitalWrite (in2,HIGH);
  digitalWrite (in3,LOW);
  digitalWrite (in4,LOW);
  delayMicroseconds(dl);

  digitalWrite (in1,HIGH);
  digitalWrite (in2,HIGH);
  digitalWrite (in3,LOW);
  digitalWrite (in4,LOW);
  delayMicroseconds(dl);

  digitalWrite (in1,HIGH);
  digitalWrite (in2,LOW);
  digitalWrite (in3,LOW);
  digitalWrite (in4,LOW);
  delayMicroseconds(dl);
 
  digitalWrite (in1,HIGH);
  digitalWrite (in2,LOW);
  digitalWrite (in3,LOW);
  digitalWrite (in4,HIGH);
  delayMicroseconds(dl);
 
  digitalWrite (in1,LOW);
  digitalWrite (in2,LOW);
  digitalWrite (in3,LOW);
  digitalWrite (in4,HIGH);
  delayMicroseconds(dl);
}
Уже с таким кодом шаговик стал правильно работать, хоть и медленно

А вот и сам вопрос. Что я делаю не так с библиотекой гайвера, что у меня он так себя ведёт плохо?