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.

, 👍2

Обсуждение

Я не знаю, решил ли я свою проблему, но в конце концов я обнаружил, что в Arduino Uno недостаточно памяти для кода, который я использую для запуска своих двигателей., @arthur.sw


1 ответ


Лучший ответ:

3

Вручную установите контакты ENABLE как ВЫХОДЫ, т.е. добавьте функцию setup():

pinMode(MOTOR_A_ENABLE_PIN, OUTPUT);
pinMode(MOTOR_B_ENABLE_PIN, OUTPUT);
,