#26 Re: Програмування Arduino » управление шаговым двигателем » 2019-10-19 19:49:32

вот рабочий скетч ,
вот только скорость меня волнует , перепробовал увеличивать  Stepper1.setMaxSpeed(6000); вплоть до 240000, разницы не заметил ,а в FLprog  визуально быстрее, у меня драйвер работает в полушаговом режиме 

#include <AccelStepper.h>

AccelStepper Stepper1(1,11,12); //использует пин 12 и 11 для dir и step, 1 - режим "external driver" 

int dir = 1; //используется для смены направления

int step = 2; //єто у нас будетшаг (если 1- на 100 двигаем,2-на 200)

int dist = 400; //дистанция 

int buttonPin = 2; // номер порта нашей кнопки

int EnblPin =    13; // номер порта ENBL
 

void setup()

{

  Stepper1.setMaxSpeed(6000); //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду)

  Stepper1.setAcceleration(13000); //устанавливаем ускорение (шагов/секунду^2)
   
   pinMode(13, OUTPUT);

}

void loop()
 
{

  if(Stepper1.distanceToGo()==0)

{ //проверка, отработал ли двигатель предыдущее движение

  if (step==1) //если біл шаг 2- тогда следующий -1

{

  step = 2;

  dist = 100;

}

  else

{

  step = 1;

  dist = 200;

}



  Stepper1.move(dist*dir);

  dir = dir*(-1); //отрицательное значение dir, благодаря чему реализуется вращение в противоположном направлении

delay(200); //задержка на 1 секунду

}

Stepper1.run(); //запуск шагового двигателя. Эта строка повторяется вновь и вновь для непрерывного вращения двигателя



{
 
 if(digitalRead(2)==HIGH)//если кнопка нажата ...
 
 {
 
 digitalWrite(13,HIGH);//включаем светодиод
 
 }
 
 else//если не нажата... 

 {
 
 digitalWrite(13,LOW);//выключаем
 
 }
 
 } 

 }

#27 Re: Програмування Arduino » управление шаговым двигателем » 2019-10-19 18:36:41

ard125 пише:
leons пише:

  компелируетса без ошибок

сурьёзно?

   

   почти, не считая ковычек, дальше прикрутить потенциометр для регулировки скорости или задержки

#28 Re: Програмування Arduino » управление шаговым двигателем » 2019-10-18 20:11:18

завтра снесу всё железо буду пробовать ,  компелируетса без ошибок

#29 Re: Програмування Arduino » управление шаговым двигателем » 2019-10-18 20:09:01

#include <AccelStepper.h>

AccelStepper Stepper1(1,11,12); //использует пин 12 и 11 для dir и step, 1 - режим "external driver" 

int dir = 1; //используется для смены направления

int step = 2; //єто у нас будетшаг (если 1- на 100 двигаем,2-на 200)

int dist = 400; //дистанция 

int buttonPin = 2; // номер порта нашей кнопки

int EnblPin =    13; // номер порта ENBL
 

void setup()

{

  Stepper1.setMaxSpeed(6000); //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду)

  Stepper1.setAcceleration(13000); //устанавливаем ускорение (шагов/секунду^2)
   
   pinMode(13, OUTPUT);

}

void loop()
 
{

  if(Stepper1.distanceToGo()==0)

{ //проверка, отработал ли двигатель предыдущее движение

  if (step==1) //если біл шаг 2- тогда следующий -1

{

  step = 2;

  dist = 100;

}

  else

{

  step = 1;

  dist = 200;

}



  Stepper1.move(dist*dir);

  dir = dir*(-1); //отрицательное значение dir, благодаря чему реализуется вращение в противоположном направлении

delay(1000); //задержка на 1 секунду

}

Stepper1.run(); //запуск шагового двигателя. Эта строка повторяется вновь и вновь для непрерывного вращения двигателя

}

{
 
 if(digitalRead(2)==HIGH)//если кнопка нажата ...
 
 {
 
 digitalWrite(13,HIGH);//включаем светодиод
 
 }
 
 else//если не нажата... 

 {
 
 digitalWrite(13,LOW);//выключаем
 
 }
 
 } 

#32 Re: Програмування Arduino » управление шаговым двигателем » 2019-10-17 21:21:07

вот , на железе не проверял , с кавычками наверное напутал

#include <AccelStepper.h>

AccelStepper Stepper1(1,11,12); //использует пин 12 и 11 для dir и step, 1 - режим "external driver" 

int dir = 1; //используется для смены направления

int step = 2; //єто у нас будет шаг (если 1- на 100 двигаем,2-на 200)

