Правильное подключение шаговика 28byj-48

Решил на старости лет сделать пару проектов на ардуино с использованием простых шаговиков.
В связи с чем прошу помощи/разьяснения.
Суть проблемы - имеется arduino nano, шаговик 28byj-48 5V, платка с ULN2003 и некий скетч из проекта который крутит шаговик, достаточно простой.
Когда все это не взлетело после сборки/подключения по мануалу, начал разбираться.
Ни одна доступная библиотека не крутила движок (steppes, accelstepper, gyverstepper и т.д.)
Если переключать фазы вручную по даташиту для униполярного движка, фазы переключаются по парно - не крутит, но если переключать фазы по одной - прекрасно работает.
т.е. то что описано везде, использовано во всех примерах и реализуется во всех либах, не работает

bool motorPhases[4][4] = { // [phase][pin]
//// -------- pins ----------
//// Winding    A  B  A  B
//// Motor Pin  1  2  3  4
//// Color      Bl Pi Ye Or
  {           1, 1, 0, 0},
  {           0, 1, 1, 0},
  {           0, 0, 1, 1},
  {           1, 0, 0, 1}
};

а вот такое отлично работает

bool motorPhases[4][4] = { // [phase][pin]
//// -------- pins ----------
//// Winding    A  B  A  B
//// Motor Pin  1  2  3  4
//// Color      Bl Pi Ye Or
  {           1, 0, 0, 0},
  {           0, 1, 0, 0},
  {           0, 0, 1, 0},
  {           0, 0, 0, 1}
};

движков несколько, платок ULN несколько, все ведут себя одинаково.
Собственно вопрос - где грабли? Как заставить работать типовые либы?

«Собственно вопрос» - где полный код, который можно посмотреть и, если появится желание, запустить у себя и посмотреть?

Не смущает, что у 28byj-48 пять пинов?

:smiley:

Это да, но подключается четырьмя к плате управления…

Лучше использовать вариант без библиотек и тот , что “не работает”.
Вот так примерно:

Это всё к тому же - в посте отсутствует полный скетч и полная схема подключения.

Предлагаю прекратить все гадания на гуще, пока вышеперечисленное не появится от ТС.

@lilik,
хватит уже постить Ваши ахренительные рисовалки, Вы вгоняете меня в глубокую депрессию и заставляете ощущать комплекс неполноценности “а чё я так не могу?:tired_face: :frowning: :weary:

5 лайков

Это я оттого, что не могу писать грамотно :slight_smile:
Да и точности на пластике тоже не могу как другие на стальных осях…
Поэтому только детские картинки (в последний раз).

Виновен, надо было расписать полностью.
Код - типовой example
Подключение тоже типовое - пины ардуины D8-11 подключены к плате ULN IN1-4

// Контакты   Bl Pi Ye  Or
int pins[] = {8, 9, 10, 11}; //Задаем пины по порядку

int phases = 4; // для шагового режима установить 4

// Для шагового режима
bool motorPhases[4][4] = { // [phase][pin]
//// -------- pins ----------
//// Winding    A  B  A  B
//// Motor Pin  1  2  3  4
//// Color      Bl Pi Ye Or
  {           1, 1, 0, 0},
  {           0, 1, 1, 0},
  {           0, 0, 1, 1},
  {           1, 0, 0, 1}
};

// Для полушагового режима
//bool motorPhases[8][4] = { // [phase][pin]
  // -------- pins ----------
  // Winding    A  B  A  B
  // Motor Pin  1  2  3  4
  // Color      Bl Pi Ye Or
//  {             1, 1, 0, 0},
//  {             0, 1, 0, 0},
//  {             0, 1, 1, 0},
//  {             0, 0, 1, 0},
//  {             0, 0, 1, 1},
//  {             0, 0, 0, 1},
//  {             1, 0, 0, 1},
//  {             1, 0, 0, 0}
//};

void setup() {
  for (int i = 0; i < 4; i++) pinMode(pins[i], OUTPUT);
}

int phase = 0;
int _step = -1; // Если у шага поменять знак, на -1 - изменится направление вращения.

void loop() {
  phase += _step;
  if (phase > 3) phase = 0;
  if (phase < 0) phase = 3;

  for (int i = 0; i < 4; i++) {
    digitalWrite(pins[i], ((motorPhases[phase][i] == 1) ? HIGH : LOW));
  }
  // Пауза на вращение на один шаг/полушаг
  delayMicroseconds(8000); 
}

Подключение через плату с ULN2003, 5 пин - питание обмоток, подключено к 5v

Это хорошо, что подключение. А не смущает? Ну что 5 пинов, а ты пытаешься работать как с 4пиновым и удивляешься, что не работает?

Не смущает, пятый пин - питание фаз и оно подключено, управление происходит 4 фазами.
Я удивляюсь что не работают все примеры и библиотеки, созданные для работы с этим.

Мою ссылку в #4 смотрел?

Скетч из сообщения #9 работает. Вот прямо его скопипастил и в UNO залил. Движок как-то крутится. Направление меняется. Другие варианты проверять, думаю, смысла нет.
Ищите проблему в питании (хотя у меня прямо от 5V ардуины заработало), контактах и т.п. А может что-то просто дохлое?

Это, мля, всё к тому же

Я уже предлагал

Но мы предпочитаем топтаться по старым, добрым граблям в каждой теме :frowning:

1 лайк

Скорее всего в питании (вариант где по две фазы с током одновременно - жрёт больше тока), ещё вариант цвет проводов (расположение фаз) не во всех моторах могут совпадать. Один человек мне написал - повторил вашу рисовалку точь в точь. Всё работает, но рисует как бы зеркально. Я предложил вариант скетча где сменил направления движения одного из моторов на противоположное.

Дело точно не в питании.
Буду еще раз все проверить досконально…
А есть возможность вместо UNO попробовать nano?
Смущает одно, если есть проблема с питанием/контактами то почему меняя только включение фаз на одиночное (в первом посте) все работает?

Там один и тот же контроллер.

Я в курсе, но это единственное отличие в подключении.

Скетч я привел, подключение описал или нужно картинку с 4мя проводочками?