Здравствуйте Эдуард.
После изучения вашего урока №29 для знакомства с библиотекой StepMotor пробую использовать мотор 28BYJ-48-5V (стандартный моторчик из КИТ-набора)
команда MT.step(х) — работает. но почему то эти х шагов двигатель делает со скоростью примерно 3-4 шага в секунду… хотя судя по его характеристикам он должен делать 2048 шагов (оборот) — за 4 секунды.
не знаете, в чем причина такого его поведения?
з.ы. программа минимальная - обьявлены библиотеки StepMotor, Button
по нажатию кнопки исполняется команда MT.step(10)
медленное вращение ШД
Re: медленное вращение ШД
Здравствуйте!
Скорость вращения двигателя зависит от:
Проверьте все эти составляющие, вычислите время переключения шага.
Скорость вращения двигателя зависит от:
- времени периода прерывания по таймеру;
значения делителя;
числа шагов двигателя на полный оборот;
режима переключения фаз (шаговый, полу шаговый).
Проверьте все эти составляющие, вычислите время переключения шага.
Re: медленное вращение ШД
Эдуард писал(а):Здравствуйте!
Скорость вращения двигателя зависит от:времени периода прерывания по таймеру;
значения делителя;
числа шагов двигателя на полный оборот;
режима переключения фаз.
Проверьте все эти составляющие, вычислите время переключения шага.
Да, сейчас еще раз перечитал урок. когда пробовал пользоваться библиотекой - писАл на память, поэтому у меня не было паралельного процесса и метод control() не вызывался вообще. я в основном цикле void loop() писал команду step(x) и все.
наверное, дело в этом? вечером попробую дома.
спасибо Вам за вашу работу и прекрасный ресурс.
Re: медленное вращение ШД
сорри я вас обманул. пришел вечером домой, глянул код, все на месте:
шагает примерно 3-4 шага в секунду.
заметил одну странность: если команду SM.control(); писать несколько раз друг за другом - то скорость шагов возрастает... ничего не понимаю...
Код: Выделить всё
#include <StepMotor.h>
#include <MsTimer2.h>
#include <Button.h>
#define BUTTON_PIN 8
#define LED_PIN 13
boolean buttonState, flagPress, flagClick;
Button buttonT(BUTTON_PIN,15);
StepMotor SM(2,3,4,5);
void setup() {
// put your setup code here, to run once:
pinMode(LED_PIN,OUTPUT);
MsTimer2::set(1,timerInterupt);
MsTimer2::start();
}
void loop() {
if (buttonT.flagClick==true){
buttonT.flagClick=false;
digitalWrite(LED_PIN, !digitalRead(LED_PIN));
SM.step(20);}
}
void timerInterupt() {
buttonT.scanState();
SM.control();
}
шагает примерно 3-4 шага в секунду.
заметил одну странность: если команду SM.control(); писать несколько раз друг за другом - то скорость шагов возрастает... ничего не понимаю...
Re: медленное вращение ШД
А где вы устанавливаете режим коммутации фаз и делитель?
Код: Выделить всё
void setup() {
MsTimer2::set(1, timerInterrupt); // задаем период прерывания по таймеру 1 мс
MsTimer2::start(); // разрешаем прерывание по таймеру
myMotor.setMode(0, false); // шаговый режим, без фиксации при остановке
myMotor.setDivider(21); // делитель частоты 21 (при прерывании 1 мс период коммутации фаз 21 мс)
}
Re: медленное вращение ШД
капец, стыдно то как!
спасибо.
спасибо.
Вернуться в «Шаговые двигатели и драйверы»
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей