помогите заставить шаговик работать как надо

Draghkon
Offline
Зарегистрирован: 17.09.2013

Здравствуйте, сегодня пришли 2 моторчика 28 BYJ-48  и к ним драйверы ULN2003

До этого с шаговиками не встречался, так что сразу возникло несколько проблем с управлением: во первых, при подключении вот по этой инструкции http://www.geeetech.com/wiki/index.php/Stepper_Motor_5V_4-Phase_5-Wire_%26_ULN2003_Driver_Board_for_Arduino#Code

шаговик крутился только по часовой стрелке, и не обращал внимания на отрицательные значения шага. 

Кроме того в стандартной библиотеке Stepper есть параметр stepsPerRevolution, по умолчанию стоит 200, в инструкции вроде прочитал что надо ставить 48, н овсе равно, за 48 шагов полного оборота не делает, равно как и за 200.. видимо это из-за встроенного редуктора.

Если поставить число шагов больше 200 - отказывается крутится.

Если поставить скорость больше 250 - например 255 начинает крутиться с дерганиями, если больше - не крутится вообще, только гудит.. при этом на 250 крутится довольно медленно.

Это нормально?!

 

Попробовал с другой библиотекой AccelStepper. тут уже параметра stepsPerRevolution нигде нету...  за то значение maxSpeed установлено на 1000 и при такой скорости шаговит крутится раза в 2 быстрее чем на 250 в библиотеке Stepper. на более высоких значения тоже самое - писк и ничего не крутится...

Проблему с односторонним вращением вроде решил, поменяв Ln1 и ln4 на контроллере местами, но теперь движок по умолчанию крутится против часовой стрелки, а при отрицательном значении шага - по часовой стрелке... т.е. опять как-то через ж..

 

И самое главное для меня - крутящий момент.. движок очень слабый, останавливается если просто пальцы приложить, даже не сильно сдавливая, т.е. ни для каких практических нужнд не пригоден. я знаю что он сам по себе слабый, но вот видео, где мужик поднимает таким моторчиком пакет с гирями где-то на 1.5 кг: https://www.youtube.com/watch?v=8q5-kOTL69U

Как?!?

Помогите заставить его работать по человечески).

PS

 

Напряжение у него 5v, и на драйвере нету никаких перемычек для внешнего питания, поэтому запитал от дуины (питается от usb). 

Draghkon
Offline
Зарегистрирован: 17.09.2013

Дело не в питании, подключал также ардуино через блок питания на 9v 2А, крутит вобщем-то с тем же усилием.

Aghrr
Offline
Зарегистрирован: 07.11.2013

У меня такая же проблема. Вот нашел по теме http://www.youtube.com/watch?v=8q5-kOTL69U 

Проверить пока руки не дошли, но на видео мотор крутится.

Kolini
Offline
Зарегистрирован: 15.11.2013

на видео демонстрируется работа с коммерческой библиотекой работы с шаговыми двигателями под названием AccelStepper. Ее можно скачать по ссылке https://github.com/adafruit/AccelStepper и установить в папку библиотек arduino. После чего успешно пользоваться -).

vvadim
Offline
Зарегистрирован: 23.05.2012

Установите библиотекуAccelStepper . Правильно подключите шаговый двигатель. Запустите пример. Библиотека отличная.

Aghrr
Offline
Зарегистрирован: 07.11.2013

Сделал все как в видео на ютубе. Работает. Движок не самый чемпион по силе, но остановить его можно хорошо приложив усилие.

Draghkon
Offline
Зарегистрирован: 17.09.2013

Даже не знаю чем отличается обычный AccelStepper от этого (AccelStepper master), но действительно стал тянуть.. Спасибо!

Но провода все равно местами менять надо 1 и 4, иначе не меняет сторону вращения, это спицифика данного мотора.

Aghrr
Offline
Зарегистрирован: 07.11.2013

Если внимательно посмотреть пример, то все уже поменяно

int motorPin1 = 9; // Blue   - 28BYJ48 pin 1
int motorPin2 = 8; // Pink   - 28BYJ48 pin 2
int motorPin3 = 7; // Yellow - 28BYJ48 pin 3
int motorPin4 = 6; // Orange - 28BYJ48 pin 4

AccelStepper stepper2(FULLSTEP, motorPin1, motorPin3, motorPin2, motorPin4);

 

 

 

MW
Offline
Зарегистрирован: 23.01.2017
подскажите пожалуйста как подключить сюда IR remote чтобы управлять ик пультом
всего 2 клавиш вперед и назад
спасибо
 
 
/*-----( Import needed libraries )-----*/
#include <AccelStepper.h>
/*-----( Declare Constants and Pin Numbers )-----*/
#define FULLSTEP 4
#define HALFSTEP 8
// motor pins
#define motorPin1  5     // Blue   - 28BYJ48 pin 1
#define motorPin2  6     // Pink   - 28BYJ48 pin 2
#define motorPin3  7     // Yellow - 28BYJ48 pin 3
#define motorPin4  8     // Orange - 28BYJ48 pin 4
                        // Red    - 28BYJ48 pin 5 (VCC)
                        
