Странная работа ШД 28byj-48

Тема в разделе "Моторы, сервоприводы, робототехника", создана пользователем enclouder, 28 янв 2016.

  1. enclouder

    enclouder Нерд

    Доброго времени суток.

    Подскажите, в чем проблема?

    Использую библиотеку Stepper.h и кручу верчу двигатель.

    Если количество шагов положительное (по часовой стрелке) у него высокий крутящий момент и стабильная вибрация. Если количество шагов отрицательное (против часовой стрелки) то крутящий момент ОЧЕНЬ слабый и при этом вибрация не стабильная, а будто участилась в 2 раза. Покупал другие такие же ШД, думал может мои глючат - ан нет, на всех такая ситуация.

    Использую стандартный L293D (Adafruit Motor shield не предлагать).
    Код (C++):
    #include <Stepper.h>
    #define STEPS 200

      Stepper motor1(STEPS, 4, 5, 6, 7);

    void setup()
    {
      motor1.setSpeed(50);
    }

    void loop()
    {
      motor1.step(500);
      delay(1000);
      motor1.step(-500);
      delay(1000);
    }
    Использовал даже разное количество шагов: 48, 64, 200, 2048 - работает по разному, где то крутит, где то нет, но всегда если крутит в обратную сторону, то с подобной проблемой.

    Помогите исправить ситуацию.

    P.S. библиотеку AccelStepper Тоже не хотелось бы использовать, читал что много жалоб на неё.
     
  2. Stepper.h для биполярных движков
     
  3. enclouder

    enclouder Нерд

    Забыл сказать, что уже переделал.
     
  4. enclouder

    enclouder Нерд

    В итоге все заработало следующим образом:
    спаял разделенные контакты заново, но при этом забыл подключить красный провод.
    Если в коде использовать большой шаг - крутящий момент такой высокий, что руками еле останавливается например:
    Код (C++):
    motor1.step(512);
    delay(1000);
    motor1.step(-512);
    delay(1000);
    но если использовать пошаговое движение, например:
    Код (C++):
    int i = 0;
    while (i != 512)
    {
      motor1.step(4);
      i += 4;
    }
    while (i != 0)
    {
      motor1.step(-4);
      i -= 4;
    }
    то так же - в одну сторону высокий крутящий момент, в другую - легко останавливается руками.
    В чем причина?
     
  5. Onkel

    Onkel Гуру

    для поиска засады я рекомендую взять 4 светодиода, включить степпер на очень низкой скорости и посмотреть, что из фазы выпадает. Если униполярный, 4 светодиода диода к каждому по обмотке (не забываем зашунтировать снабберами или сапрессорами), если биполярный- то по два светодиода на каждую обмотку встречно. светодиоды включаем с резисторами ясен пень, резисторы считаем по закону Ома.
     
  6. по всей видимости неправильно подключены обмотки.
     
    enclouder нравится это.
  7. enclouder

    enclouder Нерд

    проблема была в моей функции:
    digitalWrite(pin1, LOW);
    digitalWrite(pin2, LOW);
    digitalWrite(pin3, LOW);
    digitalWrite(pin4, LOW);
    Изза этого не было мощности в одну сторону.