Шаговый двигатель от DVD.

sumi
Offline
Зарегистрирован: 28.04.2020

Здравствуйте. 
Подключил шаговый двигатель от DVD к AFMotorShield. Прозвонил обмотки, одну в M1 второю в M2 подсоединил.
Надо двигаться по одному шагу , вперед или назад. 

 

#include <AFMotor.h>
int StepDelay = 100;
AF_Stepper myStepper(48,1); 

void setup() {
    myStepper.setSpeed(600);

    delay(100);
}

void loop() {
   for (int i = 0; i<1000; ++i) {
        myStepper.onestep( FORWARD,MICROSTEP );
        //delayMicroseconds(StepDelay);
   }
  delay(100);
  for (int i = 0; i<1000; ++i) {
        myStepper.onestep( BACKWARD,MICROSTEP );
        //delayMicroseconds(StepDelay);
  }
  delay(1000);
}

Если код в таком виде, то получается следующая картина, когда крутимся FORWARD, двигатель крутится равномерно , плавно и тихо(делает ли он действительно 1000 шагов пока сказать не могу).  
Но если крутимся BACKWARD , двигатель издаёт шум , вал крутится не равномерно и делает явно меньше оборотов, чем когда было FORWARD. 

Если открыть delayMicroseconds(StepDelay); То двигатель FORWARD двигается ,разумеется, медленнее , и шумнее. Но при BACKWARD ведёт себя также и делает такое же число оборотов. 

Хочется понять, это нормальное поведение , или что то с двигателем ,  кодом , или может подключением. Вроде как не припомню чтобы DVD издавал подобный шум. 

PS: Если вместо MICROSTEP использовать другие значения то двигатель не двигается ,а просто издаёт писк.  

 

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

sumi пишет:

(делает ли он действительно 1000 шагов пока сказать не могу).  

А зачем Вы задаете параметры, которые не можете проконтролировать? 3 шага можете? 5 шагов? Вот и задавайте такие числа. То же касается и остальных параметров - скорости и пр.

sadman41
Offline
Зарегистрирован: 19.10.2016

Как помню - дерганья бывают, когда выводы одной обмотки перепутаешь местами.

svm
Offline
Зарегистрирован: 06.11.2016

sadman41 пишет:
Как помню - дерганья бывают, когда выводы одной обмотки перепутаешь местами.

Нет, от этого зависит только направление вращения. Просто ТС загоняет двигатель в режимы ему не свойственные. Если без нагрузки, то еще и резонансы добавляются. Конструкция движков в СД достаточно хлипкая и параметры зависят от направления вращения. Если ему дать нормальные для него значения скорости и слегка нагрузить, то шума не будет.

sumi
Offline
Зарегистрирован: 28.04.2020

Задаю 1000 шагов пока только для того , чтобы понять в нужную сторону ли крутится и равномерно ли.
Параметры SetSpeed (600) и  количество шагов (48) я брал из примеров DVD плоттера. В нескольких вариантах они были одинаковые. По этому решил начать с них.

sumi
Offline
Зарегистрирован: 28.04.2020

svm пишет:

sadman41 пишет:
Как помню - дерганья бывают, когда выводы одной обмотки перепутаешь местами.

Нет, от этого зависит только направление вращения. Просто ТС загоняет двигатель в режимы ему не свойственные. Если без нагрузки, то еще и резонансы добавляются. Конструкция движков в СД достаточно хлипкая и параметры зависят от направления вращения. Если ему дать нормальные для него значения скорости и слегка нагрузить, то шума не будет.

Как я понял, что значение SetSpeed не влияет, если я использую функцию onestep.
Пауза, как я понял, всё таки, нужна после onestep. Хотя наверное более правильно использовать не onestep а step со значением 1.
 

sadman41
Offline
Зарегистрирован: 19.10.2016

svm пишет:

sadman41 пишет:
Как помню - дерганья бывают, когда выводы одной обмотки перепутаешь местами.

Нет, от этого зависит только направление вращения. Просто ТС загоняет двигатель в режимы ему не свойственные.

Одно другому не мешает ))

svm
Offline
Зарегистрирован: 06.11.2016

sumi пишет:

Как я понял, что значение SetSpeed не влияет, если я использую функцию onestep.

Пауза, как я понял, всё таки, нужна после onestep. Хотя наверное более правильно использовать не onestep а step со значением 1.
 

Правильнее указывать количество необходимых шагов, тогда движение будет более равномерным и бесшумным. Одиночный шаг используется как правило для ручных перемещений, нажал на кнопку - сделал шаг. И еще, почему Вы указываете количество шагов на оборот - 48?. Не факт, что этот двигатель имеет угол 7,5 градусов. Может быть и другой 1,8 или 0,9 это зависит от конкретного двигателя. И еще, если двигатель издает писк, то установлена слишком большая скорость, данный двигатель не может так быстро вращаться.

sumi
Offline
Зарегистрирован: 28.04.2020

svm пишет:

Правильнее указывать количество необходимых шагов, тогда движение будет более равномерным и бесшумным. Одиночный шаг используется как правило для ручных перемещений, нажал на кнопку - сделал шаг. И еще, почему Вы указываете количество шагов на оборот - 48?. Не факт, что этот двигатель имеет угол 7,5 градусов. Может быть и другой 1,8 или 0,9 это зависит от конкретного двигателя. И еще, если двигатель издает писк, то установлена слишком большая скорость, данный двигатель не может так быстро вращаться.

Посмотрев код увидел , что если использовать onestep , то количество шагов на оборот , и скорость не имеют значения,они в этой функции не используются.
Количество шагов на оборот используется только при расчёте базового значения задержки для шага, в функции SetSpeed, которое в свою очередь используется только  в функции step как задержка между вызовами onestep( с делителем соответствующем режиму шага на 2 или на 16 ).

Наверное плавильное решение , задать верную скорость и количество шагов, и использовать функцию step, с автоматическим расчётом задержки шага.
Изначально просто смутило то,  что двигатель в одну сторону движется тихо и плавно, а в другую с шумом и рывками.

svm
Offline
Зарегистрирован: 06.11.2016

sumi пишет:

Посмотрев код увидел , что если использовать onestep , то количество шагов на оборот , и скорость не имеют значения,они в этой функции не используются.

Количество шагов на оборот используется только при расчёте базового значения задержки для шага, в функции SetSpeed, которое в свою очередь используется только  в функции step как задержка между вызовами onestep( с делителем соответствующем режиму шага на 2 или на 16 ).

Наверное плавильное решение , задать верную скорость и количество шагов, и использовать функцию step, с автоматическим расчётом задержки шага.
Изначально просто смутило то,  что двигатель в одну сторону движется тихо и плавно, а в другую с шумом и рывками.

Количество шагов на оборот - это физическая характеристика двигателя. За сколько шагов  двигатель совершает полный оборот. Наиболее распространенные 200 и 400. У высокоскоростных приводных ШД - 48