Проблемы в связке Arduino Nano + DRV8825 + шаговик
- Войдите на сайт для отправки комментариев
Зравствуйте!
Возникла проблема при подключение шагового двигателя к ардуино. Аппаратная конфигрурация следующая: Arduino Nano v3, Pololu DRV8825 в качестве драйвера, SY35ST26-0284A - сам шаговик (Nema 14, 200 шагов на оборот, 1.8 град). Подключал по следующей схеме:
При этом стандартный пример из библиотеки Stepper - stepper_oneRevolution поворачивает вал ровно на 1/4 оборота, затем настолько же обратно:
#include <Stepper.h> const int stepsPerRevolution = 200; Stepper myStepper(stepsPerRevolution, 5, 6); void setup() { myStepper.setSpeed(60); Serial.begin(9600); } void loop() { Serial.println("clockwise"); myStepper.step(stepsPerRevolution); delay(500); Serial.println("counterclockwise"); myStepper.step(-stepsPerRevolution); delay(500); }
При этом используется режим полного шага. Дело в том, что у DRV8825 есть пины MODE0, MODE1, MODE2, комбинацией уровней на которых можно добиваться различного дробления шага, но по умолчанию они все подтянуты к земле и драйвер находится в режиме полного шага.
All three selector inputs have internal 100kΩ pull-down resistors, so leaving these three microstep selection pins disconnected results in full-step mode.
https://www.pololu.com/product/2132
Другой пример - stepper_oneStepAtATime в мониторе порта показывает отсылку шагов каждые 500 мс, но шаговик реагирует только на каждый четвертый такой "шаг".
#include <Stepper.h> const int stepsPerRevolution = 200; Stepper myStepper(stepsPerRevolution, 5, 6); int stepCount = 0; void setup() { Serial.begin(9600); } void loop() { myStepper.step(1); Serial.print("steps:" ); Serial.println(stepCount); stepCount++; delay(500); }
Кстати, если начать манипулировать пинами MODE[X] драйвера, то, как положено, происходит дробление шага, НО относительно этого диапазона в 1/4 поворота. В итоге складывается такое впечатление, что движок на 800 шагов, но это бред.
Движок на 7.4 В, драйвер на 8.2 В минимум. Запитываю от лаборатрного блока 8.2-10 В. Что это может быть? Неисправности драйвера, шаговика? Или я где то очень сильно недопонимаю и неправильно делаю?
Спасибо!
не вижу вообще что вы нашли в этом не правильного?
200 шагов поворачивают на 1/4 оборота в 1 скече
и во втором у вас получается 800 шагов полный оборот...
что именно вас не устраивает?
А разве 200 шагов не должны повернуть вал на 360 град?
А разве 200 шагов не должны повернуть вал на 360 град?
вы меня спрашиваете?
посмотрите свои скечи....
200 Х 4 = 800
все сходиться
какая вам разница то по большому счету? хоть 5000 шагов на полный круг.... просто учитывайте это в своих расчетах
Однако постойте!. Хочется разобраться, движок на 200 оборотов, самый обыкновенный, коих полно. Подумал было, что там редуктор 1 к 4, но нет, самый что ни на есть стандартный 200 шаговый движок. Поэтому дефолтный скетч ардуино называется oneRevolution - один оборот, поэтому там так и написано для таких стандартных движков.
const
int
stepsPerRevolution = 200;
Вообще встречал макисмум 400 шагов/оборот в ширпотреб сегменте привод, больше не видел. Так что, в то что мне за 20$ попался 800 полных шагов я не верю. К тому же я привел полное наименование шаговика, там ясно написано самый классический 200 шагов, 1.8 град.
Однако постойте!. Хочется разобраться, движок на 200 оборотов, самый обыкновенный, коих полно. Подумал было, что там редуктор 1 к 4, но нет, самый что ни на есть стандартный 200 шаговый движок. Поэтому дефолтный скетч ардуино называется oneRevolution - один оборот, поэтому там так и написано для таких стандартных движков.
const
int
stepsPerRevolution = 200;
Вообще встречал макисмум 400 шагов/оборот в ширпотреб сегменте привод, больше не видел. Так что, в то что мне за 20$ попался 800 полных шагов я не верю. К тому же я привел полное наименование шаговика, там ясно написано самый классический 200 шагов, 1.8 град.
вот вы нарываетесь на классичейкий вопрос. И ЧЁ?
мне что хрустальный шар доставать что бы узнать какие библиотеки вы там используете и где вы их там нашли..
тут есть вон ардуино ИДЕ на русском языке скачивают и библиотеки такие же кривые как ятаган...
ArduSerg, проблема в том, что вы скрещиваете ежа с ужом.
Стандартная библиотека заточена под прямое управление обмотками мотора, а у вас драйвер, который поворачивает мотор на один шаг, когда его дергают за _один_ пин - Step, в направлении заданном пином Dir.
В библиотеке Stepper есть вариант подключение и мотора по двум проводам, но судя по конструктору в классе - точно не под ваш драйвер заточен. Один раз из четырех функция дергает за правильный пин - вот и получается 1/4 оборота.
Вот код от Easy Driver:
Попробуйте - должно работать
пост №6
собственно код со строки 32 по 36
и есть задание вращения, а все остальное библиотека
пост №6
собственно код со строки 32 по 36
и есть задание вращения, а все остальное библиотека
Чукча писатель?
Gippopotam
Огромное спасибо за разъяснение вопроса! Предложенный код сработал безупречно.
Здравствуйте,а подскажите пожалуйста.Плата Ардуино,сначала комп ее видел была как и полагается на третьем СОМ порте.А потом после моих разговоров с Ардуинкой и несколькими шаговичками,перестала видеться.После загрузки кода пишет что нету соединения.Могла ли сгореть сама плата? Драйвера портов обновлял,втыкал Ардуинку в другие порты *Юсби*-не работает,пробовал мышь на место Ардуинки-мышь работает.Боюсь плату спалил.
Ребят подскажите как отключить защиту от пропусков шагов.