int dist = 400; //дистанция 

int buttonPin = 2; // номер порта нашей кнопки

int EnblPin =    13; // номер порта ENBL
 

void setup()

{

  Stepper1.setMaxSpeed(6000); //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду)

  Stepper1.setAcceleration(13000); //устанавливаем ускорение (шагов/секунду^2)

   pinMode(enblPin, OUTPUT);  // устанавливаем порт ENBL на выход
   
   pinMode(buttonPin, INPUT); // устанавливаем порт кнопки на вход

}

void loop() {

int buttonState = digitalRead(buttonPin); // читаем состояние порта кнопки и записываем в переменную

 
{

 if (buttonState == HIGH) // делаем простую проверку нашей переменной, если на входе в порт кнопки присутствует напряжение
 
  digitalWrite(endlPin, HIGH); // подаем 5 вольт на порт enbl

} else {

 digitalWrite(enblPin, LOW);  // выключаем enbl

 }

  if(Stepper1.distanceToGo()==0)

{ //проверка, отработал ли двигатель предыдущее движение

  if (step==1) //если біл шаг 2- тогда следующий -1

{

  step = 2;

  dist = 100;

}

  else

{

  step = 1;

  dist = 200;

}



  Stepper1.move(dist*dir);

  dir = dir*(-1); //отрицательное значение dir, благодаря чему реализуется вращение в противоположном направлении

delay(1000); //задержка на 1 секунду

}

Stepper1.run(); //запуск шагового двигателя. Эта строка повторяется вновь и вновь для непрерывного вращения двигателя

}

#33 Re: Програмування Arduino » управление шаговым двигателем » 2019-10-15 11:49:26

г0сть пише:

т.е вам нужно одной кнопкой включать/выключать?


так , я выложу код

#34 Re: Програмування Arduino » управление шаговым двигателем » 2019-10-14 22:46:28

г0сть пише:
leons пише:

    ещё бы кнопку привязать вкл. выкл. к ENBL  smile

так в чем проблема?


   Учится говорят никогда не поздно , у меня с этим не сраслось. я больше по старинке возьму двух позиционный тумблер и буду переключать ENBL   с +5в на GND  cool а вот скорость регулировать потенциометром больше надо
    Я не программист а так зашёл сюда ,как то нужно было сделать счётчик и помогла мне одна программка Flprog, а там с шаговиками как-то не дружат но пытаются по мелочи я про форумчян   big_smile

#35 Re: Програмування Arduino » управление шаговым двигателем » 2019-10-14 21:24:09

Kaka пише:
leons пише:

нашлась ошибка (1.13,12)

Главное, сам нашёл smile


    Гость помог , ещё бы кнопку привязать вкл. выкл. к ENBL  smile

#36 Re: Програмування Arduino » управление шаговым двигателем » 2019-10-14 16:58:57

с 13 пина может переназначить чтоб не моргал светодиод ??

#38 Re: Програмування Arduino » управление шаговым двигателем » 2019-10-14 15:54:04

вот тут ,AccelStepper Stepper1(1.13,12); //использует пин 12 и 13 для dir и step, 1 - режим "external driver" (A4988)
драйвер у меня другой

#39 Програмування Arduino » управление шаговым двигателем » 2019-10-14 14:36:03

leons
відповідей: 39

Помогите найти ошибку в скетче , мотор должен отработать 200 шагов по часовой и 100 против часовой и так в цикле , а шагает в одну сторону

#include <AccelStepper.h>

AccelStepper Stepper1(1.13,12); //использует пин 12 и 13 для dir и step, 1 - режим "external driver" (A4988)

int dir = 1; //используется для смены направления

int step = 2; //єто у нас будетшаг (если 1- на 200 двигаем,2-на 100)

int dist = 100; //дистанция 
 

void setup()

{

  Stepper1.setMaxSpeed(6000); //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду)

  Stepper1.setAcceleration(20000); //устанавливаем ускорение (шагов/секунду^2)

}

void loop()
 
{

  if(Stepper1.distanceToGo()==0)

{ //проверка, отработал ли двигатель предыдущее движение

  if (step==1) //если біл шаг 2- тогда следующий -1

{

  step = 2;

  dist = 100;

}

  else

{

  step = 1;

  dist = 200;

}



  Stepper1.move(dist*dir);

  dir = dir*(-1); //отрицательное значение dir, благодаря чему реализуется вращение в противоположном направлении

delay(500); //задержка на 1 секунду

}

Stepper1.run(); //запуск шагового двигателя. Эта строка повторяется вновь и вновь для непрерывного вращения двигателя

}

Підвал форуму