Форум программистов, компьютерный форум, киберфорум
Робототехника и умный дом
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 15.12.2018
Сообщений: 1
1

Шаговый мотор Nema17

15.12.2018, 14:18. Просмотров 1408. Ответов 1
Метки нет (Все метки)

Здравствуйте!
Прошу Вас помочь в управлении шаговым мотором с использованием Arduino Uno и драйвером шагового двигателя A4988 с концевиком.
Суть управления:
Мотор должен делать заданное количество оборотов. При срабатывании концевика (нижняя точка пути) - не вращаться, достигая нужного количества оборотов (верхняя точка пути) начинать движение в обратную сторону.
Сейчас движение назад не осуществляется.
Основной проблемой является то, что при срабатывании концевика мотор продолжает вращение, а нужно, чтобы сразу останавливался.



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <AccelStepper.h> 
 
AccelStepper Stepper1(1,13,12); // использует пин 12 и 13 для dir и step, 1 - режим "external driver" (A4988)
int conPin = 8; // пин концевика
int pos = 1000; // позиция
 
void setup() {
Serial.begin(9600);
 
Stepper1.setMaxSpeed(1000); // устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду)
Stepper1.setAcceleration(13000); // устанавливаем ускорение (шагов/секунду^2)
}
 
void loop() {
 
Serial.print(Stepper1.targetPosition()); // конечное положение
Serial.print("    ");
Serial.println(Stepper1.distanceToGo()); // расстояние до указанного положения
 
if(Stepper1.distanceToGo()==0){ //проверка, отработал ли двигатель предыдущее движение
 n();
}
 
Stepper1.run(); // начать движение с ускорением
}
 
void n() { 
for(int i=0;i<1000;i++){
if (digitalRead(conPin) == 1) // считывание состояния концевика (если 0 - нажат)
  {
    if (digitalRead(conPin) == 0)
      {
         Stepper1.move(0); // перемещение в абсолютно указанное положение
      }
    Stepper1.move(1000); 
   } 
}
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.12.2018, 14:18
Ответы с готовыми решениями:

NEMA17 с чего бы снять
Добрый день, прошу прощения если не в ту тему ;) Задумался над сборкой 3d принтера. Самым...

шаговый двигатель в СAD
В какой среде можно смоделировать шаговый двигатель?Задача простая - отследить как меняется ток от...

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

Где купить небольшой шаговый двигатель?
Всем привет! Понадобились мне небольшие шаговые двигатели. Приблизительно такие как в обычных...

1
2386 / 1705 / 355
Регистрация: 11.09.2009
Сообщений: 6,280
16.12.2018, 05:27 2
Ошибка тут:
C
1
2
3
4
if (digitalRead(conPin) == 1) // считывание состояния концевика (если 0 - нажат)
{
if (digitalRead(conPin) == 0)
{

Операторы второго if никогда не будут вызваны, так как он внутри первого if, где проверено, что conPin = 1.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.12.2018, 05:27

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Подвеска мотор-колес
Доброго времени суток. В свое время задался сделать относительно крупного робота по схеме...

TSOP + мотор = интерференция ?
Привет всем ! Вчера столкнулся с такой проблемой : имеется маленький роботик pic16f785 + l293 +...

Помогите найти мотор
Делаю тут небольшой актуатор. Механика почти готова, но застрял в том месте, где думал проблем не...

Мотор от шуруповерта и патрон
Всем привет. Хочу выписать с Китаю патрон, к мотору от шуруповерта. Вал замерил, 5 мм, но есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.