Arduino uno + cnc Shield v3 + драйвер шагового двигателя A4988 + AccelStepper?
Я успешно запускаю примеры AccelStepper на Arduino Mega с экраном RAMPS 1.4, два драйверы шаговых двигателей A4988 и два Шаговые двигатели 17HS16-0284S.
Я использовал 3 перемычки на RAMPS, чтобы установить разрешение микрошага 1/16.
Я использовал этот код, вдохновленный сервером Polargraph для Полярограф:
#include <AccelStepper.h>
/*
// для Arduino Uno + CNC Shield V3
#define MOTOR_A_ENABLE_PIN 8
#define MOTOR_A_STEP_PIN 2
#define MOTOR_A_DIR_PIN 5
#define MOTOR_B_ENABLE_PIN 8
#define MOTOR_B_STEP_PIN 3
#define MOTOR_B_DIR_PIN 6
*/
// для Arduino Mega + RAMPS 1.4
#define MOTOR_A_ENABLE_PIN 30
#define MOTOR_A_STEP_PIN 36
#define MOTOR_A_DIR_PIN 34
#define MOTOR_B_ENABLE_PIN 56
#define MOTOR_B_STEP_PIN 60
#define MOTOR_B_DIR_PIN 61
AccelStepper motorA(1, MOTOR_A_STEP_PIN, MOTOR_A_DIR_PIN);
AccelStepper motorB(1, MOTOR_B_STEP_PIN, MOTOR_B_DIR_PIN);
void setup()
{
motorA.setEnablePin(MOTOR_A_ENABLE_PIN);
motorA.setPinsInverted(false, false, true);
motorB.setEnablePin(MOTOR_B_ENABLE_PIN);
motorB.setPinsInverted(false, false, true);
motorA.setAcceleration(100);
motorA.move(1000);
//motorA.setMaxSpeed(100);
//motorA.setSpeed(100);
motorB.setAcceleration(100);
motorB.move(1000);
//motorB.setMaxSpeed(100);
//motorB.setSpeed(100);
motorA.enableOutputs();
motorB.enableOutputs();
}
void loop()
{
motorA.run();
motorB.run();
}
Я пытался использовать один и тот же код с одними и теми же драйверами и двигателями шаговых двигателей на Arduino Uno и CNC Shield v3 безуспешно (я также использовал 3 перемычки, чтобы установите разрешение микрошага на 1/16). Двигатели не работают и трясутся.
Что не так с моим кодом?
Бонусные вопросы:
Я взял эту настройку и код с сервера Polargraph, но не понял, как я должен знать, как использовать методы setEnablePin()
и setPinsInverted()
. На самом деле, у меня возникли проблемы с поиском документации по CNC Shield V3 и драйверам A4988 (я нашел только эта страница) для работы с AccelStepper.
@arthur.sw, 👍2
Обсуждение1 ответ
Лучший ответ:
Вручную установите контакты ENABLE как ВЫХОДЫ, т.е. добавьте функцию setup()
:
pinMode(MOTOR_A_ENABLE_PIN, OUTPUT);
pinMode(MOTOR_B_ENABLE_PIN, OUTPUT);
- AMIS30543 | Таблица КРУГОВОГО ПЕРЕВОДЧИКА данных
- Запустить два степпера одновременно
- Почему сервопривод вращается на 360 градусов?
- Как подключить двойной редуктор Tamiya к Arduino Uno?
- Как повторить код
- Мой моторный щит сломан?
- Как правильно использовать микрошаговый драйвер с шаговым двигателем более низкого напряжения
- Двигатель постоянного тока с драйвером L289N не может установить обороты ниже 130
Я не знаю, решил ли я свою проблему, но в конце концов я обнаружил, что в Arduino Uno недостаточно памяти для кода, который я использую для запуска своих двигателей., @arthur.sw