Nema 17, Arduino Uno и шаговый двигатель ~2H42B

Я попытался запустить шаговый двигатель Nema 17, используя привод, показанный на рисунке ниже (не базовый привод L298N, который, кстати, я успешно использовал для вращения двигателя).

Может ли кто-нибудь из вас просмотреть мои существующие связи и помочь мне завершить оставшиеся?

Существующая установка Arduino Uno, двигателя Nema 17 и привода:

Существующий Arduino Uno, двигатель и привод Nema 17

Существующие подключения к Диску слева направо:

  1. Толстый желтый провод (0 В) от адаптера питания и тонкий черный провод (земля) от Arduino
  2. Толстый красный провод (12 В +) от адаптера питания.
  3. Зеленый провод (A+) от шагового двигателя
  4. Черный провод (A-) от шагового двигателя
  5. Красный провод (B+) от шагового двигателя
  6. Синий провод (B-) от шагового двигателя

Чего мне не хватает, так это подключения к PUL, DIR, VCC и ENA. Я мог бы подключить 4 провода от Arduino D8 к D11 соответственно, но достаточно ли этого? Есть ли скетч Arduino, к которому я мог бы обратиться после того, как соединения будут готовы?

, 👍0


2 ответа


-1

Подключиться:

  • VCC на Arduino 5 V
  • ENA либо напрямую к VCC, либо к контакту Arduino (для дополнительного включения управления программным обеспечением драйвера — активный высокий уровень).

Импульс (шаги) и направление на Arduino GPIO.

Посмотрите здесь форум Arduino Простая программа Stepper - я думаю, вы найдете то, что ищете для.

,

Ок... был злоупотреблен "включить отрицательный сигнал" на странице 5 диаграммы..., @Bouc


-1

Вот руководство пользователя для BH- Шаговый драйвер MSD-2A.

На странице 5 показаны две таблицы с указанием соединений:

Таблица соединений

Вы уже подключили P2, остался P1.

Временная диаграмма ниже показывает состояние необходимых сигналов PUL, DIR и ENA

Временная диаграмма.

Итак, на вход ENA можно либо удерживать высокий уровень, подключив его к VCC, либо к цифровому выходу Arduino, чтобы обеспечить базовое включение/выключение. контроль.

В этой ветке, arduino uno с шаговым двигателем, OP использует контроллер, очень похожий на ваш. , за исключением того, что это версия 6A (BH-MSD-6A). Их код в потоке содержит много ненужного кода и, по-видимому, имеет ряд проблем. Урезанная версия того же кода выглядит следующим образом:

//arduino code
//
#include <TimerOne.h>
#include <EEPROM.h>

int rpm;
int initial_rpm;
int dutycycle_time=0;
int stepper_Enable=5; //STEPPER MOTOR  ENABLE PIN : PUL- 
int stepper_Pulse=6;  // STEPPER MOTOR PULSE PIN :  PUL-

int address_eeprom=0;


void displayNumber(int);
void lightNumber(int);



void setup() 
{                



  Timer1.attachInterrupt( timerIsr ); // attach the service routine here
  pinMode(stepper_Pulse,OUTPUT); // Analog pin A2 is used for ENABLING the steeper motor
  pinMode(stepper_Enable,OUTPUT); // Analog pin A2 is used for DIRECTION the steeper motor
  digitalWrite(stepper_Pulse,HIGH);
  digitalWrite(stepper_Enable,LOW);

  rpm=EEPROM.read(address_eeprom);
}

void loop() 
{


  while(digitalRead(stepper_Enable)==HIGH){
     int cycle_freq=(1600/60)*rpm;
     int dutycycle_freq=2*cycle_freq;
     int dutycycle_time=1000000/dutycycle_freq;
      Timer1.initialize(dutycycle_time); // set a timer of length 100000 microseconds (or 0.1 sec - or 10Hz => the led will blink 5 times, 5 cycles of on-and-off, per second)
      if(analogRead(A3)==LOW )  // STOPPING THE STEPPER MOTOR
       {
         digitalWrite(stepper_Enable,LOW);

       }

  }

  while(digitalRead(stepper_Enable)==LOW)
  {
    int initial_rpm=rpm;
     EEPROM.write(address_eeprom,rpm);

      if(analogRead(A0)==LOW && rpm<300 ) ///increasing speed of stepper motor
    {
          rpm=rpm+1;
         // delay(100);
     }
    if(analogRead(A1)==LOW && rpm>0) ///decreasing speed of stepper motor
    {
          rpm=rpm-1;
         // delay(100);
    }
    if(analogRead(A2)==LOW ) //STARTING THE STEPPER MOTOR
    {
     digitalWrite(stepper_Enable,HIGH);
    }
  }
  if(initial_rpm!=rpm){
    address_eeprom=address_eeprom+1;
  }

}

void timerIsr()
{
  // Toggle LED
  digitalWrite( stepper_Pulse, !digitalRead( stepper_Pulse ));
}

Обратите внимание, что, хотя это должно помочь вам начать работу, поскольку OP заявляет в треде, что с этим есть проблемы, которые необходимо исправить.


(Сейчас мне нужно исправить прошивку Marlin, но я вернусь к этому ответу позже)

,