#define motorPin5  9     // Blue   - 28BYJ48 pin 1
#define motorPin6  10     // Pink   - 28BYJ48 pin 2
#define motorPin7  11    // Yellow - 28BYJ48 pin 3
#define motorPin8  12    // Orange - 28BYJ48 pin 4
                        // Red    - 28BYJ48 pin 5 (VCC)
/*-----( Declare objects )-----*/
// NOTE: The sequence 1-3-2-4 is required for proper sequencing of 28BYJ48
AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);
AccelStepper stepper2(HALFSTEP, motorPin5, motorPin7, motorPin6, motorPin8);
 
/*-----( Declare Variables )-----*/
//none
 
void setup()   /****** SETUP: RUNS ONCE ******/
{
  stepper1.setMaxSpeed(500.0);
  stepper1.setAcceleration(500.0);
  stepper1.setSpeed(50);
  stepper1.moveTo(2048);  // 2048 = 1 revolution 
  
  stepper2.setMaxSpeed(500.0);
  stepper2.setAcceleration(500.0);
  stepper2.setSpeed(50);
  stepper2.moveTo(-2048);  // 2048 = 1 revolution minus 400 to make it asymetric asymetric
 
}//--(end setup )---
 
 
void loop()   /****** LOOP: RUNS CONSTANTLY ******/
{
  //Change direction at the limits
  if (stepper1.distanceToGo() == 0) 
    stepper1.moveTo(-stepper1.currentPosition());
    if (stepper2.distanceToGo() == 0) 
    stepper2.moveTo(-stepper2.currentPosition());
  
  stepper1.run();
  stepper2.run();
 
}//--(end main loop )---
 
/*-----( Declare User-written Functions )-----*/
//none
//*********( THE END )***********
MW
Offline
Зарегистрирован: 23.01.2017
подскажите пожалуйста как подключить сюда IR remote чтобы управлять ик пультом
всего 2 клавиш вперед и назад
спасибо
 
 
/*-----( Import needed libraries )-----*/
#include <AccelStepper.h>
/*-----( Declare Constants and Pin Numbers )-----*/
#define FULLSTEP 4
#define HALFSTEP 8
// motor pins
#define motorPin1  5     // Blue   - 28BYJ48 pin 1
#define motorPin2  6     // Pink   - 28BYJ48 pin 2
#define motorPin3  7     // Yellow - 28BYJ48 pin 3
#define motorPin4  8     // Orange - 28BYJ48 pin 4
                        // Red    - 28BYJ48 pin 5 (VCC)
                        
#define motorPin5  9     // Blue   - 28BYJ48 pin 1
#define motorPin6  10     // Pink   - 28BYJ48 pin 2
#define motorPin7  11    // Yellow - 28BYJ48 pin 3
#define motorPin8  12    // Orange - 28BYJ48 pin 4
                        // Red    - 28BYJ48 pin 5 (VCC)
/*-----( Declare objects )-----*/
// NOTE: The sequence 1-3-2-4 is required for proper sequencing of 28BYJ48
AccelStepper stepper1(HALFSTEP, motorPin1, motorPin3, motorPin2, motorPin4);
AccelStepper stepper2(HALFSTEP, motorPin5, motorPin7, motorPin6, motorPin8);
 
/*-----( Declare Variables )-----*/
//none
 
void setup()   /****** SETUP: RUNS ONCE ******/
{
  stepper1.setMaxSpeed(500.0);
  stepper1.setAcceleration(500.0);
  stepper1.setSpeed(50);
  stepper1.moveTo(2048);  // 2048 = 1 revolution 
  
  stepper2.setMaxSpeed(500.0);
  stepper2.setAcceleration(500.0);
  stepper2.setSpeed(50);
  stepper2.moveTo(-2048);  // 2048 = 1 revolution minus 400 to make it asymetric asymetric
 
}//--(end setup )---
 
 
void loop()   /****** LOOP: RUNS CONSTANTLY ******/
{
  //Change direction at the limits
  if (stepper1.distanceToGo() == 0) 
    stepper1.moveTo(-stepper1.currentPosition());
    if (stepper2.distanceToGo() == 0) 
    stepper2.moveTo(-stepper2.currentPosition());
  
  stepper1.run();
  stepper2.run();
 
}//--(end main loop )---
 
/*-----( Declare User-written Functions )-----*/
//none
//*********( THE END )***********