Шаговый двигатель от DVD.
- Войдите на сайт для отправки комментариев
Здравствуйте.
Подключил шаговый двигатель от 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 использовать другие значения то двигатель не двигается ,а просто издаёт писк.
(делает ли он действительно 1000 шагов пока сказать не могу).
Как помню - дерганья бывают, когда выводы одной обмотки перепутаешь местами.
Нет, от этого зависит только направление вращения. Просто ТС загоняет двигатель в режимы ему не свойственные. Если без нагрузки, то еще и резонансы добавляются. Конструкция движков в СД достаточно хлипкая и параметры зависят от направления вращения. Если ему дать нормальные для него значения скорости и слегка нагрузить, то шума не будет.
Задаю 1000 шагов пока только для того , чтобы понять в нужную сторону ли крутится и равномерно ли.
Параметры SetSpeed (600) и количество шагов (48) я брал из примеров DVD плоттера. В нескольких вариантах они были одинаковые. По этому решил начать с них.
Нет, от этого зависит только направление вращения. Просто ТС загоняет двигатель в режимы ему не свойственные. Если без нагрузки, то еще и резонансы добавляются. Конструкция движков в СД достаточно хлипкая и параметры зависят от направления вращения. Если ему дать нормальные для него значения скорости и слегка нагрузить, то шума не будет.
Как я понял, что значение SetSpeed не влияет, если я использую функцию onestep.
Пауза, как я понял, всё таки, нужна после onestep. Хотя наверное более правильно использовать не onestep а step со значением 1.
Нет, от этого зависит только направление вращения. Просто ТС загоняет двигатель в режимы ему не свойственные.
Одно другому не мешает ))
Как я понял, что значение SetSpeed не влияет, если я использую функцию onestep.
Пауза, как я понял, всё таки, нужна после onestep. Хотя наверное более правильно использовать не onestep а step со значением 1.
Правильнее указывать количество необходимых шагов, тогда движение будет более равномерным и бесшумным. Одиночный шаг используется как правило для ручных перемещений, нажал на кнопку - сделал шаг. И еще, почему Вы указываете количество шагов на оборот - 48?. Не факт, что этот двигатель имеет угол 7,5 градусов. Может быть и другой 1,8 или 0,9 это зависит от конкретного двигателя. И еще, если двигатель издает писк, то установлена слишком большая скорость, данный двигатель не может так быстро вращаться.
Правильнее указывать количество необходимых шагов, тогда движение будет более равномерным и бесшумным. Одиночный шаг используется как правило для ручных перемещений, нажал на кнопку - сделал шаг. И еще, почему Вы указываете количество шагов на оборот - 48?. Не факт, что этот двигатель имеет угол 7,5 градусов. Может быть и другой 1,8 или 0,9 это зависит от конкретного двигателя. И еще, если двигатель издает писк, то установлена слишком большая скорость, данный двигатель не может так быстро вращаться.
Посмотрев код увидел , что если использовать onestep , то количество шагов на оборот , и скорость не имеют значения,они в этой функции не используются.
Количество шагов на оборот используется только при расчёте базового значения задержки для шага, в функции SetSpeed, которое в свою очередь используется только в функции step как задержка между вызовами onestep( с делителем соответствующем режиму шага на 2 или на 16 ).
Наверное плавильное решение , задать верную скорость и количество шагов, и использовать функцию step, с автоматическим расчётом задержки шага.
Изначально просто смутило то, что двигатель в одну сторону движется тихо и плавно, а в другую с шумом и рывками.
Посмотрев код увидел , что если использовать onestep , то количество шагов на оборот , и скорость не имеют значения,они в этой функции не используются.
Количество шагов на оборот используется только при расчёте базового значения задержки для шага, в функции SetSpeed, которое в свою очередь используется только в функции step как задержка между вызовами onestep( с делителем соответствующем режиму шага на 2 или на 16 ).
Наверное плавильное решение , задать верную скорость и количество шагов, и использовать функцию step, с автоматическим расчётом задержки шага.
Изначально просто смутило то, что двигатель в одну сторону движется тихо и плавно, а в другую с шумом и рывками.
Количество шагов на оборот - это физическая характеристика двигателя. За сколько шагов двигатель совершает полный оборот. Наиболее распространенные 200 и 400. У высокоскоростных приводных ШД - 48